mono_inst_set_src_registers (struct MonoInst * ins, int * regs)
{
  int D.31002;
  int D.31003;
  int D.31004;

  D.31002 = *regs;
  ins->sreg1 = D.31002;
  D.31003 = MEM[(int *)regs + 4B];
  ins->sreg2 = D.31003;
  D.31004 = MEM[(int *)regs + 8B];
  ins->sreg3 = D.31004;
}


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

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


alloc_ireg (struct MonoCompile * cfg)
{
  guint32 D.31007;
  unsigned int D.31008;
  unsigned int D.31009;
  unsigned int D.31010;

  D.31008 = cfg->next_vreg;
  D.31009 = D.31008;
  D.31010 = D.31009 + 1;
  cfg->next_vreg = D.31010;
  D.31007 = D.31009;
  return D.31007;
}


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

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


alloc_freg (struct MonoCompile * cfg)
{
  int D.31014;
  guint32 D.31017;
  unsigned int D.31018;
  unsigned int D.31019;
  unsigned int D.31020;

  D.31014 = mono_arch_is_soft_float ();
  if (D.31014 != 0) goto <D.31015>; else goto <D.31016>;
  <D.31015>:
  D.31017 = alloc_lreg (cfg);
  return D.31017;
  <D.31016>:
  D.31018 = cfg->next_vreg;
  D.31019 = D.31018;
  D.31020 = D.31019 + 1;
  cfg->next_vreg = D.31020;
  D.31017 = D.31019;
  return D.31017;
}


mono_arch_is_soft_float ()
{
  gboolean D.31022;

  D.31022 = 0;
  return D.31022;
}


alloc_lreg (struct MonoCompile * cfg)
{
  unsigned int D.31024;
  unsigned int D.31025;
  guint32 D.31026;
  guint32 res;

  res = cfg->next_vreg;
  D.31024 = cfg->next_vreg;
  D.31025 = D.31024 + 3;
  cfg->next_vreg = D.31025;
  D.31026 = res;
  return D.31026;
}


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

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


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

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


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

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


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

  switch (stack_type) <default: <D.26808>, case 1: <D.26801>, case 2: <D.26806>, case 3: <D.26802>, case 4: <D.26805>, case 5: <D.26803>, case 6: <D.26804>, case 7: <D.26807>>
  <D.26801>:
  <D.26802>:
  D.31034 = alloc_ireg (cfg);
  return D.31034;
  <D.26803>:
  D.31034 = alloc_ireg_mp (cfg);
  return D.31034;
  <D.26804>:
  D.31034 = alloc_ireg_ref (cfg);
  return D.31034;
  <D.26805>:
  D.31034 = alloc_freg (cfg);
  return D.31034;
  <D.26806>:
  D.31034 = alloc_lreg (cfg);
  return D.31034;
  <D.26807>:
  D.31034 = alloc_ireg (cfg);
  return D.31034;
  <D.26808>:
  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.31034 = 4294967295;
  return D.31034;
}


alloc_ireg_mp (struct MonoCompile * cfg)
{
  unsigned int D.31036;
  unsigned char D.31037;
  unsigned char D.31038;
  guint32 D.31041;
  int vreg;

  D.31036 = alloc_ireg (cfg);
  vreg = (int) D.31036;
  D.31037 = BIT_FIELD_REF <*cfg, 8, 3424>;
  D.31038 = D.31037 & 128;
  if (D.31038 != 0) goto <D.31039>; else goto <D.31040>;
  <D.31039>:
  mono_mark_vreg_as_mp (cfg, vreg);
  <D.31040>:
  D.31041 = (guint32) vreg;
  return D.31041;
}


alloc_ireg_ref (struct MonoCompile * cfg)
{
  unsigned int D.31043;
  unsigned char D.31044;
  unsigned char D.31045;
  guint32 D.31048;
  int vreg;

  D.31043 = alloc_ireg (cfg);
  vreg = (int) D.31043;
  D.31044 = BIT_FIELD_REF <*cfg, 8, 3424>;
  D.31045 = D.31044 & 128;
  if (D.31045 != 0) goto <D.31046>; else goto <D.31047>;
  <D.31046>:
  mono_mark_vreg_as_ref (cfg, vreg);
  <D.31047>:
  D.31048 = (guint32) vreg;
  return D.31048;
}


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

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


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

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


mono_alloc_ireg_copy (struct MonoCompile * cfg, guint32 vreg)
{
  unsigned int D.31055;
  gboolean * D.31057;
  unsigned int D.31058;
  gboolean * D.31059;
  int D.31060;
  guint32 D.31062;
  unsigned int D.31064;
  gboolean * D.31066;
  gboolean * D.31067;
  int D.31068;

  D.31055 = cfg->vreg_is_ref_len;
  if (D.31055 > vreg) goto <D.31056>; else goto <D.31054>;
  <D.31056>:
  D.31057 = cfg->vreg_is_ref;
  D.31058 = vreg * 4;
  D.31059 = D.31057 + D.31058;
  D.31060 = *D.31059;
  if (D.31060 != 0) goto <D.31061>; else goto <D.31054>;
  <D.31061>:
  D.31062 = alloc_ireg_ref (cfg);
  return D.31062;
  <D.31054>:
  D.31064 = cfg->vreg_is_mp_len;
  if (D.31064 > vreg) goto <D.31065>; else goto <D.31063>;
  <D.31065>:
  D.31066 = cfg->vreg_is_mp;
  D.31058 = vreg * 4;
  D.31067 = D.31066 + D.31058;
  D.31068 = *D.31067;
  if (D.31068 != 0) goto <D.31069>; else goto <D.31063>;
  <D.31069>:
  D.31062 = alloc_ireg_mp (cfg);
  return D.31062;
  <D.31063>:
  D.31062 = alloc_ireg (cfg);
  return D.31062;
}


mono_type_to_regmove (struct MonoCompile * cfg, struct MonoType * type)
{
  unsigned char D.31071;
  unsigned char D.31072;
  guint D.31075;
  unsigned char D.31076;
  int D.31077;
  struct MonoClass * D.31078;
  unsigned char D.31079;
  unsigned char D.31080;
  struct MonoGenericClass * D.31085;
  struct MonoClass * D.31086;
  struct MonoGenericSharingContext * D.31087;
  _Bool D.31088;
  long int D.31089;
  long int D.31090;
  int D.31093;
  void handle_enum = <<< error >>>;

  D.31071 = BIT_FIELD_REF <*type, 8, 56>;
  D.31072 = D.31071 & 64;
  if (D.31072 != 0) goto <D.31073>; else goto <D.31074>;
  <D.31073>:
  D.31075 = 424;
  return D.31075;
  <D.31074>:
  type = mini_replace_type (type);
  handle_enum:
  D.31076 = type->type;
  D.31077 = (int) D.31076;
  switch (D.31077) <default: <D.27174>, case 2: <D.27150>, case 3: <D.27153>, case 4: <D.27148>, case 5: <D.27149>, case 6: <D.27151>, case 7: <D.27152>, case 8: <D.27154>, case 9: <D.27155>, case 10: <D.27165>, case 11: <D.27166>, case 12: <D.27167>, case 13: <D.27168>, case 14: <D.27161>, case 15: <D.27158>, case 17: <D.27169>, case 18: <D.27160>, case 19: <D.27172>, case 20: <D.27164>, case 21: <D.27171>, case 22: <D.27170>, case 24: <D.27156>, case 25: <D.27157>, case 27: <D.27159>, case 28: <D.27162>, case 29: <D.27163>, case 30: <D.27173>>
  <D.27148>:
  <D.27149>:
  <D.27150>:
  D.31075 = 424;
  return D.31075;
  <D.27151>:
  <D.27152>:
  <D.27153>:
  D.31075 = 424;
  return D.31075;
  <D.27154>:
  <D.27155>:
  D.31075 = 424;
  return D.31075;
  <D.27156>:
  <D.27157>:
  <D.27158>:
  <D.27159>:
  D.31075 = 424;
  return D.31075;
  <D.27160>:
  <D.27161>:
  <D.27162>:
  <D.27163>:
  <D.27164>:
  D.31075 = 424;
  return D.31075;
  <D.27165>:
  <D.27166>:
  D.31075 = 425;
  return D.31075;
  <D.27167>:
  D.31075 = 426;
  return D.31075;
  <D.27168>:
  D.31075 = 426;
  return D.31075;
  <D.27169>:
  D.31078 = type->data.klass;
  D.31079 = BIT_FIELD_REF <*D.31078, 8, 160>;
  D.31080 = D.31079 & 16;
  if (D.31080 != 0) goto <D.31081>; else goto <D.31082>;
  <D.31081>:
  D.31078 = type->data.klass;
  type = mono_class_enum_basetype (D.31078);
  goto handle_enum;
  <D.31082>:
  if (0 != 0) goto <D.31083>; else goto <D.31084>;
  <D.31083>:
  D.31075 = 800;
  return D.31075;
  <D.31084>:
  D.31075 = 427;
  return D.31075;
  <D.27170>:
  D.31075 = 427;
  return D.31075;
  <D.27171>:
  D.31085 = type->data.generic_class;
  D.31086 = D.31085->container_class;
  type = &D.31086->byval_arg;
  goto handle_enum;
  <D.27172>:
  <D.27173>:
  D.31087 = cfg->generic_sharing_context;
  D.31088 = D.31087 == 0B;
  D.31089 = (long int) D.31088;
  D.31090 = __builtin_expect (D.31089, 0);
  if (D.31090 != 0) goto <D.31091>; else goto <D.31092>;
  <D.31091>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 324, "cfg->generic_sharing_context");
  <D.31092>:
  D.31093 = mini_type_var_is_vt (cfg, type);
  if (D.31093 != 0) goto <D.31094>; else goto <D.31095>;
  <D.31094>:
  D.31075 = 427;
  return D.31075;
  <D.31095>:
  D.31075 = 424;
  return D.31075;
  <D.27174>:
  D.31076 = type->type;
  D.31077 = (int) D.31076;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in type_to_regstore", D.31077);
  <D.27175>:
  goto <D.27175>;
  D.31075 = 4294967295;
  return D.31075;
}


mono_print_bb (struct MonoBasicBlock * bb, const char * msg)
{
  int D.31097;
  struct MonoBasicBlock * * D.31098;
  unsigned int i.0;
  unsigned int D.31100;
  struct MonoBasicBlock * * D.31101;
  struct MonoBasicBlock * D.31102;
  int D.31103;
  int D.31104;
  short int D.31105;
  int D.31106;
  struct MonoBasicBlock * * D.31107;
  struct MonoBasicBlock * * D.31108;
  struct MonoBasicBlock * D.31109;
  int D.31110;
  int D.31111;
  short int D.31112;
  int D.31113;
  int i;
  struct MonoInst * tree;

  D.31097 = bb->block_num;
  printf ("\n%s %d: [IN: ", msg, D.31097);
  i = 0;
  goto <D.27183>;
  <D.27182>:
  D.31098 = bb->in_bb;
  i.0 = (unsigned int) i;
  D.31100 = i.0 * 4;
  D.31101 = D.31098 + D.31100;
  D.31102 = *D.31101;
  D.31103 = D.31102->block_num;
  D.31098 = bb->in_bb;
  i.0 = (unsigned int) i;
  D.31100 = i.0 * 4;
  D.31101 = D.31098 + D.31100;
  D.31102 = *D.31101;
  D.31104 = D.31102->dfn;
  printf (" BB%d(%d)", D.31103, D.31104);
  i = i + 1;
  <D.27183>:
  D.31105 = bb->in_count;
  D.31106 = (int) D.31105;
  if (D.31106 > i) goto <D.27182>; else goto <D.27184>;
  <D.27184>:
  printf (", OUT: ");
  i = 0;
  goto <D.27186>;
  <D.27185>:
  D.31107 = bb->out_bb;
  i.0 = (unsigned int) i;
  D.31100 = i.0 * 4;
  D.31108 = D.31107 + D.31100;
  D.31109 = *D.31108;
  D.31110 = D.31109->block_num;
  D.31107 = bb->out_bb;
  i.0 = (unsigned int) i;
  D.31100 = i.0 * 4;
  D.31108 = D.31107 + D.31100;
  D.31109 = *D.31108;
  D.31111 = D.31109->dfn;
  printf (" BB%d(%d)", D.31110, D.31111);
  i = i + 1;
  <D.27186>:
  D.31112 = bb->out_count;
  D.31113 = (int) D.31112;
  if (D.31113 > i) goto <D.27185>; else goto <D.27187>;
  <D.27187>:
  printf (" ]\n");
  tree = bb->code;
  goto <D.27189>;
  <D.27188>:
  mono_print_ins_index (-1, tree);
  tree = tree->next;
  <D.27189>:
  if (tree != 0B) goto <D.27188>; else goto <D.27190>;
  <D.27190>:
}


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

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


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.31123;
  unsigned int i.8;
  unsigned int D.31125;
  struct MonoBasicBlock * * D.31126;
  struct MonoBasicBlock * D.31127;
  short int D.31130;
  int D.31131;
  struct MonoMemPool * D.31134;
  int D.31135;
  unsigned int D.31136;
  unsigned int D.31137;
  struct MonoBasicBlock * * D.31138;
  short int D.31139;
  unsigned short D.31140;
  unsigned short D.31141;
  short int D.31142;
  struct MonoBasicBlock * * D.31143;
  struct MonoBasicBlock * * D.31144;
  struct MonoBasicBlock * D.31145;
  short int D.31148;
  int D.31149;
  int D.31152;
  unsigned int D.31153;
  unsigned int D.31154;
  short int D.31155;
  unsigned short D.31156;
  unsigned short D.31157;
  short int D.31158;
  struct MonoBasicBlock * * newa;
  int i;
  int found;

  found = 0;
  i = 0;
  goto <D.27204>;
  <D.27203>:
  D.31123 = from->out_bb;
  i.8 = (unsigned int) i;
  D.31125 = i.8 * 4;
  D.31126 = D.31123 + D.31125;
  D.31127 = *D.31126;
  if (D.31127 == to) goto <D.31128>; else goto <D.31129>;
  <D.31128>:
  found = 1;
  goto <D.27202>;
  <D.31129>:
  i = i + 1;
  <D.27204>:
  D.31130 = from->out_count;
  D.31131 = (int) D.31130;
  if (D.31131 > i) goto <D.27203>; else goto <D.27202>;
  <D.27202>:
  if (found == 0) goto <D.31132>; else goto <D.31133>;
  <D.31132>:
  D.31134 = cfg->mempool;
  D.31130 = from->out_count;
  D.31131 = (int) D.31130;
  D.31135 = D.31131 + 1;
  D.31136 = (unsigned int) D.31135;
  D.31137 = D.31136 * 4;
  newa = mono_mempool_alloc (D.31134, D.31137);
  i = 0;
  goto <D.27206>;
  <D.27205>:
  i.8 = (unsigned int) i;
  D.31125 = i.8 * 4;
  D.31138 = newa + D.31125;
  D.31123 = from->out_bb;
  i.8 = (unsigned int) i;
  D.31125 = i.8 * 4;
  D.31126 = D.31123 + D.31125;
  D.31127 = *D.31126;
  *D.31138 = D.31127;
  i = i + 1;
  <D.27206>:
  D.31130 = from->out_count;
  D.31131 = (int) D.31130;
  if (D.31131 > i) goto <D.27205>; else goto <D.27207>;
  <D.27207>:
  i.8 = (unsigned int) i;
  D.31125 = i.8 * 4;
  D.31138 = newa + D.31125;
  *D.31138 = to;
  D.31130 = from->out_count;
  D.31139 = D.31130;
  D.31140 = (unsigned short) D.31139;
  D.31141 = D.31140 + 1;
  D.31142 = (short int) D.31141;
  from->out_count = D.31142;
  from->out_bb = newa;
  <D.31133>:
  found = 0;
  i = 0;
  goto <D.27210>;
  <D.27209>:
  D.31143 = to->in_bb;
  i.8 = (unsigned int) i;
  D.31125 = i.8 * 4;
  D.31144 = D.31143 + D.31125;
  D.31145 = *D.31144;
  if (D.31145 == from) goto <D.31146>; else goto <D.31147>;
  <D.31146>:
  found = 1;
  goto <D.27208>;
  <D.31147>:
  i = i + 1;
  <D.27210>:
  D.31148 = to->in_count;
  D.31149 = (int) D.31148;
  if (D.31149 > i) goto <D.27209>; else goto <D.27208>;
  <D.27208>:
  if (found == 0) goto <D.31150>; else goto <D.31151>;
  <D.31150>:
  D.31134 = cfg->mempool;
  D.31148 = to->in_count;
  D.31149 = (int) D.31148;
  D.31152 = D.31149 + 1;
  D.31153 = (unsigned int) D.31152;
  D.31154 = D.31153 * 4;
  newa = mono_mempool_alloc (D.31134, D.31154);
  i = 0;
  goto <D.27212>;
  <D.27211>:
  i.8 = (unsigned int) i;
  D.31125 = i.8 * 4;
  D.31138 = newa + D.31125;
  D.31143 = to->in_bb;
  i.8 = (unsigned int) i;
  D.31125 = i.8 * 4;
  D.31144 = D.31143 + D.31125;
  D.31145 = *D.31144;
  *D.31138 = D.31145;
  i = i + 1;
  <D.27212>:
  D.31148 = to->in_count;
  D.31149 = (int) D.31148;
  if (D.31149 > i) goto <D.27211>; else goto <D.27213>;
  <D.27213>:
  i.8 = (unsigned int) i;
  D.31125 = i.8 * 4;
  D.31138 = newa + D.31125;
  *D.31138 = from;
  D.31148 = to->in_count;
  D.31155 = D.31148;
  D.31156 = (unsigned short) D.31155;
  D.31157 = D.31156 + 1;
  D.31158 = (short int) D.31157;
  to->in_count = D.31158;
  to->in_bb = newa;
  <D.31151>:
}


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

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


type_to_eval_stack_type (struct MonoCompile * cfg, struct MonoType * type, struct MonoInst * inst)
{
  unsigned char D.31163;
  unsigned char D.31164;
  unsigned char D.31167;
  int D.31168;
  struct MonoClass * D.31169;
  unsigned char D.31170;
  unsigned char D.31171;
  struct MonoClass * D.31174;
  struct MonoGenericClass * D.31175;
  struct MonoClass * D.31176;
  struct MonoGenericSharingContext * D.31177;
  _Bool D.31178;
  long int D.31179;
  long int D.31180;
  int D.31183;
  int D.31186;
  _Bool D.31187;
  long int D.31188;
  long int D.31189;
  struct MonoClass * klass;
  void handle_enum = <<< error >>>;

  type = mini_replace_type (type);
  klass = mono_class_from_mono_type (type);
  inst->klass = klass;
  D.31163 = BIT_FIELD_REF <*type, 8, 56>;
  D.31164 = D.31163 & 64;
  if (D.31164 != 0) goto <D.31165>; else goto <D.31166>;
  <D.31165>:
  inst->type = 5;
  return;
  <D.31166>:
  handle_enum:
  D.31167 = type->type;
  D.31168 = (int) D.31167;
  switch (D.31168) <default: <D.27290>, case 1: <D.27263>, case 2: <D.27266>, case 3: <D.27269>, case 4: <D.27264>, case 5: <D.27265>, case 6: <D.27267>, case 7: <D.27268>, case 8: <D.27270>, case 9: <D.27271>, case 10: <D.27281>, case 11: <D.27282>, case 12: <D.27283>, case 13: <D.27284>, case 14: <D.27277>, case 15: <D.27274>, case 17: <D.27285>, case 18: <D.27276>, case 19: <D.27288>, case 20: <D.27280>, case 21: <D.27287>, case 22: <D.27286>, case 24: <D.27272>, case 25: <D.27273>, case 27: <D.27275>, case 28: <D.27278>, case 29: <D.27279>, case 30: <D.27289>>
  <D.27263>:
  inst->type = 0;
  return;
  <D.27264>:
  <D.27265>:
  <D.27266>:
  <D.27267>:
  <D.27268>:
  <D.27269>:
  <D.27270>:
  <D.27271>:
  inst->type = 1;
  return;
  <D.27272>:
  <D.27273>:
  <D.27274>:
  <D.27275>:
  inst->type = 3;
  return;
  <D.27276>:
  <D.27277>:
  <D.27278>:
  <D.27279>:
  <D.27280>:
  inst->type = 6;
  return;
  <D.27281>:
  <D.27282>:
  inst->type = 2;
  return;
  <D.27283>:
  <D.27284>:
  inst->type = 4;
  return;
  <D.27285>:
  D.31169 = type->data.klass;
  D.31170 = BIT_FIELD_REF <*D.31169, 8, 160>;
  D.31171 = D.31170 & 16;
  if (D.31171 != 0) goto <D.31172>; else goto <D.31173>;
  <D.31172>:
  D.31169 = type->data.klass;
  type = mono_class_enum_basetype (D.31169);
  goto handle_enum;
  <D.31173>:
  inst->klass = klass;
  inst->type = 7;
  return;
  <D.27286>:
  D.31174 = mono_defaults.typed_reference_class;
  inst->klass = D.31174;
  inst->type = 7;
  return;
  <D.27287>:
  D.31175 = type->data.generic_class;
  D.31176 = D.31175->container_class;
  type = &D.31176->byval_arg;
  goto handle_enum;
  <D.27288>:
  <D.27289>:
  D.31177 = cfg->generic_sharing_context;
  D.31178 = D.31177 == 0B;
  D.31179 = (long int) D.31178;
  D.31180 = __builtin_expect (D.31179, 0);
  if (D.31180 != 0) goto <D.31181>; else goto <D.31182>;
  <D.31181>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 717, "cfg->generic_sharing_context");
  <D.31182>:
  D.31183 = mini_is_gsharedvt_type (cfg, type);
  if (D.31183 != 0) goto <D.31184>; else goto <D.31185>;
  <D.31184>:
  D.31186 = cfg->gsharedvt;
  D.31187 = D.31186 == 0;
  D.31188 = (long int) D.31187;
  D.31189 = __builtin_expect (D.31188, 0);
  if (D.31189 != 0) goto <D.31190>; else goto <D.31191>;
  <D.31190>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 719, "cfg->gsharedvt");
  <D.31191>:
  inst->type = 7;
  goto <D.31192>;
  <D.31185>:
  inst->type = 6;
  <D.31192>:
  return;
  <D.27290>:
  D.31167 = type->type;
  D.31168 = (int) D.31167;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in eval stack type", D.31168);
  <D.27291>:
  goto <D.27291>;
}


mono_get_got_var (struct MonoCompile * cfg)
{
  struct MonoInst * D.31194;

  D.31194 = 0B;
  return D.31194;
}


mini_emit_memcpy (struct MonoCompile * cfg, int destreg, int doffset, int srcreg, int soffset, int size, int align)
{
  _Bool D.31198;
  long int D.31199;
  long int D.31200;
  unsigned int D.31205;
  struct MonoMemPool * D.31206;
  int D.31207;
  struct MonoInst * D.31208;
  int D.31209;
  int D.31210;
  const unsigned char * D.31211;
  struct MonoBasicBlock * D.31212;
  struct MonoInst * D.31213;
  int D.31217;
  struct MonoInst * D.31218;
  int D.31219;
  int D.31220;
  unsigned int D.31224;
  int D.31225;
  struct MonoInst * D.31226;
  int D.31227;
  int D.31228;
  int D.31232;
  struct MonoInst * D.31233;
  int D.31234;
  int D.31235;
  unsigned int D.31239;
  int D.31240;
  struct MonoInst * D.31241;
  int D.31242;
  int D.31243;
  int D.31247;
  struct MonoInst * D.31248;
  int D.31249;
  int D.31250;
  unsigned int D.31254;
  int D.31255;
  struct MonoInst * D.31256;
  int D.31257;
  int D.31258;
  int D.31262;
  struct MonoInst * D.31263;
  int D.31264;
  int D.31265;
  int cur_reg;

  if (align == 0) goto <D.31196>; else goto <D.31197>;
  <D.31196>:
  align = 4;
  <D.31197>:
  D.31198 = size > 9999;
  D.31199 = (long int) D.31198;
  D.31200 = __builtin_expect (D.31199, 0);
  if (D.31200 != 0) goto <D.31201>; else goto <D.31202>;
  <D.31201>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1826, "size < 10000");
  <D.31202>:
  if (align <= 3) goto <D.31203>; else goto <D.31204>;
  <D.31203>:
  goto <D.27788>;
  <D.27787>:
  D.31205 = alloc_preg (cfg);
  cur_reg = (int) D.31205;
  {
    struct MonoInst * inst;

    D.31206 = cfg->mempool;
    inst = mono_mempool_alloc (D.31206, 56);
    inst->data.op[1].const_val = 0;
    D.31207 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.31207;
    inst->prev = 0B;
    D.31208 = inst->prev;
    inst->next = D.31208;
    inst->opcode = 389;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.31209 = inst->sreg3;
    inst->sreg2 = D.31209;
    D.31210 = inst->sreg2;
    inst->sreg1 = D.31210;
    D.31211 = cfg->ip;
    inst->cil_code = D.31211;
    inst->dreg = cur_reg;
    inst->sreg1 = srcreg;
    inst->data.op[0].const_val = soffset;
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    if (D.31213 != 0B) goto <D.31214>; else goto <D.31215>;
    <D.31214>:
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    D.31213->next = inst;
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    inst->prev = D.31213;
    D.31212 = cfg->cbb;
    D.31212->last_ins = inst;
    goto <D.31216>;
    <D.31215>:
    D.31212 = cfg->cbb;
    D.31212 = cfg->cbb;
    D.31212->last_ins = inst;
    D.31213 = D.31212->last_ins;
    D.31212->code = D.31213;
    <D.31216>:
  }
  {
    struct MonoInst * inst;

    D.31206 = cfg->mempool;
    inst = mono_mempool_alloc (D.31206, 56);
    inst->data.op[1].const_val = 0;
    D.31217 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.31217;
    inst->prev = 0B;
    D.31218 = inst->prev;
    inst->next = D.31218;
    inst->opcode = 375;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.31219 = inst->sreg3;
    inst->sreg2 = D.31219;
    D.31220 = inst->sreg2;
    inst->sreg1 = D.31220;
    D.31211 = cfg->ip;
    inst->cil_code = D.31211;
    inst->sreg1 = cur_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = doffset;
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    if (D.31213 != 0B) goto <D.31221>; else goto <D.31222>;
    <D.31221>:
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    D.31213->next = inst;
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    inst->prev = D.31213;
    D.31212 = cfg->cbb;
    D.31212->last_ins = inst;
    goto <D.31223>;
    <D.31222>:
    D.31212 = cfg->cbb;
    D.31212 = cfg->cbb;
    D.31212->last_ins = inst;
    D.31213 = D.31212->last_ins;
    D.31212->code = D.31213;
    <D.31223>:
  }
  doffset = doffset + 1;
  soffset = soffset + 1;
  size = size + -1;
  <D.27788>:
  if (size > 0) goto <D.27787>; else goto <D.27789>;
  <D.27789>:
  <D.31204>:
  goto <D.27793>;
  <D.27792>:
  D.31224 = alloc_preg (cfg);
  cur_reg = (int) D.31224;
  {
    struct MonoInst * inst;

    D.31206 = cfg->mempool;
    inst = mono_mempool_alloc (D.31206, 56);
    inst->data.op[1].const_val = 0;
    D.31225 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.31225;
    inst->prev = 0B;
    D.31226 = inst->prev;
    inst->next = D.31226;
    inst->opcode = 393;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.31227 = inst->sreg3;
    inst->sreg2 = D.31227;
    D.31228 = inst->sreg2;
    inst->sreg1 = D.31228;
    D.31211 = cfg->ip;
    inst->cil_code = D.31211;
    inst->dreg = cur_reg;
    inst->sreg1 = srcreg;
    inst->data.op[0].const_val = soffset;
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    if (D.31213 != 0B) goto <D.31229>; else goto <D.31230>;
    <D.31229>:
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    D.31213->next = inst;
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    inst->prev = D.31213;
    D.31212 = cfg->cbb;
    D.31212->last_ins = inst;
    goto <D.31231>;
    <D.31230>:
    D.31212 = cfg->cbb;
    D.31212 = cfg->cbb;
    D.31212->last_ins = inst;
    D.31213 = D.31212->last_ins;
    D.31212->code = D.31213;
    <D.31231>:
  }
  {
    struct MonoInst * inst;

    D.31206 = cfg->mempool;
    inst = mono_mempool_alloc (D.31206, 56);
    inst->data.op[1].const_val = 0;
    D.31232 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.31232;
    inst->prev = 0B;
    D.31233 = inst->prev;
    inst->next = D.31233;
    inst->opcode = 377;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.31234 = inst->sreg3;
    inst->sreg2 = D.31234;
    D.31235 = inst->sreg2;
    inst->sreg1 = D.31235;
    D.31211 = cfg->ip;
    inst->cil_code = D.31211;
    inst->sreg1 = cur_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = doffset;
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    if (D.31213 != 0B) goto <D.31236>; else goto <D.31237>;
    <D.31236>:
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    D.31213->next = inst;
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    inst->prev = D.31213;
    D.31212 = cfg->cbb;
    D.31212->last_ins = inst;
    goto <D.31238>;
    <D.31237>:
    D.31212 = cfg->cbb;
    D.31212 = cfg->cbb;
    D.31212->last_ins = inst;
    D.31213 = D.31212->last_ins;
    D.31212->code = D.31213;
    <D.31238>:
  }
  doffset = doffset + 4;
  soffset = soffset + 4;
  size = size + -4;
  <D.27793>:
  if (size > 3) goto <D.27792>; else goto <D.27794>;
  <D.27794>:
  goto <D.27798>;
  <D.27797>:
  D.31239 = alloc_preg (cfg);
  cur_reg = (int) D.31239;
  {
    struct MonoInst * inst;

    D.31206 = cfg->mempool;
    inst = mono_mempool_alloc (D.31206, 56);
    inst->data.op[1].const_val = 0;
    D.31240 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.31240;
    inst->prev = 0B;
    D.31241 = inst->prev;
    inst->next = D.31241;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.31242 = inst->sreg3;
    inst->sreg2 = D.31242;
    D.31243 = inst->sreg2;
    inst->sreg1 = D.31243;
    D.31211 = cfg->ip;
    inst->cil_code = D.31211;
    inst->dreg = cur_reg;
    inst->sreg1 = srcreg;
    inst->data.op[0].const_val = soffset;
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    if (D.31213 != 0B) goto <D.31244>; else goto <D.31245>;
    <D.31244>:
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    D.31213->next = inst;
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    inst->prev = D.31213;
    D.31212 = cfg->cbb;
    D.31212->last_ins = inst;
    goto <D.31246>;
    <D.31245>:
    D.31212 = cfg->cbb;
    D.31212 = cfg->cbb;
    D.31212->last_ins = inst;
    D.31213 = D.31212->last_ins;
    D.31212->code = D.31213;
    <D.31246>:
  }
  {
    struct MonoInst * inst;

    D.31206 = cfg->mempool;
    inst = mono_mempool_alloc (D.31206, 56);
    inst->data.op[1].const_val = 0;
    D.31247 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.31247;
    inst->prev = 0B;
    D.31248 = inst->prev;
    inst->next = D.31248;
    inst->opcode = 376;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.31249 = inst->sreg3;
    inst->sreg2 = D.31249;
    D.31250 = inst->sreg2;
    inst->sreg1 = D.31250;
    D.31211 = cfg->ip;
    inst->cil_code = D.31211;
    inst->sreg1 = cur_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = doffset;
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    if (D.31213 != 0B) goto <D.31251>; else goto <D.31252>;
    <D.31251>:
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    D.31213->next = inst;
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    inst->prev = D.31213;
    D.31212 = cfg->cbb;
    D.31212->last_ins = inst;
    goto <D.31253>;
    <D.31252>:
    D.31212 = cfg->cbb;
    D.31212 = cfg->cbb;
    D.31212->last_ins = inst;
    D.31213 = D.31212->last_ins;
    D.31212->code = D.31213;
    <D.31253>:
  }
  doffset = doffset + 2;
  soffset = soffset + 2;
  size = size + -2;
  <D.27798>:
  if (size > 1) goto <D.27797>; else goto <D.27799>;
  <D.27799>:
  goto <D.27803>;
  <D.27802>:
  D.31254 = alloc_preg (cfg);
  cur_reg = (int) D.31254;
  {
    struct MonoInst * inst;

    D.31206 = cfg->mempool;
    inst = mono_mempool_alloc (D.31206, 56);
    inst->data.op[1].const_val = 0;
    D.31255 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.31255;
    inst->prev = 0B;
    D.31256 = inst->prev;
    inst->next = D.31256;
    inst->opcode = 389;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.31257 = inst->sreg3;
    inst->sreg2 = D.31257;
    D.31258 = inst->sreg2;
    inst->sreg1 = D.31258;
    D.31211 = cfg->ip;
    inst->cil_code = D.31211;
    inst->dreg = cur_reg;
    inst->sreg1 = srcreg;
    inst->data.op[0].const_val = soffset;
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    if (D.31213 != 0B) goto <D.31259>; else goto <D.31260>;
    <D.31259>:
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    D.31213->next = inst;
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    inst->prev = D.31213;
    D.31212 = cfg->cbb;
    D.31212->last_ins = inst;
    goto <D.31261>;
    <D.31260>:
    D.31212 = cfg->cbb;
    D.31212 = cfg->cbb;
    D.31212->last_ins = inst;
    D.31213 = D.31212->last_ins;
    D.31212->code = D.31213;
    <D.31261>:
  }
  {
    struct MonoInst * inst;

    D.31206 = cfg->mempool;
    inst = mono_mempool_alloc (D.31206, 56);
    inst->data.op[1].const_val = 0;
    D.31262 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.31262;
    inst->prev = 0B;
    D.31263 = inst->prev;
    inst->next = D.31263;
    inst->opcode = 375;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.31264 = inst->sreg3;
    inst->sreg2 = D.31264;
    D.31265 = inst->sreg2;
    inst->sreg1 = D.31265;
    D.31211 = cfg->ip;
    inst->cil_code = D.31211;
    inst->sreg1 = cur_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = doffset;
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    if (D.31213 != 0B) goto <D.31266>; else goto <D.31267>;
    <D.31266>:
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    D.31213->next = inst;
    D.31212 = cfg->cbb;
    D.31213 = D.31212->last_ins;
    inst->prev = D.31213;
    D.31212 = cfg->cbb;
    D.31212->last_ins = inst;
    goto <D.31268>;
    <D.31267>:
    D.31212 = cfg->cbb;
    D.31212 = cfg->cbb;
    D.31212->last_ins = inst;
    D.31213 = D.31212->last_ins;
    D.31212->code = D.31213;
    <D.31268>:
  }
  doffset = doffset + 1;
  soffset = soffset + 1;
  size = size + -1;
  <D.27803>:
  if (size > 0) goto <D.27802>; else goto <D.27804>;
  <D.27804>:
}


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

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


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.31272;
  unsigned int D.31277;
  struct MonoMemPool * D.31278;
  int D.31279;
  struct MonoInst * D.31280;
  int D.31281;
  int D.31282;
  const unsigned char * D.31283;
  int D.31284;
  struct MonoBasicBlock * D.31285;
  struct MonoInst * D.31286;
  unsigned char D.31290;
  unsigned char D.31291;
  struct MonoClass * D.31294;
  struct MonoType * D.31295;
  int iftmp.10;
  unsigned char D.31302;
  unsigned char D.31303;
  struct MonoClass * D.31305;
  unsigned char D.31306;
  unsigned char D.31307;
  struct MonoClass * D.31309;
  short unsigned int D.31310;
  int D.31311;
  int D.31312;
  struct MonoMethod * D.31314;
  struct MonoMethodSignature * D.31315;
  unsigned char D.31316;
  unsigned char D.31317;
  short unsigned int D.31319;
  int D.31321;
  struct MonoInst * * D.31322;
  struct MonoInst * D.31323;
  int D.31324;
  _Bool D.31326;
  _Bool D.31327;
  _Bool D.31328;
  struct MonoGenericSharingContext * D.31331;
  _Bool D.31332;
  long int D.31333;
  long int D.31334;
  struct MonoInst * D.31337;
  int iftmp.11;
  unsigned int D.31343;
  unsigned int D.31344;
  _Bool D.31345;
  int D.31346;
  struct MonoMethod * D.31349;
  unsigned char D.31351;
  unsigned char D.31352;
  unsigned char D.31353;
  <unnamed-unsigned:1> D.31354;
  struct MonoClass * D.31357;
  struct MonoClass * D.31358;
  int D.28072;
  int iftmp.12;
  int D.28071;
  const char[7] * D.31364;
  unsigned char D.31365;
  int D.31366;
  unsigned char D.31367;
  int D.31368;
  _Bool D.31369;
  _Bool D.31370;
  _Bool D.31371;
  const unsigned char * D.31374;
  unsigned char D.31375;
  int D.31376;
  const unsigned char * D.31377;
  unsigned char D.31378;
  int D.31379;
  _Bool D.31380;
  _Bool D.31381;
  const unsigned char * D.31384;
  unsigned char D.31385;
  int D.31386;
  const unsigned char * D.31387;
  unsigned char D.31388;
  int D.31389;
  _Bool D.31390;
  _Bool D.31391;
  const unsigned char * D.31394;
  unsigned char D.31395;
  int D.31396;
  const unsigned char * D.31397;
  unsigned char D.31398;
  int D.31399;
  const char * D.31401;
  unsigned char D.31404;
  unsigned char D.31405;
  int D.31408;
  struct MonoInst * D.31409;
  int D.31410;
  int D.31411;
  int D.31415;
  struct MonoInst * D.31416;
  int D.31417;
  int D.31418;
  int D.31426;
  struct MonoInst * D.31427;
  int D.31428;
  int D.31429;
  struct MonoInst * D.31430;
  int D.31431;
  unsigned char D.31441;
  unsigned char D.31442;
  int D.31445;
  unsigned int D.31448;
  unsigned char D.31449;
  struct MonoMethod * D.31454;
  unsigned int D.31457;
  unsigned int D.31458;
  int D.31463;
  struct MonoInst * D.31464;
  int D.31465;
  int D.31466;
  int D.31470;
  struct MonoInst * D.31471;
  int D.31472;
  int D.31473;
  int D.31479;
  struct MonoInst * D.31480;
  int D.31481;
  int D.31482;
  int D.31486;
  struct MonoInst * D.31487;
  int D.31488;
  int D.31489;
  short unsigned int D.31493;
  int D.31494;
  int D.31495;
  short unsigned int D.31496;
  int D.31507;
  struct MonoInst * D.31508;
  int D.31509;
  int D.31510;
  int D.31514;
  struct MonoInst * D.31515;
  int D.31516;
  int D.31517;
  int D.31523;
  struct MonoInst * D.31524;
  int D.31525;
  int D.31526;
  int D.31530;
  struct MonoInst * D.31531;
  int D.31532;
  int D.31533;
  int D.31537;
  short unsigned int D.31538;
  unsigned int D.31539;
  int D.31540;
  int D.31545;
  struct MonoInst * D.31546;
  int D.31547;
  int D.31548;
  int D.31552;
  struct MonoInst * D.31553;
  int D.31554;
  int D.31555;
  int D.31560;
  struct MonoInst * D.31561;
  int D.31562;
  int D.31563;
  unsigned char D.31564;
  int mono_use_imt.13;
  struct MonoMethod * D.31573;
  int imt_slot.14;
  int D.31575;
  unsigned int D.31578;
  int D.31579;
  int D.31581;
  int D.31582;
  unsigned int D.31583;
  unsigned int D.31584;
  struct MonoMethodSignature * D.31587;
  short unsigned int D.31588;
  _Bool D.31589;
  long int D.31590;
  long int D.31591;
  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.31272 = this != 0B;
  virtual = (gboolean) D.31272;
  enable_for_aot = 1;
  rgctx_reg = 0;
  if (sig == 0B) goto <D.31273>; else goto <D.31274>;
  <D.31273>:
  sig = mono_method_signature (method);
  <D.31274>:
  if (rgctx_arg != 0B) goto <D.31275>; else goto <D.31276>;
  <D.31275>:
  D.31277 = mono_alloc_preg (cfg);
  rgctx_reg = (int) D.31277;
  {
    struct MonoInst * inst;

    D.31278 = cfg->mempool;
    inst = mono_mempool_alloc (D.31278, 56);
    inst->data.op[1].const_val = 0;
    D.31279 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.31279;
    inst->prev = 0B;
    D.31280 = inst->prev;
    inst->next = D.31280;
    inst->opcode = 424;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.31281 = inst->sreg3;
    inst->sreg2 = D.31281;
    D.31282 = inst->sreg2;
    inst->sreg1 = D.31282;
    D.31283 = cfg->ip;
    inst->cil_code = D.31283;
    inst->dreg = rgctx_reg;
    D.31284 = rgctx_arg->dreg;
    inst->sreg1 = D.31284;
    D.31285 = cfg->cbb;
    D.31286 = D.31285->last_ins;
    if (D.31286 != 0B) goto <D.31287>; else goto <D.31288>;
    <D.31287>:
    D.31285 = cfg->cbb;
    D.31286 = D.31285->last_ins;
    D.31286->next = inst;
    D.31285 = cfg->cbb;
    D.31286 = D.31285->last_ins;
    inst->prev = D.31286;
    D.31285 = cfg->cbb;
    D.31285->last_ins = inst;
    goto <D.31289>;
    <D.31288>:
    D.31285 = cfg->cbb;
    D.31285 = cfg->cbb;
    D.31285->last_ins = inst;
    D.31286 = D.31285->last_ins;
    D.31285->code = D.31286;
    <D.31289>:
  }
  <D.31276>:
  D.31290 = BIT_FIELD_REF <*method, 8, 160>;
  D.31291 = D.31290 & 128;
  if (D.31291 != 0) goto <D.31292>; else goto <D.31293>;
  <D.31292>:
  {
    struct MonoMethodSignature * ctor_sig;

    D.31278 = cfg->mempool;
    ctor_sig = mono_metadata_signature_dup_mempool (D.31278, sig);
    D.31294 = mono_defaults.string_class;
    D.31295 = &D.31294->byval_arg;
    ctor_sig->ret = D.31295;
    sig = ctor_sig;
  }
  <D.31293>:
  context_used = mini_method_check_context_used (cfg, method);
  if (this != 0B) goto <D.31301>; else goto <D.31297>;
  <D.31301>:
  D.31302 = BIT_FIELD_REF <*sig, 8, 80>;
  D.31303 = D.31302 & 64;
  if (D.31303 != 0) goto <D.31304>; else goto <D.31297>;
  <D.31304>:
  D.31305 = method->klass;
  D.31306 = BIT_FIELD_REF <*D.31305, 8, 176>;
  D.31307 = D.31306 & 64;
  if (D.31307 != 0) goto <D.31298>; else goto <D.31308>;
  <D.31308>:
  D.31305 = method->klass;
  D.31309 = mono_defaults.object_class;
  if (D.31305 == D.31309) goto <D.31298>; else goto <D.31297>;
  <D.31298>:
  D.31310 = method->flags;
  D.31311 = (int) D.31310;
  D.31312 = D.31311 & 64;
  if (D.31312 == 0) goto <D.31313>; else goto <D.31297>;
  <D.31313>:
  D.31314 = cfg->method;
  D.31315 = mono_method_signature (D.31314);
  D.31316 = BIT_FIELD_REF <*D.31315, 8, 80>;
  D.31317 = D.31316 & 64;
  if (D.31317 == 0) goto <D.31299>; else goto <D.31318>;
  <D.31318>:
  D.31319 = this->opcode;
  if (D.31319 != 424) goto <D.31299>; else goto <D.31320>;
  <D.31320>:
  D.31321 = this->sreg1;
  D.31322 = cfg->args;
  D.31323 = *D.31322;
  D.31324 = D.31323->dreg;
  if (D.31321 != D.31324) goto <D.31299>; else goto <D.31325>;
  <D.31325>:
  if (context_used != 0) goto <D.31299>; else goto <D.31297>;
  <D.31299>:
  iftmp.10 = 1;
  goto <D.31300>;
  <D.31297>:
  iftmp.10 = 0;
  <D.31300>:
  might_be_remote = iftmp.10;
  D.31326 = might_be_remote != 0;
  D.31327 = context_used != 0;
  D.31328 = D.31326 & D.31327;
  if (D.31328 != 0) goto <D.31329>; else goto <D.31330>;
  <D.31329>:
  {
    struct MonoInst * addr;

    D.31331 = cfg->generic_sharing_context;
    D.31332 = D.31331 == 0B;
    D.31333 = (long int) D.31332;
    D.31334 = __builtin_expect (D.31333, 0);
    if (D.31334 != 0) goto <D.31335>; else goto <D.31336>;
    <D.31335>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2632, "cfg->generic_sharing_context");
    <D.31336>:
    addr = emit_get_rgctx_method (cfg, context_used, method, 10);
    D.31337 = mono_emit_calli (cfg, sig, args, addr, 0B, 0B);
    return D.31337;
  }
  <D.31330>:
  D.31305 = method->klass;
  D.31309 = mono_defaults.object_class;
  if (D.31305 == D.31309) goto <D.31339>; else goto <D.31342>;
  <D.31342>:
  D.31305 = method->klass;
  D.31343 = D.31305->flags;
  D.31344 = D.31343 & 32;
  if (D.31344 != 0) goto <D.31339>; else goto <D.31340>;
  <D.31339>:
  iftmp.11 = 1;
  goto <D.31341>;
  <D.31340>:
  iftmp.11 = 0;
  <D.31341>:
  need_unbox_trampoline = iftmp.11;
  D.31345 = rgctx_arg != 0B;
  D.31346 = (int) D.31345;
  call = mono_emit_call_args (cfg, sig, args, 0, virtual, tail, D.31346, need_unbox_trampoline);
  if (might_be_remote != 0) goto <D.31347>; else goto <D.31348>;
  <D.31347>:
  D.31349 = mono_marshal_get_remoting_invoke_with_check (method);
  call->method = D.31349;
  goto <D.31350>;
  <D.31348>:
  call->method = method;
  <D.31350>:
  D.31351 = call->inst.flags;
  D.31352 = D.31351 | 1;
  call->inst.flags = D.31352;
  call->inst.data.op[0].src = this;
  D.31353 = (unsigned char) tail;
  D.31354 = (<unnamed-unsigned:1>) D.31353;
  call->tail_call = D.31354;
  if (virtual != 0) goto <D.31355>; else goto <D.31356>;
  <D.31355>:
  {
    int vtable_reg;
    int slot_reg;
    int this_reg;
    int offset;

    this_reg = this->dreg;
    D.31305 = method->klass;
    D.31357 = D.31305->parent;
    D.31358 = mono_defaults.multicastdelegate_class;
    if (D.31357 == D.31358) goto <D.31359>; else goto <D.31360>;
    <D.31359>:
    {
      size_t __s1_len;
      size_t __s2_len;

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

        __s2 = method->name;
        D.31364 = "Invoke";
        D.31365 = MEM[(const unsigned char *)D.31364];
        D.31366 = (int) D.31365;
        D.31367 = *__s2;
        D.31368 = (int) D.31367;
        __result = D.31366 - D.31368;
        {
          D.31369 = __s2_len != 0;
          D.31370 = __result == 0;
          D.31371 = D.31369 & D.31370;
          if (D.31371 != 0) goto <D.31372>; else goto <D.31373>;
          <D.31372>:
          D.31374 = &MEM[(void *)"Invoke" + 1B];
          D.31375 = *D.31374;
          D.31376 = (int) D.31375;
          D.31377 = __s2 + 1;
          D.31378 = *D.31377;
          D.31379 = (int) D.31378;
          __result = D.31376 - D.31379;
          D.31380 = __s2_len > 1;
          D.31370 = __result == 0;
          D.31381 = D.31380 & D.31370;
          if (D.31381 != 0) goto <D.31382>; else goto <D.31383>;
          <D.31382>:
          D.31384 = &MEM[(void *)"Invoke" + 2B];
          D.31385 = *D.31384;
          D.31386 = (int) D.31385;
          D.31387 = __s2 + 2;
          D.31388 = *D.31387;
          D.31389 = (int) D.31388;
          __result = D.31386 - D.31389;
          D.31390 = __s2_len > 2;
          D.31370 = __result == 0;
          D.31391 = D.31390 & D.31370;
          if (D.31391 != 0) goto <D.31392>; else goto <D.31393>;
          <D.31392>:
          D.31394 = &MEM[(void *)"Invoke" + 3B];
          D.31395 = *D.31394;
          D.31396 = (int) D.31395;
          D.31397 = __s2 + 3;
          D.31398 = *D.31397;
          D.31399 = (int) D.31398;
          __result = D.31396 - D.31399;
          <D.31393>:
          <D.31383>:
          <D.31373>:
        }
        D.28071 = __result;
      }
      iftmp.12 = -D.28071;
      goto <D.31400>;
      <D.31363>:
      D.31401 = method->name;
      iftmp.12 = __builtin_strcmp (D.31401, "Invoke");
      <D.31400>:
      D.28072 = iftmp.12;
    }
    if (D.28072 == 0) goto <D.31402>; else goto <D.31403>;
    <D.31402>:
    {
      struct MonoInst * dummy_use;

      D.31404 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.31405 = D.31404 & 64;
      if (D.31405 != 0) goto <D.31406>; else goto <D.31407>;
      <D.31406>:
      {
        struct MonoInst * inst;

        D.31278 = cfg->mempool;
        inst = mono_mempool_alloc (D.31278, 56);
        inst->data.op[1].const_val = 0;
        D.31408 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.31408;
        inst->prev = 0B;
        D.31409 = inst->prev;
        inst->next = D.31409;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.31410 = inst->sreg3;
        inst->sreg2 = D.31410;
        D.31411 = inst->sreg2;
        inst->sreg1 = D.31411;
        D.31283 = cfg->ip;
        inst->cil_code = D.31283;
        inst->dreg = -1;
        inst->sreg1 = this_reg;
        inst->data.op[1].const_val = 0;
        D.31285 = cfg->cbb;
        D.31286 = D.31285->last_ins;
        if (D.31286 != 0B) goto <D.31412>; else goto <D.31413>;
        <D.31412>:
        D.31285 = cfg->cbb;
        D.31286 = D.31285->last_ins;
        D.31286->next = inst;
        D.31285 = cfg->cbb;
        D.31286 = D.31285->last_ins;
        inst->prev = D.31286;
        D.31285 = cfg->cbb;
        D.31285->last_ins = inst;
        goto <D.31414>;
        <D.31413>:
        D.31285 = cfg->cbb;
        D.31285 = cfg->cbb;
        D.31285->last_ins = inst;
        D.31286 = D.31285->last_ins;
        D.31285->code = D.31286;
        <D.31414>:
      }
      {
        struct MonoInst * inst;

        D.31278 = cfg->mempool;
        inst = mono_mempool_alloc (D.31278, 56);
        inst->data.op[1].const_val = 0;
        D.31415 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.31415;
        inst->prev = 0B;
        D.31416 = inst->prev;
        inst->next = D.31416;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.31417 = inst->sreg3;
        inst->sreg2 = D.31417;
        D.31418 = inst->sreg2;
        inst->sreg1 = D.31418;
        D.31283 = cfg->ip;
        inst->cil_code = D.31283;
        inst->data.op[1].p = "NullReferenceException";
        D.31285 = cfg->cbb;
        D.31286 = D.31285->last_ins;
        if (D.31286 != 0B) goto <D.31419>; else goto <D.31420>;
        <D.31419>:
        D.31285 = cfg->cbb;
        D.31286 = D.31285->last_ins;
        D.31286->next = inst;
        D.31285 = cfg->cbb;
        D.31286 = D.31285->last_ins;
        inst->prev = D.31286;
        D.31285 = cfg->cbb;
        D.31285->last_ins = inst;
        goto <D.31421>;
        <D.31420>:
        D.31285 = cfg->cbb;
        D.31285 = cfg->cbb;
        D.31285->last_ins = inst;
        D.31286 = D.31285->last_ins;
        D.31285->code = D.31286;
        <D.31421>:
      }
      goto <D.31422>;
      <D.31407>:
      <D.31422>:
      call->inst.sreg1 = this_reg;
      call->inst.data.op[0].const_val = 12;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      if (D.31286 != 0B) goto <D.31423>; else goto <D.31424>;
      <D.31423>:
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      D.31286->next = call;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      MEM[(struct MonoInst *)call].prev = D.31286;
      D.31285 = cfg->cbb;
      D.31285->last_ins = call;
      goto <D.31425>;
      <D.31424>:
      D.31285 = cfg->cbb;
      D.31285 = cfg->cbb;
      D.31285->last_ins = call;
      D.31286 = D.31285->last_ins;
      D.31285->code = D.31286;
      <D.31425>:
      D.31278 = cfg->mempool;
      dummy_use = mono_mempool_alloc (D.31278, 56);
      dummy_use->data.op[1].const_val = 0;
      D.31426 = dummy_use->data.op[1].const_val;
      dummy_use->data.op[0].const_val = D.31426;
      dummy_use->prev = 0B;
      D.31427 = dummy_use->prev;
      dummy_use->next = D.31427;
      dummy_use->opcode = 796;
      dummy_use->flags = 0;
      dummy_use->type = 0;
      dummy_use->dreg = -1;
      dummy_use->sreg3 = -1;
      D.31428 = dummy_use->sreg3;
      dummy_use->sreg2 = D.31428;
      D.31429 = dummy_use->sreg2;
      dummy_use->sreg1 = D.31429;
      D.31283 = cfg->ip;
      dummy_use->cil_code = D.31283;
      D.31430 = *args;
      D.31431 = D.31430->dreg;
      dummy_use->sreg1 = D.31431;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      if (D.31286 != 0B) goto <D.31432>; else goto <D.31433>;
      <D.31432>:
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      D.31286->next = dummy_use;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      dummy_use->prev = D.31286;
      D.31285 = cfg->cbb;
      D.31285->last_ins = dummy_use;
      goto <D.31434>;
      <D.31433>:
      D.31285 = cfg->cbb;
      D.31285 = cfg->cbb;
      D.31285->last_ins = dummy_use;
      D.31286 = D.31285->last_ins;
      D.31285->code = D.31286;
      <D.31434>:
      D.31337 = call;
      return D.31337;
    }
    <D.31403>:
    <D.31360>:
    D.31441 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.31442 = D.31441 & 64;
    if (D.31442 == 0) goto <D.31435>; else goto <D.31443>;
    <D.31443>:
    if (enable_for_aot != 0) goto <D.31435>; else goto <D.31436>;
    <D.31435>:
    D.31310 = method->flags;
    D.31311 = (int) D.31310;
    D.31312 = D.31311 & 64;
    if (D.31312 == 0) goto <D.31437>; else goto <D.31444>;
    <D.31444>:
    D.31310 = method->flags;
    D.31311 = (int) D.31310;
    D.31445 = D.31311 & 32;
    if (D.31445 != 0) goto <D.31438>; else goto <D.31446>;
    <D.31446>:
    D.31305 = method->klass;
    if (D.31305 != 0B) goto <D.31447>; else goto <D.31436>;
    <D.31447>:
    D.31305 = method->klass;
    D.31343 = D.31305->flags;
    D.31448 = D.31343 & 256;
    if (D.31448 != 0) goto <D.31438>; else goto <D.31436>;
    <D.31438>:
    D.31290 = BIT_FIELD_REF <*method, 8, 160>;
    D.31449 = D.31290 & 124;
    if (D.31449 != 36) goto <D.31437>; else goto <D.31436>;
    <D.31437>:
    D.31305 = method->klass;
    D.31306 = BIT_FIELD_REF <*D.31305, 8, 176>;
    D.31307 = D.31306 & 64;
    if (D.31307 == 0) goto <D.31439>; else goto <D.31450>;
    <D.31450>:
    if (context_used == 0) goto <D.31439>; else goto <D.31436>;
    <D.31439>:
    D.31305 = method->klass;
    D.31306 = BIT_FIELD_REF <*D.31305, 8, 176>;
    D.31307 = D.31306 & 64;
    if (D.31307 != 0) goto <D.31451>; else goto <D.31453>;
    <D.31453>:
    D.31305 = method->klass;
    D.31309 = mono_defaults.object_class;
    if (D.31305 == D.31309) goto <D.31451>; else goto <D.31452>;
    <D.31451>:
    D.31454 = mono_marshal_get_remoting_invoke_with_check (method);
    call->method = D.31454;
    method = call->method;
    <D.31452>:
    D.31290 = BIT_FIELD_REF <*method, 8, 160>;
    D.31291 = D.31290 & 128;
    if (D.31291 == 0) goto <D.31455>; else goto <D.31456>;
    <D.31455>:
    D.31457 = cfg->flags;
    D.31458 = D.31457 | 128;
    cfg->flags = D.31458;
    D.31404 = BIT_FIELD_REF <*cfg, 8, 3424>;
    D.31405 = D.31404 & 64;
    if (D.31405 != 0) goto <D.31459>; else goto <D.31460>;
    <D.31459>:
    D.31404 = BIT_FIELD_REF <*cfg, 8, 3424>;
    D.31405 = D.31404 & 64;
    if (D.31405 != 0) goto <D.31461>; else goto <D.31462>;
    <D.31461>:
    {
      struct MonoInst * inst;

      D.31278 = cfg->mempool;
      inst = mono_mempool_alloc (D.31278, 56);
      inst->data.op[1].const_val = 0;
      D.31463 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.31463;
      inst->prev = 0B;
      D.31464 = inst->prev;
      inst->next = D.31464;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.31465 = inst->sreg3;
      inst->sreg2 = D.31465;
      D.31466 = inst->sreg2;
      inst->sreg1 = D.31466;
      D.31283 = cfg->ip;
      inst->cil_code = D.31283;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      inst->data.op[1].const_val = 0;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      if (D.31286 != 0B) goto <D.31467>; else goto <D.31468>;
      <D.31467>:
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      D.31286->next = inst;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      inst->prev = D.31286;
      D.31285 = cfg->cbb;
      D.31285->last_ins = inst;
      goto <D.31469>;
      <D.31468>:
      D.31285 = cfg->cbb;
      D.31285 = cfg->cbb;
      D.31285->last_ins = inst;
      D.31286 = D.31285->last_ins;
      D.31285->code = D.31286;
      <D.31469>:
    }
    {
      struct MonoInst * inst;

      D.31278 = cfg->mempool;
      inst = mono_mempool_alloc (D.31278, 56);
      inst->data.op[1].const_val = 0;
      D.31470 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.31470;
      inst->prev = 0B;
      D.31471 = inst->prev;
      inst->next = D.31471;
      inst->opcode = 451;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.31472 = inst->sreg3;
      inst->sreg2 = D.31472;
      D.31473 = inst->sreg2;
      inst->sreg1 = D.31473;
      D.31283 = cfg->ip;
      inst->cil_code = D.31283;
      inst->data.op[1].p = "NullReferenceException";
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      if (D.31286 != 0B) goto <D.31474>; else goto <D.31475>;
      <D.31474>:
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      D.31286->next = inst;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      inst->prev = D.31286;
      D.31285 = cfg->cbb;
      D.31285->last_ins = inst;
      goto <D.31476>;
      <D.31475>:
      D.31285 = cfg->cbb;
      D.31285 = cfg->cbb;
      D.31285->last_ins = inst;
      D.31286 = D.31285->last_ins;
      D.31285->code = D.31286;
      <D.31476>:
    }
    goto <D.31477>;
    <D.31462>:
    <D.31477>:
    goto <D.31478>;
    <D.31460>:
    {
      struct MonoInst * inst;

      D.31278 = cfg->mempool;
      inst = mono_mempool_alloc (D.31278, 56);
      inst->data.op[1].const_val = 0;
      D.31479 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.31479;
      inst->prev = 0B;
      D.31480 = inst->prev;
      inst->next = D.31480;
      inst->opcode = 340;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.31481 = inst->sreg3;
      inst->sreg2 = D.31481;
      D.31482 = inst->sreg2;
      inst->sreg1 = D.31482;
      D.31283 = cfg->ip;
      inst->cil_code = D.31283;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      if (D.31286 != 0B) goto <D.31483>; else goto <D.31484>;
      <D.31483>:
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      D.31286->next = inst;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      inst->prev = D.31286;
      D.31285 = cfg->cbb;
      D.31285->last_ins = inst;
      goto <D.31485>;
      <D.31484>:
      D.31285 = cfg->cbb;
      D.31285 = cfg->cbb;
      D.31285->last_ins = inst;
      D.31286 = D.31285->last_ins;
      D.31285->code = D.31286;
      <D.31485>:
    }
    <D.31478>:
    {
      struct MonoInst * inst;

      D.31278 = cfg->mempool;
      inst = mono_mempool_alloc (D.31278, 56);
      inst->data.op[1].const_val = 0;
      D.31486 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.31486;
      inst->prev = 0B;
      D.31487 = inst->prev;
      inst->next = D.31487;
      inst->opcode = 799;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.31488 = inst->sreg3;
      inst->sreg2 = D.31488;
      D.31489 = inst->sreg2;
      inst->sreg1 = D.31489;
      D.31283 = cfg->ip;
      inst->cil_code = D.31283;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      if (D.31286 != 0B) goto <D.31490>; else goto <D.31491>;
      <D.31490>:
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      D.31286->next = inst;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      inst->prev = D.31286;
      D.31285 = cfg->cbb;
      D.31285->last_ins = inst;
      goto <D.31492>;
      <D.31491>:
      D.31285 = cfg->cbb;
      D.31285 = cfg->cbb;
      D.31285->last_ins = inst;
      D.31286 = D.31285->last_ins;
      D.31285->code = D.31286;
      <D.31492>:
    }
    <D.31456>:
    D.31493 = call->inst.opcode;
    D.31494 = (int) D.31493;
    D.31495 = callvirt_to_call (D.31494);
    D.31496 = (short unsigned int) D.31495;
    call->inst.opcode = D.31496;
    goto <D.31440>;
    <D.31436>:
    D.31310 = method->flags;
    D.31311 = (int) D.31310;
    D.31312 = D.31311 & 64;
    if (D.31312 != 0) goto <D.31500>; else goto <D.31497>;
    <D.31500>:
    D.31310 = method->flags;
    D.31311 = (int) D.31310;
    D.31445 = D.31311 & 32;
    if (D.31445 != 0) goto <D.31498>; else goto <D.31501>;
    <D.31501>:
    D.31305 = method->klass;
    if (D.31305 != 0B) goto <D.31502>; else goto <D.31497>;
    <D.31502>:
    D.31305 = method->klass;
    D.31343 = D.31305->flags;
    D.31448 = D.31343 & 256;
    if (D.31448 != 0) goto <D.31498>; else goto <D.31497>;
    <D.31498>:
    D.31457 = cfg->flags;
    D.31458 = D.31457 | 128;
    cfg->flags = D.31458;
    D.31404 = BIT_FIELD_REF <*cfg, 8, 3424>;
    D.31405 = D.31404 & 64;
    if (D.31405 != 0) goto <D.31503>; else goto <D.31504>;
    <D.31503>:
    D.31404 = BIT_FIELD_REF <*cfg, 8, 3424>;
    D.31405 = D.31404 & 64;
    if (D.31405 != 0) goto <D.31505>; else goto <D.31506>;
    <D.31505>:
    {
      struct MonoInst * inst;

      D.31278 = cfg->mempool;
      inst = mono_mempool_alloc (D.31278, 56);
      inst->data.op[1].const_val = 0;
      D.31507 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.31507;
      inst->prev = 0B;
      D.31508 = inst->prev;
      inst->next = D.31508;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.31509 = inst->sreg3;
      inst->sreg2 = D.31509;
      D.31510 = inst->sreg2;
      inst->sreg1 = D.31510;
      D.31283 = cfg->ip;
      inst->cil_code = D.31283;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      inst->data.op[1].const_val = 0;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      if (D.31286 != 0B) goto <D.31511>; else goto <D.31512>;
      <D.31511>:
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      D.31286->next = inst;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      inst->prev = D.31286;
      D.31285 = cfg->cbb;
      D.31285->last_ins = inst;
      goto <D.31513>;
      <D.31512>:
      D.31285 = cfg->cbb;
      D.31285 = cfg->cbb;
      D.31285->last_ins = inst;
      D.31286 = D.31285->last_ins;
      D.31285->code = D.31286;
      <D.31513>:
    }
    {
      struct MonoInst * inst;

      D.31278 = cfg->mempool;
      inst = mono_mempool_alloc (D.31278, 56);
      inst->data.op[1].const_val = 0;
      D.31514 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.31514;
      inst->prev = 0B;
      D.31515 = inst->prev;
      inst->next = D.31515;
      inst->opcode = 451;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.31516 = inst->sreg3;
      inst->sreg2 = D.31516;
      D.31517 = inst->sreg2;
      inst->sreg1 = D.31517;
      D.31283 = cfg->ip;
      inst->cil_code = D.31283;
      inst->data.op[1].p = "NullReferenceException";
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      if (D.31286 != 0B) goto <D.31518>; else goto <D.31519>;
      <D.31518>:
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      D.31286->next = inst;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      inst->prev = D.31286;
      D.31285 = cfg->cbb;
      D.31285->last_ins = inst;
      goto <D.31520>;
      <D.31519>:
      D.31285 = cfg->cbb;
      D.31285 = cfg->cbb;
      D.31285->last_ins = inst;
      D.31286 = D.31285->last_ins;
      D.31285->code = D.31286;
      <D.31520>:
    }
    goto <D.31521>;
    <D.31506>:
    <D.31521>:
    goto <D.31522>;
    <D.31504>:
    {
      struct MonoInst * inst;

      D.31278 = cfg->mempool;
      inst = mono_mempool_alloc (D.31278, 56);
      inst->data.op[1].const_val = 0;
      D.31523 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.31523;
      inst->prev = 0B;
      D.31524 = inst->prev;
      inst->next = D.31524;
      inst->opcode = 340;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.31525 = inst->sreg3;
      inst->sreg2 = D.31525;
      D.31526 = inst->sreg2;
      inst->sreg1 = D.31526;
      D.31283 = cfg->ip;
      inst->cil_code = D.31283;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      if (D.31286 != 0B) goto <D.31527>; else goto <D.31528>;
      <D.31527>:
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      D.31286->next = inst;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      inst->prev = D.31286;
      D.31285 = cfg->cbb;
      D.31285->last_ins = inst;
      goto <D.31529>;
      <D.31528>:
      D.31285 = cfg->cbb;
      D.31285 = cfg->cbb;
      D.31285->last_ins = inst;
      D.31286 = D.31285->last_ins;
      D.31285->code = D.31286;
      <D.31529>:
    }
    <D.31522>:
    {
      struct MonoInst * inst;

      D.31278 = cfg->mempool;
      inst = mono_mempool_alloc (D.31278, 56);
      inst->data.op[1].const_val = 0;
      D.31530 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.31530;
      inst->prev = 0B;
      D.31531 = inst->prev;
      inst->next = D.31531;
      inst->opcode = 799;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.31532 = inst->sreg3;
      inst->sreg2 = D.31532;
      D.31533 = inst->sreg2;
      inst->sreg1 = D.31533;
      D.31283 = cfg->ip;
      inst->cil_code = D.31283;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      if (D.31286 != 0B) goto <D.31534>; else goto <D.31535>;
      <D.31534>:
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      D.31286->next = inst;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      inst->prev = D.31286;
      D.31285 = cfg->cbb;
      D.31285->last_ins = inst;
      goto <D.31536>;
      <D.31535>:
      D.31285 = cfg->cbb;
      D.31285 = cfg->cbb;
      D.31285->last_ins = inst;
      D.31286 = D.31285->last_ins;
      D.31285->code = D.31286;
      <D.31536>:
    }
    D.31493 = call->inst.opcode;
    D.31494 = (int) D.31493;
    D.31537 = callvirt_to_call (D.31494);
    D.31538 = (short unsigned int) D.31537;
    call->inst.opcode = D.31538;
    goto <D.31499>;
    <D.31497>:
    D.31539 = alloc_preg (cfg);
    vtable_reg = (int) D.31539;
    {
      struct MonoInst * inst;
      int __ins_flags;

      __ins_flags = 32;
      D.31540 = __ins_flags & 32;
      if (D.31540 != 0) goto <D.31541>; else goto <D.31542>;
      <D.31541>:
      D.31404 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.31405 = D.31404 & 64;
      if (D.31405 != 0) goto <D.31543>; else goto <D.31544>;
      <D.31543>:
      {
        struct MonoInst * inst;

        D.31278 = cfg->mempool;
        inst = mono_mempool_alloc (D.31278, 56);
        inst->data.op[1].const_val = 0;
        D.31545 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.31545;
        inst->prev = 0B;
        D.31546 = inst->prev;
        inst->next = D.31546;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.31547 = inst->sreg3;
        inst->sreg2 = D.31547;
        D.31548 = inst->sreg2;
        inst->sreg1 = D.31548;
        D.31283 = cfg->ip;
        inst->cil_code = D.31283;
        inst->dreg = -1;
        inst->sreg1 = this_reg;
        inst->data.op[1].const_val = 0;
        D.31285 = cfg->cbb;
        D.31286 = D.31285->last_ins;
        if (D.31286 != 0B) goto <D.31549>; else goto <D.31550>;
        <D.31549>:
        D.31285 = cfg->cbb;
        D.31286 = D.31285->last_ins;
        D.31286->next = inst;
        D.31285 = cfg->cbb;
        D.31286 = D.31285->last_ins;
        inst->prev = D.31286;
        D.31285 = cfg->cbb;
        D.31285->last_ins = inst;
        goto <D.31551>;
        <D.31550>:
        D.31285 = cfg->cbb;
        D.31285 = cfg->cbb;
        D.31285->last_ins = inst;
        D.31286 = D.31285->last_ins;
        D.31285->code = D.31286;
        <D.31551>:
      }
      {
        struct MonoInst * inst;

        D.31278 = cfg->mempool;
        inst = mono_mempool_alloc (D.31278, 56);
        inst->data.op[1].const_val = 0;
        D.31552 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.31552;
        inst->prev = 0B;
        D.31553 = inst->prev;
        inst->next = D.31553;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.31554 = inst->sreg3;
        inst->sreg2 = D.31554;
        D.31555 = inst->sreg2;
        inst->sreg1 = D.31555;
        D.31283 = cfg->ip;
        inst->cil_code = D.31283;
        inst->data.op[1].p = "NullReferenceException";
        D.31285 = cfg->cbb;
        D.31286 = D.31285->last_ins;
        if (D.31286 != 0B) goto <D.31556>; else goto <D.31557>;
        <D.31556>:
        D.31285 = cfg->cbb;
        D.31286 = D.31285->last_ins;
        D.31286->next = inst;
        D.31285 = cfg->cbb;
        D.31286 = D.31285->last_ins;
        inst->prev = D.31286;
        D.31285 = cfg->cbb;
        D.31285->last_ins = inst;
        goto <D.31558>;
        <D.31557>:
        D.31285 = cfg->cbb;
        D.31285 = cfg->cbb;
        D.31285->last_ins = inst;
        D.31286 = D.31285->last_ins;
        D.31285->code = D.31286;
        <D.31558>:
      }
      goto <D.31559>;
      <D.31544>:
      <D.31559>:
      <D.31542>:
      D.31278 = cfg->mempool;
      inst = mono_mempool_alloc (D.31278, 56);
      inst->data.op[1].const_val = 0;
      D.31560 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.31560;
      inst->prev = 0B;
      D.31561 = inst->prev;
      inst->next = D.31561;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.31562 = inst->sreg3;
      inst->sreg2 = D.31562;
      D.31563 = inst->sreg2;
      inst->sreg1 = D.31563;
      D.31283 = cfg->ip;
      inst->cil_code = D.31283;
      inst->dreg = vtable_reg;
      inst->sreg1 = this_reg;
      inst->data.op[0].const_val = 0;
      inst->type = 1;
      D.31564 = (unsigned char) __ins_flags;
      inst->flags = D.31564;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      if (D.31286 != 0B) goto <D.31565>; else goto <D.31566>;
      <D.31565>:
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      D.31286->next = inst;
      D.31285 = cfg->cbb;
      D.31286 = D.31285->last_ins;
      inst->prev = D.31286;
      D.31285 = cfg->cbb;
      D.31285->last_ins = inst;
      goto <D.31567>;
      <D.31566>:
      D.31285 = cfg->cbb;
      D.31285 = cfg->cbb;
      D.31285->last_ins = inst;
      D.31286 = D.31285->last_ins;
      D.31285->code = D.31286;
      <D.31567>:
    }
    D.31305 = method->klass;
    D.31343 = D.31305->flags;
    D.31344 = D.31343 & 32;
    if (D.31344 != 0) goto <D.31568>; else goto <D.31569>;
    <D.31568>:
    slot_reg = -1;
    mono_use_imt.13 = mono_use_imt;
    if (mono_use_imt.13 != 0) goto <D.31571>; else goto <D.31572>;
    <D.31571>:
    {
      guint32 imt_slot;

      imt_slot = mono_method_get_imt_slot (method);
      D.31573 = call->method;
      emit_imt_argument (cfg, call, D.31573, imt_arg);
      slot_reg = vtable_reg;
      imt_slot.14 = (int) imt_slot;
      D.31575 = imt_slot.14 + -19;
      offset = D.31575 * 4;
    }
    <D.31572>:
    if (slot_reg == -1) goto <D.31576>; else goto <D.31577>;
    <D.31576>:
    D.31578 = alloc_preg (cfg);
    slot_reg = (int) D.31578;
    D.31305 = method->klass;
    mini_emit_load_intf_reg_vtable (cfg, slot_reg, vtable_reg, D.31305);
    D.31579 = mono_method_get_vtable_index (method);
    offset = D.31579 * 4;
    <D.31577>:
    goto <D.31580>;
    <D.31569>:
    slot_reg = vtable_reg;
    D.31581 = mono_method_get_vtable_index (method);
    D.31582 = D.31581 * 4;
    D.31583 = (unsigned int) D.31582;
    D.31584 = D.31583 + 32;
    offset = (int) D.31584;
    if (imt_arg != 0B) goto <D.31585>; else goto <D.31586>;
    <D.31585>:
    D.31587 = mono_method_signature (method);
    D.31588 = D.31587->generic_param_count;
    D.31589 = D.31588 == 0;
    D.31590 = (long int) D.31589;
    D.31591 = __builtin_expect (D.31590, 0);
    if (D.31591 != 0) goto <D.31592>; else goto <D.31593>;
    <D.31592>:
    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.31593>:
    D.31573 = call->method;
    emit_imt_argument (cfg, call, D.31573, imt_arg);
    <D.31586>:
    <D.31580>:
    call->inst.sreg1 = slot_reg;
    call->inst.data.op[0].const_val = offset;
    call->virtual = 1;
    <D.31499>:
    <D.31440>:
  }
  <D.31356>:
  D.31285 = cfg->cbb;
  D.31286 = D.31285->last_ins;
  if (D.31286 != 0B) goto <D.31594>; else goto <D.31595>;
  <D.31594>:
  D.31285 = cfg->cbb;
  D.31286 = D.31285->last_ins;
  D.31286->next = call;
  D.31285 = cfg->cbb;
  D.31286 = D.31285->last_ins;
  MEM[(struct MonoInst *)call].prev = D.31286;
  D.31285 = cfg->cbb;
  D.31285->last_ins = call;
  goto <D.31596>;
  <D.31595>:
  D.31285 = cfg->cbb;
  D.31285 = cfg->cbb;
  D.31285->last_ins = call;
  D.31286 = D.31285->last_ins;
  D.31285->code = D.31286;
  <D.31596>:
  if (rgctx_arg != 0B) goto <D.31597>; else goto <D.31598>;
  <D.31597>:
  set_rgctx_arg (cfg, call, rgctx_reg, rgctx_arg);
  <D.31598>:
  D.31337 = call;
  return D.31337;
}


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

  D.31600 = cfg->generic_sharing_context;
  if (D.31600 != 0B) goto <D.31601>; else goto <D.31602>;
  <D.31601>:
  D.31603 = mono_method_check_context_used (method);
  return D.31603;
  <D.31602>:
  D.31603 = 0;
  return D.31603;
}


emit_get_rgctx_method (struct MonoCompile * cfg, int context_used, struct MonoMethod * cmethod, MonoRgctxInfoType rgctx_type)
{
  struct MonoMemPool * D.31607;
  int D.31608;
  struct MonoInst * D.31609;
  guint16 iftmp.15;
  unsigned char D.31611;
  unsigned char D.31612;
  int D.31616;
  int D.31617;
  const unsigned char * D.31618;
  unsigned int D.31619;
  int D.31620;
  struct MonoBasicBlock * D.31621;
  struct MonoInst * D.31622;
  struct MonoInst * D.31626;
  guint16 iftmp.16;
  unsigned int D.31633;
  int D.31634;
  struct MonoDomain * D.31636;
  struct MonoClass * D.31637;
  struct MonoVTable * D.31638;
  struct MonoGenericContext * D.31639;
  struct MonoGenericInst * D.31640;
  unsigned int D.31641;
  int D.31642;
  struct MonoMethod * D.31646;
  int D.31647;

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

    switch (rgctx_type) <default: <D.28310>, case 5: <D.28307>, case 8: <D.28308>>
    <D.28307>:
    D.31607 = cfg->mempool;
    ins = mono_mempool_alloc (D.31607, 56);
    ins->data.op[1].const_val = 0;
    D.31608 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.31608;
    ins->prev = 0B;
    D.31609 = ins->prev;
    ins->next = D.31609;
    D.31611 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.31612 = D.31611 & 64;
    if (D.31612 != 0) goto <D.31613>; else goto <D.31614>;
    <D.31613>:
    iftmp.15 = 732;
    goto <D.31615>;
    <D.31614>:
    iftmp.15 = 362;
    <D.31615>:
    ins->opcode = iftmp.15;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.31616 = ins->sreg3;
    ins->sreg2 = D.31616;
    D.31617 = ins->sreg2;
    ins->sreg1 = D.31617;
    D.31618 = cfg->ip;
    ins->cil_code = D.31618;
    ins->data.op[0].p = cmethod;
    ins->data.op[1].src = 6B;
    ins->type = 3;
    D.31619 = alloc_dreg (cfg, 3);
    D.31620 = (int) D.31619;
    ins->dreg = D.31620;
    D.31621 = cfg->cbb;
    D.31622 = D.31621->last_ins;
    if (D.31622 != 0B) goto <D.31623>; else goto <D.31624>;
    <D.31623>:
    D.31621 = cfg->cbb;
    D.31622 = D.31621->last_ins;
    D.31622->next = ins;
    D.31621 = cfg->cbb;
    D.31622 = D.31621->last_ins;
    ins->prev = D.31622;
    D.31621 = cfg->cbb;
    D.31621->last_ins = ins;
    goto <D.31625>;
    <D.31624>:
    D.31621 = cfg->cbb;
    D.31621 = cfg->cbb;
    D.31621->last_ins = ins;
    D.31622 = D.31621->last_ins;
    D.31621->code = D.31622;
    <D.31625>:
    D.31626 = ins;
    return D.31626;
    <D.28308>:
    D.31611 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.31612 = D.31611 & 64;
    if (D.31612 != 0) goto <D.31627>; else goto <D.31628>;
    <D.31627>:
    D.31607 = cfg->mempool;
    ins = mono_mempool_alloc (D.31607, 56);
    ins->data.op[1].const_val = 0;
    D.31608 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.31608;
    ins->prev = 0B;
    D.31609 = ins->prev;
    ins->next = D.31609;
    D.31611 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.31612 = D.31611 & 64;
    if (D.31612 != 0) goto <D.31630>; else goto <D.31631>;
    <D.31630>:
    iftmp.16 = 732;
    goto <D.31632>;
    <D.31631>:
    iftmp.16 = 362;
    <D.31632>:
    ins->opcode = iftmp.16;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.31616 = ins->sreg3;
    ins->sreg2 = D.31616;
    D.31617 = ins->sreg2;
    ins->sreg1 = D.31617;
    D.31618 = cfg->ip;
    ins->cil_code = D.31618;
    ins->data.op[0].p = cmethod;
    ins->data.op[1].src = 34B;
    ins->type = 3;
    D.31633 = alloc_dreg (cfg, 3);
    D.31634 = (int) D.31633;
    ins->dreg = D.31634;
    goto <D.31635>;
    <D.31628>:
    {
      struct MonoMethodRuntimeGenericContext * mrgctx;

      D.31636 = cfg->domain;
      D.31637 = cmethod->klass;
      D.31638 = mono_class_vtable (D.31636, D.31637);
      D.31639 = mini_method_get_context (cmethod);
      D.31640 = D.31639->method_inst;
      mrgctx = mono_method_lookup_rgctx (D.31638, D.31640);
      D.31607 = cfg->mempool;
      ins = mono_mempool_alloc (D.31607, 56);
      ins->data.op[1].const_val = 0;
      D.31608 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.31608;
      ins->prev = 0B;
      D.31609 = ins->prev;
      ins->next = D.31609;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.31616 = ins->sreg3;
      ins->sreg2 = D.31616;
      D.31617 = ins->sreg2;
      ins->sreg1 = D.31617;
      D.31618 = cfg->ip;
      ins->cil_code = D.31618;
      ins->data.op[0].p = mrgctx;
      ins->type = 3;
      D.31641 = alloc_dreg (cfg, 3);
      D.31642 = (int) D.31641;
      ins->dreg = D.31642;
    }
    <D.31635>:
    D.31621 = cfg->cbb;
    D.31622 = D.31621->last_ins;
    if (D.31622 != 0B) goto <D.31643>; else goto <D.31644>;
    <D.31643>:
    D.31621 = cfg->cbb;
    D.31622 = D.31621->last_ins;
    D.31622->next = ins;
    D.31621 = cfg->cbb;
    D.31622 = D.31621->last_ins;
    ins->prev = D.31622;
    D.31621 = cfg->cbb;
    D.31621->last_ins = ins;
    goto <D.31645>;
    <D.31644>:
    D.31621 = cfg->cbb;
    D.31621 = cfg->cbb;
    D.31621->last_ins = ins;
    D.31622 = D.31621->last_ins;
    D.31621->code = D.31622;
    <D.31645>:
    D.31626 = ins;
    return D.31626;
    <D.28310>:
    monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 3327);
  }
  <D.31606>:
  {
    struct MonoJumpInfoRgctxEntry * entry;
    struct MonoInst * rgctx;

    D.31607 = cfg->mempool;
    D.31646 = cfg->current_method;
    D.31647 = context_used & 2;
    entry = mono_patch_info_rgctx_entry_new (D.31607, D.31646, D.31647, 6, cmethod, rgctx_type);
    D.31646 = cfg->current_method;
    rgctx = emit_get_rgctx (cfg, D.31646, context_used);
    D.31626 = emit_rgctx_fetch (cfg, rgctx, entry);
    return D.31626;
  }
}


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.31649;
  struct MonoJumpInfo * D.31650;
  struct MonoJumpInfoRgctxEntry * D.31651;
  struct MonoJumpInfoRgctxEntry * res;

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


emit_get_rgctx (struct MonoCompile * cfg, struct MonoMethod * method, int context_used)
{
  struct MonoGenericSharingContext * D.31653;
  _Bool D.31654;
  long int D.31655;
  long int D.31656;
  short unsigned int D.31659;
  int D.31660;
  int D.31661;
  int D.31664;
  struct MonoClass * D.31667;
  unsigned char D.31668;
  unsigned char D.31669;
  struct MonoMemPool * D.31672;
  int D.31673;
  struct MonoInst * D.31674;
  int D.31675;
  int D.31676;
  const unsigned char * D.31677;
  struct MonoType * * D.31678;
  struct MonoType * D.31679;
  unsigned int D.31680;
  short unsigned int D.31681;
  struct MonoInst * * D.31682;
  struct MonoInst * D.31683;
  struct MonoClass * D.31684;
  int D.31685;
  unsigned char D.31686;
  <unnamed type> D.31687;
  unsigned int D.31688;
  int D.31689;
  short unsigned int D.31690;
  struct MonoClass * D.31693;
  struct MonoBasicBlock * D.31694;
  struct MonoInst * D.31695;
  _Bool D.31701;
  long int D.31702;
  long int D.31703;
  int iftmp.17;
  unsigned char D.31710;
  unsigned char D.31711;
  struct MonoGenericContext * D.31713;
  struct MonoGenericInst * D.31714;
  _Bool D.31715;
  long int D.31716;
  long int D.31717;
  int D.31720;
  struct MonoInst * D.31721;
  int D.31722;
  int D.31723;
  struct MonoInst * * D.31724;
  int D.31725;
  unsigned int D.31726;
  unsigned int D.31727;
  struct MonoInst * * D.31728;
  struct MonoInst * D.31729;
  struct MonoType * D.31730;
  unsigned int D.31731;
  short unsigned int D.31732;
  struct MonoClass * D.31733;
  int D.31734;
  unsigned char D.31735;
  <unnamed type> D.31736;
  unsigned int D.31737;
  int D.31738;
  short unsigned int D.31739;
  struct MonoClass * D.31742;
  struct MonoInst * D.31746;
  int D.31752;
  struct MonoInst * D.31753;
  int D.31754;
  int D.31755;
  int D.31756;
  unsigned int D.31757;
  unsigned int D.31758;
  struct MonoInst * * D.31759;
  struct MonoInst * D.31760;
  struct MonoType * D.31761;
  unsigned int D.31762;
  short unsigned int D.31763;
  struct MonoClass * D.31764;
  int D.31765;
  unsigned char D.31766;
  <unnamed type> D.31767;
  unsigned int D.31768;
  int D.31769;
  short unsigned int D.31770;
  struct MonoClass * D.31773;
  struct MonoGenericContext * D.31779;
  struct MonoGenericInst * D.31780;
  unsigned int D.31783;
  int D.31784;
  unsigned int D.31788;
  int D.31789;
  struct MonoInst * D.31790;
  int D.31791;
  int D.31792;
  int D.31793;
  struct MonoInst * this;

  this = 0B;
  D.31653 = cfg->generic_sharing_context;
  D.31654 = D.31653 == 0B;
  D.31655 = (long int) D.31654;
  D.31656 = __builtin_expect (D.31655, 0);
  if (D.31656 != 0) goto <D.31657>; else goto <D.31658>;
  <D.31657>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3189, "cfg->generic_sharing_context");
  <D.31658>:
  D.31659 = method->flags;
  D.31660 = (int) D.31659;
  D.31661 = D.31660 & 16;
  if (D.31661 == 0) goto <D.31662>; else goto <D.31663>;
  <D.31662>:
  D.31664 = context_used & 2;
  if (D.31664 == 0) goto <D.31665>; else goto <D.31666>;
  <D.31665>:
  D.31667 = method->klass;
  D.31668 = BIT_FIELD_REF <*D.31667, 8, 160>;
  D.31669 = D.31668 & 8;
  if (D.31669 == 0) goto <D.31670>; else goto <D.31671>;
  <D.31670>:
  D.31672 = cfg->mempool;
  this = mono_mempool_alloc (D.31672, 56);
  this->data.op[1].const_val = 0;
  D.31673 = this->data.op[1].const_val;
  this->data.op[0].const_val = D.31673;
  this->prev = 0B;
  D.31674 = this->prev;
  this->next = D.31674;
  this->opcode = 424;
  this->flags = 0;
  this->type = 0;
  this->dreg = -1;
  this->sreg3 = -1;
  D.31675 = this->sreg3;
  this->sreg2 = D.31675;
  D.31676 = this->sreg2;
  this->sreg1 = D.31676;
  D.31677 = cfg->ip;
  this->cil_code = D.31677;
  D.31678 = cfg->arg_types;
  D.31679 = *D.31678;
  D.31680 = mono_type_to_regmove (cfg, D.31679);
  D.31681 = (short unsigned int) D.31680;
  this->opcode = D.31681;
  D.31678 = cfg->arg_types;
  D.31679 = *D.31678;
  type_to_eval_stack_type (cfg, D.31679, this);
  D.31682 = cfg->args;
  D.31683 = *D.31682;
  D.31684 = D.31683->klass;
  this->klass = D.31684;
  D.31682 = cfg->args;
  D.31683 = *D.31682;
  D.31685 = D.31683->dreg;
  this->sreg1 = D.31685;
  D.31686 = this->type;
  D.31687 = (<unnamed type>) D.31686;
  D.31688 = alloc_dreg (cfg, D.31687);
  D.31689 = (int) D.31688;
  this->dreg = D.31689;
  D.31690 = this->opcode;
  if (D.31690 == 427) goto <D.31691>; else goto <D.31692>;
  <D.31691>:
  D.31678 = cfg->arg_types;
  D.31679 = *D.31678;
  D.31693 = mono_class_from_mono_type (D.31679);
  this->klass = D.31693;
  <D.31692>:
  D.31694 = cfg->cbb;
  D.31695 = D.31694->last_ins;
  if (D.31695 != 0B) goto <D.31696>; else goto <D.31697>;
  <D.31696>:
  D.31694 = cfg->cbb;
  D.31695 = D.31694->last_ins;
  D.31695->next = this;
  D.31694 = cfg->cbb;
  D.31695 = D.31694->last_ins;
  this->prev = D.31695;
  D.31694 = cfg->cbb;
  D.31694->last_ins = this;
  goto <D.31698>;
  <D.31697>:
  D.31694 = cfg->cbb;
  D.31694 = cfg->cbb;
  D.31694->last_ins = this;
  D.31695 = D.31694->last_ins;
  D.31694->code = D.31695;
  <D.31698>:
  <D.31671>:
  <D.31666>:
  <D.31663>:
  D.31664 = context_used & 2;
  if (D.31664 != 0) goto <D.31699>; else goto <D.31700>;
  <D.31699>:
  {
    struct MonoInst * mrgctx_loc;
    struct MonoInst * mrgctx_var;

    D.31701 = this != 0B;
    D.31702 = (long int) D.31701;
    D.31703 = __builtin_expect (D.31702, 0);
    if (D.31703 != 0) goto <D.31704>; else goto <D.31705>;
    <D.31704>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3199, "!this");
    <D.31705>:
    D.31710 = BIT_FIELD_REF <*method, 8, 168>;
    D.31711 = D.31710 & 16;
    if (D.31711 == 0) goto <D.31707>; else goto <D.31712>;
    <D.31712>:
    D.31713 = mono_method_get_context (method);
    D.31714 = D.31713->method_inst;
    if (D.31714 == 0B) goto <D.31707>; else goto <D.31708>;
    <D.31707>:
    iftmp.17 = 1;
    goto <D.31709>;
    <D.31708>:
    iftmp.17 = 0;
    <D.31709>:
    D.31715 = iftmp.17 != 0;
    D.31716 = (long int) D.31715;
    D.31717 = __builtin_expect (D.31716, 0);
    if (D.31717 != 0) goto <D.31718>; else goto <D.31719>;
    <D.31718>:
    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.31719>:
    mrgctx_loc = mono_get_vtable_var (cfg);
    D.31672 = cfg->mempool;
    mrgctx_var = mono_mempool_alloc (D.31672, 56);
    mrgctx_var->data.op[1].const_val = 0;
    D.31720 = mrgctx_var->data.op[1].const_val;
    mrgctx_var->data.op[0].const_val = D.31720;
    mrgctx_var->prev = 0B;
    D.31721 = mrgctx_var->prev;
    mrgctx_var->next = D.31721;
    mrgctx_var->opcode = 424;
    mrgctx_var->flags = 0;
    mrgctx_var->type = 0;
    mrgctx_var->dreg = -1;
    mrgctx_var->sreg3 = -1;
    D.31722 = mrgctx_var->sreg3;
    mrgctx_var->sreg2 = D.31722;
    D.31723 = mrgctx_var->sreg2;
    mrgctx_var->sreg1 = D.31723;
    D.31677 = cfg->ip;
    mrgctx_var->cil_code = D.31677;
    D.31724 = cfg->varinfo;
    D.31725 = mrgctx_loc->data.op[0].const_val;
    D.31726 = (unsigned int) D.31725;
    D.31727 = D.31726 * 4;
    D.31728 = D.31724 + D.31727;
    D.31729 = *D.31728;
    D.31730 = D.31729->data.op[1].vtype;
    D.31731 = mono_type_to_regmove (cfg, D.31730);
    D.31732 = (short unsigned int) D.31731;
    mrgctx_var->opcode = D.31732;
    D.31724 = cfg->varinfo;
    D.31725 = mrgctx_loc->data.op[0].const_val;
    D.31726 = (unsigned int) D.31725;
    D.31727 = D.31726 * 4;
    D.31728 = D.31724 + D.31727;
    D.31729 = *D.31728;
    D.31730 = D.31729->data.op[1].vtype;
    type_to_eval_stack_type (cfg, D.31730, mrgctx_var);
    D.31724 = cfg->varinfo;
    D.31725 = mrgctx_loc->data.op[0].const_val;
    D.31726 = (unsigned int) D.31725;
    D.31727 = D.31726 * 4;
    D.31728 = D.31724 + D.31727;
    D.31729 = *D.31728;
    D.31733 = D.31729->klass;
    mrgctx_var->klass = D.31733;
    D.31724 = cfg->varinfo;
    D.31725 = mrgctx_loc->data.op[0].const_val;
    D.31726 = (unsigned int) D.31725;
    D.31727 = D.31726 * 4;
    D.31728 = D.31724 + D.31727;
    D.31729 = *D.31728;
    D.31734 = D.31729->dreg;
    mrgctx_var->sreg1 = D.31734;
    D.31735 = mrgctx_var->type;
    D.31736 = (<unnamed type>) D.31735;
    D.31737 = alloc_dreg (cfg, D.31736);
    D.31738 = (int) D.31737;
    mrgctx_var->dreg = D.31738;
    D.31739 = mrgctx_var->opcode;
    if (D.31739 == 427) goto <D.31740>; else goto <D.31741>;
    <D.31740>:
    D.31724 = cfg->varinfo;
    D.31725 = mrgctx_loc->data.op[0].const_val;
    D.31726 = (unsigned int) D.31725;
    D.31727 = D.31726 * 4;
    D.31728 = D.31724 + D.31727;
    D.31729 = *D.31728;
    D.31730 = D.31729->data.op[1].vtype;
    D.31742 = mono_class_from_mono_type (D.31730);
    mrgctx_var->klass = D.31742;
    <D.31741>:
    D.31694 = cfg->cbb;
    D.31695 = D.31694->last_ins;
    if (D.31695 != 0B) goto <D.31743>; else goto <D.31744>;
    <D.31743>:
    D.31694 = cfg->cbb;
    D.31695 = D.31694->last_ins;
    D.31695->next = mrgctx_var;
    D.31694 = cfg->cbb;
    D.31695 = D.31694->last_ins;
    mrgctx_var->prev = D.31695;
    D.31694 = cfg->cbb;
    D.31694->last_ins = mrgctx_var;
    goto <D.31745>;
    <D.31744>:
    D.31694 = cfg->cbb;
    D.31694 = cfg->cbb;
    D.31694->last_ins = mrgctx_var;
    D.31695 = D.31694->last_ins;
    D.31694->code = D.31695;
    <D.31745>:
    D.31746 = mrgctx_var;
    return D.31746;
  }
  <D.31700>:
  D.31659 = method->flags;
  D.31660 = (int) D.31659;
  D.31661 = D.31660 & 16;
  if (D.31661 != 0) goto <D.31747>; else goto <D.31749>;
  <D.31749>:
  D.31667 = method->klass;
  D.31668 = BIT_FIELD_REF <*D.31667, 8, 160>;
  D.31669 = D.31668 & 8;
  if (D.31669 != 0) goto <D.31747>; else goto <D.31748>;
  <D.31747>:
  {
    struct MonoInst * vtable_loc;
    struct MonoInst * vtable_var;

    D.31701 = this != 0B;
    D.31702 = (long int) D.31701;
    D.31703 = __builtin_expect (D.31702, 0);
    if (D.31703 != 0) goto <D.31750>; else goto <D.31751>;
    <D.31750>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3209, "!this");
    <D.31751>:
    vtable_loc = mono_get_vtable_var (cfg);
    D.31672 = cfg->mempool;
    vtable_var = mono_mempool_alloc (D.31672, 56);
    vtable_var->data.op[1].const_val = 0;
    D.31752 = vtable_var->data.op[1].const_val;
    vtable_var->data.op[0].const_val = D.31752;
    vtable_var->prev = 0B;
    D.31753 = vtable_var->prev;
    vtable_var->next = D.31753;
    vtable_var->opcode = 424;
    vtable_var->flags = 0;
    vtable_var->type = 0;
    vtable_var->dreg = -1;
    vtable_var->sreg3 = -1;
    D.31754 = vtable_var->sreg3;
    vtable_var->sreg2 = D.31754;
    D.31755 = vtable_var->sreg2;
    vtable_var->sreg1 = D.31755;
    D.31677 = cfg->ip;
    vtable_var->cil_code = D.31677;
    D.31724 = cfg->varinfo;
    D.31756 = vtable_loc->data.op[0].const_val;
    D.31757 = (unsigned int) D.31756;
    D.31758 = D.31757 * 4;
    D.31759 = D.31724 + D.31758;
    D.31760 = *D.31759;
    D.31761 = D.31760->data.op[1].vtype;
    D.31762 = mono_type_to_regmove (cfg, D.31761);
    D.31763 = (short unsigned int) D.31762;
    vtable_var->opcode = D.31763;
    D.31724 = cfg->varinfo;
    D.31756 = vtable_loc->data.op[0].const_val;
    D.31757 = (unsigned int) D.31756;
    D.31758 = D.31757 * 4;
    D.31759 = D.31724 + D.31758;
    D.31760 = *D.31759;
    D.31761 = D.31760->data.op[1].vtype;
    type_to_eval_stack_type (cfg, D.31761, vtable_var);
    D.31724 = cfg->varinfo;
    D.31756 = vtable_loc->data.op[0].const_val;
    D.31757 = (unsigned int) D.31756;
    D.31758 = D.31757 * 4;
    D.31759 = D.31724 + D.31758;
    D.31760 = *D.31759;
    D.31764 = D.31760->klass;
    vtable_var->klass = D.31764;
    D.31724 = cfg->varinfo;
    D.31756 = vtable_loc->data.op[0].const_val;
    D.31757 = (unsigned int) D.31756;
    D.31758 = D.31757 * 4;
    D.31759 = D.31724 + D.31758;
    D.31760 = *D.31759;
    D.31765 = D.31760->dreg;
    vtable_var->sreg1 = D.31765;
    D.31766 = vtable_var->type;
    D.31767 = (<unnamed type>) D.31766;
    D.31768 = alloc_dreg (cfg, D.31767);
    D.31769 = (int) D.31768;
    vtable_var->dreg = D.31769;
    D.31770 = vtable_var->opcode;
    if (D.31770 == 427) goto <D.31771>; else goto <D.31772>;
    <D.31771>:
    D.31724 = cfg->varinfo;
    D.31756 = vtable_loc->data.op[0].const_val;
    D.31757 = (unsigned int) D.31756;
    D.31758 = D.31757 * 4;
    D.31759 = D.31724 + D.31758;
    D.31760 = *D.31759;
    D.31761 = D.31760->data.op[1].vtype;
    D.31773 = mono_class_from_mono_type (D.31761);
    vtable_var->klass = D.31773;
    <D.31772>:
    D.31694 = cfg->cbb;
    D.31695 = D.31694->last_ins;
    if (D.31695 != 0B) goto <D.31774>; else goto <D.31775>;
    <D.31774>:
    D.31694 = cfg->cbb;
    D.31695 = D.31694->last_ins;
    D.31695->next = vtable_var;
    D.31694 = cfg->cbb;
    D.31695 = D.31694->last_ins;
    vtable_var->prev = D.31695;
    D.31694 = cfg->cbb;
    D.31694->last_ins = vtable_var;
    goto <D.31776>;
    <D.31775>:
    D.31694 = cfg->cbb;
    D.31694 = cfg->cbb;
    D.31694->last_ins = vtable_var;
    D.31695 = D.31694->last_ins;
    D.31694->code = D.31695;
    <D.31776>:
    D.31710 = BIT_FIELD_REF <*method, 8, 168>;
    D.31711 = D.31710 & 16;
    if (D.31711 != 0) goto <D.31777>; else goto <D.31778>;
    <D.31777>:
    D.31779 = mono_method_get_context (method);
    D.31780 = D.31779->method_inst;
    if (D.31780 != 0B) goto <D.31781>; else goto <D.31782>;
    <D.31781>:
    {
      struct MonoInst * mrgctx_var;
      int vtable_reg;

      mrgctx_var = vtable_var;
      D.31783 = alloc_preg (cfg);
      vtable_reg = (int) D.31783;
      D.31672 = cfg->mempool;
      vtable_var = mono_mempool_alloc (D.31672, 56);
      vtable_var->data.op[1].const_val = 0;
      D.31752 = vtable_var->data.op[1].const_val;
      vtable_var->data.op[0].const_val = D.31752;
      vtable_var->prev = 0B;
      D.31753 = vtable_var->prev;
      vtable_var->next = D.31753;
      vtable_var->opcode = 388;
      vtable_var->flags = 0;
      vtable_var->type = 0;
      vtable_var->dreg = -1;
      vtable_var->sreg3 = -1;
      D.31754 = vtable_var->sreg3;
      vtable_var->sreg2 = D.31754;
      D.31755 = vtable_var->sreg2;
      vtable_var->sreg1 = D.31755;
      D.31677 = cfg->ip;
      vtable_var->cil_code = D.31677;
      vtable_var->dreg = vtable_reg;
      D.31784 = mrgctx_var->dreg;
      vtable_var->sreg1 = D.31784;
      vtable_var->data.op[0].const_val = 0;
      vtable_var->type = 1;
      D.31694 = cfg->cbb;
      D.31695 = D.31694->last_ins;
      if (D.31695 != 0B) goto <D.31785>; else goto <D.31786>;
      <D.31785>:
      D.31694 = cfg->cbb;
      D.31695 = D.31694->last_ins;
      D.31695->next = vtable_var;
      D.31694 = cfg->cbb;
      D.31695 = D.31694->last_ins;
      vtable_var->prev = D.31695;
      D.31694 = cfg->cbb;
      D.31694->last_ins = vtable_var;
      goto <D.31787>;
      <D.31786>:
      D.31694 = cfg->cbb;
      D.31694 = cfg->cbb;
      D.31694->last_ins = vtable_var;
      D.31695 = D.31694->last_ins;
      D.31694->code = D.31695;
      <D.31787>:
      vtable_var->type = 3;
    }
    <D.31782>:
    <D.31778>:
    D.31746 = vtable_var;
    return D.31746;
  }
  <D.31748>:
  {
    struct MonoInst * ins;
    int vtable_reg;

    D.31788 = alloc_preg (cfg);
    vtable_reg = (int) D.31788;
    D.31672 = cfg->mempool;
    ins = mono_mempool_alloc (D.31672, 56);
    ins->data.op[1].const_val = 0;
    D.31789 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.31789;
    ins->prev = 0B;
    D.31790 = ins->prev;
    ins->next = D.31790;
    ins->opcode = 388;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.31791 = ins->sreg3;
    ins->sreg2 = D.31791;
    D.31792 = ins->sreg2;
    ins->sreg1 = D.31792;
    D.31677 = cfg->ip;
    ins->cil_code = D.31677;
    ins->dreg = vtable_reg;
    D.31793 = this->dreg;
    ins->sreg1 = D.31793;
    ins->data.op[0].const_val = 0;
    ins->type = 1;
    D.31694 = cfg->cbb;
    D.31695 = D.31694->last_ins;
    if (D.31695 != 0B) goto <D.31794>; else goto <D.31795>;
    <D.31794>:
    D.31694 = cfg->cbb;
    D.31695 = D.31694->last_ins;
    D.31695->next = ins;
    D.31694 = cfg->cbb;
    D.31695 = D.31694->last_ins;
    ins->prev = D.31695;
    D.31694 = cfg->cbb;
    D.31694->last_ins = ins;
    goto <D.31796>;
    <D.31795>:
    D.31694 = cfg->cbb;
    D.31694 = cfg->cbb;
    D.31694->last_ins = ins;
    D.31695 = D.31694->last_ins;
    D.31694->code = D.31695;
    <D.31796>:
    D.31746 = ins;
    return D.31746;
  }
}


mono_get_vtable_var (struct MonoCompile * cfg)
{
  struct MonoGenericSharingContext * D.31798;
  _Bool D.31799;
  long int D.31800;
  long int D.31801;
  struct MonoInst * D.31804;
  struct MonoClass * D.31807;
  struct MonoType * D.31808;
  struct MonoInst * D.31809;
  unsigned char D.31810;
  unsigned char D.31811;
  struct MonoInst * D.31812;

  D.31798 = cfg->generic_sharing_context;
  D.31799 = D.31798 == 0B;
  D.31800 = (long int) D.31799;
  D.31801 = __builtin_expect (D.31800, 0);
  if (D.31801 != 0) goto <D.31802>; else goto <D.31803>;
  <D.31802>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1161, "cfg->generic_sharing_context");
  <D.31803>:
  D.31804 = cfg->rgctx_var;
  if (D.31804 == 0B) goto <D.31805>; else goto <D.31806>;
  <D.31805>:
  D.31807 = mono_defaults.int_class;
  D.31808 = &D.31807->byval_arg;
  D.31809 = mono_compile_create_var (cfg, D.31808, 329);
  cfg->rgctx_var = D.31809;
  D.31804 = cfg->rgctx_var;
  D.31804 = cfg->rgctx_var;
  D.31810 = D.31804->flags;
  D.31811 = D.31810 | 4;
  D.31804->flags = D.31811;
  <D.31806>:
  D.31812 = cfg->rgctx_var;
  return D.31812;
}


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

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


mono_emit_abs_call (struct MonoCompile * cfg, MonoJumpInfoType patch_type, const void * data, struct MonoMethodSignature * sig, struct MonoInst * * args)
{
  struct MonoMemPool * D.31817;
  struct GHashTable * D.31818;
  struct GHashTable * D.31821;
  struct MonoInst * D.31822;
  struct MonoJumpInfo * ji;
  struct MonoInst * ins;

  D.31817 = cfg->mempool;
  ji = mono_patch_info_new (D.31817, 0, patch_type, data);
  D.31818 = cfg->abs_patches;
  if (D.31818 == 0B) goto <D.31819>; else goto <D.31820>;
  <D.31819>:
  D.31821 = monoeg_g_hash_table_new (0B, 0B);
  cfg->abs_patches = D.31821;
  <D.31820>:
  D.31818 = cfg->abs_patches;
  monoeg_g_hash_table_insert_replace (D.31818, ji, ji, 0);
  ins = mono_emit_native_call (cfg, ji, sig, args);
  MEM[(struct MonoCallInst *)ins].fptr_is_patch = 1;
  D.31822 = ins;
  return D.31822;
}


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

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


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.31828;
  struct MonoMemPool * D.31829;
  int D.31830;
  struct MonoInst * D.31831;
  int D.31832;
  int D.31833;
  const unsigned char * D.31834;
  int D.31835;
  struct MonoBasicBlock * D.31836;
  struct MonoInst * D.31837;
  _Bool D.31841;
  int D.31842;
  int D.31843;
  struct MonoInst * D.31851;
  struct MonoCallInst * call;
  int rgctx_reg;

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

    D.31829 = cfg->mempool;
    inst = mono_mempool_alloc (D.31829, 56);
    inst->data.op[1].const_val = 0;
    D.31830 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.31830;
    inst->prev = 0B;
    D.31831 = inst->prev;
    inst->next = D.31831;
    inst->opcode = 424;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.31832 = inst->sreg3;
    inst->sreg2 = D.31832;
    D.31833 = inst->sreg2;
    inst->sreg1 = D.31833;
    D.31834 = cfg->ip;
    inst->cil_code = D.31834;
    inst->dreg = rgctx_reg;
    D.31835 = rgctx_arg->dreg;
    inst->sreg1 = D.31835;
    D.31836 = cfg->cbb;
    D.31837 = D.31836->last_ins;
    if (D.31837 != 0B) goto <D.31838>; else goto <D.31839>;
    <D.31838>:
    D.31836 = cfg->cbb;
    D.31837 = D.31836->last_ins;
    D.31837->next = inst;
    D.31836 = cfg->cbb;
    D.31837 = D.31836->last_ins;
    inst->prev = D.31837;
    D.31836 = cfg->cbb;
    D.31836->last_ins = inst;
    goto <D.31840>;
    <D.31839>:
    D.31836 = cfg->cbb;
    D.31836 = cfg->cbb;
    D.31836->last_ins = inst;
    D.31837 = D.31836->last_ins;
    D.31836->code = D.31837;
    <D.31840>:
  }
  <D.31827>:
  D.31841 = rgctx_arg != 0B;
  D.31842 = (int) D.31841;
  call = mono_emit_call_args (cfg, sig, args, 1, 0, 0, D.31842, 0);
  D.31843 = addr->dreg;
  call->inst.sreg1 = D.31843;
  if (imt_arg != 0B) goto <D.31844>; else goto <D.31845>;
  <D.31844>:
  emit_imt_argument (cfg, call, 0B, imt_arg);
  <D.31845>:
  D.31836 = cfg->cbb;
  D.31837 = D.31836->last_ins;
  if (D.31837 != 0B) goto <D.31846>; else goto <D.31847>;
  <D.31846>:
  D.31836 = cfg->cbb;
  D.31837 = D.31836->last_ins;
  D.31837->next = call;
  D.31836 = cfg->cbb;
  D.31837 = D.31836->last_ins;
  MEM[(struct MonoInst *)call].prev = D.31837;
  D.31836 = cfg->cbb;
  D.31836->last_ins = call;
  goto <D.31848>;
  <D.31847>:
  D.31836 = cfg->cbb;
  D.31836 = cfg->cbb;
  D.31836->last_ins = call;
  D.31837 = D.31836->last_ins;
  D.31836->code = D.31837;
  <D.31848>:
  if (rgctx_arg != 0B) goto <D.31849>; else goto <D.31850>;
  <D.31849>:
  set_rgctx_arg (cfg, call, rgctx_reg, rgctx_arg);
  <D.31850>:
  D.31851 = call;
  return D.31851;
}


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.31855;
  int D.31856;
  int D.31857;
  const unsigned char * D.31858;
  struct MonoType * D.31860;
  struct MonoGenericSharingContext * D.31861;
  int D.31862;
  short unsigned int D.31863;
  unsigned char D.31864;
  <unnamed-unsigned:1> D.31865;
  struct MonoInst * D.31866;
  int D.31869;
  struct MonoInst * D.31872;
  int D.31874;
  <unnamed-unsigned:1> D.31877;
  int D.31878;
  int D.31879;
  struct MonoInst * D.31880;
  int D.31881;
  int D.31882;
  unsigned int D.31883;
  int D.31884;
  struct MonoBasicBlock * D.31885;
  struct MonoInst * D.31886;
  int D.31890;
  int D.31892;
  unsigned char D.31895;
  <unnamed type> D.31896;
  unsigned int D.31897;
  int D.31898;
  unsigned char D.31899;
  <unnamed-unsigned:1> D.31900;
  unsigned int D.31901;
  unsigned int D.31902;
  unsigned int D.31903;
  unsigned int D.31904;
  unsigned int D.31905;
  struct MonoCallInst * D.31906;
  struct MonoType * sig_ret;
  struct MonoCallInst * call;

  if (tail != 0) goto <D.31853>; else goto <D.31854>;
  <D.31853>:
  D.31855 = cfg->mempool;
  call = mono_mempool_alloc0 (D.31855, 120);
  call->inst.opcode = 444;
  call->inst.dreg = -1;
  call->inst.sreg3 = -1;
  D.31856 = call->inst.sreg3;
  call->inst.sreg2 = D.31856;
  D.31857 = call->inst.sreg2;
  call->inst.sreg1 = D.31857;
  D.31858 = cfg->ip;
  call->inst.cil_code = D.31858;
  goto <D.31859>;
  <D.31854>:
  D.31855 = cfg->mempool;
  call = mono_mempool_alloc0 (D.31855, 120);
  D.31860 = sig->ret;
  D.31861 = cfg->generic_sharing_context;
  D.31862 = ret_type_to_call_opcode (D.31860, calli, virtual, D.31861);
  D.31863 = (short unsigned int) D.31862;
  call->inst.opcode = D.31863;
  call->inst.dreg = -1;
  call->inst.sreg3 = -1;
  D.31856 = call->inst.sreg3;
  call->inst.sreg2 = D.31856;
  D.31857 = call->inst.sreg2;
  call->inst.sreg1 = D.31857;
  D.31858 = cfg->ip;
  call->inst.cil_code = D.31858;
  <D.31859>:
  call->args = args;
  call->signature = sig;
  D.31864 = (unsigned char) rgctx;
  D.31865 = (<unnamed-unsigned:1>) D.31864;
  call->rgctx_reg = D.31865;
  D.31860 = sig->ret;
  sig_ret = mini_replace_type (D.31860);
  D.31866 = &call->inst;
  type_to_eval_stack_type (cfg, sig_ret, D.31866);
  if (tail != 0) goto <D.31867>; else goto <D.31868>;
  <D.31867>:
  D.31869 = mini_type_is_vtype (cfg, sig_ret);
  if (D.31869 != 0) goto <D.31870>; else goto <D.31871>;
  <D.31870>:
  D.31872 = cfg->vret_addr;
  call->vret_var = D.31872;
  <D.31871>:
  goto <D.31873>;
  <D.31868>:
  D.31874 = mini_type_is_vtype (cfg, sig_ret);
  if (D.31874 != 0) goto <D.31875>; else goto <D.31876>;
  <D.31875>:
  {
    struct MonoInst * temp;
    struct MonoInst * loada;

    temp = mono_compile_create_var (cfg, sig_ret, 329);
    D.31877 = sig->pinvoke;
    D.31878 = (int) D.31877;
    temp->backend.is_pinvoke = D.31878;
    D.31855 = cfg->mempool;
    loada = mono_mempool_alloc (D.31855, 56);
    loada->data.op[1].const_val = 0;
    D.31879 = loada->data.op[1].const_val;
    loada->data.op[0].const_val = D.31879;
    loada->prev = 0B;
    D.31880 = loada->prev;
    loada->next = D.31880;
    loada->opcode = 334;
    loada->flags = 0;
    loada->type = 0;
    loada->dreg = -1;
    loada->sreg3 = -1;
    D.31881 = loada->sreg3;
    loada->sreg2 = D.31881;
    D.31882 = loada->sreg2;
    loada->sreg1 = D.31882;
    D.31858 = cfg->ip;
    loada->cil_code = D.31858;
    D.31883 = alloc_preg (cfg);
    D.31884 = (int) D.31883;
    loada->dreg = D.31884;
    loada->data.op[0].p = temp;
    loada->data.op[1].p = call;
    D.31885 = cfg->cbb;
    D.31886 = D.31885->last_ins;
    if (D.31886 != 0B) goto <D.31887>; else goto <D.31888>;
    <D.31887>:
    D.31885 = cfg->cbb;
    D.31886 = D.31885->last_ins;
    D.31886->next = loada;
    D.31885 = cfg->cbb;
    D.31886 = D.31885->last_ins;
    loada->prev = D.31886;
    D.31885 = cfg->cbb;
    D.31885->last_ins = loada;
    goto <D.31889>;
    <D.31888>:
    D.31885 = cfg->cbb;
    D.31885 = cfg->cbb;
    D.31885->last_ins = loada;
    D.31886 = D.31885->last_ins;
    D.31885->code = D.31886;
    <D.31889>:
    D.31890 = temp->dreg;
    call->inst.dreg = D.31890;
    call->vret_var = loada;
  }
  goto <D.31891>;
  <D.31876>:
  D.31892 = mono_type_is_void (sig_ret);
  if (D.31892 == 0) goto <D.31893>; else goto <D.31894>;
  <D.31893>:
  D.31895 = call->inst.type;
  D.31896 = (<unnamed type>) D.31895;
  D.31897 = alloc_dreg (cfg, D.31896);
  D.31898 = (int) D.31897;
  call->inst.dreg = D.31898;
  <D.31894>:
  <D.31891>:
  <D.31873>:
  D.31899 = (unsigned char) unbox_trampoline;
  D.31900 = (<unnamed-unsigned:1>) D.31899;
  call->need_unbox_trampoline = D.31900;
  mono_arch_emit_call (cfg, call);
  D.31901 = call->stack_usage;
  D.31902 = cfg->param_area;
  D.31903 = MAX_EXPR <D.31901, D.31902>;
  cfg->param_area = D.31903;
  D.31904 = cfg->flags;
  D.31905 = D.31904 | 2;
  cfg->flags = D.31905;
  D.31906 = call;
  return D.31906;
}


ret_type_to_call_opcode (struct MonoType * type, int calli, int virt, struct MonoGenericSharingContext * gsctx)
{
  unsigned char D.31908;
  unsigned char D.31909;
  int D.31912;
  int iftmp.19;
  int iftmp.20;
  unsigned char D.31921;
  int D.31922;
  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.31971;
  unsigned char D.31972;
  unsigned char D.31973;
  int iftmp.33;
  int iftmp.34;
  int iftmp.35;
  int iftmp.36;
  struct MonoGenericClass * D.31992;
  struct MonoClass * D.31993;
  int iftmp.37;
  int iftmp.38;
  void handle_enum = <<< error >>>;

  D.31908 = BIT_FIELD_REF <*type, 8, 56>;
  D.31909 = D.31908 & 64;
  if (D.31909 != 0) goto <D.31910>; else goto <D.31911>;
  <D.31910>:
  if (calli == 0) goto <D.31914>; else goto <D.31915>;
  <D.31914>:
  if (virt != 0) goto <D.31917>; else goto <D.31918>;
  <D.31917>:
  iftmp.20 = 348;
  goto <D.31919>;
  <D.31918>:
  iftmp.20 = 346;
  <D.31919>:
  iftmp.19 = iftmp.20;
  goto <D.31920>;
  <D.31915>:
  iftmp.19 = 347;
  <D.31920>:
  D.31912 = iftmp.19;
  return D.31912;
  <D.31911>:
  handle_enum:
  type = mini_get_basic_type_from_generic (gsctx, type);
  type = mini_replace_type (type);
  D.31921 = type->type;
  D.31922 = (int) D.31921;
  switch (D.31922) <default: <D.27867>, case 1: <D.27840>, case 2: <D.27843>, case 3: <D.27846>, case 4: <D.27841>, case 5: <D.27842>, case 6: <D.27844>, case 7: <D.27845>, case 8: <D.27847>, case 9: <D.27848>, case 10: <D.27858>, case 11: <D.27859>, case 12: <D.27860>, case 13: <D.27861>, case 14: <D.27854>, case 15: <D.27851>, case 17: <D.27862>, case 18: <D.27853>, case 19: <D.27865>, case 20: <D.27857>, case 21: <D.27864>, case 22: <D.27863>, case 24: <D.27849>, case 25: <D.27850>, case 27: <D.27852>, case 28: <D.27855>, case 29: <D.27856>, case 30: <D.27866>>
  <D.27840>:
  if (calli == 0) goto <D.31924>; else goto <D.31925>;
  <D.31924>:
  if (virt != 0) goto <D.31927>; else goto <D.31928>;
  <D.31927>:
  iftmp.22 = 345;
  goto <D.31929>;
  <D.31928>:
  iftmp.22 = 343;
  <D.31929>:
  iftmp.21 = iftmp.22;
  goto <D.31930>;
  <D.31925>:
  iftmp.21 = 344;
  <D.31930>:
  D.31912 = iftmp.21;
  return D.31912;
  <D.27841>:
  <D.27842>:
  <D.27843>:
  <D.27844>:
  <D.27845>:
  <D.27846>:
  <D.27847>:
  <D.27848>:
  if (calli == 0) goto <D.31932>; else goto <D.31933>;
  <D.31932>:
  if (virt != 0) goto <D.31935>; else goto <D.31936>;
  <D.31935>:
  iftmp.24 = 348;
  goto <D.31937>;
  <D.31936>:
  iftmp.24 = 346;
  <D.31937>:
  iftmp.23 = iftmp.24;
  goto <D.31938>;
  <D.31933>:
  iftmp.23 = 347;
  <D.31938>:
  D.31912 = iftmp.23;
  return D.31912;
  <D.27849>:
  <D.27850>:
  <D.27851>:
  <D.27852>:
  if (calli == 0) goto <D.31940>; else goto <D.31941>;
  <D.31940>:
  if (virt != 0) goto <D.31943>; else goto <D.31944>;
  <D.31943>:
  iftmp.26 = 348;
  goto <D.31945>;
  <D.31944>:
  iftmp.26 = 346;
  <D.31945>:
  iftmp.25 = iftmp.26;
  goto <D.31946>;
  <D.31941>:
  iftmp.25 = 347;
  <D.31946>:
  D.31912 = iftmp.25;
  return D.31912;
  <D.27853>:
  <D.27854>:
  <D.27855>:
  <D.27856>:
  <D.27857>:
  if (calli == 0) goto <D.31948>; else goto <D.31949>;
  <D.31948>:
  if (virt != 0) goto <D.31951>; else goto <D.31952>;
  <D.31951>:
  iftmp.28 = 348;
  goto <D.31953>;
  <D.31952>:
  iftmp.28 = 346;
  <D.31953>:
  iftmp.27 = iftmp.28;
  goto <D.31954>;
  <D.31949>:
  iftmp.27 = 347;
  <D.31954>:
  D.31912 = iftmp.27;
  return D.31912;
  <D.27858>:
  <D.27859>:
  if (calli == 0) goto <D.31956>; else goto <D.31957>;
  <D.31956>:
  if (virt != 0) goto <D.31959>; else goto <D.31960>;
  <D.31959>:
  iftmp.30 = 354;
  goto <D.31961>;
  <D.31960>:
  iftmp.30 = 352;
  <D.31961>:
  iftmp.29 = iftmp.30;
  goto <D.31962>;
  <D.31957>:
  iftmp.29 = 353;
  <D.31962>:
  D.31912 = iftmp.29;
  return D.31912;
  <D.27860>:
  <D.27861>:
  if (calli == 0) goto <D.31964>; else goto <D.31965>;
  <D.31964>:
  if (virt != 0) goto <D.31967>; else goto <D.31968>;
  <D.31967>:
  iftmp.32 = 351;
  goto <D.31969>;
  <D.31968>:
  iftmp.32 = 349;
  <D.31969>:
  iftmp.31 = iftmp.32;
  goto <D.31970>;
  <D.31965>:
  iftmp.31 = 350;
  <D.31970>:
  D.31912 = iftmp.31;
  return D.31912;
  <D.27862>:
  D.31971 = type->data.klass;
  D.31972 = BIT_FIELD_REF <*D.31971, 8, 160>;
  D.31973 = D.31972 & 16;
  if (D.31973 != 0) goto <D.31974>; else goto <D.31975>;
  <D.31974>:
  D.31971 = type->data.klass;
  type = mono_class_enum_basetype (D.31971);
  goto handle_enum;
  <D.31975>:
  if (calli == 0) goto <D.31977>; else goto <D.31978>;
  <D.31977>:
  if (virt != 0) goto <D.31980>; else goto <D.31981>;
  <D.31980>:
  iftmp.34 = 357;
  goto <D.31982>;
  <D.31981>:
  iftmp.34 = 355;
  <D.31982>:
  iftmp.33 = iftmp.34;
  goto <D.31983>;
  <D.31978>:
  iftmp.33 = 356;
  <D.31983>:
  D.31912 = iftmp.33;
  return D.31912;
  <D.27863>:
  if (calli == 0) goto <D.31985>; else goto <D.31986>;
  <D.31985>:
  if (virt != 0) goto <D.31988>; else goto <D.31989>;
  <D.31988>:
  iftmp.36 = 357;
  goto <D.31990>;
  <D.31989>:
  iftmp.36 = 355;
  <D.31990>:
  iftmp.35 = iftmp.36;
  goto <D.31991>;
  <D.31986>:
  iftmp.35 = 356;
  <D.31991>:
  D.31912 = iftmp.35;
  return D.31912;
  <D.27864>:
  D.31992 = type->data.generic_class;
  D.31993 = D.31992->container_class;
  type = &D.31993->byval_arg;
  goto handle_enum;
  <D.27865>:
  <D.27866>:
  if (calli == 0) goto <D.31995>; else goto <D.31996>;
  <D.31995>:
  if (virt != 0) goto <D.31998>; else goto <D.31999>;
  <D.31998>:
  iftmp.38 = 357;
  goto <D.32000>;
  <D.31999>:
  iftmp.38 = 355;
  <D.32000>:
  iftmp.37 = iftmp.38;
  goto <D.32001>;
  <D.31996>:
  iftmp.37 = 356;
  <D.32001>:
  D.31912 = iftmp.37;
  return D.31912;
  <D.27867>:
  D.31921 = type->type;
  D.31922 = (int) D.31921;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in ret_type_to_call_opcode", D.31922);
  <D.27868>:
  goto <D.27868>;
  D.31912 = -1;
  return D.31912;
}


callvirt_to_call (int opcode)
{
  int D.32003;

  switch (opcode) <default: <D.27954>, case 345: <D.27950>, case 348: <D.27949>, case 351: <D.27951>, case 354: <D.27953>, case 357: <D.27952>>
  <D.27949>:
  D.32003 = 346;
  return D.32003;
  <D.27950>:
  D.32003 = 343;
  return D.32003;
  <D.27951>:
  D.32003 = 349;
  return D.32003;
  <D.27952>:
  D.32003 = 355;
  return D.32003;
  <D.27953>:
  D.32003 = 352;
  return D.32003;
  <D.27954>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 2288);
  D.32003 = -1;
  return D.32003;
}


mini_emit_load_intf_reg_vtable (struct MonoCompile * cfg, int intf_reg, int vtable_reg, struct MonoClass * klass)
{
  unsigned char D.32005;
  unsigned char D.32006;
  unsigned int D.32009;
  unsigned int D.32010;
  struct MonoMemPool * D.32011;
  int D.32012;
  struct MonoInst * D.32013;
  guint16 iftmp.39;
  int D.32018;
  int D.32019;
  const unsigned char * D.32020;
  struct MonoBasicBlock * D.32021;
  struct MonoInst * D.32022;
  int D.32026;
  struct MonoInst * D.32027;
  int D.32028;
  int D.32029;
  int D.32033;
  struct MonoInst * D.32034;
  int D.32035;
  int D.32036;
  int D.32041;
  struct MonoInst * D.32042;
  int D.32043;
  int D.32044;
  short unsigned int D.32045;
  int D.32046;
  int D.32047;
  int D.32048;

  D.32005 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.32006 = D.32005 & 64;
  if (D.32006 != 0) goto <D.32007>; else goto <D.32008>;
  <D.32007>:
  {
    int ioffset_reg;
    int iid_reg;

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

      D.32011 = cfg->mempool;
      inst = mono_mempool_alloc (D.32011, 56);
      inst->data.op[1].const_val = 0;
      D.32012 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.32012;
      inst->prev = 0B;
      D.32013 = inst->prev;
      inst->next = D.32013;
      D.32005 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.32006 = D.32005 & 64;
      if (D.32006 != 0) goto <D.32015>; else goto <D.32016>;
      <D.32015>:
      iftmp.39 = 732;
      goto <D.32017>;
      <D.32016>:
      iftmp.39 = 362;
      <D.32017>:
      inst->opcode = iftmp.39;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.32018 = inst->sreg3;
      inst->sreg2 = D.32018;
      D.32019 = inst->sreg2;
      inst->sreg1 = D.32019;
      D.32020 = cfg->ip;
      inst->cil_code = D.32020;
      inst->dreg = iid_reg;
      inst->data.op[0].p = klass;
      inst->data.op[1].const_val = 24;
      D.32021 = cfg->cbb;
      D.32022 = D.32021->last_ins;
      if (D.32022 != 0B) goto <D.32023>; else goto <D.32024>;
      <D.32023>:
      D.32021 = cfg->cbb;
      D.32022 = D.32021->last_ins;
      D.32022->next = inst;
      D.32021 = cfg->cbb;
      D.32022 = D.32021->last_ins;
      inst->prev = D.32022;
      D.32021 = cfg->cbb;
      D.32021->last_ins = inst;
      goto <D.32025>;
      <D.32024>:
      D.32021 = cfg->cbb;
      D.32021 = cfg->cbb;
      D.32021->last_ins = inst;
      D.32022 = D.32021->last_ins;
      D.32021->code = D.32022;
      <D.32025>:
    }
    {
      struct MonoInst * inst;

      D.32011 = cfg->mempool;
      inst = mono_mempool_alloc (D.32011, 56);
      inst->data.op[1].const_val = 0;
      D.32026 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.32026;
      inst->prev = 0B;
      D.32027 = inst->prev;
      inst->next = D.32027;
      inst->opcode = 565;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.32028 = inst->sreg3;
      inst->sreg2 = D.32028;
      D.32029 = inst->sreg2;
      inst->sreg1 = D.32029;
      D.32020 = cfg->ip;
      inst->cil_code = D.32020;
      inst->dreg = ioffset_reg;
      inst->sreg1 = iid_reg;
      inst->sreg2 = vtable_reg;
      D.32021 = cfg->cbb;
      D.32022 = D.32021->last_ins;
      if (D.32022 != 0B) goto <D.32030>; else goto <D.32031>;
      <D.32030>:
      D.32021 = cfg->cbb;
      D.32022 = D.32021->last_ins;
      D.32022->next = inst;
      D.32021 = cfg->cbb;
      D.32022 = D.32021->last_ins;
      inst->prev = D.32022;
      D.32021 = cfg->cbb;
      D.32021->last_ins = inst;
      goto <D.32032>;
      <D.32031>:
      D.32021 = cfg->cbb;
      D.32021 = cfg->cbb;
      D.32021->last_ins = inst;
      D.32022 = D.32021->last_ins;
      D.32021->code = D.32022;
      <D.32032>:
    }
    {
      struct MonoInst * inst;

      D.32011 = cfg->mempool;
      inst = mono_mempool_alloc (D.32011, 56);
      inst->data.op[1].const_val = 0;
      D.32033 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.32033;
      inst->prev = 0B;
      D.32034 = inst->prev;
      inst->next = D.32034;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.32035 = inst->sreg3;
      inst->sreg2 = D.32035;
      D.32036 = inst->sreg2;
      inst->sreg1 = D.32036;
      D.32020 = cfg->ip;
      inst->cil_code = D.32020;
      inst->dreg = intf_reg;
      inst->sreg1 = ioffset_reg;
      inst->data.op[0].const_val = 0;
      D.32021 = cfg->cbb;
      D.32022 = D.32021->last_ins;
      if (D.32022 != 0B) goto <D.32037>; else goto <D.32038>;
      <D.32037>:
      D.32021 = cfg->cbb;
      D.32022 = D.32021->last_ins;
      D.32022->next = inst;
      D.32021 = cfg->cbb;
      D.32022 = D.32021->last_ins;
      inst->prev = D.32022;
      D.32021 = cfg->cbb;
      D.32021->last_ins = inst;
      goto <D.32039>;
      <D.32038>:
      D.32021 = cfg->cbb;
      D.32021 = cfg->cbb;
      D.32021->last_ins = inst;
      D.32022 = D.32021->last_ins;
      D.32021->code = D.32022;
      <D.32039>:
    }
  }
  goto <D.32040>;
  <D.32008>:
  {
    struct MonoInst * inst;

    D.32011 = cfg->mempool;
    inst = mono_mempool_alloc (D.32011, 56);
    inst->data.op[1].const_val = 0;
    D.32041 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.32041;
    inst->prev = 0B;
    D.32042 = inst->prev;
    inst->next = D.32042;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.32043 = inst->sreg3;
    inst->sreg2 = D.32043;
    D.32044 = inst->sreg2;
    inst->sreg1 = D.32044;
    D.32020 = cfg->ip;
    inst->cil_code = D.32020;
    inst->dreg = intf_reg;
    inst->sreg1 = vtable_reg;
    D.32045 = klass->interface_id;
    D.32046 = (int) D.32045;
    D.32047 = ~D.32046;
    D.32048 = D.32047 * 4;
    inst->data.op[0].const_val = D.32048;
    D.32021 = cfg->cbb;
    D.32022 = D.32021->last_ins;
    if (D.32022 != 0B) goto <D.32049>; else goto <D.32050>;
    <D.32049>:
    D.32021 = cfg->cbb;
    D.32022 = D.32021->last_ins;
    D.32022->next = inst;
    D.32021 = cfg->cbb;
    D.32022 = D.32021->last_ins;
    inst->prev = D.32022;
    D.32021 = cfg->cbb;
    D.32021->last_ins = inst;
    goto <D.32051>;
    <D.32050>:
    D.32021 = cfg->cbb;
    D.32021 = cfg->cbb;
    D.32021->last_ins = inst;
    D.32022 = D.32021->last_ins;
    D.32021->code = D.32022;
    <D.32051>:
  }
  <D.32040>:
}


emit_imt_argument (struct MonoCompile * cfg, struct MonoCallInst * call, struct MonoMethod * method, struct MonoInst * imt_arg)
{
  unsigned int D.32054;
  struct MonoMemPool * D.32057;
  int D.32058;
  struct MonoInst * D.32059;
  int D.32060;
  int D.32061;
  const unsigned char * D.32062;
  int D.32063;
  struct MonoBasicBlock * D.32064;
  struct MonoInst * D.32065;
  unsigned char D.32070;
  unsigned char D.32071;
  int D.32074;
  struct MonoInst * D.32075;
  guint16 iftmp.40;
  int D.32080;
  int D.32081;
  int D.32086;
  struct MonoInst * D.32087;
  int D.32088;
  int D.32089;
  int method_reg;

  if (0 != 0) goto <D.32052>; else goto <D.32053>;
  <D.32052>:
  D.32054 = alloc_preg (cfg);
  method_reg = (int) D.32054;
  if (imt_arg != 0B) goto <D.32055>; else goto <D.32056>;
  <D.32055>:
  {
    struct MonoInst * inst;

    D.32057 = cfg->mempool;
    inst = mono_mempool_alloc (D.32057, 56);
    inst->data.op[1].const_val = 0;
    D.32058 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.32058;
    inst->prev = 0B;
    D.32059 = inst->prev;
    inst->next = D.32059;
    inst->opcode = 424;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.32060 = inst->sreg3;
    inst->sreg2 = D.32060;
    D.32061 = inst->sreg2;
    inst->sreg1 = D.32061;
    D.32062 = cfg->ip;
    inst->cil_code = D.32062;
    inst->dreg = method_reg;
    D.32063 = imt_arg->dreg;
    inst->sreg1 = D.32063;
    D.32064 = cfg->cbb;
    D.32065 = D.32064->last_ins;
    if (D.32065 != 0B) goto <D.32066>; else goto <D.32067>;
    <D.32066>:
    D.32064 = cfg->cbb;
    D.32065 = D.32064->last_ins;
    D.32065->next = inst;
    D.32064 = cfg->cbb;
    D.32065 = D.32064->last_ins;
    inst->prev = D.32065;
    D.32064 = cfg->cbb;
    D.32064->last_ins = inst;
    goto <D.32068>;
    <D.32067>:
    D.32064 = cfg->cbb;
    D.32064 = cfg->cbb;
    D.32064->last_ins = inst;
    D.32065 = D.32064->last_ins;
    D.32064->code = D.32065;
    <D.32068>:
  }
  goto <D.32069>;
  <D.32056>:
  D.32070 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.32071 = D.32070 & 64;
  if (D.32071 != 0) goto <D.32072>; else goto <D.32073>;
  <D.32072>:
  {
    struct MonoInst * inst;

    D.32057 = cfg->mempool;
    inst = mono_mempool_alloc (D.32057, 56);
    inst->data.op[1].const_val = 0;
    D.32074 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.32074;
    inst->prev = 0B;
    D.32075 = inst->prev;
    inst->next = D.32075;
    D.32070 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.32071 = D.32070 & 64;
    if (D.32071 != 0) goto <D.32077>; else goto <D.32078>;
    <D.32077>:
    iftmp.40 = 732;
    goto <D.32079>;
    <D.32078>:
    iftmp.40 = 362;
    <D.32079>:
    inst->opcode = iftmp.40;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.32080 = inst->sreg3;
    inst->sreg2 = D.32080;
    D.32081 = inst->sreg2;
    inst->sreg1 = D.32081;
    D.32062 = cfg->ip;
    inst->cil_code = D.32062;
    inst->dreg = method_reg;
    inst->data.op[0].p = method;
    inst->data.op[1].const_val = 6;
    D.32064 = cfg->cbb;
    D.32065 = D.32064->last_ins;
    if (D.32065 != 0B) goto <D.32082>; else goto <D.32083>;
    <D.32082>:
    D.32064 = cfg->cbb;
    D.32065 = D.32064->last_ins;
    D.32065->next = inst;
    D.32064 = cfg->cbb;
    D.32065 = D.32064->last_ins;
    inst->prev = D.32065;
    D.32064 = cfg->cbb;
    D.32064->last_ins = inst;
    goto <D.32084>;
    <D.32083>:
    D.32064 = cfg->cbb;
    D.32064 = cfg->cbb;
    D.32064->last_ins = inst;
    D.32065 = D.32064->last_ins;
    D.32064->code = D.32065;
    <D.32084>:
  }
  goto <D.32085>;
  <D.32073>:
  {
    struct MonoInst * ins;

    D.32057 = cfg->mempool;
    ins = mono_mempool_alloc (D.32057, 56);
    ins->data.op[1].const_val = 0;
    D.32086 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.32086;
    ins->prev = 0B;
    D.32087 = ins->prev;
    ins->next = D.32087;
    ins->opcode = 362;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.32088 = ins->sreg3;
    ins->sreg2 = D.32088;
    D.32089 = ins->sreg2;
    ins->sreg1 = D.32089;
    D.32062 = cfg->ip;
    ins->cil_code = D.32062;
    ins->data.op[0].p = method;
    ins->dreg = method_reg;
    D.32064 = cfg->cbb;
    D.32065 = D.32064->last_ins;
    if (D.32065 != 0B) goto <D.32090>; else goto <D.32091>;
    <D.32090>:
    D.32064 = cfg->cbb;
    D.32065 = D.32064->last_ins;
    D.32065->next = ins;
    D.32064 = cfg->cbb;
    D.32065 = D.32064->last_ins;
    ins->prev = D.32065;
    D.32064 = cfg->cbb;
    D.32064->last_ins = ins;
    goto <D.32092>;
    <D.32091>:
    D.32064 = cfg->cbb;
    D.32064 = cfg->cbb;
    D.32064->last_ins = ins;
    D.32065 = D.32064->last_ins;
    D.32064->code = D.32065;
    <D.32092>:
  }
  <D.32085>:
  <D.32069>:
  mono_call_inst_add_outarg_reg (cfg, call, method_reg, 0, 0);
  return;
  <D.32053>:
  mono_arch_emit_imt_argument (cfg, call, imt_arg);
}


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, 8, 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.32094;
  long int D.32095;
  long int D.32096;
  struct MonoBasicBlock * D.32099;
  struct MonoInst * D.32100;
  struct MonoInst * D.32104;
  struct MonoCallInst * call;

  D.32094 = sig == 0B;
  D.32095 = (long int) D.32094;
  D.32096 = __builtin_expect (D.32095, 0);
  if (D.32096 != 0) goto <D.32097>; else goto <D.32098>;
  <D.32097>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2775, "sig");
  <D.32098>:
  call = mono_emit_call_args (cfg, sig, args, 0, 0, 0, 0, 0);
  call->fptr = func;
  D.32099 = cfg->cbb;
  D.32100 = D.32099->last_ins;
  if (D.32100 != 0B) goto <D.32101>; else goto <D.32102>;
  <D.32101>:
  D.32099 = cfg->cbb;
  D.32100 = D.32099->last_ins;
  D.32100->next = call;
  D.32099 = cfg->cbb;
  D.32100 = D.32099->last_ins;
  MEM[(struct MonoInst *)call].prev = D.32100;
  D.32099 = cfg->cbb;
  D.32099->last_ins = call;
  goto <D.32103>;
  <D.32102>:
  D.32099 = cfg->cbb;
  D.32099 = cfg->cbb;
  D.32099->last_ins = call;
  D.32100 = D.32099->last_ins;
  D.32099->code = D.32100;
  <D.32103>:
  D.32104 = call;
  return D.32104;
}


mono_emit_jit_icall (struct MonoCompile * cfg, const void * func, struct MonoInst * * args)
{
  _Bool D.32106;
  long int D.32107;
  long int D.32108;
  struct MonoInst * D.32111;
  const void * D.32112;
  struct MonoMethodSignature * D.32113;
  struct MonoJitICallInfo * info;

  info = mono_find_jit_icall_by_addr (func);
  D.32106 = info == 0B;
  D.32107 = (long int) D.32106;
  D.32108 = __builtin_expect (D.32107, 0);
  if (D.32108 != 0) goto <D.32109>; else goto <D.32110>;
  <D.32109>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2790, "info");
  <D.32110>:
  D.32112 = mono_icall_get_wrapper (info);
  D.32113 = info->sig;
  D.32111 = mono_emit_native_call (cfg, D.32112, D.32113, args);
  return D.32111;
}


mini_emit_stobj (struct MonoCompile * cfg, struct MonoInst * dest, struct MonoInst * src, struct MonoClass * klass, gboolean native)
{
  _Bool D.32115;
  long int D.32116;
  long int D.32117;
  int D.32120;
  _Bool D.32123;
  long int D.32124;
  long int D.32125;
  unsigned char D.32133;
  unsigned char D.32134;
  unsigned char D.32137;
  unsigned char D.32138;
  short unsigned int D.32144;
  int D.32146;
  unsigned int D.32147;
  unsigned int D.32148;
  unsigned int D.32153;
  unsigned int D.32154;
  unsigned int align.41;
  int align.42;
  int D.32158;
  struct MonoInst * D.32162;
  unsigned char D.32164;
  unsigned char D.32165;
  struct MonoMemPool * D.32168;
  void * D.32169;
  struct MonoInst * D.32170;
  int D.32171;
  struct MonoInst * D.32172;
  guint16 iftmp.43;
  int D.32177;
  int D.32178;
  const unsigned char * D.32179;
  unsigned int D.32180;
  int D.32181;
  struct MonoBasicBlock * D.32182;
  struct MonoInst * D.32183;
  void * D.32188;
  unsigned int D.32189;
  int D.32190;
  unsigned int n.44;
  int D.32203;
  int D.32204;
  void * D.32208;
  unsigned int D.32209;
  int D.32210;
  struct MonoMethodSignature * D.32216;
  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.32115 = klass == 0B;
      D.32116 = (long int) D.32115;
      D.32117 = __builtin_expect (D.32116, 0);
      if (D.32117 != 0) goto <D.32118>; else goto <D.32119>;
      <D.32118>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3060, "klass");
      <D.32119>:
      D.32120 = mini_is_gsharedvt_klass (cfg, klass);
      if (D.32120 != 0) goto <D.32121>; else goto <D.32122>;
      <D.32121>:
      D.32123 = native != 0;
      D.32124 = (long int) D.32123;
      D.32125 = __builtin_expect (D.32124, 0);
      if (D.32125 != 0) goto <D.32126>; else goto <D.32127>;
      <D.32126>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3067, "!native");
      <D.32127>:
      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.32122>:
      if (native != 0) goto <D.32128>; else goto <D.32129>;
      <D.32128>:
      n = mono_class_native_size (klass, &align);
      goto <D.32130>;
      <D.32129>:
      n = mono_class_value_size (klass, &align);
      <D.32130>:
      D.32133 = BIT_FIELD_REF <*cfg, 8, 3416>;
      D.32134 = D.32133 & 16;
      if (D.32134 != 0) goto <D.32135>; else goto <D.32136>;
      <D.32135>:
      D.32137 = BIT_FIELD_REF <*klass, 8, 184>;
      D.32138 = D.32137 & 8;
      if (D.32138 != 0) goto <D.32131>; else goto <D.32139>;
      <D.32139>:
      if (size_ins != 0B) goto <D.32131>; else goto <D.32132>;
      <D.32131>:
      if (native == 0) goto <D.32140>; else goto <D.32141>;
      <D.32140>:
      D.32144 = dest->opcode;
      if (D.32144 != 429) goto <D.32142>; else goto <D.32145>;
      <D.32145>:
      D.32146 = dest->sreg1;
      D.32147 = (unsigned int) D.32146;
      D.32148 = cfg->frame_reg;
      if (D.32147 != D.32148) goto <D.32142>; else goto <D.32143>;
      <D.32142>:
      D.32144 = dest->opcode;
      if (D.32144 != 314) goto <D.32149>; else goto <D.32150>;
      <D.32149>:
      {
        int context_used;

        iargs[0] = dest;
        iargs[1] = src;
        context_used = mini_class_check_context_used (cfg, klass);
        if (size_ins == 0B) goto <D.32152>; else goto <D.32151>;
        <D.32152>:
        D.32153 = cfg->opt;
        D.32154 = D.32153 & 2048;
        if (D.32154 != 0) goto <D.32155>; else goto <D.32151>;
        <D.32155>:
        align.41 = align;
        align.42 = (int) align.41;
        D.32158 = mono_emit_wb_aware_memcpy (cfg, klass, &iargs, n, align.42);
        if (D.32158 != 0) goto <D.32159>; else goto <D.32151>;
        <D.32159>:
        return;
        <D.32151>:
        if (context_used != 0) goto <D.32160>; else goto <D.32161>;
        <D.32160>:
        D.32162 = emit_get_rgctx_klass (cfg, context_used, klass, 1);
        iargs[2] = D.32162;
        goto <D.32163>;
        <D.32161>:
        D.32164 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.32165 = D.32164 & 64;
        if (D.32165 != 0) goto <D.32166>; else goto <D.32167>;
        <D.32166>:
        D.32168 = cfg->mempool;
        D.32169 = mono_mempool_alloc (D.32168, 56);
        iargs[2] = D.32169;
        D.32170 = iargs[2];
        D.32170 = iargs[2];
        D.32170->data.op[1].const_val = 0;
        D.32171 = D.32170->data.op[1].const_val;
        D.32170->data.op[0].const_val = D.32171;
        D.32170 = iargs[2];
        D.32170 = iargs[2];
        D.32170->prev = 0B;
        D.32172 = D.32170->prev;
        D.32170->next = D.32172;
        D.32170 = iargs[2];
        D.32164 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.32165 = D.32164 & 64;
        if (D.32165 != 0) goto <D.32174>; else goto <D.32175>;
        <D.32174>:
        iftmp.43 = 732;
        goto <D.32176>;
        <D.32175>:
        iftmp.43 = 362;
        <D.32176>:
        D.32170->opcode = iftmp.43;
        D.32170 = iargs[2];
        D.32170->flags = 0;
        D.32170 = iargs[2];
        D.32170->type = 0;
        D.32170 = iargs[2];
        D.32170->dreg = -1;
        D.32170 = iargs[2];
        D.32170 = iargs[2];
        D.32170 = iargs[2];
        D.32170->sreg3 = -1;
        D.32177 = D.32170->sreg3;
        D.32170->sreg2 = D.32177;
        D.32178 = D.32170->sreg2;
        D.32170->sreg1 = D.32178;
        D.32170 = iargs[2];
        D.32179 = cfg->ip;
        D.32170->cil_code = D.32179;
        D.32170 = iargs[2];
        D.32170->data.op[0].p = klass;
        D.32170 = iargs[2];
        D.32170->data.op[1].src = 11B;
        D.32170 = iargs[2];
        D.32170->type = 3;
        D.32170 = iargs[2];
        D.32180 = alloc_dreg (cfg, 3);
        D.32181 = (int) D.32180;
        D.32170->dreg = D.32181;
        D.32182 = cfg->cbb;
        D.32183 = D.32182->last_ins;
        if (D.32183 != 0B) goto <D.32184>; else goto <D.32185>;
        <D.32184>:
        D.32182 = cfg->cbb;
        D.32183 = D.32182->last_ins;
        D.32170 = iargs[2];
        D.32183->next = D.32170;
        D.32170 = iargs[2];
        D.32182 = cfg->cbb;
        D.32183 = D.32182->last_ins;
        D.32170->prev = D.32183;
        D.32182 = cfg->cbb;
        D.32170 = iargs[2];
        D.32182->last_ins = D.32170;
        goto <D.32186>;
        <D.32185>:
        D.32182 = cfg->cbb;
        D.32182 = cfg->cbb;
        D.32170 = iargs[2];
        D.32182->last_ins = D.32170;
        D.32183 = D.32182->last_ins;
        D.32182->code = D.32183;
        <D.32186>:
        goto <D.32187>;
        <D.32167>:
        D.32168 = cfg->mempool;
        D.32188 = mono_mempool_alloc (D.32168, 56);
        iargs[2] = D.32188;
        D.32170 = iargs[2];
        D.32170 = iargs[2];
        D.32170->data.op[1].const_val = 0;
        D.32171 = D.32170->data.op[1].const_val;
        D.32170->data.op[0].const_val = D.32171;
        D.32170 = iargs[2];
        D.32170 = iargs[2];
        D.32170->prev = 0B;
        D.32172 = D.32170->prev;
        D.32170->next = D.32172;
        D.32170 = iargs[2];
        D.32170->opcode = 362;
        D.32170 = iargs[2];
        D.32170->flags = 0;
        D.32170 = iargs[2];
        D.32170->type = 0;
        D.32170 = iargs[2];
        D.32170->dreg = -1;
        D.32170 = iargs[2];
        D.32170 = iargs[2];
        D.32170 = iargs[2];
        D.32170->sreg3 = -1;
        D.32177 = D.32170->sreg3;
        D.32170->sreg2 = D.32177;
        D.32178 = D.32170->sreg2;
        D.32170->sreg1 = D.32178;
        D.32170 = iargs[2];
        D.32179 = cfg->ip;
        D.32170->cil_code = D.32179;
        D.32170 = iargs[2];
        D.32170->data.op[0].p = klass;
        D.32170 = iargs[2];
        D.32170->type = 3;
        D.32170 = iargs[2];
        D.32189 = alloc_dreg (cfg, 3);
        D.32190 = (int) D.32189;
        D.32170->dreg = D.32190;
        D.32182 = cfg->cbb;
        D.32183 = D.32182->last_ins;
        if (D.32183 != 0B) goto <D.32191>; else goto <D.32192>;
        <D.32191>:
        D.32182 = cfg->cbb;
        D.32183 = D.32182->last_ins;
        D.32170 = iargs[2];
        D.32183->next = D.32170;
        D.32170 = iargs[2];
        D.32182 = cfg->cbb;
        D.32183 = D.32182->last_ins;
        D.32170->prev = D.32183;
        D.32182 = cfg->cbb;
        D.32170 = iargs[2];
        D.32182->last_ins = D.32170;
        goto <D.32193>;
        <D.32192>:
        D.32182 = cfg->cbb;
        D.32182 = cfg->cbb;
        D.32170 = iargs[2];
        D.32182->last_ins = D.32170;
        D.32183 = D.32182->last_ins;
        D.32182->code = D.32183;
        <D.32193>:
        mono_class_compute_gc_descriptor (klass);
        <D.32187>:
        <D.32163>:
        if (size_ins != 0B) goto <D.32194>; else goto <D.32195>;
        <D.32194>:
        mono_emit_jit_icall (cfg, mono_gsharedvt_value_copy, &iargs);
        goto <D.32196>;
        <D.32195>:
        mono_emit_jit_icall (cfg, mono_value_copy, &iargs);
        <D.32196>:
        return;
      }
      <D.32150>:
      <D.32143>:
      <D.32141>:
      <D.32132>:
      <D.32136>:
      if (size_ins == 0B) goto <D.32199>; else goto <D.32197>;
      <D.32199>:
      D.32153 = cfg->opt;
      D.32154 = D.32153 & 2048;
      if (D.32154 != 0) goto <D.32200>; else goto <D.32197>;
      <D.32200>:
      n.44 = (unsigned int) n;
      if (n.44 <= 20) goto <D.32202>; else goto <D.32197>;
      <D.32202>:
      D.32203 = dest->dreg;
      D.32204 = src->dreg;
      align.41 = align;
      align.42 = (int) align.41;
      mini_emit_memcpy (cfg, D.32203, 0, D.32204, 0, n, align.42);
      goto <D.32198>;
      <D.32197>:
      iargs[0] = dest;
      iargs[1] = src;
      if (size_ins != 0B) goto <D.32205>; else goto <D.32206>;
      <D.32205>:
      iargs[2] = size_ins;
      goto <D.32207>;
      <D.32206>:
      D.32168 = cfg->mempool;
      D.32208 = mono_mempool_alloc (D.32168, 56);
      iargs[2] = D.32208;
      D.32170 = iargs[2];
      D.32170 = iargs[2];
      D.32170->data.op[1].const_val = 0;
      D.32171 = D.32170->data.op[1].const_val;
      D.32170->data.op[0].const_val = D.32171;
      D.32170 = iargs[2];
      D.32170 = iargs[2];
      D.32170->prev = 0B;
      D.32172 = D.32170->prev;
      D.32170->next = D.32172;
      D.32170 = iargs[2];
      D.32170->opcode = 362;
      D.32170 = iargs[2];
      D.32170->flags = 0;
      D.32170 = iargs[2];
      D.32170->type = 0;
      D.32170 = iargs[2];
      D.32170->dreg = -1;
      D.32170 = iargs[2];
      D.32170 = iargs[2];
      D.32170 = iargs[2];
      D.32170->sreg3 = -1;
      D.32177 = D.32170->sreg3;
      D.32170->sreg2 = D.32177;
      D.32178 = D.32170->sreg2;
      D.32170->sreg1 = D.32178;
      D.32170 = iargs[2];
      D.32179 = cfg->ip;
      D.32170->cil_code = D.32179;
      D.32170 = iargs[2];
      D.32170->data.op[0].const_val = n;
      D.32170 = iargs[2];
      D.32170->type = 1;
      D.32170 = iargs[2];
      D.32209 = alloc_dreg (cfg, 1);
      D.32210 = (int) D.32209;
      D.32170->dreg = D.32210;
      D.32182 = cfg->cbb;
      D.32183 = D.32182->last_ins;
      if (D.32183 != 0B) goto <D.32211>; else goto <D.32212>;
      <D.32211>:
      D.32182 = cfg->cbb;
      D.32183 = D.32182->last_ins;
      D.32170 = iargs[2];
      D.32183->next = D.32170;
      D.32170 = iargs[2];
      D.32182 = cfg->cbb;
      D.32183 = D.32182->last_ins;
      D.32170->prev = D.32183;
      D.32182 = cfg->cbb;
      D.32170 = iargs[2];
      D.32182->last_ins = D.32170;
      goto <D.32213>;
      <D.32212>:
      D.32182 = cfg->cbb;
      D.32182 = cfg->cbb;
      D.32170 = iargs[2];
      D.32182->last_ins = D.32170;
      D.32183 = D.32182->last_ins;
      D.32182->code = D.32183;
      <D.32213>:
      <D.32207>:
      memcpy_method = get_memcpy_method ();
      if (memcpy_ins != 0B) goto <D.32214>; else goto <D.32215>;
      <D.32214>:
      D.32216 = mono_method_signature (memcpy_method);
      mono_emit_calli (cfg, D.32216, &iargs, memcpy_ins, 0B, 0B);
      goto <D.32217>;
      <D.32215>:
      mono_emit_method_call (cfg, memcpy_method, &iargs, 0B);
      <D.32217>:
      <D.32198>:
    }
  finally
    {
      iargs = {CLOBBER};
      align = {CLOBBER};
    }
}


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

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


emit_get_gsharedvt_info (struct MonoCompile * cfg, void * data, MonoRgctxInfoType rgctx_type)
{
  unsigned int D.32224;
  struct MonoMemPool * D.32225;
  int D.32226;
  struct MonoInst * D.32227;
  int D.32228;
  int D.32229;
  const unsigned char * D.32230;
  struct MonoInst * D.32231;
  int D.32232;
  unsigned int idx.45;
  unsigned int D.32234;
  unsigned int D.32235;
  int D.32236;
  struct MonoBasicBlock * D.32237;
  struct MonoInst * D.32238;
  struct MonoInst * D.32242;
  struct MonoInst * ins;
  int idx;
  int dreg;

  idx = get_gsharedvt_info_slot (cfg, data, rgctx_type);
  D.32224 = alloc_preg (cfg);
  dreg = (int) D.32224;
  D.32225 = cfg->mempool;
  ins = mono_mempool_alloc (D.32225, 56);
  ins->data.op[1].const_val = 0;
  D.32226 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.32226;
  ins->prev = 0B;
  D.32227 = ins->prev;
  ins->next = D.32227;
  ins->opcode = 388;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.32228 = ins->sreg3;
  ins->sreg2 = D.32228;
  D.32229 = ins->sreg2;
  ins->sreg1 = D.32229;
  D.32230 = cfg->ip;
  ins->cil_code = D.32230;
  ins->dreg = dreg;
  D.32231 = cfg->gsharedvt_info_var;
  D.32232 = D.32231->dreg;
  ins->sreg1 = D.32232;
  idx.45 = (unsigned int) idx;
  D.32234 = idx.45 + 1;
  D.32235 = D.32234 * 4;
  D.32236 = (int) D.32235;
  ins->data.op[0].const_val = D.32236;
  ins->type = 1;
  D.32237 = cfg->cbb;
  D.32238 = D.32237->last_ins;
  if (D.32238 != 0B) goto <D.32239>; else goto <D.32240>;
  <D.32239>:
  D.32237 = cfg->cbb;
  D.32238 = D.32237->last_ins;
  D.32238->next = ins;
  D.32237 = cfg->cbb;
  D.32238 = D.32237->last_ins;
  ins->prev = D.32238;
  D.32237 = cfg->cbb;
  D.32237->last_ins = ins;
  goto <D.32241>;
  <D.32240>:
  D.32237 = cfg->cbb;
  D.32237 = cfg->cbb;
  D.32237->last_ins = ins;
  D.32238 = D.32237->last_ins;
  D.32237->code = D.32238;
  <D.32241>:
  D.32242 = ins;
  return D.32242;
}


get_gsharedvt_info_slot (struct MonoCompile * cfg, void * data, MonoRgctxInfoType rgctx_type)
{
  _Bool D.32244;
  long int D.32245;
  long int D.32246;
  struct GPtrArray * D.32249;
  void * * D.32250;
  unsigned int i.46;
  unsigned int D.32252;
  void * * D.32253;
  <unnamed type> D.32254;
  void * D.32257;
  int D.32262;
  unsigned int i.47;
  unsigned int D.32264;
  struct MonoMemPool * D.32265;
  struct MonoGSharedVtMethodInfo * info;
  struct MonoRuntimeGenericContextInfoTemplate * template;
  int i;
  int idx;

  info = cfg->gsharedvt_info;
  D.32244 = info == 0B;
  D.32245 = (long int) D.32244;
  D.32246 = __builtin_expect (D.32245, 0);
  if (D.32246 != 0) goto <D.32247>; else goto <D.32248>;
  <D.32247>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3354, "info");
  <D.32248>:
  i = 0;
  goto <D.28332>;
  <D.28331>:
  {
    struct MonoRuntimeGenericContextInfoTemplate * otemplate;

    D.32249 = info->entries;
    D.32250 = D.32249->pdata;
    i.46 = (unsigned int) i;
    D.32252 = i.46 * 4;
    D.32253 = D.32250 + D.32252;
    otemplate = *D.32253;
    D.32254 = otemplate->info_type;
    if (D.32254 == rgctx_type) goto <D.32255>; else goto <D.32256>;
    <D.32255>:
    D.32257 = otemplate->data;
    if (D.32257 == data) goto <D.32258>; else goto <D.32259>;
    <D.32258>:
    if (rgctx_type != 21) goto <D.32260>; else goto <D.32261>;
    <D.32260>:
    D.32262 = i;
    return D.32262;
    <D.32261>:
    <D.32259>:
    <D.32256>:
  }
  i = i + 1;
  <D.28332>:
  i.47 = (unsigned int) i;
  D.32249 = info->entries;
  D.32264 = D.32249->len;
  if (i.47 < D.32264) goto <D.28331>; else goto <D.28333>;
  <D.28333>:
  D.32265 = cfg->mempool;
  template = mono_mempool_alloc0 (D.32265, 12);
  template->info_type = rgctx_type;
  template->data = data;
  D.32249 = info->entries;
  D.32264 = D.32249->len;
  idx = (int) D.32264;
  D.32249 = info->entries;
  monoeg_g_ptr_array_add (D.32249, template);
  D.32262 = idx;
  return D.32262;
}


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

  D.32267 = cfg->generic_sharing_context;
  if (D.32267 != 0B) goto <D.32268>; else goto <D.32269>;
  <D.32268>:
  D.32270 = mono_class_check_context_used (klass);
  return D.32270;
  <D.32269>:
  D.32270 = 0;
  return D.32270;
}


mono_emit_wb_aware_memcpy (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * * iargs, int size, int align)
{
  gboolean D.32276;
  struct MonoInst * * D.32281;
  struct MonoMemPool * D.32282;
  void * D.32283;
  struct MonoInst * D.32284;
  int D.32285;
  struct MonoInst * D.32286;
  int D.32287;
  int D.32288;
  const unsigned char * D.32289;
  unsigned int D.32290;
  int D.32291;
  struct MonoBasicBlock * D.32292;
  struct MonoInst * D.32293;
  struct MonoInst * D.32296;
  struct MonoInst * * D.32298;
  void * D.32299;
  struct MonoInst * D.32300;
  int D.32301;
  struct MonoInst * D.32302;
  int D.32303;
  int D.32304;
  unsigned int need_wb.48;
  int need_wb.49;
  unsigned int D.32307;
  int D.32308;
  struct MonoInst * D.32311;
  struct MonoInst * D.32313;
  struct MonoInst * * D.32314;
  struct MonoInst * D.32315;
  unsigned int D.32316;
  unsigned int D.32317;
  void * D.32318;
  int D.32319;
  struct MonoInst * D.32320;
  int D.32321;
  int D.32322;
  int D.32326;
  struct MonoInst * D.32327;
  int D.32328;
  int D.32329;
  int D.32333;
  struct MonoInst * D.32334;
  int D.32335;
  int D.32336;
  unsigned int D.32340;
  unsigned int need_wb.50;
  void * D.32346;
  int D.32350;
  struct MonoInst * D.32351;
  int D.32352;
  int D.32353;
  int D.32357;
  struct MonoInst * D.32358;
  int D.32359;
  int D.32360;
  int D.32364;
  struct MonoInst * D.32365;
  int D.32366;
  int D.32367;
  int D.32371;
  struct MonoInst * D.32372;
  int D.32373;
  int D.32374;
  int D.32378;
  struct MonoInst * D.32379;
  int D.32380;
  int D.32381;
  int D.32385;
  struct MonoInst * D.32386;
  int D.32387;
  int D.32388;
  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.32272>; else goto <D.32273>;
      <D.32272>:
      align = 4;
      <D.32273>:
      if (align <= 3) goto <D.32274>; else goto <D.32275>;
      <D.32274>:
      D.32276 = 0;
      return D.32276;
      <D.32275>:
      if (size > 128) goto <D.32277>; else goto <D.32278>;
      <D.32277>:
      D.32276 = 0;
      return D.32276;
      <D.32278>:
      create_write_barrier_bitmap (cfg, klass, &need_wb, 0);
      if (size > 20) goto <D.32279>; else goto <D.32280>;
      <D.32279>:
      size = size + 3;
      size = size & -4;
      D.32281 = iargs + 8;
      D.32282 = cfg->mempool;
      D.32283 = mono_mempool_alloc (D.32282, 56);
      *D.32281 = D.32283;
      D.32281 = iargs + 8;
      D.32284 = *D.32281;
      D.32281 = iargs + 8;
      D.32284 = *D.32281;
      D.32284->data.op[1].const_val = 0;
      D.32285 = D.32284->data.op[1].const_val;
      D.32284->data.op[0].const_val = D.32285;
      D.32281 = iargs + 8;
      D.32284 = *D.32281;
      D.32281 = iargs + 8;
      D.32284 = *D.32281;
      D.32284->prev = 0B;
      D.32286 = D.32284->prev;
      D.32284->next = D.32286;
      D.32281 = iargs + 8;
      D.32284 = *D.32281;
      D.32284->opcode = 362;
      D.32281 = iargs + 8;
      D.32284 = *D.32281;
      D.32284->flags = 0;
      D.32281 = iargs + 8;
      D.32284 = *D.32281;
      D.32284->type = 0;
      D.32281 = iargs + 8;
      D.32284 = *D.32281;
      D.32284->dreg = -1;
      D.32281 = iargs + 8;
      D.32284 = *D.32281;
      D.32281 = iargs + 8;
      D.32284 = *D.32281;
      D.32281 = iargs + 8;
      D.32284 = *D.32281;
      D.32284->sreg3 = -1;
      D.32287 = D.32284->sreg3;
      D.32284->sreg2 = D.32287;
      D.32288 = D.32284->sreg2;
      D.32284->sreg1 = D.32288;
      D.32281 = iargs + 8;
      D.32284 = *D.32281;
      D.32289 = cfg->ip;
      D.32284->cil_code = D.32289;
      D.32281 = iargs + 8;
      D.32284 = *D.32281;
      D.32284->data.op[0].const_val = size;
      D.32281 = iargs + 8;
      D.32284 = *D.32281;
      D.32284->type = 1;
      D.32281 = iargs + 8;
      D.32284 = *D.32281;
      D.32290 = alloc_dreg (cfg, 1);
      D.32291 = (int) D.32290;
      D.32284->dreg = D.32291;
      D.32292 = cfg->cbb;
      D.32293 = D.32292->last_ins;
      if (D.32293 != 0B) goto <D.32294>; else goto <D.32295>;
      <D.32294>:
      D.32292 = cfg->cbb;
      D.32293 = D.32292->last_ins;
      D.32296 = MEM[(struct MonoInst * *)iargs + 8B];
      D.32293->next = D.32296;
      D.32281 = iargs + 8;
      D.32284 = *D.32281;
      D.32292 = cfg->cbb;
      D.32293 = D.32292->last_ins;
      D.32284->prev = D.32293;
      D.32292 = cfg->cbb;
      D.32296 = MEM[(struct MonoInst * *)iargs + 8B];
      D.32292->last_ins = D.32296;
      goto <D.32297>;
      <D.32295>:
      D.32292 = cfg->cbb;
      D.32292 = cfg->cbb;
      D.32296 = MEM[(struct MonoInst * *)iargs + 8B];
      D.32292->last_ins = D.32296;
      D.32293 = D.32292->last_ins;
      D.32292->code = D.32293;
      <D.32297>:
      D.32298 = iargs + 12;
      D.32282 = cfg->mempool;
      D.32299 = mono_mempool_alloc (D.32282, 56);
      *D.32298 = D.32299;
      D.32298 = iargs + 12;
      D.32300 = *D.32298;
      D.32298 = iargs + 12;
      D.32300 = *D.32298;
      D.32300->data.op[1].const_val = 0;
      D.32301 = D.32300->data.op[1].const_val;
      D.32300->data.op[0].const_val = D.32301;
      D.32298 = iargs + 12;
      D.32300 = *D.32298;
      D.32298 = iargs + 12;
      D.32300 = *D.32298;
      D.32300->prev = 0B;
      D.32302 = D.32300->prev;
      D.32300->next = D.32302;
      D.32298 = iargs + 12;
      D.32300 = *D.32298;
      D.32300->opcode = 362;
      D.32298 = iargs + 12;
      D.32300 = *D.32298;
      D.32300->flags = 0;
      D.32298 = iargs + 12;
      D.32300 = *D.32298;
      D.32300->type = 0;
      D.32298 = iargs + 12;
      D.32300 = *D.32298;
      D.32300->dreg = -1;
      D.32298 = iargs + 12;
      D.32300 = *D.32298;
      D.32298 = iargs + 12;
      D.32300 = *D.32298;
      D.32298 = iargs + 12;
      D.32300 = *D.32298;
      D.32300->sreg3 = -1;
      D.32303 = D.32300->sreg3;
      D.32300->sreg2 = D.32303;
      D.32304 = D.32300->sreg2;
      D.32300->sreg1 = D.32304;
      D.32298 = iargs + 12;
      D.32300 = *D.32298;
      D.32289 = cfg->ip;
      D.32300->cil_code = D.32289;
      D.32298 = iargs + 12;
      D.32300 = *D.32298;
      need_wb.48 = need_wb;
      need_wb.49 = (int) need_wb.48;
      D.32300->data.op[0].const_val = need_wb.49;
      D.32298 = iargs + 12;
      D.32300 = *D.32298;
      D.32300->type = 1;
      D.32298 = iargs + 12;
      D.32300 = *D.32298;
      D.32307 = alloc_dreg (cfg, 1);
      D.32308 = (int) D.32307;
      D.32300->dreg = D.32308;
      D.32292 = cfg->cbb;
      D.32293 = D.32292->last_ins;
      if (D.32293 != 0B) goto <D.32309>; else goto <D.32310>;
      <D.32309>:
      D.32292 = cfg->cbb;
      D.32293 = D.32292->last_ins;
      D.32311 = MEM[(struct MonoInst * *)iargs + 12B];
      D.32293->next = D.32311;
      D.32298 = iargs + 12;
      D.32300 = *D.32298;
      D.32292 = cfg->cbb;
      D.32293 = D.32292->last_ins;
      D.32300->prev = D.32293;
      D.32292 = cfg->cbb;
      D.32311 = MEM[(struct MonoInst * *)iargs + 12B];
      D.32292->last_ins = D.32311;
      goto <D.32312>;
      <D.32310>:
      D.32292 = cfg->cbb;
      D.32292 = cfg->cbb;
      D.32311 = MEM[(struct MonoInst * *)iargs + 12B];
      D.32292->last_ins = D.32311;
      D.32293 = D.32292->last_ins;
      D.32292->code = D.32293;
      <D.32312>:
      mono_emit_jit_icall (cfg, mono_gc_wbarrier_value_copy_bitmap, iargs);
      D.32276 = 1;
      return D.32276;
      <D.32280>:
      D.32313 = *iargs;
      destreg = D.32313->dreg;
      D.32314 = iargs + 4;
      D.32315 = *D.32314;
      srcreg = D.32315->dreg;
      offset = 0;
      D.32316 = alloc_preg (cfg);
      dest_ptr_reg = (int) D.32316;
      D.32317 = alloc_preg (cfg);
      tmp_reg = (int) D.32317;
      D.32282 = cfg->mempool;
      D.32318 = mono_mempool_alloc (D.32282, 56);
      *iargs = D.32318;
      D.32313 = *iargs;
      D.32313 = *iargs;
      D.32313->data.op[1].const_val = 0;
      D.32319 = D.32313->data.op[1].const_val;
      D.32313->data.op[0].const_val = D.32319;
      D.32313 = *iargs;
      D.32313 = *iargs;
      D.32313->prev = 0B;
      D.32320 = D.32313->prev;
      D.32313->next = D.32320;
      D.32313 = *iargs;
      D.32313->opcode = 424;
      D.32313 = *iargs;
      D.32313->flags = 0;
      D.32313 = *iargs;
      D.32313->type = 0;
      D.32313 = *iargs;
      D.32313->dreg = -1;
      D.32313 = *iargs;
      D.32313 = *iargs;
      D.32313 = *iargs;
      D.32313->sreg3 = -1;
      D.32321 = D.32313->sreg3;
      D.32313->sreg2 = D.32321;
      D.32322 = D.32313->sreg2;
      D.32313->sreg1 = D.32322;
      D.32313 = *iargs;
      D.32289 = cfg->ip;
      D.32313->cil_code = D.32289;
      D.32313 = *iargs;
      D.32313->dreg = dest_ptr_reg;
      D.32313 = *iargs;
      D.32313->sreg1 = destreg;
      D.32292 = cfg->cbb;
      D.32293 = D.32292->last_ins;
      if (D.32293 != 0B) goto <D.32323>; else goto <D.32324>;
      <D.32323>:
      D.32292 = cfg->cbb;
      D.32293 = D.32292->last_ins;
      D.32313 = *iargs;
      D.32293->next = D.32313;
      D.32313 = *iargs;
      D.32292 = cfg->cbb;
      D.32293 = D.32292->last_ins;
      D.32313->prev = D.32293;
      D.32292 = cfg->cbb;
      D.32313 = *iargs;
      D.32292->last_ins = D.32313;
      goto <D.32325>;
      <D.32324>:
      D.32292 = cfg->cbb;
      D.32292 = cfg->cbb;
      D.32313 = *iargs;
      D.32292->last_ins = D.32313;
      D.32293 = D.32292->last_ins;
      D.32292->code = D.32293;
      <D.32325>:
      goto <D.28187>;
      <D.28186>:
      {
        struct MonoInst * load_inst;

        D.32282 = cfg->mempool;
        load_inst = mono_mempool_alloc (D.32282, 56);
        load_inst->data.op[1].const_val = 0;
        D.32326 = load_inst->data.op[1].const_val;
        load_inst->data.op[0].const_val = D.32326;
        load_inst->prev = 0B;
        D.32327 = load_inst->prev;
        load_inst->next = D.32327;
        load_inst->opcode = 388;
        load_inst->flags = 0;
        load_inst->type = 0;
        load_inst->dreg = -1;
        load_inst->sreg3 = -1;
        D.32328 = load_inst->sreg3;
        load_inst->sreg2 = D.32328;
        D.32329 = load_inst->sreg2;
        load_inst->sreg1 = D.32329;
        D.32289 = cfg->ip;
        load_inst->cil_code = D.32289;
        load_inst->dreg = tmp_reg;
        load_inst->sreg1 = srcreg;
        load_inst->data.op[0].const_val = offset;
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        if (D.32293 != 0B) goto <D.32330>; else goto <D.32331>;
        <D.32330>:
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        D.32293->next = load_inst;
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        load_inst->prev = D.32293;
        D.32292 = cfg->cbb;
        D.32292->last_ins = load_inst;
        goto <D.32332>;
        <D.32331>:
        D.32292 = cfg->cbb;
        D.32292 = cfg->cbb;
        D.32292->last_ins = load_inst;
        D.32293 = D.32292->last_ins;
        D.32292->code = D.32293;
        <D.32332>:
        {
          struct MonoInst * inst;

          D.32282 = cfg->mempool;
          inst = mono_mempool_alloc (D.32282, 56);
          inst->data.op[1].const_val = 0;
          D.32333 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.32333;
          inst->prev = 0B;
          D.32334 = inst->prev;
          inst->next = D.32334;
          inst->opcode = 377;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.32335 = inst->sreg3;
          inst->sreg2 = D.32335;
          D.32336 = inst->sreg2;
          inst->sreg1 = D.32336;
          D.32289 = cfg->ip;
          inst->cil_code = D.32289;
          inst->sreg1 = tmp_reg;
          inst->dreg = dest_ptr_reg;
          inst->data.op[0].const_val = 0;
          D.32292 = cfg->cbb;
          D.32293 = D.32292->last_ins;
          if (D.32293 != 0B) goto <D.32337>; else goto <D.32338>;
          <D.32337>:
          D.32292 = cfg->cbb;
          D.32293 = D.32292->last_ins;
          D.32293->next = inst;
          D.32292 = cfg->cbb;
          D.32293 = D.32292->last_ins;
          inst->prev = D.32293;
          D.32292 = cfg->cbb;
          D.32292->last_ins = inst;
          goto <D.32339>;
          <D.32338>:
          D.32292 = cfg->cbb;
          D.32292 = cfg->cbb;
          D.32292->last_ins = inst;
          D.32293 = D.32292->last_ins;
          D.32292->code = D.32293;
          <D.32339>:
        }
        need_wb.48 = need_wb;
        D.32340 = need_wb.48 & 1;
        if (D.32340 != 0) goto <D.32341>; else goto <D.32342>;
        <D.32341>:
        D.32313 = *iargs;
        emit_write_barrier (cfg, D.32313, load_inst);
        <D.32342>:
        offset = offset + 4;
        size = size + -4;
        need_wb.48 = need_wb;
        need_wb.50 = need_wb.48 >> 1;
        need_wb = need_wb.50;
        if (size > 3) goto <D.32344>; else goto <D.32345>;
        <D.32344>:
        D.32282 = cfg->mempool;
        D.32346 = mono_mempool_alloc (D.32282, 56);
        *iargs = D.32346;
        D.32313 = *iargs;
        D.32313 = *iargs;
        D.32313->data.op[1].const_val = 0;
        D.32319 = D.32313->data.op[1].const_val;
        D.32313->data.op[0].const_val = D.32319;
        D.32313 = *iargs;
        D.32313 = *iargs;
        D.32313->prev = 0B;
        D.32320 = D.32313->prev;
        D.32313->next = D.32320;
        D.32313 = *iargs;
        D.32313->opcode = 625;
        D.32313 = *iargs;
        D.32313->flags = 0;
        D.32313 = *iargs;
        D.32313->type = 0;
        D.32313 = *iargs;
        D.32313->dreg = -1;
        D.32313 = *iargs;
        D.32313 = *iargs;
        D.32313 = *iargs;
        D.32313->sreg3 = -1;
        D.32321 = D.32313->sreg3;
        D.32313->sreg2 = D.32321;
        D.32322 = D.32313->sreg2;
        D.32313->sreg1 = D.32322;
        D.32313 = *iargs;
        D.32289 = cfg->ip;
        D.32313->cil_code = D.32289;
        D.32313 = *iargs;
        D.32313->dreg = dest_ptr_reg;
        D.32313 = *iargs;
        D.32313->sreg1 = dest_ptr_reg;
        D.32313 = *iargs;
        D.32313->data.op[1].const_val = 4;
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        if (D.32293 != 0B) goto <D.32347>; else goto <D.32348>;
        <D.32347>:
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        D.32313 = *iargs;
        D.32293->next = D.32313;
        D.32313 = *iargs;
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        D.32313->prev = D.32293;
        D.32292 = cfg->cbb;
        D.32313 = *iargs;
        D.32292->last_ins = D.32313;
        goto <D.32349>;
        <D.32348>:
        D.32292 = cfg->cbb;
        D.32292 = cfg->cbb;
        D.32313 = *iargs;
        D.32292->last_ins = D.32313;
        D.32293 = D.32292->last_ins;
        D.32292->code = D.32293;
        <D.32349>:
        <D.32345>:
      }
      <D.28187>:
      if (size > 3) goto <D.28186>; else goto <D.28188>;
      <D.28188>:
      goto <D.28192>;
      <D.28191>:
      {
        struct MonoInst * inst;

        D.32282 = cfg->mempool;
        inst = mono_mempool_alloc (D.32282, 56);
        inst->data.op[1].const_val = 0;
        D.32350 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.32350;
        inst->prev = 0B;
        D.32351 = inst->prev;
        inst->next = D.32351;
        inst->opcode = 393;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.32352 = inst->sreg3;
        inst->sreg2 = D.32352;
        D.32353 = inst->sreg2;
        inst->sreg1 = D.32353;
        D.32289 = cfg->ip;
        inst->cil_code = D.32289;
        inst->dreg = tmp_reg;
        inst->sreg1 = srcreg;
        inst->data.op[0].const_val = offset;
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        if (D.32293 != 0B) goto <D.32354>; else goto <D.32355>;
        <D.32354>:
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        D.32293->next = inst;
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        inst->prev = D.32293;
        D.32292 = cfg->cbb;
        D.32292->last_ins = inst;
        goto <D.32356>;
        <D.32355>:
        D.32292 = cfg->cbb;
        D.32292 = cfg->cbb;
        D.32292->last_ins = inst;
        D.32293 = D.32292->last_ins;
        D.32292->code = D.32293;
        <D.32356>:
      }
      {
        struct MonoInst * inst;

        D.32282 = cfg->mempool;
        inst = mono_mempool_alloc (D.32282, 56);
        inst->data.op[1].const_val = 0;
        D.32357 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.32357;
        inst->prev = 0B;
        D.32358 = inst->prev;
        inst->next = D.32358;
        inst->opcode = 377;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.32359 = inst->sreg3;
        inst->sreg2 = D.32359;
        D.32360 = inst->sreg2;
        inst->sreg1 = D.32360;
        D.32289 = cfg->ip;
        inst->cil_code = D.32289;
        inst->sreg1 = tmp_reg;
        inst->dreg = destreg;
        inst->data.op[0].const_val = offset;
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        if (D.32293 != 0B) goto <D.32361>; else goto <D.32362>;
        <D.32361>:
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        D.32293->next = inst;
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        inst->prev = D.32293;
        D.32292 = cfg->cbb;
        D.32292->last_ins = inst;
        goto <D.32363>;
        <D.32362>:
        D.32292 = cfg->cbb;
        D.32292 = cfg->cbb;
        D.32292->last_ins = inst;
        D.32293 = D.32292->last_ins;
        D.32292->code = D.32293;
        <D.32363>:
      }
      offset = offset + 4;
      size = size + -4;
      <D.28192>:
      if (size > 3) goto <D.28191>; else goto <D.28193>;
      <D.28193>:
      goto <D.28197>;
      <D.28196>:
      {
        struct MonoInst * inst;

        D.32282 = cfg->mempool;
        inst = mono_mempool_alloc (D.32282, 56);
        inst->data.op[1].const_val = 0;
        D.32364 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.32364;
        inst->prev = 0B;
        D.32365 = inst->prev;
        inst->next = D.32365;
        inst->opcode = 391;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.32366 = inst->sreg3;
        inst->sreg2 = D.32366;
        D.32367 = inst->sreg2;
        inst->sreg1 = D.32367;
        D.32289 = cfg->ip;
        inst->cil_code = D.32289;
        inst->dreg = tmp_reg;
        inst->sreg1 = srcreg;
        inst->data.op[0].const_val = offset;
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        if (D.32293 != 0B) goto <D.32368>; else goto <D.32369>;
        <D.32368>:
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        D.32293->next = inst;
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        inst->prev = D.32293;
        D.32292 = cfg->cbb;
        D.32292->last_ins = inst;
        goto <D.32370>;
        <D.32369>:
        D.32292 = cfg->cbb;
        D.32292 = cfg->cbb;
        D.32292->last_ins = inst;
        D.32293 = D.32292->last_ins;
        D.32292->code = D.32293;
        <D.32370>:
      }
      {
        struct MonoInst * inst;

        D.32282 = cfg->mempool;
        inst = mono_mempool_alloc (D.32282, 56);
        inst->data.op[1].const_val = 0;
        D.32371 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.32371;
        inst->prev = 0B;
        D.32372 = inst->prev;
        inst->next = D.32372;
        inst->opcode = 376;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.32373 = inst->sreg3;
        inst->sreg2 = D.32373;
        D.32374 = inst->sreg2;
        inst->sreg1 = D.32374;
        D.32289 = cfg->ip;
        inst->cil_code = D.32289;
        inst->sreg1 = tmp_reg;
        inst->dreg = destreg;
        inst->data.op[0].const_val = offset;
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        if (D.32293 != 0B) goto <D.32375>; else goto <D.32376>;
        <D.32375>:
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        D.32293->next = inst;
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        inst->prev = D.32293;
        D.32292 = cfg->cbb;
        D.32292->last_ins = inst;
        goto <D.32377>;
        <D.32376>:
        D.32292 = cfg->cbb;
        D.32292 = cfg->cbb;
        D.32292->last_ins = inst;
        D.32293 = D.32292->last_ins;
        D.32292->code = D.32293;
        <D.32377>:
      }
      offset = offset + 2;
      size = size + -2;
      <D.28197>:
      if (size > 1) goto <D.28196>; else goto <D.28198>;
      <D.28198>:
      goto <D.28202>;
      <D.28201>:
      {
        struct MonoInst * inst;

        D.32282 = cfg->mempool;
        inst = mono_mempool_alloc (D.32282, 56);
        inst->data.op[1].const_val = 0;
        D.32378 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.32378;
        inst->prev = 0B;
        D.32379 = inst->prev;
        inst->next = D.32379;
        inst->opcode = 389;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.32380 = inst->sreg3;
        inst->sreg2 = D.32380;
        D.32381 = inst->sreg2;
        inst->sreg1 = D.32381;
        D.32289 = cfg->ip;
        inst->cil_code = D.32289;
        inst->dreg = tmp_reg;
        inst->sreg1 = srcreg;
        inst->data.op[0].const_val = offset;
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        if (D.32293 != 0B) goto <D.32382>; else goto <D.32383>;
        <D.32382>:
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        D.32293->next = inst;
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        inst->prev = D.32293;
        D.32292 = cfg->cbb;
        D.32292->last_ins = inst;
        goto <D.32384>;
        <D.32383>:
        D.32292 = cfg->cbb;
        D.32292 = cfg->cbb;
        D.32292->last_ins = inst;
        D.32293 = D.32292->last_ins;
        D.32292->code = D.32293;
        <D.32384>:
      }
      {
        struct MonoInst * inst;

        D.32282 = cfg->mempool;
        inst = mono_mempool_alloc (D.32282, 56);
        inst->data.op[1].const_val = 0;
        D.32385 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.32385;
        inst->prev = 0B;
        D.32386 = inst->prev;
        inst->next = D.32386;
        inst->opcode = 375;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.32387 = inst->sreg3;
        inst->sreg2 = D.32387;
        D.32388 = inst->sreg2;
        inst->sreg1 = D.32388;
        D.32289 = cfg->ip;
        inst->cil_code = D.32289;
        inst->sreg1 = tmp_reg;
        inst->dreg = destreg;
        inst->data.op[0].const_val = offset;
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        if (D.32293 != 0B) goto <D.32389>; else goto <D.32390>;
        <D.32389>:
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        D.32293->next = inst;
        D.32292 = cfg->cbb;
        D.32293 = D.32292->last_ins;
        inst->prev = D.32293;
        D.32292 = cfg->cbb;
        D.32292->last_ins = inst;
        goto <D.32391>;
        <D.32390>:
        D.32292 = cfg->cbb;
        D.32292 = cfg->cbb;
        D.32292->last_ins = inst;
        D.32293 = D.32292->last_ins;
        D.32292->code = D.32293;
        <D.32391>:
      }
      offset = offset + 1;
      size = size + -1;
      <D.28202>:
      if (size > 0) goto <D.28201>; else goto <D.28203>;
      <D.28203>:
      D.32276 = 1;
      return D.32276;
    }
  finally
    {
      need_wb = {CLOBBER};
    }
}


create_write_barrier_bitmap (struct MonoCompile * cfg, struct MonoClass * klass, unsigned int * wb_bitmap, int offset)
{
  struct MonoType * D.32394;
  short unsigned int D.32395;
  int D.32396;
  int D.32397;
  int iftmp.51;
  unsigned char D.32401;
  unsigned char D.32402;
  int D.32405;
  unsigned int D.32406;
  unsigned int D.32407;
  struct MonoType * D.32409;
  int D.32410;
  unsigned int foffset.52;
  unsigned int D.32414;
  _Bool D.32415;
  long int D.32416;
  long int D.32417;
  unsigned int D.32420;
  int D.32421;
  int D.32422;
  int D.32423;
  unsigned int D.32424;
  unsigned int D.32425;
  unsigned char D.32427;
  unsigned char D.32428;
  struct MonoClassField * field;
  void * iter;

  try
    {
      iter = 0B;
      goto <D.28145>;
      <D.28147>:
      {
        int foffset;

        D.32394 = field->type;
        D.32395 = D.32394->attrs;
        D.32396 = (int) D.32395;
        D.32397 = D.32396 & 16;
        if (D.32397 != 0) goto <D.32398>; else goto <D.32399>;
        <D.32398>:
        // predicted unlikely by continue predictor.
        goto <D.28145>;
        <D.32399>:
        D.32401 = BIT_FIELD_REF <*klass, 8, 160>;
        D.32402 = D.32401 & 8;
        if (D.32402 != 0) goto <D.32403>; else goto <D.32404>;
        <D.32403>:
        D.32405 = field->offset;
        D.32406 = (unsigned int) D.32405;
        D.32407 = D.32406 + 4294967288;
        iftmp.51 = (int) D.32407;
        goto <D.32408>;
        <D.32404>:
        iftmp.51 = field->offset;
        <D.32408>:
        foffset = iftmp.51;
        D.32409 = mono_field_get_type (field);
        D.32410 = mini_type_is_reference (cfg, D.32409);
        if (D.32410 != 0) goto <D.32411>; else goto <D.32412>;
        <D.32411>:
        foffset.52 = (unsigned int) foffset;
        D.32414 = foffset.52 & 3;
        D.32415 = D.32414 != 0;
        D.32416 = (long int) D.32415;
        D.32417 = __builtin_expect (D.32416, 0);
        if (D.32417 != 0) goto <D.32418>; else goto <D.32419>;
        <D.32418>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2886, "(foffset % SIZEOF_VOID_P) == 0");
        <D.32419>:
        D.32420 = *wb_bitmap;
        D.32421 = offset + foffset;
        D.32422 = D.32421 / 4;
        D.32423 = 1 << D.32422;
        D.32424 = (unsigned int) D.32423;
        D.32425 = D.32420 | D.32424;
        *wb_bitmap = D.32425;
        goto <D.32426>;
        <D.32412>:
        {
          struct MonoClass * field_class;

          D.32394 = field->type;
          field_class = mono_class_from_mono_type (D.32394);
          D.32427 = BIT_FIELD_REF <*field_class, 8, 184>;
          D.32428 = D.32427 & 8;
          if (D.32428 != 0) goto <D.32429>; else goto <D.32430>;
          <D.32429>:
          D.32421 = offset + foffset;
          create_write_barrier_bitmap (cfg, field_class, wb_bitmap, D.32421);
          <D.32430>:
        }
        <D.32426>:
      }
      <D.28145>:
      field = mono_class_get_fields (klass, &iter);
      if (field != 0B) goto <D.28147>; else goto <D.28148>;
      <D.28148>:
    }
  finally
    {
      iter = {CLOBBER};
    }
}


emit_write_barrier (struct MonoCompile * cfg, struct MonoInst * ptr, struct MonoInst * value)
{
  unsigned char D.32431;
  unsigned char D.32432;
  unsigned char D.32438;
  unsigned char D.32439;
  int nursery_shift_bits.53;
  struct MonoMemPool * D.32444;
  int D.32445;
  struct MonoInst * D.32446;
  int D.32447;
  int D.32448;
  const unsigned char * D.32449;
  struct MonoInst * ptr.54;
  int D.32451;
  int D.32452;
  struct MonoBasicBlock * D.32453;
  struct MonoInst * D.32454;
  unsigned int D.32460;
  unsigned int D.32461;
  int D.32462;
  struct MonoInst * D.32463;
  int D.32464;
  int D.32465;
  int card_table_shift_bits.55;
  void * card_table_mask.56;
  int D.32473;
  struct MonoInst * D.32474;
  int D.32475;
  int D.32476;
  int card_table_mask.57;
  int D.32483;
  struct MonoInst * D.32484;
  guint16 iftmp.58;
  int D.32489;
  int D.32490;
  int D.32495;
  struct MonoInst * D.32496;
  int D.32497;
  int D.32498;
  int D.32502;
  struct MonoInst * D.32503;
  int D.32504;
  int D.32505;
  int D.32509;
  struct MonoInst * D.32510;
  int D.32511;
  int D.32512;
  int D.32517;
  struct MonoInst * D.32518;
  int D.32519;
  int D.32520;
  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.32431 = BIT_FIELD_REF <*cfg, 8, 3416>;
      D.32432 = D.32431 & 16;
      if (D.32432 == 0) goto <D.32433>; else goto <D.32434>;
      <D.32433>:
      return;
      <D.32434>:
      card_table = mono_gc_get_card_table (&card_table_shift_bits, &card_table_mask);
      mono_gc_get_nursery (&nursery_shift_bits, &nursery_size);
      if (has_card_table_wb != 0) goto <D.32437>; else goto <D.32435>;
      <D.32437>:
      D.32438 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.32439 = D.32438 & 64;
      if (D.32439 == 0) goto <D.32440>; else goto <D.32435>;
      <D.32440>:
      if (card_table != 0B) goto <D.32441>; else goto <D.32435>;
      <D.32441>:
      nursery_shift_bits.53 = nursery_shift_bits;
      if (nursery_shift_bits.53 > 0) goto <D.32443>; else goto <D.32435>;
      <D.32443>:
      {
        struct MonoInst * wbarrier;

        D.32444 = cfg->mempool;
        wbarrier = mono_mempool_alloc (D.32444, 56);
        wbarrier->data.op[1].const_val = 0;
        D.32445 = wbarrier->data.op[1].const_val;
        wbarrier->data.op[0].const_val = D.32445;
        wbarrier->prev = 0B;
        D.32446 = wbarrier->prev;
        wbarrier->next = D.32446;
        wbarrier->opcode = 790;
        wbarrier->flags = 0;
        wbarrier->type = 0;
        wbarrier->dreg = -1;
        wbarrier->sreg3 = -1;
        D.32447 = wbarrier->sreg3;
        wbarrier->sreg2 = D.32447;
        D.32448 = wbarrier->sreg2;
        wbarrier->sreg1 = D.32448;
        D.32449 = cfg->ip;
        wbarrier->cil_code = D.32449;
        ptr.54 = ptr;
        D.32451 = ptr.54->dreg;
        wbarrier->sreg1 = D.32451;
        D.32452 = value->dreg;
        wbarrier->sreg2 = D.32452;
        D.32453 = cfg->cbb;
        D.32454 = D.32453->last_ins;
        if (D.32454 != 0B) goto <D.32455>; else goto <D.32456>;
        <D.32455>:
        D.32453 = cfg->cbb;
        D.32454 = D.32453->last_ins;
        D.32454->next = wbarrier;
        D.32453 = cfg->cbb;
        D.32454 = D.32453->last_ins;
        wbarrier->prev = D.32454;
        D.32453 = cfg->cbb;
        D.32453->last_ins = wbarrier;
        goto <D.32457>;
        <D.32456>:
        D.32453 = cfg->cbb;
        D.32453 = cfg->cbb;
        D.32453->last_ins = wbarrier;
        D.32454 = D.32453->last_ins;
        D.32453->code = D.32454;
        <D.32457>:
      }
      goto <D.32436>;
      <D.32435>:
      if (card_table != 0B) goto <D.32458>; else goto <D.32459>;
      <D.32458>:
      {
        int offset_reg;
        int card_reg;
        struct MonoInst * ins;

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

          D.32444 = cfg->mempool;
          inst = mono_mempool_alloc (D.32444, 56);
          inst->data.op[1].const_val = 0;
          D.32462 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.32462;
          inst->prev = 0B;
          D.32463 = inst->prev;
          inst->next = D.32463;
          inst->opcode = 441;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.32464 = inst->sreg3;
          inst->sreg2 = D.32464;
          D.32465 = inst->sreg2;
          inst->sreg1 = D.32465;
          D.32449 = cfg->ip;
          inst->cil_code = D.32449;
          inst->dreg = offset_reg;
          ptr.54 = ptr;
          D.32451 = ptr.54->dreg;
          inst->sreg1 = D.32451;
          card_table_shift_bits.55 = card_table_shift_bits;
          inst->data.op[1].const_val = card_table_shift_bits.55;
          D.32453 = cfg->cbb;
          D.32454 = D.32453->last_ins;
          if (D.32454 != 0B) goto <D.32467>; else goto <D.32468>;
          <D.32467>:
          D.32453 = cfg->cbb;
          D.32454 = D.32453->last_ins;
          D.32454->next = inst;
          D.32453 = cfg->cbb;
          D.32454 = D.32453->last_ins;
          inst->prev = D.32454;
          D.32453 = cfg->cbb;
          D.32453->last_ins = inst;
          goto <D.32469>;
          <D.32468>:
          D.32453 = cfg->cbb;
          D.32453 = cfg->cbb;
          D.32453->last_ins = inst;
          D.32454 = D.32453->last_ins;
          D.32453->code = D.32454;
          <D.32469>:
        }
        card_table_mask.56 = card_table_mask;
        if (card_table_mask.56 != 0B) goto <D.32471>; else goto <D.32472>;
        <D.32471>:
        {
          struct MonoInst * inst;

          D.32444 = cfg->mempool;
          inst = mono_mempool_alloc (D.32444, 56);
          inst->data.op[1].const_val = 0;
          D.32473 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.32473;
          inst->prev = 0B;
          D.32474 = inst->prev;
          inst->next = D.32474;
          inst->opcode = 632;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.32475 = inst->sreg3;
          inst->sreg2 = D.32475;
          D.32476 = inst->sreg2;
          inst->sreg1 = D.32476;
          D.32449 = cfg->ip;
          inst->cil_code = D.32449;
          inst->dreg = offset_reg;
          inst->sreg1 = offset_reg;
          card_table_mask.56 = card_table_mask;
          card_table_mask.57 = (int) card_table_mask.56;
          inst->data.op[1].const_val = card_table_mask.57;
          D.32453 = cfg->cbb;
          D.32454 = D.32453->last_ins;
          if (D.32454 != 0B) goto <D.32478>; else goto <D.32479>;
          <D.32478>:
          D.32453 = cfg->cbb;
          D.32454 = D.32453->last_ins;
          D.32454->next = inst;
          D.32453 = cfg->cbb;
          D.32454 = D.32453->last_ins;
          inst->prev = D.32454;
          D.32453 = cfg->cbb;
          D.32453->last_ins = inst;
          goto <D.32480>;
          <D.32479>:
          D.32453 = cfg->cbb;
          D.32453 = cfg->cbb;
          D.32453->last_ins = inst;
          D.32454 = D.32453->last_ins;
          D.32453->code = D.32454;
          <D.32480>:
        }
        <D.32472>:
        D.32438 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.32439 = D.32438 & 64;
        if (D.32439 != 0) goto <D.32481>; else goto <D.32482>;
        <D.32481>:
        {
          struct MonoInst * inst;

          D.32444 = cfg->mempool;
          inst = mono_mempool_alloc (D.32444, 56);
          inst->data.op[1].const_val = 0;
          D.32483 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.32483;
          inst->prev = 0B;
          D.32484 = inst->prev;
          inst->next = D.32484;
          D.32438 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.32439 = D.32438 & 64;
          if (D.32439 != 0) goto <D.32486>; else goto <D.32487>;
          <D.32486>:
          iftmp.58 = 732;
          goto <D.32488>;
          <D.32487>:
          iftmp.58 = 362;
          <D.32488>:
          inst->opcode = iftmp.58;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.32489 = inst->sreg3;
          inst->sreg2 = D.32489;
          D.32490 = inst->sreg2;
          inst->sreg1 = D.32490;
          D.32449 = cfg->ip;
          inst->cil_code = D.32449;
          inst->dreg = card_reg;
          inst->data.op[0].p = 0B;
          inst->data.op[1].const_val = 42;
          D.32453 = cfg->cbb;
          D.32454 = D.32453->last_ins;
          if (D.32454 != 0B) goto <D.32491>; else goto <D.32492>;
          <D.32491>:
          D.32453 = cfg->cbb;
          D.32454 = D.32453->last_ins;
          D.32454->next = inst;
          D.32453 = cfg->cbb;
          D.32454 = D.32453->last_ins;
          inst->prev = D.32454;
          D.32453 = cfg->cbb;
          D.32453->last_ins = inst;
          goto <D.32493>;
          <D.32492>:
          D.32453 = cfg->cbb;
          D.32453 = cfg->cbb;
          D.32453->last_ins = inst;
          D.32454 = D.32453->last_ins;
          D.32453->code = D.32454;
          <D.32493>:
        }
        goto <D.32494>;
        <D.32482>:
        D.32444 = cfg->mempool;
        ins = mono_mempool_alloc (D.32444, 56);
        ins->data.op[1].const_val = 0;
        D.32495 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32495;
        ins->prev = 0B;
        D.32496 = ins->prev;
        ins->next = D.32496;
        ins->opcode = 362;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32497 = ins->sreg3;
        ins->sreg2 = D.32497;
        D.32498 = ins->sreg2;
        ins->sreg1 = D.32498;
        D.32449 = cfg->ip;
        ins->cil_code = D.32449;
        ins->data.op[0].p = card_table;
        ins->dreg = card_reg;
        D.32453 = cfg->cbb;
        D.32454 = D.32453->last_ins;
        if (D.32454 != 0B) goto <D.32499>; else goto <D.32500>;
        <D.32499>:
        D.32453 = cfg->cbb;
        D.32454 = D.32453->last_ins;
        D.32454->next = ins;
        D.32453 = cfg->cbb;
        D.32454 = D.32453->last_ins;
        ins->prev = D.32454;
        D.32453 = cfg->cbb;
        D.32453->last_ins = ins;
        goto <D.32501>;
        <D.32500>:
        D.32453 = cfg->cbb;
        D.32453 = cfg->cbb;
        D.32453->last_ins = ins;
        D.32454 = D.32453->last_ins;
        D.32453->code = D.32454;
        <D.32501>:
        <D.32494>:
        {
          struct MonoInst * inst;

          D.32444 = cfg->mempool;
          inst = mono_mempool_alloc (D.32444, 56);
          inst->data.op[1].const_val = 0;
          D.32502 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.32502;
          inst->prev = 0B;
          D.32503 = inst->prev;
          inst->next = D.32503;
          inst->opcode = 565;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.32504 = inst->sreg3;
          inst->sreg2 = D.32504;
          D.32505 = inst->sreg2;
          inst->sreg1 = D.32505;
          D.32449 = cfg->ip;
          inst->cil_code = D.32449;
          inst->dreg = offset_reg;
          inst->sreg1 = offset_reg;
          inst->sreg2 = card_reg;
          D.32453 = cfg->cbb;
          D.32454 = D.32453->last_ins;
          if (D.32454 != 0B) goto <D.32506>; else goto <D.32507>;
          <D.32506>:
          D.32453 = cfg->cbb;
          D.32454 = D.32453->last_ins;
          D.32454->next = inst;
          D.32453 = cfg->cbb;
          D.32454 = D.32453->last_ins;
          inst->prev = D.32454;
          D.32453 = cfg->cbb;
          D.32453->last_ins = inst;
          goto <D.32508>;
          <D.32507>:
          D.32453 = cfg->cbb;
          D.32453 = cfg->cbb;
          D.32453->last_ins = inst;
          D.32454 = D.32453->last_ins;
          D.32453->code = D.32454;
          <D.32508>:
        }
        {
          struct MonoInst * inst;

          D.32444 = cfg->mempool;
          inst = mono_mempool_alloc (D.32444, 56);
          inst->data.op[1].const_val = 0;
          D.32509 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.32509;
          inst->prev = 0B;
          D.32510 = inst->prev;
          inst->next = D.32510;
          inst->opcode = 382;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.32511 = inst->sreg3;
          inst->sreg2 = D.32511;
          D.32512 = inst->sreg2;
          inst->sreg1 = D.32512;
          D.32449 = cfg->ip;
          inst->cil_code = D.32449;
          inst->dreg = offset_reg;
          inst->data.op[0].const_val = 0;
          inst->data.op[1].const_val = 1;
          D.32453 = cfg->cbb;
          D.32454 = D.32453->last_ins;
          if (D.32454 != 0B) goto <D.32513>; else goto <D.32514>;
          <D.32513>:
          D.32453 = cfg->cbb;
          D.32454 = D.32453->last_ins;
          D.32454->next = inst;
          D.32453 = cfg->cbb;
          D.32454 = D.32453->last_ins;
          inst->prev = D.32454;
          D.32453 = cfg->cbb;
          D.32453->last_ins = inst;
          goto <D.32515>;
          <D.32514>:
          D.32453 = cfg->cbb;
          D.32453 = cfg->cbb;
          D.32453->last_ins = inst;
          D.32454 = D.32453->last_ins;
          D.32453->code = D.32454;
          <D.32515>:
        }
      }
      goto <D.32516>;
      <D.32459>:
      {
        struct MonoMethod * write_barrier;

        write_barrier = mono_gc_get_write_barrier ();
        mono_emit_method_call (cfg, write_barrier, &ptr, 0B);
      }
      <D.32516>:
      <D.32436>:
      D.32444 = cfg->mempool;
      dummy_use = mono_mempool_alloc (D.32444, 56);
      dummy_use->data.op[1].const_val = 0;
      D.32517 = dummy_use->data.op[1].const_val;
      dummy_use->data.op[0].const_val = D.32517;
      dummy_use->prev = 0B;
      D.32518 = dummy_use->prev;
      dummy_use->next = D.32518;
      dummy_use->opcode = 796;
      dummy_use->flags = 0;
      dummy_use->type = 0;
      dummy_use->dreg = -1;
      dummy_use->sreg3 = -1;
      D.32519 = dummy_use->sreg3;
      dummy_use->sreg2 = D.32519;
      D.32520 = dummy_use->sreg2;
      dummy_use->sreg1 = D.32520;
      D.32449 = cfg->ip;
      dummy_use->cil_code = D.32449;
      D.32452 = value->dreg;
      dummy_use->sreg1 = D.32452;
      D.32453 = cfg->cbb;
      D.32454 = D.32453->last_ins;
      if (D.32454 != 0B) goto <D.32521>; else goto <D.32522>;
      <D.32521>:
      D.32453 = cfg->cbb;
      D.32454 = D.32453->last_ins;
      D.32454->next = dummy_use;
      D.32453 = cfg->cbb;
      D.32454 = D.32453->last_ins;
      dummy_use->prev = D.32454;
      D.32453 = cfg->cbb;
      D.32453->last_ins = dummy_use;
      goto <D.32523>;
      <D.32522>:
      D.32453 = cfg->cbb;
      D.32453 = cfg->cbb;
      D.32453->last_ins = dummy_use;
      D.32454 = D.32453->last_ins;
      D.32453->code = D.32454;
      <D.32523>:
    }
  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)
{
  struct MonoMemPool * D.32527;
  struct MonoMethod * D.32528;
  int D.32529;
  struct MonoInst * D.32530;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.32527 = cfg->mempool;
  D.32528 = cfg->current_method;
  D.32529 = context_used & 2;
  entry = mono_patch_info_rgctx_entry_new (D.32527, D.32528, D.32529, 11, klass, rgctx_type);
  D.32528 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.32528, context_used);
  D.32530 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.32530;
}


get_memcpy_method ()
{
  struct MonoMethod * memcpy_method.59;
  struct MonoClass * D.32535;
  struct MonoMethod * memcpy_method.60;
  struct MonoMethod * D.32539;
  static struct MonoMethod * memcpy_method = 0B;

  memcpy_method.59 = memcpy_method;
  if (memcpy_method.59 == 0B) goto <D.32533>; else goto <D.32534>;
  <D.32533>:
  D.32535 = mono_defaults.string_class;
  memcpy_method.60 = mono_class_get_method_from_name (D.32535, "memcpy", 3);
  memcpy_method = memcpy_method.60;
  memcpy_method.59 = memcpy_method;
  if (memcpy_method.59 == 0B) goto <D.32537>; else goto <D.32538>;
  <D.32537>:
  monoeg_g_log (0B, 4, "Old corlib found. Install a new one");
  <D.28135>:
  goto <D.28135>;
  <D.32538>:
  <D.32534>:
  D.32539 = memcpy_method;
  return D.32539;
}


mini_emit_initobj (struct MonoCompile * cfg, struct MonoInst * dest, const guchar * ip, struct MonoClass * klass)
{
  int D.32541;
  struct MonoMethod * bzero_method.61;
  struct MonoClass * D.32547;
  struct MonoMethod * bzero_method.62;
  _Bool D.32549;
  long int D.32550;
  long int D.32551;
  struct MonoMethodSignature * D.32554;
  unsigned int n.63;
  int D.32558;
  unsigned int align.64;
  int align.65;
  struct MonoMemPool * D.32562;
  void * D.32563;
  struct MonoInst * D.32564;
  int D.32565;
  struct MonoInst * D.32566;
  int D.32567;
  int D.32568;
  const unsigned char * D.32569;
  unsigned int D.32570;
  int D.32571;
  struct MonoBasicBlock * D.32572;
  struct MonoInst * D.32573;
  void * D.32577;
  struct MonoInst * D.32578;
  int D.32579;
  struct MonoInst * D.32580;
  int D.32581;
  int D.32582;
  unsigned int D.32583;
  int D.32584;
  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.32541 = mini_is_gsharedvt_klass (cfg, klass);
      if (D.32541 != 0) goto <D.32542>; else goto <D.32543>;
      <D.32542>:
      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.61 = bzero_method;
      if (bzero_method.61 == 0B) goto <D.32545>; else goto <D.32546>;
      <D.32545>:
      D.32547 = mono_defaults.string_class;
      bzero_method.62 = mono_class_get_method_from_name (D.32547, "bzero_aligned_1", 2);
      bzero_method = bzero_method.62;
      <D.32546>:
      bzero_method.61 = bzero_method;
      D.32549 = bzero_method.61 == 0B;
      D.32550 = (long int) D.32549;
      D.32551 = __builtin_expect (D.32550, 0);
      if (D.32551 != 0) goto <D.32552>; else goto <D.32553>;
      <D.32552>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3163, "bzero_method");
      <D.32553>:
      iargs[0] = dest;
      iargs[1] = size_ins;
      bzero_method.61 = bzero_method;
      D.32554 = mono_method_signature (bzero_method.61);
      mono_emit_calli (cfg, D.32554, &iargs, bzero_ins, 0B, 0B);
      return;
      <D.32543>:
      n = mono_class_value_size (klass, &align);
      n.63 = (unsigned int) n;
      if (n.63 <= 20) goto <D.32556>; else goto <D.32557>;
      <D.32556>:
      D.32558 = dest->dreg;
      align.64 = align;
      align.65 = (int) align.64;
      mini_emit_memset (cfg, D.32558, 0, n, 0, align.65);
      goto <D.32561>;
      <D.32557>:
      memset_method = get_memset_method ();
      iargs[0] = dest;
      D.32562 = cfg->mempool;
      D.32563 = mono_mempool_alloc (D.32562, 56);
      iargs[1] = D.32563;
      D.32564 = iargs[1];
      D.32564 = iargs[1];
      D.32564->data.op[1].const_val = 0;
      D.32565 = D.32564->data.op[1].const_val;
      D.32564->data.op[0].const_val = D.32565;
      D.32564 = iargs[1];
      D.32564 = iargs[1];
      D.32564->prev = 0B;
      D.32566 = D.32564->prev;
      D.32564->next = D.32566;
      D.32564 = iargs[1];
      D.32564->opcode = 362;
      D.32564 = iargs[1];
      D.32564->flags = 0;
      D.32564 = iargs[1];
      D.32564->type = 0;
      D.32564 = iargs[1];
      D.32564->dreg = -1;
      D.32564 = iargs[1];
      D.32564 = iargs[1];
      D.32564 = iargs[1];
      D.32564->sreg3 = -1;
      D.32567 = D.32564->sreg3;
      D.32564->sreg2 = D.32567;
      D.32568 = D.32564->sreg2;
      D.32564->sreg1 = D.32568;
      D.32564 = iargs[1];
      D.32569 = cfg->ip;
      D.32564->cil_code = D.32569;
      D.32564 = iargs[1];
      D.32564->data.op[0].const_val = 0;
      D.32564 = iargs[1];
      D.32564->type = 1;
      D.32564 = iargs[1];
      D.32570 = alloc_dreg (cfg, 1);
      D.32571 = (int) D.32570;
      D.32564->dreg = D.32571;
      D.32572 = cfg->cbb;
      D.32573 = D.32572->last_ins;
      if (D.32573 != 0B) goto <D.32574>; else goto <D.32575>;
      <D.32574>:
      D.32572 = cfg->cbb;
      D.32573 = D.32572->last_ins;
      D.32564 = iargs[1];
      D.32573->next = D.32564;
      D.32564 = iargs[1];
      D.32572 = cfg->cbb;
      D.32573 = D.32572->last_ins;
      D.32564->prev = D.32573;
      D.32572 = cfg->cbb;
      D.32564 = iargs[1];
      D.32572->last_ins = D.32564;
      goto <D.32576>;
      <D.32575>:
      D.32572 = cfg->cbb;
      D.32572 = cfg->cbb;
      D.32564 = iargs[1];
      D.32572->last_ins = D.32564;
      D.32573 = D.32572->last_ins;
      D.32572->code = D.32573;
      <D.32576>:
      D.32562 = cfg->mempool;
      D.32577 = mono_mempool_alloc (D.32562, 56);
      iargs[2] = D.32577;
      D.32578 = iargs[2];
      D.32578 = iargs[2];
      D.32578->data.op[1].const_val = 0;
      D.32579 = D.32578->data.op[1].const_val;
      D.32578->data.op[0].const_val = D.32579;
      D.32578 = iargs[2];
      D.32578 = iargs[2];
      D.32578->prev = 0B;
      D.32580 = D.32578->prev;
      D.32578->next = D.32580;
      D.32578 = iargs[2];
      D.32578->opcode = 362;
      D.32578 = iargs[2];
      D.32578->flags = 0;
      D.32578 = iargs[2];
      D.32578->type = 0;
      D.32578 = iargs[2];
      D.32578->dreg = -1;
      D.32578 = iargs[2];
      D.32578 = iargs[2];
      D.32578 = iargs[2];
      D.32578->sreg3 = -1;
      D.32581 = D.32578->sreg3;
      D.32578->sreg2 = D.32581;
      D.32582 = D.32578->sreg2;
      D.32578->sreg1 = D.32582;
      D.32578 = iargs[2];
      D.32569 = cfg->ip;
      D.32578->cil_code = D.32569;
      D.32578 = iargs[2];
      D.32578->data.op[0].const_val = n;
      D.32578 = iargs[2];
      D.32578->type = 1;
      D.32578 = iargs[2];
      D.32583 = alloc_dreg (cfg, 1);
      D.32584 = (int) D.32583;
      D.32578->dreg = D.32584;
      D.32572 = cfg->cbb;
      D.32573 = D.32572->last_ins;
      if (D.32573 != 0B) goto <D.32585>; else goto <D.32586>;
      <D.32585>:
      D.32572 = cfg->cbb;
      D.32573 = D.32572->last_ins;
      D.32578 = iargs[2];
      D.32573->next = D.32578;
      D.32578 = iargs[2];
      D.32572 = cfg->cbb;
      D.32573 = D.32572->last_ins;
      D.32578->prev = D.32573;
      D.32572 = cfg->cbb;
      D.32578 = iargs[2];
      D.32572->last_ins = D.32578;
      goto <D.32587>;
      <D.32586>:
      D.32572 = cfg->cbb;
      D.32572 = cfg->cbb;
      D.32578 = iargs[2];
      D.32572->last_ins = D.32578;
      D.32573 = D.32572->last_ins;
      D.32572->code = D.32573;
      <D.32587>:
      mono_emit_method_call (cfg, memset_method, &iargs, 0B);
      <D.32561>:
    }
  finally
    {
      iargs = {CLOBBER};
      align = {CLOBBER};
    }
}


mini_emit_memset (struct MonoCompile * cfg, int destreg, int offset, int size, int val, int align)
{
  _Bool D.32591;
  long int D.32592;
  long int D.32593;
  _Bool D.32598;
  _Bool D.32599;
  _Bool D.32600;
  struct MonoMemPool * D.32603;
  int D.32604;
  struct MonoInst * D.32605;
  int D.32606;
  int D.32607;
  const unsigned char * D.32608;
  struct MonoBasicBlock * D.32609;
  struct MonoInst * D.32610;
  int D.32614;
  struct MonoInst * D.32615;
  int D.32616;
  int D.32617;
  int D.32621;
  struct MonoInst * D.32622;
  int D.32623;
  int D.32624;
  unsigned int D.32629;
  int D.32632;
  struct MonoInst * D.32633;
  int D.32634;
  int D.32635;
  long long int D.32636;
  int D.32641;
  struct MonoInst * D.32642;
  int D.32643;
  int D.32644;
  int D.32650;
  struct MonoInst * D.32651;
  int D.32652;
  int D.32653;
  int D.32657;
  struct MonoInst * D.32658;
  int D.32659;
  int D.32660;
  int D.32664;
  struct MonoInst * D.32665;
  int D.32666;
  int D.32667;
  int D.32671;
  struct MonoInst * D.32672;
  int D.32673;
  int D.32674;
  int val_reg;

  D.32591 = val != 0;
  D.32592 = (long int) D.32591;
  D.32593 = __builtin_expect (D.32592, 0);
  if (D.32593 != 0) goto <D.32594>; else goto <D.32595>;
  <D.32594>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1744, "val == 0");
  <D.32595>:
  if (align == 0) goto <D.32596>; else goto <D.32597>;
  <D.32596>:
  align = 4;
  <D.32597>:
  D.32598 = size <= 4;
  D.32599 = size <= align;
  D.32600 = D.32598 & D.32599;
  if (D.32600 != 0) goto <D.32601>; else goto <D.32602>;
  <D.32601>:
  switch (size) <default: <D.32628>, case 1: <D.27751>, case 2: <D.27753>, case 4: <D.27755>>
  <D.27751>:
  {
    struct MonoInst * inst;

    D.32603 = cfg->mempool;
    inst = mono_mempool_alloc (D.32603, 56);
    inst->data.op[1].const_val = 0;
    D.32604 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.32604;
    inst->prev = 0B;
    D.32605 = inst->prev;
    inst->next = D.32605;
    inst->opcode = 382;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.32606 = inst->sreg3;
    inst->sreg2 = D.32606;
    D.32607 = inst->sreg2;
    inst->sreg1 = D.32607;
    D.32608 = cfg->ip;
    inst->cil_code = D.32608;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    inst->data.op[1].const_val = val;
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    if (D.32610 != 0B) goto <D.32611>; else goto <D.32612>;
    <D.32611>:
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    D.32610->next = inst;
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    inst->prev = D.32610;
    D.32609 = cfg->cbb;
    D.32609->last_ins = inst;
    goto <D.32613>;
    <D.32612>:
    D.32609 = cfg->cbb;
    D.32609 = cfg->cbb;
    D.32609->last_ins = inst;
    D.32610 = D.32609->last_ins;
    D.32609->code = D.32610;
    <D.32613>:
  }
  return;
  <D.27753>:
  {
    struct MonoInst * inst;

    D.32603 = cfg->mempool;
    inst = mono_mempool_alloc (D.32603, 56);
    inst->data.op[1].const_val = 0;
    D.32614 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.32614;
    inst->prev = 0B;
    D.32615 = inst->prev;
    inst->next = D.32615;
    inst->opcode = 383;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.32616 = inst->sreg3;
    inst->sreg2 = D.32616;
    D.32617 = inst->sreg2;
    inst->sreg1 = D.32617;
    D.32608 = cfg->ip;
    inst->cil_code = D.32608;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    inst->data.op[1].const_val = val;
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    if (D.32610 != 0B) goto <D.32618>; else goto <D.32619>;
    <D.32618>:
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    D.32610->next = inst;
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    inst->prev = D.32610;
    D.32609 = cfg->cbb;
    D.32609->last_ins = inst;
    goto <D.32620>;
    <D.32619>:
    D.32609 = cfg->cbb;
    D.32609 = cfg->cbb;
    D.32609->last_ins = inst;
    D.32610 = D.32609->last_ins;
    D.32609->code = D.32610;
    <D.32620>:
  }
  return;
  <D.27755>:
  {
    struct MonoInst * inst;

    D.32603 = cfg->mempool;
    inst = mono_mempool_alloc (D.32603, 56);
    inst->data.op[1].const_val = 0;
    D.32621 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.32621;
    inst->prev = 0B;
    D.32622 = inst->prev;
    inst->next = D.32622;
    inst->opcode = 384;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.32623 = inst->sreg3;
    inst->sreg2 = D.32623;
    D.32624 = inst->sreg2;
    inst->sreg1 = D.32624;
    D.32608 = cfg->ip;
    inst->cil_code = D.32608;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    inst->data.op[1].const_val = val;
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    if (D.32610 != 0B) goto <D.32625>; else goto <D.32626>;
    <D.32625>:
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    D.32610->next = inst;
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    inst->prev = D.32610;
    D.32609 = cfg->cbb;
    D.32609->last_ins = inst;
    goto <D.32627>;
    <D.32626>:
    D.32609 = cfg->cbb;
    D.32609 = cfg->cbb;
    D.32609->last_ins = inst;
    D.32610 = D.32609->last_ins;
    D.32609->code = D.32610;
    <D.32627>:
  }
  return;
  <D.32628>:
  <D.32602>:
  D.32629 = alloc_preg (cfg);
  val_reg = (int) D.32629;
  if (0 != 0) goto <D.32630>; else goto <D.32631>;
  <D.32630>:
  {
    struct MonoInst * inst;

    D.32603 = cfg->mempool;
    inst = mono_mempool_alloc (D.32603, 56);
    inst->data.op[1].const_val = 0;
    D.32632 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.32632;
    inst->prev = 0B;
    D.32633 = inst->prev;
    inst->next = D.32633;
    inst->opcode = 363;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.32634 = inst->sreg3;
    inst->sreg2 = D.32634;
    D.32635 = inst->sreg2;
    inst->sreg1 = D.32635;
    D.32608 = cfg->ip;
    inst->cil_code = D.32608;
    inst->dreg = val_reg;
    D.32636 = (long long int) val;
    inst->data.i8const = D.32636;
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    if (D.32610 != 0B) goto <D.32637>; else goto <D.32638>;
    <D.32637>:
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    D.32610->next = inst;
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    inst->prev = D.32610;
    D.32609 = cfg->cbb;
    D.32609->last_ins = inst;
    goto <D.32639>;
    <D.32638>:
    D.32609 = cfg->cbb;
    D.32609 = cfg->cbb;
    D.32609->last_ins = inst;
    D.32610 = D.32609->last_ins;
    D.32609->code = D.32610;
    <D.32639>:
  }
  goto <D.32640>;
  <D.32631>:
  {
    struct MonoInst * inst;

    D.32603 = cfg->mempool;
    inst = mono_mempool_alloc (D.32603, 56);
    inst->data.op[1].const_val = 0;
    D.32641 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.32641;
    inst->prev = 0B;
    D.32642 = inst->prev;
    inst->next = D.32642;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.32643 = inst->sreg3;
    inst->sreg2 = D.32643;
    D.32644 = inst->sreg2;
    inst->sreg1 = D.32644;
    D.32608 = cfg->ip;
    inst->cil_code = D.32608;
    inst->dreg = val_reg;
    inst->data.op[0].const_val = val;
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    if (D.32610 != 0B) goto <D.32645>; else goto <D.32646>;
    <D.32645>:
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    D.32610->next = inst;
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    inst->prev = D.32610;
    D.32609 = cfg->cbb;
    D.32609->last_ins = inst;
    goto <D.32647>;
    <D.32646>:
    D.32609 = cfg->cbb;
    D.32609 = cfg->cbb;
    D.32609->last_ins = inst;
    D.32610 = D.32609->last_ins;
    D.32609->code = D.32610;
    <D.32647>:
  }
  <D.32640>:
  if (align <= 3) goto <D.32648>; else goto <D.32649>;
  <D.32648>:
  goto <D.27761>;
  <D.27760>:
  {
    struct MonoInst * inst;

    D.32603 = cfg->mempool;
    inst = mono_mempool_alloc (D.32603, 56);
    inst->data.op[1].const_val = 0;
    D.32650 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.32650;
    inst->prev = 0B;
    D.32651 = inst->prev;
    inst->next = D.32651;
    inst->opcode = 375;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.32652 = inst->sreg3;
    inst->sreg2 = D.32652;
    D.32653 = inst->sreg2;
    inst->sreg1 = D.32653;
    D.32608 = cfg->ip;
    inst->cil_code = D.32608;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    if (D.32610 != 0B) goto <D.32654>; else goto <D.32655>;
    <D.32654>:
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    D.32610->next = inst;
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    inst->prev = D.32610;
    D.32609 = cfg->cbb;
    D.32609->last_ins = inst;
    goto <D.32656>;
    <D.32655>:
    D.32609 = cfg->cbb;
    D.32609 = cfg->cbb;
    D.32609->last_ins = inst;
    D.32610 = D.32609->last_ins;
    D.32609->code = D.32610;
    <D.32656>:
  }
  offset = offset + 1;
  size = size + -1;
  <D.27761>:
  if (size > 0) goto <D.27760>; else goto <D.27762>;
  <D.27762>:
  return;
  <D.32649>:
  goto <D.27765>;
  <D.27764>:
  {
    struct MonoInst * inst;

    D.32603 = cfg->mempool;
    inst = mono_mempool_alloc (D.32603, 56);
    inst->data.op[1].const_val = 0;
    D.32657 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.32657;
    inst->prev = 0B;
    D.32658 = inst->prev;
    inst->next = D.32658;
    inst->opcode = 377;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.32659 = inst->sreg3;
    inst->sreg2 = D.32659;
    D.32660 = inst->sreg2;
    inst->sreg1 = D.32660;
    D.32608 = cfg->ip;
    inst->cil_code = D.32608;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    if (D.32610 != 0B) goto <D.32661>; else goto <D.32662>;
    <D.32661>:
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    D.32610->next = inst;
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    inst->prev = D.32610;
    D.32609 = cfg->cbb;
    D.32609->last_ins = inst;
    goto <D.32663>;
    <D.32662>:
    D.32609 = cfg->cbb;
    D.32609 = cfg->cbb;
    D.32609->last_ins = inst;
    D.32610 = D.32609->last_ins;
    D.32609->code = D.32610;
    <D.32663>:
  }
  offset = offset + 4;
  size = size + -4;
  <D.27765>:
  if (size > 3) goto <D.27764>; else goto <D.27766>;
  <D.27766>:
  goto <D.27769>;
  <D.27768>:
  {
    struct MonoInst * inst;

    D.32603 = cfg->mempool;
    inst = mono_mempool_alloc (D.32603, 56);
    inst->data.op[1].const_val = 0;
    D.32664 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.32664;
    inst->prev = 0B;
    D.32665 = inst->prev;
    inst->next = D.32665;
    inst->opcode = 376;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.32666 = inst->sreg3;
    inst->sreg2 = D.32666;
    D.32667 = inst->sreg2;
    inst->sreg1 = D.32667;
    D.32608 = cfg->ip;
    inst->cil_code = D.32608;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    if (D.32610 != 0B) goto <D.32668>; else goto <D.32669>;
    <D.32668>:
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    D.32610->next = inst;
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    inst->prev = D.32610;
    D.32609 = cfg->cbb;
    D.32609->last_ins = inst;
    goto <D.32670>;
    <D.32669>:
    D.32609 = cfg->cbb;
    D.32609 = cfg->cbb;
    D.32609->last_ins = inst;
    D.32610 = D.32609->last_ins;
    D.32609->code = D.32610;
    <D.32670>:
  }
  offset = offset + 2;
  size = size + -2;
  <D.27769>:
  if (size > 1) goto <D.27768>; else goto <D.27770>;
  <D.27770>:
  goto <D.27773>;
  <D.27772>:
  {
    struct MonoInst * inst;

    D.32603 = cfg->mempool;
    inst = mono_mempool_alloc (D.32603, 56);
    inst->data.op[1].const_val = 0;
    D.32671 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.32671;
    inst->prev = 0B;
    D.32672 = inst->prev;
    inst->next = D.32672;
    inst->opcode = 375;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.32673 = inst->sreg3;
    inst->sreg2 = D.32673;
    D.32674 = inst->sreg2;
    inst->sreg1 = D.32674;
    D.32608 = cfg->ip;
    inst->cil_code = D.32608;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    if (D.32610 != 0B) goto <D.32675>; else goto <D.32676>;
    <D.32675>:
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    D.32610->next = inst;
    D.32609 = cfg->cbb;
    D.32610 = D.32609->last_ins;
    inst->prev = D.32610;
    D.32609 = cfg->cbb;
    D.32609->last_ins = inst;
    goto <D.32677>;
    <D.32676>:
    D.32609 = cfg->cbb;
    D.32609 = cfg->cbb;
    D.32609->last_ins = inst;
    D.32610 = D.32609->last_ins;
    D.32609->code = D.32610;
    <D.32677>:
  }
  offset = offset + 1;
  size = size + -1;
  <D.27773>:
  if (size > 0) goto <D.27772>; else goto <D.27774>;
  <D.27774>:
}


get_memset_method ()
{
  struct MonoMethod * memset_method.66;
  struct MonoClass * D.32682;
  struct MonoMethod * memset_method.67;
  struct MonoMethod * D.32686;
  static struct MonoMethod * memset_method = 0B;

  memset_method.66 = memset_method;
  if (memset_method.66 == 0B) goto <D.32680>; else goto <D.32681>;
  <D.32680>:
  D.32682 = mono_defaults.string_class;
  memset_method.67 = mono_class_get_method_from_name (D.32682, "memset", 3);
  memset_method = memset_method.67;
  memset_method.66 = memset_method;
  if (memset_method.66 == 0B) goto <D.32684>; else goto <D.32685>;
  <D.32684>:
  monoeg_g_log (0B, 4, "Old corlib found. Install a new one");
  <D.28223>:
  goto <D.28223>;
  <D.32685>:
  <D.32681>:
  D.32686 = memset_method;
  return D.32686;
}


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


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

  D.32691 = 0;
  return D.32691;
}


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.32693;
  struct MonoImage * D.32694;
  struct MonoAssembly * D.32695;
  unsigned char D.32696;
  _Bool D.32697;
  unsigned char D.32698;
  unsigned char D.32699;
  _Bool D.32700;
  int D.32701;
  _Bool D.32702;
  int D.32703;
  _Bool D.32704;
  int D.32705;
  _Bool D.32706;
  int D.32707;
  _Bool D.32708;
  int D.32709;
  <unnamed type> D.32710;
  _Bool D.32711;
  int D.32712;
  _Bool D.32713;
  int D.32714;
  _Bool D.32715;
  int D.32716;
  _Bool D.32717;
  int D.32718;
  unsigned char D.32723;
  int D.32724;
  struct MonoMethod * D.32726;
  const char * D.32727;
  gchar * D.32728;
  <unnamed-unsigned:1> D.32729;
  int D.32730;
  short unsigned int D.32731;
  int D.32732;
  int D.32733;
  unsigned int D.32734;
  int D.32735;
  unsigned int D.32736;
  unsigned int D.32737;
  int D.32738;
  <unnamed-unsigned:1> D.32739;
  int iftmp.68;
  unsigned char D.32743;
  unsigned char D.32744;
  struct MonoMemPool * D.32755;
  unsigned int D.32756;
  void * D.32757;
  unsigned int D.32758;
  void * D.32759;
  int * il_offsets.69;
  unsigned int i.70;
  unsigned int D.32762;
  int * D.32763;
  int D.32764;
  unsigned int D.32765;
  unsigned int D.32768;
  unsigned int D.32769;
  unsigned int D.32770;
  int D.32771;
  unsigned int D.32772;
  unsigned int D.32773;
  int n_il_offsets.71;
  int * line_numbers.72;
  unsigned char D.32776;
  unsigned char D.32777;
  struct MonoDomain * D.32780;
  int D.32781;
  unsigned char D.32784;
  unsigned char D.32785;
  struct MonoGenericSharingContext * D.32791;
  unsigned char D.32794;
  _Bool D.32795;
  long int D.32796;
  long int D.32797;
  short unsigned int D.32800;
  unsigned char D.32805;
  unsigned char D.32806;
  _Bool D.32807;
  long int D.32808;
  long int D.32809;
  struct MonoGenericContext * D.32812;
  struct MonoGenericInst * D.32813;
  _Bool D.32814;
  long int D.32815;
  long int D.32816;
  struct MonoGenericContext * D.32821;
  struct MonoGenericInst * D.32822;
  _Bool D.32825;
  long int D.32826;
  long int D.32827;
  unsigned int D.32833;
  void * D.32834;
  int D.32835;
  unsigned int D.32836;
  char * D.32839;
  unsigned int D.32840;
  unsigned char D.32841;
  unsigned char D.32842;
  struct MonoType * iftmp.73;
  unsigned char D.32846;
  unsigned char D.32847;
  int D.32851;
  unsigned int D.32852;
  unsigned int D.32853;
  struct MonoType * * D.32854;
  struct MonoType * D.32855;
  unsigned int D.32858;
  unsigned int D.32859;
  int D.32862;
  struct MonoProfileCoverageInfo * D.32863;
  unsigned int D.32864;
  unsigned int D.32865;
  unsigned int D.32866;
  int D.32867;
  unsigned int D.32868;
  unsigned int D.32869;
  int D.32870;
  unsigned int D.32871;
  unsigned int D.32872;
  _Bool D.32873;
  long int D.32874;
  long int D.32875;
  short unsigned int D.32878;
  short unsigned int D.32879;
  struct GHashTable * D.32882;
  struct GHashTable * D.32883;
  struct MonoExceptionClause * D.32884;
  unsigned int i.74;
  unsigned int D.32886;
  struct MonoBasicBlock * * D.32887;
  unsigned int D.32888;
  unsigned char * D.32889;
  int D.32890;
  unsigned char * D.32891;
  int D.32892;
  int D.32893;
  unsigned int D.32894;
  unsigned int D.32895;
  struct MonoBasicBlock * * D.32896;
  const unsigned char * D.32902;
  const unsigned char * D.32903;
  int D.32904;
  struct MonoDebugOptions * D.32909;
  int D.32910;
  unsigned int D.32912;
  unsigned int D.32913;
  int D.32914;
  unsigned char * D.32915;
  int D.32918;
  int D.32919;
  unsigned int D.32920;
  unsigned int D.32921;
  struct MonoBasicBlock * * D.32922;
  unsigned int D.32923;
  int D.32924;
  int D.32925;
  unsigned int D.32926;
  unsigned int D.32927;
  unsigned int D.32928;
  unsigned int D.32929;
  unsigned char * D.32930;
  int D.32931;
  int D.32932;
  unsigned int D.32933;
  unsigned int D.32934;
  struct MonoBasicBlock * * D.32935;
  const unsigned char * D.32941;
  struct MonoDebugOptions * D.32946;
  int D.32947;
  unsigned int D.32949;
  unsigned int D.32950;
  int D.32951;
  unsigned char * D.32952;
  int D.32955;
  int D.32956;
  unsigned int D.32957;
  unsigned int D.32958;
  struct MonoBasicBlock * * D.32959;
  unsigned int D.32960;
  unsigned int D.32961;
  unsigned char D.32964;
  unsigned int D.32967;
  unsigned int D.32968;
  unsigned int D.32969;
  _Bool D.32970;
  _Bool D.32971;
  _Bool D.32972;
  int D.32975;
  struct MonoInst * D.32976;
  int D.32977;
  int D.32978;
  const unsigned char * D.32979;
  struct MonoInst * D.32980;
  int D.32988;
  unsigned int D.32994;
  void * D.32997;
  struct MonoInst * * D.32998;
  int D.32999;
  struct MonoInst * D.33000;
  int D.33001;
  struct MonoInst * D.33002;
  int D.33003;
  int D.33004;
  struct MonoInst * D.33005;
  int D.33006;
  struct MonoBasicBlock * bblock.125;
  struct MonoInst * D.33008;
  unsigned int D.33014;
  unsigned char * D.33015;
  int D.33016;
  int D.33017;
  unsigned int D.33018;
  unsigned int D.33019;
  struct MonoBasicBlock * * D.33020;
  const unsigned char * D.33026;
  struct MonoDebugOptions * D.33031;
  int D.33032;
  unsigned int D.33034;
  unsigned int D.33035;
  int D.33036;
  void * D.33039;
  struct MonoInst * D.33040;
  struct MonoClass * D.33046;
  int D.33051;
  short unsigned int D.33057;
  int D.33058;
  int D.33059;
  struct MonoGenericContext * D.33061;
  struct MonoGenericInst * D.33062;
  int D.33064;
  struct MonoInst * D.33065;
  int D.33066;
  int D.33067;
  struct MonoInst * D.33068;
  int D.33069;
  <unnamed-unsigned:15> D.33073;
  int D.33074;
  void * bblock.75;
  struct MonoBasicBlock * bblock.76;
  unsigned int D.33078;
  unsigned int D.33079;
  int D.33080;
  unsigned char * D.33081;
  int D.33084;
  int D.33085;
  unsigned int D.33086;
  unsigned int D.33087;
  struct MonoBasicBlock * * D.33088;
  struct MonoInst * D.33093;
  <unnamed type> D.33097;
  int iftmp.77;
  unsigned char D.33104;
  int iftmp.78;
  short unsigned int D.33120;
  int D.33121;
  int D.33122;
  struct MonoClass * D.33126;
  int D.33127;
  struct MonoClass * D.33134;
  int D.33137;
  unsigned int D.33148;
  unsigned int D.33149;
  unsigned char D.33150;
  unsigned char D.33151;
  unsigned char D.33152;
  unsigned char D.33153;
  unsigned int D.33154;
  unsigned int D.33155;
  int D.33156;
  struct GPtrArray * D.33161;
  struct MonoClass * D.33162;
  struct MonoType * D.33163;
  int D.33164;
  int D.33165;
  struct MonoInst * D.33166;
  int D.33167;
  int D.33168;
  int D.33169;
  int D.33170;
  unsigned int D.33174;
  int D.33175;
  struct MonoInst * D.33176;
  int D.33177;
  int D.33178;
  int D.33182;
  unsigned int D.33186;
  unsigned int D.33187;
  int D.33192;
  int D.33193;
  char * D.33194;
  void * D.33199;
  struct MonoInst * D.33200;
  int D.33201;
  struct MonoInst * D.33202;
  int D.33203;
  int D.33204;
  unsigned int D.33205;
  struct MonoJumpInfoToken * D.33206;
  unsigned int D.33207;
  int D.33208;
  void * D.33210;
  unsigned int D.33211;
  int D.33212;
  void * D.33216;
  struct MonoInst * D.33217;
  int D.33218;
  struct MonoInst * D.33219;
  int D.33220;
  int D.33221;
  unsigned int D.33222;
  int D.33223;
  unsigned int D.33224;
  int D.33225;
  struct MonoMethod * D.33229;
  char * D.33230;
  void * D.33235;
  unsigned int D.33236;
  struct MonoJumpInfoToken * D.33237;
  unsigned int D.33238;
  int D.33239;
  void * D.33241;
  unsigned int D.33242;
  int D.33243;
  void * D.33247;
  unsigned int D.33248;
  int D.33249;
  unsigned int D.33250;
  int D.33251;
  char * D.33255;
  void * D.33260;
  unsigned int D.33261;
  struct MonoJumpInfoToken * D.33262;
  unsigned int D.33263;
  int D.33264;
  void * D.33266;
  unsigned int D.33267;
  int D.33268;
  void * D.33272;
  unsigned int D.33273;
  int D.33274;
  unsigned int D.33275;
  int D.33276;
  struct MonoMethod * D.33280;
  struct MonoMethod * D.33283;
  <unnamed type> D.33284;
  short unsigned int D.33291;
  int D.33292;
  short unsigned int D.33293;
  int D.33294;
  int D.33295;
  int D.33302;
  struct MonoException * iftmp.79;
  unsigned int D.33309;
  struct MonoDebugOptions * D.33317;
  int D.33318;
  int D.33320;
  struct MonoDebugOptions * D.33327;
  int D.33328;
  unsigned int breakpoint_id.80;
  struct MonoType * D.33333;
  short unsigned int D.33334;
  short unsigned int D.33335;
  struct MonoDebugOptions * D.33342;
  int D.33343;
  short unsigned int D.33345;
  int D.33346;
  struct MonoGenericContext * D.33355;
  struct MonoGenericInst * D.33356;
  struct MonoInst * * D.33358;
  struct MonoInst * D.33359;
  unsigned char D.33360;
  unsigned char D.33361;
  int D.33364;
  struct MonoInst * D.33365;
  int D.33366;
  int D.33367;
  struct MonoType * * D.33368;
  struct MonoType * D.33369;
  unsigned int D.33370;
  short unsigned int D.33371;
  struct MonoClass * D.33372;
  int D.33373;
  unsigned char D.33374;
  <unnamed type> D.33375;
  unsigned int D.33376;
  int D.33377;
  short unsigned int D.33378;
  struct MonoClass * D.33381;
  unsigned int D.33385;
  unsigned char D.33386;
  int D.33391;
  struct MonoInst * D.33392;
  int D.33393;
  int D.33394;
  int D.33395;
  int D.33399;
  struct MonoInst * D.33400;
  int D.33401;
  int D.33402;
  int D.33408;
  struct MonoInst * D.33409;
  int D.33410;
  int D.33411;
  int D.33415;
  struct MonoInst * D.33416;
  int D.33417;
  int D.33418;
  _Bool D.33422;
  int D.33425;
  struct MonoDebugOptions * D.33432;
  int D.33433;
  _Bool D.33435;
  long int D.33436;
  long int D.33437;
  <unnamed-unsigned:15> D.33440;
  int D.33441;
  int D.33442;
  unsigned int D.33443;
  unsigned int D.33444;
  int ip.81;
  int D.33448;
  int D.33449;
  unsigned int D.33450;
  int D.33454;
  _Bool D.33457;
  long int D.33458;
  long int D.33459;
  int D.33463;
  unsigned int D.33464;
  unsigned int D.33465;
  struct MonoBasicBlock * * D.33466;
  struct MonoDebugOptions * D.33476;
  int D.33477;
  unsigned int D.33479;
  unsigned int D.33480;
  int D.33481;
  struct MonoInst * * D.33486;
  unsigned int D.33487;
  struct MonoInst * * D.33488;
  struct MonoInst * D.33489;
  int D.33490;
  struct MonoInst * * D.33491;
  unsigned int D.33492;
  unsigned int D.33493;
  struct MonoInst * * D.33494;
  struct MonoInst * D.33495;
  struct MonoType * D.33496;
  unsigned int D.33497;
  short unsigned int D.33498;
  struct MonoClass * D.33499;
  int D.33500;
  unsigned char D.33501;
  <unnamed type> D.33502;
  unsigned int D.33503;
  int D.33504;
  short unsigned int D.33505;
  struct MonoClass * D.33508;
  struct MonoInst * * sp.82;
  short unsigned int D.33513;
  int D.33514;
  int sp.83;
  int stack_start.84;
  int D.33526;
  int D.33527;
  unsigned char D.33528;
  unsigned char D.33529;
  struct MonoDebugOptions * D.33536;
  int D.33537;
  unsigned int D.33541;
  short unsigned int D.33542;
  unsigned int D.33543;
  int D.33544;
  struct MonoClass * D.33547;
  struct MonoInst * * sp.85;
  int D.33554;
  unsigned char D.33557;
  unsigned char D.33558;
  _Bool D.33561;
  long int D.33562;
  long int D.33563;
  int D.33568;
  sizetype op_size.86;
  unsigned int D.33581;
  unsigned int D.33582;
  unsigned int D.33583;
  int D.33584;
  unsigned int D.33585;
  unsigned int D.33586;
  int iftmp.87;
  struct MonoMethodHeader * D.33593;
  short unsigned int D.33594;
  short unsigned int D.33595;
  _Bool D.33596;
  unsigned char D.33597;
  unsigned char D.33600;
  unsigned char D.33601;
  unsigned int D.33607;
  unsigned int D.33608;
  unsigned int D.33609;
  struct MonoProfileCoverageInfo * D.33612;
  int * D.33615;
  unsigned int D.33616;
  int D.33617;
  int D.33621;
  struct MonoInst * D.33622;
  int D.33623;
  int D.33624;
  int D.33630;
  char * D.33631;
  unsigned char D.33632;
  int D.33633;
  _Bool D.33634;
  _Bool D.33635;
  _Bool D.33636;
  unsigned char D.33644;
  int D.33651;
  struct MonoDebugOptions * D.33664;
  int D.33665;
  unsigned int n.88;
  struct MonoDebugOptions * D.33674;
  int D.33675;
  unsigned int D.33677;
  struct MonoType * * D.33678;
  struct MonoType * D.33679;
  unsigned int D.33680;
  short unsigned int D.33681;
  struct MonoInst * * D.33682;
  struct MonoInst * D.33683;
  struct MonoClass * D.33684;
  int D.33685;
  unsigned int D.33686;
  int D.33687;
  struct MonoClass * D.33690;
  struct MonoInst * * sp.89;
  struct MonoDebugOptions * D.33701;
  int D.33702;
  unsigned int D.33704;
  struct MonoDebugOptions * D.33711;
  int D.33712;
  unsigned int D.33714;
  short unsigned int D.33715;
  struct MonoInst * * D.33716;
  struct MonoInst * * D.33717;
  struct MonoInst * D.33718;
  struct MonoClass * D.33719;
  int D.33720;
  unsigned int D.33721;
  int D.33722;
  struct MonoClass * D.33725;
  struct MonoInst * * sp.90;
  struct MonoDebugOptions * D.33736;
  int D.33737;
  struct MonoDebugOptions * D.33745;
  int D.33746;
  struct MonoInst * D.33750;
  int D.33751;
  struct MonoDebugOptions * D.33758;
  int D.33759;
  unsigned char * D.33761;
  struct MonoDebugOptions * D.33768;
  int D.33769;
  struct MonoDebugOptions * D.33777;
  int D.33778;
  unsigned char * D.33780;
  unsigned char D.33781;
  struct MonoDebugOptions * D.33788;
  int D.33789;
  unsigned int D.33791;
  short unsigned int D.33792;
  unsigned int D.33793;
  int D.33794;
  struct MonoClass * D.33797;
  struct MonoInst * * sp.91;
  struct MonoDebugOptions * D.33808;
  int D.33809;
  struct MonoDebugOptions * D.33817;
  int D.33818;
  struct MonoDebugOptions * D.33826;
  int D.33827;
  struct MonoInst * * D.33829;
  struct MonoInst * D.33830;
  unsigned char D.33831;
  unsigned char D.33832;
  struct MonoClass * D.33833;
  unsigned int D.33834;
  int D.33835;
  _Bool D.33836;
  long int D.33837;
  long int D.33838;
  struct MonoType * D.33841;
  int D.33842;
  _Bool iftmp.92;
  int D.33846;
  unsigned char D.33849;
  _Bool D.33850;
  _Bool D.33851;
  _Bool D.33852;
  int D.33853;
  unsigned char D.33855;
  struct MonoInst * iftmp.93;
  int D.33859;
  int D.33860;
  unsigned int D.33861;
  unsigned int D.33862;
  struct MonoInst * * D.33865;
  sizetype D.33866;
  sizetype D.33867;
  sizetype D.33868;
  struct MonoInst * * D.33869;
  struct MonoInst * iftmp.94;
  int D.33872;
  unsigned int D.33873;
  sizetype D.33876;
  sizetype D.33877;
  struct MonoInst * * D.33878;
  _Bool D.33880;
  long int D.33881;
  long int D.33882;
  _Bool D.33885;
  long int D.33886;
  long int D.33887;
  unsigned char D.33890;
  unsigned char D.33891;
  unsigned char D.33892;
  unsigned char D.33893;
  struct MonoInst * * sp.95;
  struct MonoDebugOptions * D.33904;
  int D.33905;
  struct MonoDebugOptions * D.33913;
  int D.33914;
  struct MonoDebugOptions * D.33922;
  int D.33923;
  unsigned int D.33927;
  unsigned int D.33928;
  struct MonoType * * D.33929;
  struct MonoType * D.33930;
  int D.33931;
  struct MonoDebugOptions * D.33938;
  int D.33939;
  unsigned int D.33941;
  short unsigned int D.33942;
  int D.33943;
  struct MonoClass * D.33946;
  struct MonoDebugOptions * D.33956;
  int D.33957;
  struct MonoDebugOptions * D.33965;
  int D.33966;
  struct MonoDebugOptions * D.33974;
  int D.33975;
  unsigned int D.33977;
  short unsigned int D.33978;
  unsigned int D.33979;
  int D.33980;
  struct MonoClass * D.33983;
  struct MonoInst * * sp.96;
  struct MonoDebugOptions * D.33994;
  int D.33995;
  struct MonoDebugOptions * D.34003;
  int D.34004;
  short unsigned int D.34006;
  struct MonoDebugOptions * D.34013;
  int D.34014;
  struct MonoInst * * D.34018;
  struct MonoInst * D.34019;
  unsigned char D.34020;
  unsigned char D.34021;
  struct MonoClass * D.34022;
  unsigned int D.34023;
  int D.34024;
  struct MonoType * D.34027;
  int D.34028;
  _Bool iftmp.97;
  int D.34032;
  unsigned char D.34035;
  _Bool D.34036;
  _Bool D.34037;
  _Bool D.34038;
  int D.34039;
  unsigned char D.34041;
  struct MonoInst * iftmp.98;
  int D.34045;
  int D.34046;
  unsigned int D.34047;
  sizetype D.34050;
  sizetype D.34051;
  sizetype D.34052;
  struct MonoInst * * D.34053;
  struct MonoInst * iftmp.99;
  int D.34056;
  unsigned int D.34057;
  sizetype D.34060;
  sizetype D.34061;
  struct MonoInst * * D.34062;
  _Bool D.34064;
  long int D.34065;
  long int D.34066;
  _Bool D.34069;
  long int D.34070;
  long int D.34071;
  unsigned char D.34074;
  unsigned char D.34075;
  unsigned char D.34076;
  unsigned char D.34077;
  struct MonoInst * * sp.100;
  struct MonoDebugOptions * D.34088;
  int D.34089;
  struct MonoDebugOptions * D.34097;
  int D.34098;
  struct MonoDebugOptions * D.34106;
  int D.34107;
  int D.34111;
  struct MonoType * D.34112;
  int D.34113;
  struct MonoDebugOptions * D.34120;
  int D.34121;
  struct MonoDebugOptions * D.34129;
  int D.34130;
  unsigned int D.34132;
  int D.34133;
  struct MonoInst * * sp.101;
  struct MonoDebugOptions * D.34144;
  int D.34145;
  unsigned int D.34147;
  int D.34148;
  struct MonoInst * * sp.102;
  struct MonoDebugOptions * D.34159;
  int D.34160;
  int D.34162;
  unsigned int D.34163;
  int D.34164;
  struct MonoInst * * sp.103;
  struct MonoDebugOptions * D.34175;
  int D.34176;
  struct MonoDebugOptions * D.34184;
  int D.34185;
  signed char D.34187;
  int D.34188;
  unsigned int D.34189;
  int D.34190;
  struct MonoInst * * sp.104;
  unsigned char * D.34195;
  struct MonoDebugOptions * D.34202;
  int D.34203;
  struct MonoDebugOptions * D.34211;
  int D.34212;
  const unsigned char * D.34214;
  unsigned int D.34215;
  int D.34216;
  unsigned int D.34217;
  int D.34218;
  struct MonoInst * * sp.105;
  unsigned char * D.34223;
  struct MonoDebugOptions * D.34230;
  int D.34231;
  struct MonoDebugOptions * D.34239;
  int D.34240;
  unsigned int D.34242;
  int D.34243;
  long long unsigned int D.34244;
  long long int D.34245;
  struct MonoInst * * sp.106;
  struct MonoDebugOptions * D.34256;
  int D.34257;
  struct MonoDebugOptions * D.34265;
  int D.34266;
  int D.34270;
  struct MonoInst * D.34271;
  guint16 iftmp.107;
  int D.34276;
  int D.34277;
  unsigned int D.34278;
  int D.34279;
  unsigned int D.34283;
  int D.34284;
  unsigned int D.34289;
  int D.34290;
  unsigned int D.34294;
  float D.34295;
  struct MonoInst * * sp.108;
  struct MonoDebugOptions * D.34303;
  int D.34304;
  struct MonoDebugOptions * D.34312;
  int D.34313;
  int D.34317;
  struct MonoInst * D.34318;
  guint16 iftmp.109;
  int D.34323;
  int D.34324;
  unsigned int D.34325;
  int D.34326;
  unsigned int D.34330;
  int D.34331;
  unsigned int D.34336;
  int D.34337;
  long long unsigned int D.34341;
  double D.34342;
  struct MonoInst * * sp.110;
  struct MonoDebugOptions * D.34350;
  int D.34351;
  struct MonoDebugOptions * D.34359;
  int D.34360;
  struct MonoType * D.34362;
  int D.34363;
  struct MonoInst * D.34364;
  int D.34365;
  int D.34366;
  int D.34367;
  unsigned int D.34368;
  unsigned int D.34369;
  struct MonoInst * * D.34370;
  struct MonoInst * D.34371;
  struct MonoType * D.34372;
  unsigned int D.34373;
  short unsigned int D.34374;
  struct MonoClass * D.34375;
  int D.34376;
  short unsigned int D.34377;
  struct MonoClass * D.34380;
  unsigned int D.34384;
  short unsigned int D.34385;
  unsigned int D.34386;
  int D.34387;
  struct MonoClass * D.34390;
  struct MonoInst * * sp.111;
  unsigned int D.34395;
  short unsigned int D.34396;
  unsigned int D.34397;
  int D.34398;
  struct MonoClass * D.34401;
  struct MonoInst * * sp.112;
  struct MonoDebugOptions * D.34412;
  int D.34413;
  const char * D.34423;
  const char * D.34424;
  const char * D.34425;
  struct MonoMethodSignature * D.34426;
  short unsigned int D.34427;
  int D.34428;
  const char * D.34429;
  gchar * D.34430;
  char * D.34433;
  struct MonoDebugOptions * D.34440;
  int D.34441;
  struct MonoDebugOptions * D.34449;
  int D.34450;
  struct MonoLoaderError * D.34455;
  struct MonoDebugOptions * D.34456;
  int D.34457;
  int D.34461;
  const char * D.34468;
  <unnamed type> D.34469;
  short unsigned int D.34475;
  int D.34476;
  <unnamed-unsigned:1> D.34477;
  int D.34478;
  int D.34481;
  int D.34482;
  struct MonoMethodSignature * D.34483;
  unsigned int n.113;
  unsigned int D.34485;
  void * D.34486;
  struct MonoInst * * D.34487;
  unsigned int i.114;
  unsigned int D.34489;
  struct MonoInst * * D.34490;
  void * D.34491;
  struct MonoInst * D.34492;
  int D.34493;
  struct MonoInst * D.34494;
  int D.34495;
  int D.34496;
  struct MonoType * * D.34497;
  struct MonoType * D.34498;
  unsigned int D.34499;
  short unsigned int D.34500;
  struct MonoInst * * D.34501;
  struct MonoInst * D.34502;
  struct MonoClass * D.34503;
  int D.34504;
  unsigned char D.34505;
  <unnamed type> D.34506;
  unsigned int D.34507;
  int D.34508;
  short unsigned int D.34509;
  struct MonoClass * D.34512;
  struct MonoInst * * D.34520;
  struct MonoInst * D.34521;
  unsigned char D.34522;
  unsigned char D.34523;
  unsigned int i.115;
  _Bool D.34528;
  _Bool D.34529;
  struct MonoDebugOptions * D.34536;
  int D.34537;
  struct MonoDebugOptions * D.34547;
  int D.34548;
  short unsigned int D.34550;
  int D.34551;
  <unnamed-unsigned:1> D.34552;
  int D.34553;
  unsigned char D.34554;
  unsigned char D.34557;
  unsigned char D.34558;
  void * D.34561;
  struct MonoInst * D.34562;
  int D.34563;
  struct MonoInst * D.34564;
  guint16 iftmp.116;
  int D.34569;
  int D.34570;
  unsigned int D.34571;
  int D.34572;
  void * D.34576;
  struct MonoInst * D.34577;
  int D.34578;
  struct MonoInst * D.34579;
  int D.34580;
  int D.34581;
  unsigned int D.34582;
  int D.34583;
  char * D.34594;
  unsigned char D.34597;
  _Bool D.34598;
  _Bool D.34599;
  _Bool D.34600;
  struct MonoMethod * cil_method.117;
  char * D.34606;
  unsigned char D.34609;
  _Bool D.34610;
  _Bool D.34611;
  _Bool D.34612;
  int D.34615;
  struct MonoClass * D.34618;
  unsigned char D.34619;
  unsigned char D.34620;
  _Bool D.34621;
  long int D.34622;
  long int D.34623;
  struct MonoLoaderError * D.34629;
  struct MonoDebugOptions * D.34630;
  int D.34631;
  unsigned char D.34635;
  struct MonoGenericContainer * D.34640;
  struct MonoGenericContext * D.34641;
  int D.34642;
  int D.34645;
  gchar * D.34648;
  <unnamed type> D.34649;
  short unsigned int D.34654;
  int D.34655;
  int D.34656;
  unsigned char D.34661;
  unsigned char D.34662;
  int D.34665;
  unsigned char D.34668;
  unsigned char D.34669;
  unsigned char D.34672;
  int D.34675;
  struct MonoDebugOptions * D.34678;
  int D.34679;
  short unsigned int D.34685;
  int D.34686;
  int D.34687;
  int D.34689;
  unsigned char D.34691;
  struct MonoDebugOptions * D.34694;
  int D.34695;
  int check_for_pending_exc.118;
  <unnamed-unsigned:1> D.34700;
  int D.34701;
  struct MonoType * D.34706;
  int D.34707;
  unsigned char D.34714;
  _Bool D.34715;
  _Bool D.34716;
  _Bool D.34717;
  int D.34719;
  int D.34720;
  unsigned int D.34721;
  unsigned int D.34722;
  unsigned int D.34723;
  int D.34724;
  unsigned int D.34725;
  unsigned int D.34726;
  <unnamed type> D.34727;
  int D.34730;
  unsigned char D.34740;
  unsigned char D.34741;
  struct MonoGenericContainer * D.34750;
  struct MonoDebugOptions * D.34757;
  int D.34758;
  int D.34764;
  _Bool D.34765;
  long int D.34766;
  long int D.34767;
  struct MonoDebugOptions * D.34776;
  int D.34777;
  sizetype D.34779;
  int D.34782;
  struct MonoClass * D.34787;
  unsigned char D.34789;
  unsigned char D.34790;
  struct MonoImage * D.34795;
  struct MonoImage * D.34796;
  unsigned int D.34798;
  unsigned int D.34799;
  int D.34811;
  unsigned char D.34813;
  unsigned char D.34814;
  unsigned char D.34816;
  unsigned char D.34817;
  _Bool D.34818;
  unsigned char D.34819;
  _Bool D.34820;
  _Bool D.34821;
  int D.34822;
  int D.34824;
  unsigned char D.34826;
  unsigned char D.34827;
  struct MonoType * D.34830;
  int D.34831;
  int D.34833;
  int D.34834;
  int D.34837;
  struct MonoInst * D.34838;
  void * D.34840;
  struct MonoInst * D.34841;
  int D.34842;
  struct MonoInst * D.34843;
  guint16 iftmp.119;
  int D.34848;
  int D.34849;
  unsigned int D.34850;
  int D.34851;
  int D.34855;
  struct MonoInst * D.34856;
  unsigned int D.34861;
  int D.34862;
  unsigned int D.34863;
  unsigned int D.34864;
  int D.34865;
  int D.34869;
  struct MonoClass * D.34872;
  struct MonoInst * D.34873;
  struct MonoInst * iftmp.120;
  struct MonoInst * * D.34875;
  struct MonoInst * D.34876;
  int D.34877;
  unsigned int D.34878;
  unsigned int D.34881;
  unsigned int D.34882;
  struct MonoInst * * D.34883;
  unsigned char D.34887;
  unsigned char D.34888;
  struct MonoClass * D.34889;
  unsigned int D.34890;
  int D.34891;
  struct MonoType * D.34894;
  int D.34895;
  _Bool iftmp.121;
  int D.34899;
  unsigned char D.34902;
  _Bool D.34903;
  _Bool D.34904;
  _Bool D.34905;
  int D.34906;
  unsigned char D.34908;
  struct MonoInst * iftmp.122;
  int D.34912;
  int D.34913;
  unsigned int D.34914;
  sizetype D.34917;
  sizetype D.34918;
  sizetype D.34919;
  struct MonoInst * * D.34920;
  struct MonoInst * iftmp.123;
  int D.34923;
  unsigned int D.34924;
  sizetype D.34927;
  sizetype D.34928;
  struct MonoInst * * D.34929;
  _Bool D.34931;
  long int D.34932;
  long int D.34933;
  _Bool D.34936;
  long int D.34937;
  long int D.34938;
  unsigned char D.34941;
  unsigned char D.34942;
  unsigned char D.34943;
  unsigned char D.34944;
  struct MonoInst * D.34948;
  int D.34949;
  void * D.34954;
  struct MonoInst * D.34955;
  int D.34956;
  struct MonoInst * D.34957;
  int D.34958;
  int D.34959;
  unsigned int D.34960;
  int D.34961;
  void * D.34968;
  unsigned int D.34969;
  int D.34970;
  void * D.34974;
  int D.34975;
  struct MonoInst * D.34976;
  int D.34977;
  int D.34978;
  unsigned int D.34979;
  int D.34980;
  int D.34984;
  struct MonoClass * D.34987;
  unsigned char D.34991;
  unsigned char D.34992;
  _Bool D.34993;
  unsigned char D.34994;
  _Bool D.34995;
  _Bool D.34996;
  int D.34999;
  struct MonoInst * D.35000;
  int D.35001;
  int D.35002;
  unsigned int D.35003;
  int D.35004;
  unsigned int D.35008;
  short unsigned int D.35009;
  int D.35010;
  unsigned int D.35011;
  int D.35012;
  const char * D.35018;
  gchar * D.35019;
  struct MonoClass * D.35027;
  struct MonoClass * D.35028;
  struct MonoType * D.35030;
  unsigned int D.35031;
  short unsigned int D.35032;
  unsigned int D.35033;
  int D.35034;
  int D.35038;
  struct MonoInst * D.35039;
  unsigned int D.35043;
  unsigned char D.35054;
  struct MonoDebugOptions * D.35055;
  int D.35056;
  struct MonoDebugOptions * D.35060;
  int D.35061;
  struct MonoDebugOptions * D.35067;
  int D.35068;
  struct MonoMethod * * D.35072;
  int D.35073;
  unsigned int D.35074;
  unsigned int D.35075;
  struct MonoMethod * * D.35076;
  unsigned int D.35079;
  short unsigned int D.35080;
  unsigned int D.35081;
  int D.35082;
  int D.35086;
  struct MonoInst * D.35087;
  int D.35091;
  struct MonoDebugOptions * D.35098;
  int D.35099;
  struct MonoClass * D.35103;
  struct MonoClass * D.35104;
  int D.30010;
  int iftmp.124;
  int D.30009;
  const char[7] * D.35110;
  unsigned char D.35111;
  int D.35112;
  unsigned char D.35113;
  int D.35114;
  _Bool D.35115;
  _Bool D.35116;
  _Bool D.35117;
  const unsigned char * D.35120;
  unsigned char D.35121;
  int D.35122;
  const unsigned char * D.35123;
  unsigned char D.35124;
  int D.35125;
  _Bool D.35126;
  _Bool D.35127;
  const unsigned char * D.35130;
  unsigned char D.35131;
  int D.35132;
  const unsigned char * D.35133;
  unsigned char D.35134;
  int D.35135;
  _Bool D.35136;
  _Bool D.35137;
  const unsigned char * D.35140;
  unsigned char D.35141;
  int D.35142;
  const unsigned char * D.35143;
  unsigned char D.35144;
  int D.35145;
  const char * D.35147;
  unsigned int D.35152;
  int D.35157;
  struct MonoGenericClass * D.35166;
  int D.35169;
  int D.35172;
  unsigned char D.35178;
  struct MonoDebugOptions * D.35179;
  int D.35180;
  struct MonoGenericInst * D.35195;
  int pass_vtable.126;
  struct MonoDebugOptions * D.35210;
  int D.35211;
  int D.35213;
  struct MonoInst * D.35214;
  guint16 iftmp.127;
  int D.35219;
  int D.35220;
  void * iftmp.128;
  unsigned int D.35225;
  int D.35226;
  int pass_mrgctx.129;
  _Bool D.35233;
  long int D.35234;
  long int D.35235;
  struct MonoDebugOptions * D.35243;
  int D.35244;
  int D.35248;
  int D.35250;
  unsigned int D.35253;
  _Bool D.35260;
  long int D.35261;
  long int D.35262;
  _Bool D.35265;
  long int D.35266;
  long int D.35267;
  int D.35276;
  struct MonoInst * D.35277;
  int D.35278;
  int D.35279;
  int D.35283;
  struct MonoInst * D.35284;
  int D.35285;
  int D.35286;
  int D.35292;
  struct MonoInst * D.35293;
  int D.35294;
  int D.35295;
  int D.35299;
  struct MonoInst * D.35300;
  int D.35301;
  int D.35302;
  _Bool D.35311;
  _Bool D.35312;
  _Bool D.35313;
  unsigned char D.35320;
  short unsigned int D.35321;
  int D.35325;
  unsigned char D.35326;
  _Bool D.35327;
  long int D.35328;
  long int D.35329;
  int D.35340;
  const char * D.35345;
  gchar * D.35346;
  int mono_use_imt.130;
  _Bool D.35356;
  long int D.35357;
  long int D.35358;
  unsigned char D.35363;
  unsigned char D.35364;
  _Bool D.35365;
  long int D.35366;
  long int D.35367;
  struct MonoType * D.35371;
  int D.35372;
  struct MonoInst * D.35373;
  int D.35374;
  int D.35375;
  int D.35376;
  unsigned int D.35377;
  unsigned int D.35378;
  struct MonoInst * * D.35379;
  struct MonoInst * D.35380;
  struct MonoType * D.35381;
  unsigned int D.35382;
  short unsigned int D.35383;
  struct MonoClass * D.35384;
  int D.35385;
  short unsigned int D.35386;
  struct MonoClass * D.35389;
  void * D.35393;
  struct MonoInst * D.35394;
  int D.35395;
  struct MonoInst * D.35396;
  int D.35397;
  int D.35398;
  unsigned int D.35399;
  short unsigned int D.35400;
  unsigned char D.35401;
  <unnamed type> D.35402;
  unsigned int D.35403;
  int D.35404;
  short unsigned int D.35405;
  struct MonoClass * D.35408;
  struct MonoInst * D.35412;
  void * D.35413;
  struct MonoInst * D.35414;
  int D.35415;
  struct MonoInst * D.35416;
  int D.35417;
  int D.35418;
  int D.35419;
  unsigned int D.35420;
  unsigned int D.35421;
  struct MonoInst * * D.35422;
  struct MonoInst * D.35423;
  unsigned char D.35424;
  unsigned char D.35425;
  struct MonoClass * D.35426;
  unsigned int D.35427;
  int D.35428;
  struct MonoType * D.35431;
  int D.35432;
  _Bool iftmp.131;
  int D.35436;
  unsigned char D.35439;
  _Bool D.35440;
  _Bool D.35441;
  _Bool D.35442;
  int D.35443;
  unsigned char D.35445;
  struct MonoInst * iftmp.132;
  int D.35449;
  int D.35450;
  unsigned int D.35451;
  sizetype D.35454;
  sizetype D.35455;
  sizetype D.35456;
  struct MonoInst * * D.35457;
  struct MonoInst * iftmp.133;
  int D.35460;
  unsigned int D.35461;
  sizetype D.35464;
  sizetype D.35465;
  struct MonoInst * * D.35466;
  _Bool D.35468;
  long int D.35469;
  long int D.35470;
  _Bool D.35473;
  long int D.35474;
  long int D.35475;
  unsigned char D.35478;
  unsigned char D.35479;
  unsigned char D.35480;
  unsigned char D.35481;
  void * D.35485;
  int D.35486;
  struct MonoInst * D.35487;
  int D.35488;
  int D.35489;
  unsigned int D.35490;
  short unsigned int D.35491;
  unsigned char D.35492;
  <unnamed type> D.35493;
  unsigned int D.35494;
  int D.35495;
  short unsigned int D.35496;
  struct MonoClass * D.35499;
  struct MonoClass * D.35505;
  int D.30032;
  int iftmp.134;
  int D.30031;
  const char[6] * D.35511;
  unsigned char D.35512;
  int D.35513;
  unsigned char D.35514;
  int D.35515;
  _Bool D.35516;
  _Bool D.35517;
  _Bool D.35518;
  const unsigned char * D.35521;
  unsigned char D.35522;
  int D.35523;
  const unsigned char * D.35524;
  unsigned char D.35525;
  int D.35526;
  _Bool D.35527;
  _Bool D.35528;
  const unsigned char * D.35531;
  unsigned char D.35532;
  int D.35533;
  const unsigned char * D.35534;
  unsigned char D.35535;
  int D.35536;
  _Bool D.35537;
  _Bool D.35538;
  const unsigned char * D.35541;
  unsigned char D.35542;
  int D.35543;
  const unsigned char * D.35544;
  unsigned char D.35545;
  int D.35546;
  struct MonoMethodSignature * D.35550;
  short unsigned int D.35551;
  int D.35554;
  unsigned int D.35555;
  unsigned int D.35556;
  struct MonoBasicBlock * * D.35557;
  const unsigned char * D.35563;
  struct MonoDebugOptions * D.35568;
  int D.35569;
  unsigned int D.35571;
  unsigned int D.35572;
  int D.35573;
  unsigned char * D.35574;
  int D.35577;
  int D.35578;
  unsigned int D.35579;
  unsigned int D.35580;
  struct MonoBasicBlock * * D.35581;
  unsigned char D.35582;
  unsigned char D.35583;
  unsigned int D.35586;
  unsigned int D.35587;
  int D.35596;
  unsigned int D.35603;
  int D.35612;
  struct GList * D.35615;
  int D.35621;
  unsigned int D.35630;
  int D.35631;
  unsigned int D.35634;
  _Bool D.35637;
  _Bool D.35638;
  _Bool D.35639;
  unsigned char D.35642;
  struct MonoMethodSignature * D.35653;
  struct MonoType * D.35654;
  int D.35655;
  unsigned int i.135;
  unsigned int D.35661;
  struct MonoType * * D.35662;
  struct MonoType * D.35663;
  unsigned int D.35664;
  short unsigned int D.35665;
  struct MonoInst * * D.35666;
  struct MonoInst * D.35667;
  struct MonoClass * D.35668;
  struct MonoInst * * D.35669;
  struct MonoInst * D.35670;
  int D.35671;
  int D.35672;
  struct MonoClass * D.35675;
  struct MonoBasicBlock * * D.35682;
  const guint8 * D.35683;
  int D.35684;
  int num_calls.136;
  int D.35688;
  int D.35692;
  unsigned char D.35700;
  unsigned char D.35701;
  const char * D.35705;
  gchar * D.35706;
  _Bool D.35711;
  long int D.35712;
  long int D.35713;
  unsigned char D.35720;
  const char * D.35725;
  gchar * D.35726;
  int D.30053;
  int iftmp.137;
  int D.30052;
  unsigned char D.35734;
  int D.35735;
  _Bool D.35736;
  _Bool D.35737;
  _Bool D.35738;
  const unsigned char * D.35741;
  unsigned char D.35742;
  int D.35743;
  _Bool D.35744;
  _Bool D.35745;
  const unsigned char * D.35748;
  unsigned char D.35749;
  int D.35750;
  _Bool D.35751;
  _Bool D.35752;
  const unsigned char * D.35755;
  unsigned char D.35756;
  int D.35757;
  int D.35769;
  const char * D.35776;
  gchar * D.35777;
  _Bool D.35784;
  _Bool D.35785;
  _Bool D.35786;
  int D.35789;
  int D.35792;
  int D.35794;
  int iftmp.138;
  _Bool D.35809;
  long int D.35810;
  long int D.35811;
  _Bool D.35814;
  long int D.35815;
  long int D.35816;
  int D.35825;
  struct MonoInst * D.35826;
  int D.35827;
  int D.35828;
  int D.35832;
  struct MonoInst * D.35833;
  int D.35834;
  int D.35835;
  int D.35841;
  struct MonoInst * D.35842;
  int D.35843;
  int D.35844;
  int D.35848;
  struct MonoInst * D.35849;
  int D.35850;
  int D.35851;
  _Bool D.35859;
  long int D.35860;
  long int D.35861;
  short unsigned int D.35880;
  _Bool D.35881;
  _Bool D.35882;
  _Bool D.35883;
  short unsigned int D.35885;
  short unsigned int D.35886;
  _Bool D.35887;
  _Bool D.35888;
  _Bool D.35889;
  struct MonoInst * D.35893;
  unsigned int info_type.139;
  unsigned int D.35895;
  <unnamed type> info_type.140;
  int D.35899;
  int D.35900;
  int D.30070;
  int iftmp.141;
  int D.30069;
  const char[4] * D.35906;
  unsigned char D.35907;
  int D.35908;
  unsigned char D.35909;
  int D.35910;
  _Bool D.35911;
  _Bool D.35912;
  _Bool D.35913;
  const unsigned char * D.35916;
  unsigned char D.35917;
  int D.35918;
  const unsigned char * D.35919;
  unsigned char D.35920;
  int D.35921;
  _Bool D.35922;
  _Bool D.35923;
  const unsigned char * D.35926;
  unsigned char D.35927;
  int D.35928;
  const unsigned char * D.35929;
  unsigned char D.35930;
  int D.35931;
  _Bool D.35932;
  _Bool D.35933;
  const unsigned char * D.35936;
  unsigned char D.35937;
  int D.35938;
  const unsigned char * D.35939;
  unsigned char D.35940;
  int D.35941;
  struct MonoInst * * D.35945;
  unsigned char D.35946;
  int D.35949;
  struct MonoType * D.35950;
  unsigned int D.35951;
  short unsigned int D.35952;
  int D.35953;
  int D.35954;
  struct MonoClass * D.35955;
  unsigned char D.35961;
  unsigned char D.35962;
  short unsigned int D.35967;
  int D.35969;
  int D.30081;
  int iftmp.142;
  int D.30080;
  const char[4] * D.35974;
  unsigned char D.35975;
  int D.35976;
  unsigned char D.35977;
  int D.35978;
  _Bool D.35979;
  _Bool D.35980;
  _Bool D.35981;
  const unsigned char * D.35984;
  unsigned char D.35985;
  int D.35986;
  const unsigned char * D.35987;
  unsigned char D.35988;
  int D.35989;
  _Bool D.35990;
  _Bool D.35991;
  const unsigned char * D.35994;
  unsigned char D.35995;
  int D.35996;
  const unsigned char * D.35997;
  unsigned char D.35998;
  int D.35999;
  _Bool D.36000;
  _Bool D.36001;
  const unsigned char * D.36004;
  unsigned char D.36005;
  int D.36006;
  const unsigned char * D.36007;
  unsigned char D.36008;
  int D.36009;
  unsigned int D.36013;
  short unsigned int D.36014;
  unsigned int D.36015;
  int D.36016;
  int D.30090;
  int iftmp.143;
  int D.30089;
  const char[8] * D.36024;
  unsigned char D.36025;
  int D.36026;
  unsigned char D.36027;
  int D.36028;
  _Bool D.36029;
  _Bool D.36030;
  _Bool D.36031;
  const unsigned char * D.36034;
  unsigned char D.36035;
  int D.36036;
  const unsigned char * D.36037;
  unsigned char D.36038;
  int D.36039;
  _Bool D.36040;
  _Bool D.36041;
  const unsigned char * D.36044;
  unsigned char D.36045;
  int D.36046;
  const unsigned char * D.36047;
  unsigned char D.36048;
  int D.36049;
  _Bool D.36050;
  _Bool D.36051;
  const unsigned char * D.36054;
  unsigned char D.36055;
  int D.36056;
  const unsigned char * D.36057;
  unsigned char D.36058;
  int D.36059;
  struct MonoClass * D.36063;
  unsigned char D.36064;
  unsigned char D.36065;
  struct MonoDebugOptions * D.36073;
  int D.36074;
  struct MonoInst * iftmp.144;
  unsigned int D.36084;
  int call_opcode.145;
  int D.36092;
  int D.36106;
  int D.36107;
  struct MonoMethodSignature * D.36108;
  struct MonoType * * D.36109;
  struct MonoType * D.36110;
  unsigned int D.36111;
  short unsigned int D.36112;
  struct MonoInst * * D.36113;
  struct MonoInst * D.36114;
  struct MonoClass * D.36115;
  struct MonoInst * * D.36116;
  struct MonoInst * D.36117;
  int D.36118;
  int D.36119;
  struct MonoClass * D.36122;
  struct MonoDebugOptions * D.36138;
  int D.36139;
  unsigned int D.36141;
  unsigned int D.36142;
  int D.36143;
  short int D.36149;
  struct MonoMethod * D.36156;
  struct MonoInst * iftmp.146;
  struct MonoDebugOptions * D.36178;
  int D.36179;
  unsigned int D.36181;
  unsigned int D.36182;
  int D.36183;
  int D.36191;
  _Bool D.36194;
  long int D.36195;
  long int D.36196;
  struct MonoInst * * sp.147;
  struct MonoInst * D.36202;
  struct MonoInst * * sp.148;
  int D.36207;
  struct MonoInst * D.36208;
  int D.36209;
  int D.36210;
  int D.36211;
  _Bool D.36218;
  long int D.36219;
  long int D.36220;
  short int D.36229;
  struct MonoMethodSignature * D.36232;
  struct MonoDebugOptions * D.36239;
  int D.36240;
  unsigned char D.36242;
  _Bool D.36243;
  _Bool D.36244;
  _Bool D.36245;
  int D.36248;
  struct MonoDebugOptions * D.36255;
  int D.36256;
  int D.36258;
  struct MonoInst * D.36259;
  int D.36260;
  int D.36261;
  int D.36262;
  unsigned int D.36263;
  unsigned int D.36264;
  struct MonoInst * * D.36265;
  struct MonoInst * D.36266;
  struct MonoType * D.36267;
  unsigned int D.36268;
  short unsigned int D.36269;
  struct MonoClass * D.36270;
  int D.36271;
  short unsigned int D.36272;
  struct MonoClass * D.36275;
  struct MonoInst * D.36280;
  struct MonoInst * D.36285;
  struct MonoMethodSignature * D.36288;
  struct MonoType * D.36289;
  _Bool D.36295;
  long int D.36296;
  long int D.36297;
  struct MonoDebugOptions * D.36306;
  int D.36307;
  unsigned char D.36309;
  _Bool D.36310;
  _Bool D.36311;
  _Bool D.36312;
  int D.36315;
  struct MonoDebugOptions * D.36322;
  int D.36323;
  unsigned int D.36325;
  struct MonoInst * D.36328;
  int D.36331;
  struct MonoInst * D.36332;
  int D.36333;
  int D.36334;
  unsigned int D.36335;
  short unsigned int D.36336;
  struct MonoClass * D.36337;
  int D.36338;
  short unsigned int D.36339;
  struct MonoClass * D.36342;
  int D.36347;
  struct MonoInst * D.36348;
  int D.36349;
  int D.36350;
  int D.36351;
  unsigned char D.36352;
  <unnamed type> D.36353;
  unsigned int D.36354;
  int D.36355;
  int D.36359;
  struct MonoClass * D.36363;
  struct MonoDebugOptions * D.36371;
  int D.36372;
  struct MonoDebugOptions * D.36383;
  int D.36384;
  signed char D.36386;
  sizetype D.36387;
  sizetype D.36388;
  int target.149;
  int D.36390;
  unsigned int D.36391;
  unsigned int D.36392;
  struct MonoBasicBlock * * D.36393;
  struct MonoDebugOptions * D.36403;
  int D.36404;
  unsigned int D.36406;
  unsigned int D.36407;
  int D.36408;
  struct MonoDebugOptions * D.36419;
  int D.36420;
  struct MonoDebugOptions * D.36431;
  int D.36432;
  struct MonoDebugOptions * D.36440;
  int D.36441;
  short unsigned int D.36443;
  short unsigned int D.36444;
  sizetype D.36445;
  sizetype D.36446;
  int D.36447;
  struct MonoInst * D.36448;
  int D.36449;
  int D.36450;
  unsigned char D.36451;
  struct MonoDebugOptions * D.36458;
  int D.36459;
  void * D.36461;
  struct MonoDebugOptions * D.36471;
  int D.36472;
  unsigned int D.36474;
  unsigned int D.36475;
  int D.36476;
  struct MonoBasicBlock * * D.36479;
  struct MonoBasicBlock * * D.36482;
  struct MonoDebugOptions * D.36493;
  int D.36494;
  unsigned int D.36496;
  unsigned int D.36497;
  int D.36498;
  struct MonoDebugOptions * D.36509;
  int D.36510;
  struct MonoDebugOptions * D.36524;
  int D.36525;
  unsigned int D.36527;
  sizetype D.36528;
  struct MonoDebugOptions * D.36538;
  int D.36539;
  unsigned int D.36541;
  unsigned int D.36542;
  int D.36543;
  struct MonoDebugOptions * D.36554;
  int D.36555;
  unsigned char D.36560;
  _Bool D.36561;
  unsigned char D.36562;
  _Bool D.36563;
  _Bool D.36564;
  _Bool D.36565;
  guint32 iftmp.150;
  unsigned char * D.36570;
  struct MonoDebugOptions * D.36577;
  int D.36578;
  struct MonoDebugOptions * D.36586;
  int D.36587;
  struct MonoInst * * D.36589;
  struct MonoInst * D.36590;
  unsigned char D.36591;
  _Bool D.36592;
  _Bool D.36593;
  _Bool D.36594;
  struct MonoDebugOptions * D.36601;
  int D.36602;
  sizetype iftmp.151;
  sizetype D.36608;
  struct MonoDebugOptions * D.36618;
  int D.36619;
  unsigned int D.36621;
  unsigned int D.36622;
  int D.36623;
  struct MonoDebugOptions * D.36635;
  int D.36636;
  unsigned int D.36638;
  unsigned int D.36639;
  int D.36640;
  struct MonoDebugOptions * D.36651;
  int D.36652;
  int D.36654;
  struct MonoInst * D.36655;
  int D.36656;
  int D.36657;
  unsigned char D.36658;
  struct MonoDebugOptions * D.36665;
  int D.36666;
  short unsigned int D.36668;
  unsigned int D.36671;
  int D.36672;
  guint16 iftmp.152;
  void * D.36686;
  struct MonoDebugOptions * D.36696;
  int D.36697;
  unsigned int D.36699;
  unsigned int D.36700;
  int D.36701;
  struct MonoDebugOptions * D.36713;
  int D.36714;
  unsigned int D.36716;
  unsigned int D.36717;
  int D.36718;
  struct MonoDebugOptions * D.36727;
  int D.36728;
  struct MonoDebugOptions * D.36736;
  int D.36737;
  unsigned int D.36739;
  sizetype D.36740;
  int D.36741;
  struct MonoInst * D.36742;
  int D.36743;
  int D.36744;
  unsigned char D.36745;
  struct MonoDebugOptions * D.36752;
  int D.36753;
  void * D.36755;
  struct MonoDebugOptions * D.36765;
  int D.36766;
  unsigned int D.36768;
  unsigned int D.36769;
  int D.36770;
  struct MonoDebugOptions * D.36785;
  int D.36786;
  unsigned int D.36788;
  unsigned int D.36789;
  int D.36790;
  struct MonoDebugOptions * D.36801;
  int D.36802;
  unsigned int D.36810;
  unsigned int D.36811;
  unsigned int D.36812;
  unsigned int D.36813;
  struct MonoDebugOptions * D.36820;
  int D.36821;
  struct MonoDebugOptions * D.36829;
  int D.36830;
  unsigned int D.36832;
  unsigned char D.36833;
  _Bool D.36834;
  _Bool D.36835;
  _Bool D.36836;
  struct MonoDebugOptions * D.36843;
  int D.36844;
  unsigned char * D.36846;
  struct MonoDebugOptions * D.36853;
  int D.36854;
  struct MonoDebugOptions * D.36865;
  int D.36866;
  unsigned int D.36868;
  unsigned int D.36869;
  int D.36870;
  unsigned char * D.36871;
  int D.36874;
  int D.36875;
  unsigned int D.36876;
  unsigned int D.36877;
  struct MonoBasicBlock * * D.36878;
  unsigned int D.36879;
  unsigned int D.36880;
  unsigned int D.36881;
  unsigned char * D.36882;
  int D.36883;
  int D.36884;
  unsigned int D.36885;
  unsigned int D.36886;
  struct MonoBasicBlock * * D.36887;
  unsigned int D.36892;
  unsigned char * D.36893;
  unsigned int D.36895;
  const unsigned char * D.36896;
  struct MonoDebugOptions * D.36901;
  int D.36902;
  unsigned int D.36904;
  unsigned int D.36905;
  int D.36906;
  unsigned int D.36907;
  unsigned char * D.36908;
  struct MonoBasicBlock * * D.36911;
  struct MonoBasicBlock * D.36912;
  unsigned int D.36913;
  unsigned int D.36914;
  struct MonoDebugOptions * D.36923;
  int D.36924;
  int D.36926;
  struct MonoInst * D.36927;
  int D.36928;
  int D.36929;
  int D.36930;
  int D.36934;
  struct MonoInst * D.36935;
  int D.36936;
  int D.36937;
  unsigned int D.36940;
  unsigned int D.36941;
  int D.36942;
  unsigned char * D.36946;
  int D.36949;
  int D.36950;
  unsigned int D.36951;
  unsigned int D.36952;
  struct MonoBasicBlock * * D.36953;
  short unsigned int D.36958;
  short unsigned int D.36959;
  _Bool D.36960;
  short unsigned int D.36961;
  _Bool D.36962;
  _Bool D.36963;
  short unsigned int D.36965;
  short unsigned int D.36966;
  struct MonoBasicBlock * * D.36967;
  struct MonoBasicBlock * * D.36968;
  struct MonoBasicBlock * D.36969;
  short unsigned int D.36974;
  _Bool D.36975;
  _Bool D.36976;
  _Bool D.36977;
  short unsigned int D.36979;
  short unsigned int D.36980;
  _Bool D.36981;
  short unsigned int D.36982;
  _Bool D.36983;
  _Bool D.36984;
  void * D.36987;
  struct MonoBasicBlock * * D.36988;
  struct MonoBasicBlock * * D.36989;
  unsigned char D.36993;
  unsigned int D.36996;
  unsigned int D.36997;
  int D.36998;
  short unsigned int D.37005;
  short unsigned int D.37006;
  _Bool D.37007;
  short unsigned int D.37008;
  _Bool D.37009;
  _Bool D.37010;
  short unsigned int D.37016;
  _Bool D.37017;
  _Bool D.37018;
  _Bool D.37019;
  short unsigned int D.37021;
  short unsigned int D.37022;
  _Bool D.37023;
  short unsigned int D.37024;
  _Bool D.37025;
  _Bool D.37026;
  struct MonoClass * n.153;
  int D.37042;
  struct MonoInst * D.37043;
  int D.37044;
  int D.37045;
  int D.37050;
  struct MonoInst * D.37051;
  int D.37052;
  int D.37053;
  int D.37059;
  struct MonoInst * D.37060;
  guint16 iftmp.154;
  int D.37065;
  int D.37066;
  int D.37074;
  struct MonoInst * D.37075;
  int D.37076;
  int D.37077;
  int D.37081;
  struct MonoInst * D.37082;
  int D.37083;
  int D.37084;
  int D.37088;
  struct MonoInst * D.37089;
  int D.37090;
  int D.37091;
  struct MonoDebugOptions * D.37101;
  int D.37102;
  unsigned int D.37104;
  unsigned int D.37105;
  unsigned int D.37106;
  unsigned int D.37107;
  int D.37108;
  short unsigned int D.37109;
  int D.37110;
  char D.37111;
  unsigned char D.37112;
  unsigned char D.37113;
  struct MonoInst * * sp.155;
  int D.37118;
  int D.37119;
  struct MonoDebugOptions * D.37128;
  int D.37129;
  int D.37131;
  short unsigned int D.37132;
  short unsigned int D.37146;
  void * D.37148;
  struct MonoDebugOptions * D.37155;
  int D.37156;
  struct MonoDebugOptions * D.37164;
  int D.37165;
  unsigned int D.37167;
  int D.37168;
  int D.37171;
  long long int D.37172;
  int D.37173;
  int D.37176;
  short unsigned int D.37179;
  void * D.37180;
  struct MonoInst * * sp.156;
  struct MonoInst * D.37185;
  struct MonoDebugOptions * D.37192;
  int D.37193;
  struct MonoDebugOptions * D.37201;
  int D.37202;
  unsigned int D.37204;
  int D.37205;
  short unsigned int D.37206;
  gint64 iftmp.157;
  int D.37213;
  short unsigned int D.37216;
  _Bool D.37217;
  _Bool D.37218;
  _Bool D.37219;
  unsigned int D.37222;
  unsigned int D.37227;
  int D.37228;
  short unsigned int D.37233;
  int D.37236;
  struct MonoInst * D.37238;
  struct MonoInst * * sp.158;
  struct MonoInst * D.37245;
  struct MonoDebugOptions * D.37252;
  int D.37253;
  unsigned char D.37257;
  _Bool D.37258;
  _Bool D.37259;
  _Bool D.37260;
  short unsigned int D.37262;
  int iftmp.159;
  unsigned int D.37271;
  int D.37272;
  struct MonoDebugOptions * D.37279;
  int D.37280;
  unsigned int D.37282;
  int D.37283;
  struct MonoInst * * sp.160;
  struct MonoInst * D.37288;
  struct MonoDebugOptions * D.37295;
  int D.37296;
  unsigned char D.37298;
  struct MonoDebugOptions * D.37307;
  int D.37308;
  unsigned int D.37310;
  int D.37311;
  struct MonoInst * * sp.161;
  struct MonoInst * D.37316;
  struct MonoDebugOptions * D.37323;
  int D.37324;
  unsigned int D.37326;
  int D.37327;
  struct MonoInst * * sp.162;
  struct MonoInst * D.37332;
  struct MonoDebugOptions * D.37340;
  int D.37341;
  unsigned int D.37343;
  int D.37344;
  struct MonoInst * * sp.163;
  struct MonoInst * D.37349;
  struct MonoDebugOptions * D.37356;
  int D.37357;
  struct MonoDebugOptions * D.37367;
  int D.37368;
  unsigned int D.37370;
  int D.37371;
  struct MonoInst * * sp.164;
  struct MonoInst * D.37376;
  struct MonoDebugOptions * D.37383;
  int D.37384;
  unsigned int D.37386;
  int D.37387;
  struct MonoInst * * sp.165;
  struct MonoInst * D.37392;
  struct MonoDebugOptions * D.37400;
  int D.37401;
  unsigned int D.37403;
  int D.37404;
  struct MonoInst * * sp.166;
  struct MonoInst * D.37409;
  struct MonoDebugOptions * D.37416;
  int D.37417;
  struct MonoDebugOptions * D.37425;
  int D.37426;
  unsigned int D.37428;
  int D.37429;
  struct MonoInst * * sp.167;
  struct MonoInst * D.37434;
  struct MonoDebugOptions * D.37442;
  int D.37443;
  struct MonoDebugOptions * D.37451;
  int D.37452;
  unsigned int D.37454;
  int D.37455;
  struct MonoInst * * sp.168;
  struct MonoInst * D.37460;
  const char * D.37463;
  gchar * D.37464;
  struct MonoDebugOptions * D.37473;
  int D.37474;
  struct MonoDebugOptions * D.37482;
  int D.37483;
  struct MonoClass * klass.169;
  struct MonoClass * klass.170;
  unsigned char D.37490;
  struct MonoDebugOptions * D.37491;
  int D.37492;
  int D.37494;
  unsigned int D.37497;
  int D.37498;
  struct MonoInst * D.37499;
  int D.37500;
  int D.37501;
  unsigned char D.37502;
  unsigned char D.37503;
  int D.37507;
  struct MonoInst * D.37508;
  int D.37509;
  int D.37510;
  unsigned char D.37511;
  unsigned char D.37512;
  struct MonoDebugOptions * D.37527;
  int D.37528;
  struct MonoDebugOptions * D.37536;
  int D.37537;
  struct MonoClass * klass.171;
  struct MonoDebugOptions * D.37543;
  int D.37544;
  int D.37546;
  unsigned char * D.37547;
  unsigned char D.37548;
  int D.37551;
  unsigned int loc_index.172;
  struct MonoDebugOptions * D.37561;
  int D.37562;
  struct MonoType * D.37564;
  unsigned int D.37565;
  short unsigned int D.37566;
  unsigned int D.37567;
  int D.37568;
  unsigned int D.37572;
  struct MonoInst * * D.37573;
  struct MonoInst * D.37574;
  int D.37575;
  sizetype stloc_len.173;
  int D.37579;
  const unsigned char * D.37582;
  unsigned int D.37583;
  int D.37586;
  struct MonoDebugOptions * D.37595;
  int D.37596;
  unsigned int D.37598;
  short unsigned int D.37599;
  unsigned int D.37600;
  int D.37601;
  struct MonoInst * * sp.174;
  struct MonoDebugOptions * D.37612;
  int D.37613;
  struct MonoDebugOptions * D.37621;
  int D.37622;
  unsigned int D.37624;
  unsigned int n.175;
  void * D.37628;
  unsigned int D.37629;
  int D.37630;
  void * D.37637;
  struct MonoInst * D.37638;
  int D.37639;
  struct MonoInst * D.37640;
  int D.37641;
  int D.37642;
  void * D.37643;
  unsigned int D.37644;
  int D.37645;
  struct MonoInst * D.37649;
  struct GList * D.37655;
  void * n.176;
  struct GList * D.37657;
  void * D.37662;
  struct MonoInst * D.37663;
  int D.37664;
  struct MonoInst * D.37665;
  int D.37666;
  int D.37667;
  int D.37668;
  unsigned int D.37669;
  unsigned int D.37670;
  struct MonoInst * * D.37671;
  struct MonoInst * D.37672;
  struct MonoType * D.37673;
  unsigned int D.37674;
  short unsigned int D.37675;
  struct MonoClass * D.37676;
  int D.37677;
  unsigned char D.37678;
  <unnamed type> D.37679;
  unsigned int D.37680;
  int D.37681;
  short unsigned int D.37682;
  struct MonoClass * D.37685;
  void * D.37686;
  unsigned int D.37687;
  int D.37688;
  void * D.37692;
  struct MonoInst * D.37693;
  int D.37694;
  struct MonoInst * D.37695;
  guint16 iftmp.177;
  int D.37700;
  int D.37701;
  unsigned int D.37702;
  int D.37703;
  void * D.37707;
  struct MonoInst * D.37708;
  int D.37709;
  struct MonoInst * D.37710;
  int D.37711;
  int D.37712;
  int D.37713;
  unsigned int D.37714;
  int D.37715;
  struct MonoInst * D.37719;
  unsigned int n.178;
  unsigned int D.37721;
  unsigned char D.37723;
  unsigned char D.37724;
  void * D.37729;
  struct MonoInst * D.37730;
  int D.37731;
  struct MonoInst * D.37732;
  int D.37733;
  int D.37734;
  unsigned int D.37735;
  int D.37736;
  struct MonoInst * D.37740;
  void * D.37742;
  guint16 iftmp.179;
  unsigned int D.37747;
  int D.37748;
  void * D.37752;
  struct MonoInst * D.37753;
  int D.37754;
  struct MonoInst * D.37755;
  int D.37756;
  int D.37757;
  unsigned int D.37758;
  int D.37759;
  struct MonoInst * D.37763;
  struct MonoJumpInfoToken * D.37767;
  struct MonoClass * D.37768;
  unsigned int D.37769;
  int D.37770;
  unsigned int D.37775;
  int D.37776;
  struct MonoString * D.37777;
  void * D.37778;
  struct MonoDebugOptions * D.37790;
  int D.37791;
  struct MonoLoaderError * D.37796;
  struct MonoDebugOptions * D.37797;
  int D.37798;
  struct MonoDebugOptions * D.37802;
  int D.37803;
  int D.37805;
  struct MonoDebugOptions * D.37808;
  int D.37809;
  <unnamed type> D.37813;
  int D.37816;
  <unnamed type> D.37827;
  int D.37838;
  int D.37841;
  struct MonoDebugOptions * D.37847;
  int D.37848;
  int D.37852;
  int D.37855;
  struct MonoGenericContext * D.37861;
  struct MonoGenericInst * D.37862;
  struct MonoDebugOptions * D.37867;
  int D.37868;
  struct MonoDebugOptions * D.37876;
  int D.37877;
  int D.37879;
  struct MonoInst * D.37880;
  guint16 iftmp.180;
  int D.37885;
  int D.37886;
  void * iftmp.181;
  unsigned int D.37891;
  int D.37892;
  short unsigned int D.37896;
  struct MonoDebugOptions * D.37903;
  int D.37904;
  int D.37913;
  struct MonoType * D.37919;
  short unsigned int D.37920;
  short unsigned int D.37921;
  struct MonoType * D.37923;
  short unsigned int D.37924;
  short unsigned int D.37925;
  _Bool D.37926;
  long int D.37927;
  long int D.37928;
  void * D.37931;
  struct MonoInst * D.37932;
  int D.37933;
  struct MonoInst * D.37934;
  int D.37935;
  int D.37936;
  unsigned int D.37937;
  int D.37938;
  unsigned int D.37939;
  int D.37940;
  struct MonoInst * * sp.182;
  struct MonoInst * D.37945;
  struct MonoInst * * sp.183;
  struct MonoInst * D.37947;
  struct MonoInst * D.37948;
  struct MonoInst * * sp.184;
  struct MonoInst * D.37950;
  int n.185;
  int D.37952;
  struct MonoDebugOptions * D.37959;
  int D.37960;
  int D.37962;
  struct MonoInst * D.37967;
  int D.37980;
  long int D.37984;
  long int D.37985;
  void * D.37990;
  unsigned int D.37991;
  int D.37992;
  struct MonoType * D.37999;
  struct MonoInst * D.38000;
  struct MonoInst * D.38001;
  int D.38002;
  void * D.38003;
  int D.38004;
  unsigned int D.38005;
  unsigned int D.38006;
  struct MonoInst * * D.38007;
  struct MonoInst * D.38008;
  unsigned char D.38009;
  unsigned char D.38010;
  struct MonoClass * D.38011;
  unsigned int D.38012;
  int D.38013;
  struct MonoType * D.38016;
  int D.38017;
  _Bool iftmp.186;
  int D.38021;
  unsigned char D.38024;
  _Bool D.38025;
  _Bool D.38026;
  _Bool D.38027;
  int D.38028;
  unsigned char D.38030;
  struct MonoInst * iftmp.187;
  int D.38034;
  int D.38035;
  unsigned int D.38036;
  sizetype D.38039;
  sizetype D.38040;
  sizetype D.38041;
  struct MonoInst * * D.38042;
  struct MonoInst * iftmp.188;
  int D.38045;
  unsigned int D.38046;
  sizetype D.38049;
  sizetype D.38050;
  struct MonoInst * * D.38051;
  _Bool D.38053;
  long int D.38054;
  long int D.38055;
  _Bool D.38058;
  long int D.38059;
  long int D.38060;
  unsigned char D.38063;
  unsigned char D.38064;
  unsigned char D.38065;
  unsigned char D.38066;
  struct MonoDebugOptions * D.38079;
  int D.38080;
  int D.38082;
  struct GSList * D.38085;
  struct MonoMethodSignature * helper_sig_class_init_trampoline.189;
  const char * D.38091;
  const char * D.38092;
  int D.38096;
  struct MonoInst * D.38097;
  int D.38098;
  int D.38099;
  int D.38100;
  struct MonoType * D.38111;
  int D.38112;
  _Bool D.38119;
  _Bool D.38121;
  _Bool D.38122;
  _Bool D.38123;
  int D.38125;
  struct MonoClass * D.38127;
  int D.38128;
  struct GList * D.38130;
  int D.38134;
  int D.38144;
  const char * D.38149;
  gchar * D.38150;
  int D.38156;
  int D.38162;
  int D.38164;
  unsigned int D.38173;
  short unsigned int D.38174;
  unsigned int D.38175;
  int D.38176;
  struct MonoClass * D.38179;
  struct MonoClass * D.38183;
  struct MonoType * D.38184;
  struct MonoInst * * sp.190;
  struct MonoInst * * sp.191;
  struct MonoDebugOptions * D.38194;
  int D.38195;
  struct MonoDebugOptions * D.38203;
  int D.38204;
  struct MonoClass * klass.192;
  struct MonoDebugOptions * D.38210;
  int D.38211;
  struct MonoDebugOptions * D.38219;
  int D.38220;
  int D.38225;
  void * D.38227;
  struct MonoInst * D.38228;
  int D.38229;
  struct MonoInst * D.38230;
  guint16 iftmp.193;
  int D.38235;
  int D.38236;
  unsigned int D.38237;
  int D.38238;
  void * D.38244;
  struct MonoInst * D.38245;
  int D.38246;
  struct MonoInst * D.38247;
  guint16 iftmp.194;
  int D.38252;
  int D.38253;
  unsigned int D.38254;
  int D.38255;
  void * D.38260;
  void * D.38261;
  unsigned int D.38262;
  int D.38263;
  struct MonoInst * * sp.195;
  struct MonoInst * D.38268;
  unsigned char D.38273;
  unsigned char D.38274;
  unsigned int D.38276;
  unsigned int D.38277;
  struct MonoMethodSignature * D.38278;
  _Bool D.38280;
  long int D.38281;
  long int D.38282;
  struct MonoInst * * sp.196;
  struct MonoInst * D.38286;
  struct MonoInst * * sp.197;
  struct MonoDebugOptions * D.38295;
  int D.38296;
  struct MonoDebugOptions * D.38304;
  int D.38305;
  struct MonoClass * klass.198;
  struct MonoDebugOptions * D.38311;
  int D.38312;
  struct MonoDebugOptions * D.38320;
  int D.38321;
  int D.38326;
  void * D.38328;
  struct MonoInst * D.38329;
  int D.38330;
  struct MonoInst * D.38331;
  guint16 iftmp.199;
  int D.38336;
  int D.38337;
  unsigned int D.38338;
  int D.38339;
  void * D.38345;
  struct MonoInst * D.38346;
  int D.38347;
  struct MonoInst * D.38348;
  guint16 iftmp.200;
  int D.38353;
  int D.38354;
  unsigned int D.38355;
  int D.38356;
  void * D.38361;
  void * D.38362;
  unsigned int D.38363;
  int D.38364;
  struct MonoInst * * sp.201;
  struct MonoInst * D.38369;
  struct MonoMethodSignature * D.38375;
  _Bool D.38377;
  long int D.38378;
  long int D.38379;
  struct MonoInst * * sp.202;
  struct MonoInst * D.38383;
  struct MonoInst * * sp.203;
  struct MonoDebugOptions * D.38392;
  int D.38393;
  struct MonoDebugOptions * D.38401;
  int D.38402;
  struct MonoClass * klass.204;
  struct MonoDebugOptions * D.38408;
  int D.38409;
  int D.38411;
  struct MonoInst * D.38414;
  int D.38415;
  int D.38421;
  void * D.38423;
  struct MonoInst * D.38424;
  int D.38425;
  struct MonoInst * D.38426;
  guint16 iftmp.205;
  int D.38431;
  int D.38432;
  unsigned int D.38433;
  int D.38434;
  void * D.38440;
  struct MonoInst * D.38441;
  int D.38442;
  struct MonoInst * D.38443;
  guint16 iftmp.206;
  int D.38448;
  int D.38449;
  unsigned int D.38450;
  int D.38451;
  void * D.38456;
  void * D.38457;
  unsigned int D.38458;
  int D.38459;
  struct MonoInst * * sp.207;
  struct MonoInst * D.38464;
  struct MonoMethodSignature * D.38470;
  _Bool D.38472;
  long int D.38473;
  long int D.38474;
  struct MonoInst * * sp.208;
  struct MonoInst * D.38478;
  struct MonoInst * * sp.209;
  int D.38481;
  struct MonoInst * * sp.210;
  unsigned int D.38485;
  short unsigned int D.38486;
  unsigned int D.38487;
  int D.38488;
  struct MonoInst * * sp.211;
  struct MonoDebugOptions * D.38499;
  int D.38500;
  struct MonoDebugOptions * D.38508;
  int D.38509;
  struct MonoClass * klass.212;
  struct MonoDebugOptions * D.38515;
  int D.38516;
  int D.38518;
  struct MonoInst * * sp.213;
  struct MonoClass * D.38522;
  struct MonoDebugOptions * D.38529;
  int D.38530;
  int D.38532;
  struct MonoDebugOptions * D.38539;
  int D.38540;
  int D.38544;
  int D.38549;
  unsigned char D.38552;
  _Bool D.38553;
  _Bool D.38554;
  _Bool D.38555;
  unsigned char D.38558;
  _Bool D.38559;
  _Bool D.38560;
  _Bool D.38561;
  char * D.38564;
  struct MonoDebugOptions * D.38571;
  int D.38572;
  struct MonoDebugOptions * D.38580;
  int D.38581;
  unsigned int D.38583;
  sizetype D.38584;
  struct MonoDebugOptions * D.38594;
  int D.38595;
  unsigned int D.38597;
  unsigned int D.38598;
  int D.38599;
  unsigned char * D.38600;
  int D.38603;
  int D.38604;
  unsigned int D.38605;
  unsigned int D.38606;
  struct MonoBasicBlock * * D.38607;
  struct MonoDebugOptions * D.38617;
  int D.38618;
  unsigned int D.38620;
  unsigned int D.38621;
  int D.38622;
  unsigned char * D.38623;
  int D.38626;
  int D.38627;
  unsigned int D.38628;
  unsigned int D.38629;
  struct MonoBasicBlock * * D.38630;
  struct MonoDebugOptions * D.38639;
  int D.38640;
  unsigned int D.38644;
  int D.38645;
  struct MonoInst * D.38646;
  int D.38647;
  int D.38648;
  int D.38652;
  struct MonoInst * D.38653;
  int D.38654;
  int D.38655;
  _Bool D.38656;
  int D.38657;
  int D.38661;
  struct MonoInst * D.38662;
  int D.38663;
  int D.38664;
  void * D.38665;
  struct MonoBasicBlock * * D.38666;
  struct MonoBasicBlock * * D.38667;
  struct MonoBasicBlock * iftmp.214;
  struct MonoInst * * sp.215;
  struct MonoInst * D.38680;
  struct MonoDebugOptions * D.38688;
  int D.38689;
  struct MonoDebugOptions * D.38697;
  int D.38698;
  struct MonoClass * klass.216;
  struct MonoDebugOptions * D.38704;
  int D.38705;
  int D.38707;
  void * iftmp.217;
  int D.38711;
  unsigned int D.38712;
  unsigned int D.38715;
  unsigned int D.38716;
  struct MonoInst * * D.38717;
  struct MonoInst * iftmp.218;
  struct MonoInst * iftmp.219;
  unsigned char D.38727;
  unsigned char D.38728;
  struct MonoInst * iftmp.220;
  struct MonoClass * D.38733;
  unsigned int D.38734;
  int D.38735;
  struct MonoInst * iftmp.221;
  struct MonoType * D.38742;
  int D.38743;
  _Bool iftmp.222;
  int D.38747;
  struct MonoInst * iftmp.223;
  unsigned char D.38754;
  _Bool D.38755;
  _Bool D.38756;
  _Bool D.38757;
  int D.38758;
  struct MonoInst * iftmp.224;
  unsigned char D.38764;
  struct MonoInst * iftmp.225;
  struct MonoInst * iftmp.226;
  int D.38772;
  int D.38773;
  unsigned int D.38774;
  struct MonoInst * iftmp.227;
  int D.38781;
  sizetype D.38782;
  sizetype D.38783;
  sizetype D.38784;
  struct MonoInst * * D.38785;
  struct MonoInst * iftmp.228;
  struct MonoInst * iftmp.229;
  int D.38792;
  int D.38793;
  unsigned int D.38794;
  struct MonoInst * iftmp.230;
  int D.38801;
  sizetype D.38802;
  sizetype D.38803;
  sizetype D.38804;
  struct MonoInst * * D.38805;
  _Bool D.38807;
  long int D.38808;
  long int D.38809;
  _Bool D.38812;
  long int D.38813;
  long int D.38814;
  unsigned char D.38817;
  unsigned char D.38818;
  unsigned char D.38819;
  unsigned char D.38820;
  struct MonoInst * * sp.231;
  struct MonoInst * * sp.232;
  unsigned int op.233;
  unsigned int D.38828;
  _Bool D.38829;
  struct MonoDebugOptions * D.38840;
  int D.38841;
  struct MonoDebugOptions * D.38850;
  int D.38851;
  unsigned char D.38853;
  unsigned char D.38854;
  _Bool D.38855;
  _Bool D.38856;
  _Bool D.38857;
  struct MonoDebugOptions * D.38864;
  int D.38865;
  struct MonoDebugOptions * D.38875;
  int D.38876;
  struct MonoDebugOptions * D.38887;
  int D.38888;
  struct MonoDebugOptions * D.38896;
  int D.38897;
  struct MonoClass * klass.234;
  struct MonoDebugOptions * D.38905;
  int D.38906;
  int D.38912;
  gchar * D.38915;
  int D.38920;
  struct MonoDebugOptions * D.38927;
  int D.38928;
  <unnamed type> D.38932;
  struct MonoType * D.38937;
  short unsigned int D.38938;
  int D.38939;
  int D.38940;
  unsigned int iftmp.235;
  unsigned char D.38944;
  unsigned char D.38945;
  int D.38948;
  unsigned int D.38949;
  int D.38953;
  struct MonoDebugOptions * D.38960;
  int D.38961;
  struct MonoMethodSignature * D.38968;
  unsigned char D.38969;
  unsigned char D.38970;
  int D.38973;
  unsigned char D.38974;
  struct MonoClass * D.38976;
  const char * D.38979;
  gchar * D.38980;
  void * D.38983;
  struct MonoInst * D.38984;
  int D.38985;
  struct MonoInst * D.38986;
  guint16 iftmp.236;
  int D.38991;
  int D.38992;
  unsigned int D.38993;
  int D.38994;
  void * D.38998;
  struct MonoInst * D.38999;
  int D.39000;
  struct MonoInst * D.39001;
  guint16 iftmp.237;
  int D.39006;
  int D.39007;
  unsigned int D.39008;
  int D.39009;
  void * D.39013;
  struct MonoInst * D.39014;
  int D.39015;
  struct MonoInst * D.39016;
  int D.39017;
  int D.39018;
  mgreg_t iftmp.238;
  unsigned int D.39022;
  unsigned int D.39024;
  int D.39025;
  struct MonoMethodSignature * D.39033;
  _Bool D.39035;
  long int D.39036;
  long int D.39037;
  int D.39042;
  struct MonoInst * D.39043;
  int D.39044;
  int D.39045;
  int D.39049;
  struct MonoInst * D.39050;
  int D.39051;
  int D.39052;
  int D.39057;
  unsigned int D.39060;
  int D.39061;
  int D.39065;
  struct MonoInst * D.39066;
  unsigned int D.39067;
  short unsigned int D.39068;
  int D.39069;
  int D.39070;
  struct MonoClass * D.39071;
  unsigned int D.39076;
  short unsigned int D.39077;
  int foffset.239;
  struct MonoClass * D.39079;
  unsigned char D.39085;
  unsigned char D.39086;
  unsigned int D.39091;
  unsigned int D.39095;
  int D.39096;
  struct MonoInst * D.39097;
  int D.39098;
  int D.39099;
  unsigned char D.39103;
  struct MonoMethodSignature * D.39110;
  unsigned char D.39111;
  unsigned char D.39112;
  struct MonoMethod * iftmp.240;
  const char * D.39122;
  gchar * D.39123;
  void * D.39126;
  struct MonoInst * D.39127;
  int D.39128;
  struct MonoInst * D.39129;
  guint16 iftmp.241;
  int D.39134;
  int D.39135;
  unsigned int D.39136;
  int D.39137;
  void * D.39141;
  struct MonoInst * D.39142;
  int D.39143;
  struct MonoInst * D.39144;
  guint16 iftmp.242;
  int D.39149;
  int D.39150;
  unsigned int D.39151;
  int D.39152;
  void * D.39156;
  struct MonoInst * D.39157;
  int D.39158;
  struct MonoInst * D.39159;
  int D.39160;
  int D.39161;
  mgreg_t iftmp.243;
  unsigned int D.39166;
  int D.39167;
  struct MonoMethodSignature * D.39175;
  struct MonoInst * * sp.244;
  struct MonoInst * D.39180;
  struct MonoInst * * sp.245;
  struct MonoInst * iftmp.246;
  unsigned int D.39187;
  unsigned int D.39190;
  unsigned int D.39191;
  struct MonoInst * * D.39192;
  struct MonoClass * D.39197;
  _Bool D.39198;
  long int D.39199;
  long int D.39200;
  unsigned char D.39203;
  unsigned char D.39204;
  unsigned int D.39205;
  int D.39206;
  struct MonoType * D.39209;
  int D.39210;
  _Bool iftmp.247;
  int D.39214;
  unsigned char D.39217;
  _Bool D.39218;
  _Bool D.39219;
  _Bool D.39220;
  int D.39221;
  unsigned char D.39223;
  struct MonoInst * iftmp.248;
  int D.39227;
  int D.39228;
  unsigned int D.39229;
  sizetype D.39232;
  sizetype D.39233;
  sizetype D.39234;
  struct MonoInst * * D.39235;
  struct MonoInst * iftmp.249;
  int D.39238;
  unsigned int D.39239;
  sizetype D.39242;
  sizetype D.39243;
  struct MonoInst * * D.39244;
  _Bool D.39246;
  long int D.39247;
  long int D.39248;
  _Bool D.39251;
  long int D.39252;
  long int D.39253;
  unsigned char D.39256;
  unsigned char D.39257;
  unsigned char D.39258;
  unsigned char D.39259;
  int D.39265;
  const char * D.39270;
  gchar * D.39271;
  struct MonoInst * * sp.250;
  struct MonoInst * D.39275;
  int D.39279;
  struct MonoInst * D.39280;
  int D.39281;
  int D.39282;
  int D.39286;
  struct MonoInst * D.39287;
  int D.39288;
  int D.39289;
  unsigned int D.39293;
  int D.39294;
  int D.39297;
  struct MonoClass * D.39305;
  struct MonoInst * * sp.251;
  int D.39310;
  struct MonoInst * D.39311;
  int D.39312;
  int D.39313;
  int D.39317;
  struct MonoInst * D.39318;
  int D.39319;
  int D.39320;
  int D.39325;
  unsigned int D.39328;
  int D.39329;
  int D.39333;
  struct MonoInst * D.39334;
  unsigned int D.39335;
  short unsigned int D.39336;
  int D.39337;
  int D.39338;
  unsigned char D.39339;
  <unnamed type> D.39340;
  unsigned int D.39341;
  int D.39342;
  unsigned int D.39347;
  short unsigned int D.39348;
  unsigned int D.39349;
  int D.39350;
  unsigned char D.39354;
  unsigned char D.39355;
  unsigned char D.39358;
  struct MonoInst * * sp.252;
  short unsigned int D.39362;
  int D.39363;
  int D.39364;
  struct MonoDebugOptions * D.39371;
  int D.39372;
  struct MonoDebugOptions * D.39381;
  int D.39382;
  union mono_mutex_t * D.39384;
  _Bool D.39387;
  long int D.39388;
  long int D.39389;
  struct GHashTable * D.39392;
  _Bool D.39397;
  long int D.39398;
  long int D.39399;
  _Bool D.39402;
  signed int addr.253;
  _Bool D.39404;
  _Bool D.39405;
  const char * D.39417;
  gchar * D.39418;
  unsigned int D.39424;
  int D.39425;
  struct MonoInst * D.39426;
  int D.39427;
  int D.39428;
  int D.39429;
  guint16 iftmp.254;
  unsigned int D.39439;
  int D.39440;
  int D.39444;
  struct MonoInst * D.39445;
  int D.39446;
  int D.39447;
  unsigned int D.39451;
  int D.39452;
  struct MonoInst * D.39453;
  int D.39454;
  int D.39455;
  int D.39459;
  struct MonoInst * D.39460;
  int D.39461;
  int D.39462;
  int D.39466;
  struct MonoInst * D.39467;
  int D.39468;
  int D.39469;
  int D.39473;
  struct MonoInst * D.39474;
  int D.39475;
  int D.39476;
  unsigned int D.39480;
  int D.39481;
  struct MonoInst * D.39482;
  int D.39483;
  int D.39484;
  unsigned int D.39488;
  int D.39489;
  struct MonoInst * D.39490;
  int D.39491;
  int D.39492;
  unsigned int D.39496;
  unsigned int addr.255;
  unsigned int D.39502;
  unsigned int D.39503;
  unsigned int D.39504;
  int D.39505;
  struct MonoInst * D.39506;
  int D.39507;
  int D.39508;
  unsigned int idx.256;
  unsigned int D.39510;
  int D.39511;
  unsigned int D.39515;
  int offset.257;
  int D.39517;
  _Bool D.39527;
  _Bool D.39528;
  long int D.39529;
  long int D.39530;
  void * D.39537;
  struct MonoInst * D.39538;
  int D.39539;
  struct MonoInst * D.39540;
  int D.39541;
  int D.39542;
  int D.39543;
  unsigned int D.39544;
  unsigned int D.39545;
  struct MonoInst * * D.39546;
  struct MonoInst * D.39547;
  struct MonoType * D.39548;
  unsigned int D.39549;
  short unsigned int D.39550;
  struct MonoClass * D.39551;
  int D.39552;
  unsigned char D.39553;
  <unnamed type> D.39554;
  unsigned int D.39555;
  int D.39556;
  short unsigned int D.39557;
  struct MonoClass * D.39560;
  void * D.39561;
  unsigned int D.39562;
  int D.39563;
  struct MonoInst * D.39569;
  void * D.39571;
  struct MonoInst * D.39572;
  int D.39573;
  struct MonoInst * D.39574;
  guint16 iftmp.258;
  int D.39579;
  int D.39580;
  unsigned int D.39581;
  int D.39582;
  int D.39588;
  int D.39591;
  unsigned int D.39594;
  int D.39595;
  int D.39596;
  unsigned int D.39604;
  void * D.39620;
  struct MonoInst * D.39621;
  int D.39622;
  struct MonoInst * D.39623;
  int D.39624;
  int D.39625;
  int D.39626;
  unsigned int D.39627;
  unsigned int D.39628;
  struct MonoInst * * D.39629;
  struct MonoInst * D.39630;
  struct MonoType * D.39631;
  unsigned int D.39632;
  short unsigned int D.39633;
  struct MonoClass * D.39634;
  int D.39635;
  unsigned char D.39636;
  <unnamed type> D.39637;
  unsigned int D.39638;
  int D.39639;
  short unsigned int D.39640;
  struct MonoClass * D.39643;
  void * D.39644;
  unsigned int D.39645;
  int D.39646;
  void * D.39650;
  struct MonoInst * D.39651;
  int D.39652;
  struct MonoInst * D.39653;
  guint16 iftmp.259;
  int D.39658;
  int D.39659;
  unsigned int D.39660;
  int D.39661;
  struct MonoDebugOptions * D.39670;
  int D.39671;
  int D.39675;
  struct GSList * D.39678;
  const char * D.39683;
  const char * D.39684;
  const char * D.39685;
  unsigned char D.39687;
  _Bool D.39690;
  long int D.39691;
  long int D.39692;
  unsigned char D.39695;
  unsigned char D.39696;
  guint16 iftmp.260;
  unsigned int D.39713;
  int D.39714;
  void * D.39721;
  sizetype D.39722;
  _Bool D.39723;
  long int D.39724;
  long int D.39725;
  unsigned int D.39728;
  int D.39729;
  void * D.39734;
  struct MonoInst * D.39735;
  int D.39736;
  struct MonoInst * D.39737;
  int D.39738;
  int D.39739;
  int addr.261;
  unsigned int D.39741;
  int D.39742;
  struct MonoClass * D.39748;
  struct MonoInst * * sp.262;
  int D.39753;
  struct MonoInst * D.39754;
  unsigned int D.39755;
  short unsigned int D.39756;
  int D.39757;
  int D.39758;
  int D.39759;
  struct MonoClass * D.39760;
  unsigned char D.39764;
  unsigned char D.39765;
  struct MonoDebugOptions * D.39772;
  int D.39773;
  int D.39777;
  unsigned char D.39784;
  unsigned char D.39785;
  unsigned char D.39786;
  void * D.39789;
  struct MonoClass * D.39792;
  unsigned char D.39793;
  unsigned char D.39794;
  struct MonoType * D.39797;
  unsigned char D.39798;
  const char * D.39801;
  gchar * D.39802;
  void * D.39805;
  unsigned char D.39806;
  int D.39807;
  unsigned int D.39808;
  int D.39809;
  void * D.39813;
  signed char D.39814;
  int D.39815;
  unsigned int D.39816;
  int D.39817;
  void * D.39821;
  short unsigned int D.39822;
  int D.39823;
  unsigned int D.39824;
  int D.39825;
  void * D.39829;
  short int D.39830;
  int D.39831;
  unsigned int D.39832;
  int D.39833;
  void * D.39837;
  int D.39838;
  unsigned int D.39839;
  int D.39840;
  void * D.39844;
  unsigned int D.39845;
  int D.39846;
  unsigned int D.39847;
  int D.39848;
  void * D.39852;
  void * D.39853;
  unsigned int D.39854;
  int D.39855;
  int D.39859;
  void * D.39862;
  unsigned int D.39863;
  int D.39864;
  void * D.39869;
  unsigned int D.39870;
  int D.39871;
  long long int D.39872;
  struct MonoDebugOptions * D.39884;
  int D.39885;
  int D.39887;
  struct MonoInst * D.39888;
  unsigned int D.39889;
  short unsigned int D.39890;
  int D.39891;
  int D.39892;
  unsigned char D.39893;
  <unnamed type> D.39894;
  unsigned int D.39895;
  int D.39896;
  unsigned char D.39900;
  unsigned char D.39901;
  struct MonoInst * * sp.263;
  struct MonoDebugOptions * D.39909;
  int D.39910;
  struct MonoDebugOptions * D.39918;
  int D.39919;
  struct MonoClass * klass.264;
  struct MonoDebugOptions * D.39925;
  int D.39926;
  unsigned int D.39928;
  short unsigned int D.39929;
  struct MonoClass * D.39930;
  int D.39938;
  struct MonoDebugOptions * D.39947;
  int D.39948;
  struct MonoDebugOptions * D.39956;
  int D.39957;
  struct MonoClass * klass.265;
  struct MonoDebugOptions * D.39963;
  int D.39964;
  unsigned int D.39968;
  int D.39969;
  struct MonoInst * D.39973;
  struct MonoInst * D.39976;
  void * D.39987;
  struct MonoInst * D.39988;
  int D.39989;
  struct MonoInst * D.39990;
  int D.39991;
  int D.39992;
  int D.39993;
  unsigned int D.39994;
  unsigned int D.39995;
  struct MonoInst * * D.39996;
  struct MonoInst * D.39997;
  struct MonoType * D.39998;
  unsigned int D.39999;
  short unsigned int D.40000;
  struct MonoClass * D.40001;
  int D.40002;
  unsigned char D.40003;
  <unnamed type> D.40004;
  unsigned int D.40005;
  int D.40006;
  short unsigned int D.40007;
  struct MonoClass * D.40010;
  void * D.40011;
  unsigned int D.40012;
  int D.40013;
  void * D.40017;
  struct MonoInst * D.40018;
  int D.40019;
  struct MonoInst * D.40020;
  guint16 iftmp.266;
  int D.40025;
  int D.40026;
  unsigned int D.40027;
  int D.40028;
  unsigned char D.40036;
  struct MonoDebugOptions * D.40037;
  int D.40038;
  unsigned int D.40040;
  int D.40041;
  unsigned int D.40045;
  struct MonoInst * * sp.267;
  const guint8 * D.40051;
  int D.40052;
  short unsigned int D.40055;
  int D.40058;
  unsigned int D.40059;
  unsigned int D.40062;
  void * D.40063;
  struct MonoInst * D.40064;
  int D.40065;
  struct MonoInst * D.40066;
  int D.40067;
  int D.40068;
  void * D.40074;
  struct MonoInst * D.40075;
  int D.40076;
  struct MonoInst * D.40077;
  int D.40078;
  int D.40079;
  unsigned int field_token.268;
  struct MonoJumpInfoToken * D.40081;
  unsigned int D.40082;
  int D.40083;
  void * D.40088;
  unsigned int D.40089;
  int D.40090;
  void * D.40094;
  struct MonoInst * D.40095;
  int D.40096;
  struct MonoInst * D.40097;
  int D.40098;
  int D.40099;
  int data_size.269;
  unsigned int D.40101;
  int D.40102;
  struct MonoDebugOptions * D.40112;
  int D.40113;
  struct MonoDebugOptions * D.40121;
  int D.40122;
  unsigned int D.40124;
  int D.40125;
  unsigned char D.40126;
  struct MonoInst * * sp.270;
  struct MonoDebugOptions * D.40137;
  int D.40138;
  struct MonoDebugOptions * D.40146;
  int D.40147;
  struct MonoDebugOptions * D.40155;
  int D.40156;
  unsigned int D.40158;
  unsigned int D.40159;
  struct MonoClass * klass.271;
  struct MonoDebugOptions * D.40164;
  int D.40165;
  unsigned char D.40176;
  struct MonoDebugOptions * D.40177;
  int D.40178;
  struct MonoInst * * sp.272;
  struct MonoDebugOptions * D.40187;
  int D.40188;
  struct MonoDebugOptions * D.40198;
  int D.40199;
  struct MonoClass * klass.273;
  struct MonoDebugOptions * D.40205;
  int D.40206;
  struct MonoClass * klass.274;
  struct MonoDebugOptions * D.40216;
  int D.40217;
  int D.40219;
  unsigned int D.40222;
  short unsigned int D.40223;
  int D.40224;
  unsigned int D.40225;
  int D.40226;
  int D.40233;
  int D.40234;
  unsigned int D.40235;
  unsigned int D.40236;
  unsigned int D.40237;
  unsigned int D.40240;
  int D.40245;
  struct MonoInst * D.40246;
  int D.40247;
  int D.40248;
  int D.40252;
  struct MonoInst * D.40253;
  int D.40254;
  int D.40255;
  unsigned int D.40262;
  int D.40265;
  int D.40270;
  struct MonoInst * D.40271;
  int D.40272;
  int D.40273;
  int D.40277;
  struct MonoInst * D.40278;
  int D.40279;
  int D.40280;
  int D.40285;
  struct MonoInst * D.40286;
  int D.40287;
  int D.40288;
  unsigned char D.40289;
  int D.40294;
  int D.40299;
  struct MonoInst * D.40300;
  int D.40301;
  int D.40302;
  int D.40306;
  struct MonoInst * D.40307;
  int D.40308;
  int D.40309;
  int D.40314;
  struct MonoInst * D.40315;
  int D.40316;
  int D.40317;
  unsigned char D.40318;
  int D.40322;
  struct MonoInst * D.40323;
  int D.40324;
  int D.40325;
  int D.40329;
  struct MonoInst * D.40330;
  int D.40331;
  int D.40332;
  unsigned int D.40337;
  int D.40340;
  int D.40345;
  struct MonoInst * D.40346;
  int D.40347;
  int D.40348;
  int D.40352;
  struct MonoInst * D.40353;
  int D.40354;
  int D.40355;
  int D.40360;
  struct MonoInst * D.40361;
  int D.40362;
  int D.40363;
  unsigned char D.40364;
  int D.40369;
  int D.40374;
  struct MonoInst * D.40375;
  int D.40376;
  int D.40377;
  int D.40381;
  struct MonoInst * D.40382;
  int D.40383;
  int D.40384;
  int D.40389;
  struct MonoInst * D.40390;
  int D.40391;
  int D.40392;
  unsigned char D.40393;
  int D.40397;
  struct MonoInst * D.40398;
  int D.40399;
  int D.40400;
  int D.40404;
  struct MonoInst * D.40405;
  int D.40406;
  int D.40407;
  int D.40412;
  struct MonoInst * D.40413;
  int D.40414;
  int D.40415;
  unsigned char D.40416;
  unsigned char D.40417;
  unsigned int D.40421;
  short unsigned int D.40422;
  unsigned int D.40423;
  int D.40424;
  unsigned int D.40429;
  short unsigned int D.40430;
  unsigned int D.40431;
  int D.40432;
  struct MonoInst * * sp.275;
  struct MonoDebugOptions * D.40446;
  int D.40447;
  struct MonoDebugOptions * D.40457;
  int D.40458;
  struct MonoClass * klass.276;
  struct MonoDebugOptions * D.40464;
  int D.40465;
  struct MonoClass * klass.277;
  struct MonoDebugOptions * D.40475;
  int D.40476;
  struct MonoDebugOptions * D.40487;
  int D.40488;
  unsigned int D.40490;
  int D.40491;
  struct MonoInst * * sp.278;
  struct MonoInst * D.40496;
  unsigned int D.40497;
  unsigned int D.40498;
  const char * D.40501;
  gchar * D.40502;
  struct MonoDebugOptions * D.40511;
  int D.40512;
  struct MonoDebugOptions * D.40520;
  int D.40521;
  unsigned int D.40523;
  struct MonoClass * klass.279;
  struct MonoDebugOptions * D.40528;
  int D.40529;
  struct MonoInst * iftmp.280;
  struct MonoClass * D.40537;
  struct MonoType * D.40538;
  int D.40539;
  struct MonoInst * D.40540;
  int D.40541;
  int D.40542;
  unsigned char D.40543;
  unsigned char D.40544;
  struct MonoClass * D.40545;
  unsigned int D.40546;
  int D.40547;
  struct MonoType * D.40550;
  int D.40551;
  _Bool iftmp.281;
  int D.40555;
  unsigned char D.40558;
  _Bool D.40559;
  _Bool D.40560;
  _Bool D.40561;
  int D.40562;
  unsigned char D.40564;
  struct MonoInst * iftmp.282;
  int D.40568;
  int D.40569;
  unsigned int D.40570;
  sizetype D.40573;
  sizetype D.40574;
  sizetype D.40575;
  struct MonoInst * * D.40576;
  struct MonoInst * iftmp.283;
  int D.40579;
  unsigned int D.40580;
  sizetype D.40583;
  sizetype D.40584;
  struct MonoInst * * D.40585;
  _Bool D.40587;
  long int D.40588;
  long int D.40589;
  _Bool D.40592;
  long int D.40593;
  long int D.40594;
  unsigned char D.40597;
  unsigned char D.40598;
  unsigned char D.40599;
  unsigned char D.40600;
  int D.40604;
  struct MonoInst * D.40605;
  int D.40606;
  int D.40607;
  int D.40608;
  int D.40614;
  struct MonoInst * D.40615;
  int D.40616;
  int D.40617;
  int D.40618;
  int D.40622;
  struct MonoInst * D.40623;
  int D.40624;
  int D.40625;
  struct MonoInst * * sp.284;
  const char * D.40636;
  gchar * D.40637;
  struct MonoDebugOptions * D.40646;
  int D.40647;
  struct MonoDebugOptions * D.40655;
  int D.40656;
  unsigned int D.40658;
  struct MonoClass * klass.285;
  struct MonoDebugOptions * D.40663;
  int D.40664;
  int D.40666;
  struct MonoInst * D.40667;
  int D.40668;
  int D.40669;
  int D.40670;
  unsigned int D.40671;
  unsigned int D.40672;
  struct MonoInst * * D.40673;
  struct MonoInst * D.40674;
  unsigned char D.40675;
  unsigned char D.40676;
  struct MonoClass * D.40677;
  unsigned int D.40678;
  int D.40679;
  struct MonoType * D.40682;
  int D.40683;
  _Bool iftmp.286;
  int D.40687;
  unsigned char D.40690;
  _Bool D.40691;
  _Bool D.40692;
  _Bool D.40693;
  int D.40694;
  unsigned char D.40696;
  struct MonoInst * iftmp.287;
  int D.40700;
  int D.40701;
  unsigned int D.40702;
  sizetype D.40705;
  sizetype D.40706;
  sizetype D.40707;
  struct MonoInst * * D.40708;
  struct MonoInst * iftmp.288;
  int D.40711;
  unsigned int D.40712;
  sizetype D.40715;
  sizetype D.40716;
  struct MonoInst * * D.40717;
  _Bool D.40719;
  long int D.40720;
  long int D.40721;
  _Bool D.40724;
  long int D.40725;
  long int D.40726;
  unsigned char D.40729;
  unsigned char D.40730;
  unsigned char D.40731;
  unsigned char D.40732;
  unsigned int D.40738;
  int D.40739;
  struct MonoInst * D.40740;
  int D.40741;
  int D.40742;
  int D.40743;
  int D.40744;
  int D.40748;
  struct MonoInst * D.40749;
  int D.40750;
  int D.40751;
  int D.40755;
  struct MonoInst * D.40756;
  int D.40757;
  int D.40758;
  unsigned int D.40765;
  unsigned int D.40766;
  int D.40767;
  struct MonoInst * D.40768;
  guint16 iftmp.289;
  int D.40773;
  int D.40774;
  int D.40778;
  struct MonoInst * D.40779;
  int D.40780;
  int D.40781;
  int D.40785;
  struct MonoInst * D.40786;
  int D.40787;
  int D.40788;
  int D.40792;
  struct MonoInst * D.40793;
  int D.40794;
  int D.40795;
  int D.40800;
  struct MonoInst * D.40801;
  int D.40802;
  int D.40803;
  int D.40804;
  int D.40808;
  struct MonoInst * D.40809;
  int D.40810;
  int D.40811;
  int klass.290;
  int D.40816;
  struct MonoInst * D.40817;
  int D.40818;
  int D.40819;
  unsigned int D.40823;
  short unsigned int D.40824;
  unsigned int D.40825;
  int D.40826;
  struct MonoClass * D.40829;
  struct MonoInst * * sp.291;
  struct MonoDebugOptions * D.40840;
  int D.40841;
  struct MonoDebugOptions * D.40849;
  int D.40850;
  unsigned int D.40852;
  unsigned char D.40853;
  _Bool D.40854;
  _Bool D.40855;
  _Bool D.40856;
  int D.40859;
  unsigned int D.40860;
  void * handle_class.292;
  struct MonoClass * D.40862;
  struct MonoClass * handle_class.293;
  struct MonoDebugOptions * D.40869;
  int D.40870;
  int D.40874;
  unsigned int D.40875;
  unsigned int D.40876;
  int D.40882;
  struct MonoClass * D.40886;
  struct MonoClass * D.40888;
  struct MonoClass * D.40891;
  struct MonoClass * D.40893;
  struct MonoType * D.40902;
  void * D.40903;
  struct MonoInst * D.40904;
  int D.40905;
  struct MonoInst * D.40906;
  guint16 iftmp.294;
  int D.40911;
  int D.40912;
  unsigned int D.40913;
  int D.40914;
  void * D.40918;
  struct MonoInst * D.40919;
  int D.40920;
  struct MonoInst * D.40921;
  int D.40922;
  int D.40923;
  unsigned int D.40924;
  int D.40925;
  struct MonoInst * D.40931;
  void * D.40933;
  struct MonoInst * D.40934;
  int D.40935;
  struct MonoInst * D.40936;
  int D.40937;
  int D.40938;
  unsigned int D.40939;
  int D.40940;
  int D.40944;
  struct MonoInst * D.40945;
  int D.40946;
  int D.40947;
  int D.40948;
  unsigned int D.40949;
  unsigned int D.40950;
  struct MonoInst * * D.40951;
  struct MonoInst * D.40952;
  unsigned char D.40953;
  unsigned char D.40954;
  struct MonoClass * D.40955;
  unsigned int D.40956;
  int D.40957;
  struct MonoType * D.40960;
  int D.40961;
  _Bool iftmp.295;
  int D.40965;
  unsigned char D.40968;
  _Bool D.40969;
  _Bool D.40970;
  _Bool D.40971;
  int D.40972;
  unsigned char D.40974;
  struct MonoInst * iftmp.296;
  int D.40978;
  int D.40979;
  unsigned int D.40980;
  sizetype D.40983;
  sizetype D.40984;
  sizetype D.40985;
  struct MonoInst * * D.40986;
  struct MonoInst * iftmp.297;
  int D.40989;
  unsigned int D.40990;
  sizetype D.40993;
  sizetype D.40994;
  struct MonoInst * * D.40995;
  _Bool D.40997;
  long int D.40998;
  long int D.40999;
  _Bool D.41002;
  long int D.41003;
  long int D.41004;
  unsigned char D.41007;
  unsigned char D.41008;
  unsigned char D.41009;
  unsigned char D.41010;
  int D.41014;
  struct MonoInst * D.41015;
  int D.41016;
  int D.41017;
  int D.41018;
  unsigned int D.41022;
  short unsigned int D.41023;
  unsigned int D.41024;
  int D.41025;
  struct MonoClass * D.41028;
  int D.41035;
  unsigned char D.41037;
  _Bool D.41038;
  _Bool D.41039;
  _Bool D.41040;
  unsigned int D.41042;
  struct MonoClass * D.41044;
  int D.30544;
  int iftmp.298;
  int D.30543;
  const char[18] * D.41049;
  unsigned char D.41050;
  int D.41051;
  unsigned char D.41052;
  int D.41053;
  _Bool D.41054;
  _Bool D.41055;
  _Bool D.41056;
  const unsigned char * D.41059;
  unsigned char D.41060;
  int D.41061;
  const unsigned char * D.41062;
  unsigned char D.41063;
  int D.41064;
  _Bool D.41065;
  _Bool D.41066;
  const unsigned char * D.41069;
  unsigned char D.41070;
  int D.41071;
  const unsigned char * D.41072;
  unsigned char D.41073;
  int D.41074;
  _Bool D.41075;
  _Bool D.41076;
  const unsigned char * D.41079;
  unsigned char D.41080;
  int D.41081;
  const unsigned char * D.41082;
  unsigned char D.41083;
  int D.41084;
  struct MonoImage * D.41096;
  unsigned int D.41097;
  struct MonoClass * D.41098;
  struct MonoJumpInfoToken * D.41101;
  struct MonoClass * D.41102;
  unsigned int D.41103;
  int D.41104;
  unsigned int D.41110;
  int D.41111;
  struct MonoJumpInfoToken * D.41116;
  unsigned int D.41117;
  int D.41118;
  struct MonoReflectionType * D.41123;
  unsigned int D.41124;
  int D.41125;
  struct MonoClass * D.41133;
  struct MonoJumpInfoToken * D.41144;
  unsigned int D.41145;
  int D.41146;
  unsigned int D.41151;
  int D.41152;
  int D.41156;
  struct MonoInst * D.41157;
  int D.41158;
  int D.41159;
  int D.41160;
  unsigned int D.41161;
  unsigned int D.41162;
  struct MonoInst * * D.41163;
  struct MonoInst * D.41164;
  unsigned char D.41165;
  unsigned char D.41166;
  struct MonoClass * D.41167;
  unsigned int D.41168;
  int D.41169;
  struct MonoType * D.41172;
  int D.41173;
  _Bool iftmp.299;
  int D.41177;
  unsigned char D.41180;
  _Bool D.41181;
  _Bool D.41182;
  _Bool D.41183;
  int D.41184;
  unsigned char D.41186;
  struct MonoInst * iftmp.300;
  int D.41190;
  int D.41191;
  unsigned int D.41192;
  sizetype D.41195;
  sizetype D.41196;
  sizetype D.41197;
  struct MonoInst * * D.41198;
  struct MonoInst * iftmp.301;
  int D.41201;
  unsigned int D.41202;
  sizetype D.41205;
  sizetype D.41206;
  struct MonoInst * * D.41207;
  _Bool D.41209;
  long int D.41210;
  long int D.41211;
  _Bool D.41214;
  long int D.41215;
  long int D.41216;
  unsigned char D.41219;
  unsigned char D.41220;
  unsigned char D.41221;
  unsigned char D.41222;
  int D.41226;
  struct MonoInst * D.41227;
  int D.41228;
  int D.41229;
  int D.41230;
  unsigned int D.41234;
  short unsigned int D.41235;
  unsigned int D.41236;
  int D.41237;
  struct MonoClass * D.41240;
  struct MonoInst * * sp.302;
  struct MonoDebugOptions * D.41251;
  int D.41252;
  struct MonoDebugOptions * D.41273;
  int D.41274;
  unsigned int D.41276;
  sizetype D.41277;
  struct MonoDebugOptions * D.41285;
  int D.41286;
  signed char D.41288;
  sizetype D.41289;
  sizetype D.41290;
  unsigned int D.41291;
  unsigned int D.41292;
  unsigned int D.41295;
  unsigned int D.41296;
  unsigned int D.41299;
  int iftmp.303;
  int D.41306;
  unsigned int D.41307;
  unsigned int D.41312;
  unsigned int D.41313;
  int D.41314;
  int D.41315;
  struct MonoInst * D.41316;
  int D.41317;
  int D.41318;
  int D.41319;
  int D.41323;
  struct MonoInst * D.41324;
  int D.41325;
  int D.41326;
  unsigned int D.41329;
  unsigned int D.41330;
  int D.41331;
  unsigned char * D.41335;
  int D.41338;
  int D.41339;
  unsigned int D.41340;
  unsigned int D.41341;
  struct MonoBasicBlock * * D.41342;
  short unsigned int D.41347;
  short unsigned int D.41348;
  _Bool D.41349;
  short unsigned int D.41350;
  _Bool D.41351;
  _Bool D.41352;
  short unsigned int D.41358;
  _Bool D.41359;
  _Bool D.41360;
  _Bool D.41361;
  short unsigned int D.41363;
  short unsigned int D.41364;
  _Bool D.41365;
  short unsigned int D.41366;
  _Bool D.41367;
  _Bool D.41368;
  void * D.41371;
  struct MonoBasicBlock * * D.41372;
  struct MonoBasicBlock * * D.41373;
  unsigned int D.41379;
  unsigned int D.41380;
  int D.41381;
  short unsigned int D.41388;
  short unsigned int D.41389;
  _Bool D.41390;
  short unsigned int D.41391;
  _Bool D.41392;
  _Bool D.41393;
  short unsigned int D.41399;
  _Bool D.41400;
  _Bool D.41401;
  _Bool D.41402;
  short unsigned int D.41404;
  short unsigned int D.41405;
  _Bool D.41406;
  short unsigned int D.41407;
  _Bool D.41408;
  _Bool D.41409;
  int D.41412;
  struct MonoInst * D.41413;
  int D.41414;
  int D.41415;
  unsigned char * D.41419;
  int D.41422;
  int D.41423;
  unsigned int D.41424;
  unsigned int D.41425;
  struct MonoBasicBlock * * D.41426;
  short unsigned int D.41431;
  short unsigned int D.41432;
  _Bool D.41433;
  short unsigned int D.41434;
  _Bool D.41435;
  _Bool D.41436;
  short unsigned int D.41442;
  _Bool D.41443;
  _Bool D.41444;
  _Bool D.41445;
  short unsigned int D.41447;
  short unsigned int D.41448;
  _Bool D.41449;
  short unsigned int D.41450;
  _Bool D.41451;
  _Bool D.41452;
  unsigned int D.41456;
  unsigned int D.41457;
  struct MonoBasicBlock * * D.41458;
  _Bool D.41459;
  long int D.41460;
  long int D.41461;
  struct MonoDebugOptions * D.41478;
  int D.41479;
  unsigned int D.41481;
  unsigned int D.41482;
  int D.41483;
  unsigned char * D.41484;
  int D.41487;
  int D.41488;
  unsigned int D.41489;
  unsigned int D.41490;
  struct MonoBasicBlock * * D.41491;
  struct MonoDebugOptions * D.41504;
  int D.41505;
  unsigned int D.41507;
  unsigned int D.41508;
  int D.41509;
  _Bool D.41515;
  long int D.41516;
  long int D.41517;
  struct MonoDebugOptions * D.41526;
  int D.41527;
  const unsigned char * D.41529;
  char * D.41532;
  _Bool D.41533;
  long int D.41534;
  long int D.41535;
  struct MonoMethodSignature * D.41538;
  short unsigned int D.41539;
  int D.41540;
  struct MonoDebugOptions * D.41547;
  int D.41548;
  unsigned int D.41550;
  unsigned int D.41551;
  sizetype D.41552;
  const void * D.41553;
  struct MonoType * D.41554;
  int D.41555;
  struct MonoInst * * sp.304;
  int num_calls.305;
  int D.41560;
  struct MonoDebugOptions * D.41567;
  int D.41568;
  struct MonoDebugOptions * D.41576;
  int D.41577;
  gint32 * D.41581;
  guint16 iftmp.306;
  unsigned int D.41588;
  int D.41589;
  struct MonoInst * * sp.307;
  unsigned int D.41594;
  int D.41595;
  struct MonoInst * * sp.308;
  int num_calls.309;
  int D.41601;
  struct MonoDebugOptions * D.41610;
  int D.41611;
  struct MonoDebugOptions * D.41619;
  int D.41620;
  _Bool D.41622;
  long int D.41623;
  long int D.41624;
  guint16 iftmp.310;
  const char * D.41631;
  unsigned int D.41632;
  int D.41633;
  struct MonoInst * * sp.311;
  int num_calls.312;
  int D.41639;
  struct MonoDebugOptions * D.41646;
  int D.41647;
  struct MonoDebugOptions * D.41655;
  int D.41656;
  guint16 iftmp.313;
  unsigned int D.41664;
  int D.41665;
  _Bool D.41670;
  long int D.41671;
  long int D.41672;
  unsigned int D.41675;
  int D.41676;
  struct MonoInst * * sp.314;
  struct MonoDebugOptions * D.41687;
  int D.41688;
  struct MonoInst * iftmp.315;
  int D.41694;
  struct MonoInst * D.41695;
  int D.41696;
  int D.41697;
  unsigned char D.41698;
  unsigned char D.41699;
  struct MonoClass * D.41700;
  unsigned int D.41701;
  int D.41702;
  struct MonoType * D.41705;
  int D.41706;
  _Bool iftmp.316;
  int D.41710;
  unsigned char D.41713;
  _Bool D.41714;
  _Bool D.41715;
  _Bool D.41716;
  int D.41717;
  unsigned char D.41719;
  struct MonoInst * iftmp.317;
  int D.41723;
  int D.41724;
  unsigned int D.41725;
  sizetype D.41728;
  sizetype D.41729;
  sizetype D.41730;
  struct MonoInst * * D.41731;
  struct MonoInst * iftmp.318;
  int D.41734;
  unsigned int D.41735;
  sizetype D.41738;
  sizetype D.41739;
  struct MonoInst * * D.41740;
  _Bool D.41742;
  long int D.41743;
  long int D.41744;
  _Bool D.41747;
  long int D.41748;
  long int D.41749;
  unsigned char D.41752;
  unsigned char D.41753;
  unsigned char D.41754;
  unsigned char D.41755;
  struct MonoInst * * sp.319;
  struct MonoDebugOptions * D.41766;
  int D.41767;
  struct MonoDebugOptions * D.41775;
  int D.41776;
  void * klass.320;
  void * D.41783;
  struct MonoInst * D.41784;
  int D.41785;
  struct MonoInst * D.41786;
  int D.41787;
  int D.41788;
  int D.41789;
  unsigned int D.41790;
  unsigned int D.41791;
  struct MonoInst * * D.41792;
  struct MonoInst * D.41793;
  struct MonoType * D.41794;
  unsigned int D.41795;
  short unsigned int D.41796;
  struct MonoClass * D.41797;
  int D.41798;
  unsigned char D.41799;
  <unnamed type> D.41800;
  unsigned int D.41801;
  int D.41802;
  short unsigned int D.41803;
  struct MonoClass * D.41806;
  void * D.41807;
  unsigned int D.41808;
  int D.41809;
  void * D.41813;
  struct MonoInst * D.41814;
  int D.41815;
  struct MonoInst * D.41816;
  guint16 iftmp.321;
  int D.41821;
  int D.41822;
  unsigned int D.41823;
  int D.41824;
  struct MonoInst * * sp.322;
  struct MonoInst * D.41829;
  int num_calls.323;
  int D.41831;
  struct MonoDebugOptions * D.41838;
  int D.41839;
  unsigned int D.41841;
  int D.41842;
  struct MonoInst * * sp.324;
  struct MonoDebugOptions * D.41853;
  int D.41854;
  struct MonoDebugOptions * D.41862;
  int D.41863;
  void * klass.325;
  _Bool D.41866;
  long int D.41867;
  long int D.41868;
  int D.41871;
  struct MonoInst * D.41872;
  int D.41873;
  int D.41874;
  int D.41875;
  unsigned int D.41876;
  unsigned int D.41877;
  struct MonoInst * * D.41878;
  struct MonoInst * D.41879;
  unsigned char D.41880;
  unsigned char D.41881;
  struct MonoClass * D.41882;
  unsigned int D.41883;
  int D.41884;
  struct MonoType * D.41887;
  int D.41888;
  _Bool iftmp.326;
  int D.41892;
  unsigned char D.41895;
  _Bool D.41896;
  _Bool D.41897;
  _Bool D.41898;
  int D.41899;
  unsigned char D.41901;
  struct MonoInst * iftmp.327;
  int D.41905;
  int D.41906;
  unsigned int D.41907;
  sizetype D.41910;
  sizetype D.41911;
  sizetype D.41912;
  struct MonoInst * * D.41913;
  struct MonoInst * iftmp.328;
  int D.41916;
  unsigned int D.41917;
  sizetype D.41920;
  sizetype D.41921;
  struct MonoInst * * D.41922;
  _Bool D.41924;
  long int D.41925;
  long int D.41926;
  _Bool D.41929;
  long int D.41930;
  long int D.41931;
  unsigned char D.41934;
  unsigned char D.41935;
  unsigned char D.41936;
  unsigned char D.41937;
  unsigned int D.41941;
  short unsigned int D.41942;
  unsigned char D.41943;
  <unnamed type> D.41944;
  unsigned int D.41945;
  int D.41946;
  short unsigned int D.41947;
  struct MonoClass * D.41950;
  struct MonoInst * * sp.329;
  _Bool D.41955;
  long int D.41956;
  long int D.41957;
  struct MonoMethodSignature * D.41960;
  unsigned char D.41961;
  unsigned char D.41962;
  _Bool D.41963;
  long int D.41964;
  long int D.41965;
  struct MonoDebugOptions * D.41974;
  int D.41975;
  struct MonoDebugOptions * D.41983;
  int D.41984;
  void * klass.330;
  unsigned char D.41989;
  _Bool D.41990;
  long int D.41991;
  long int D.41992;
  unsigned char D.41995;
  unsigned char D.41996;
  unsigned int D.41997;
  int D.41998;
  struct MonoType * D.42001;
  int D.42002;
  _Bool iftmp.331;
  int D.42006;
  unsigned char D.42009;
  _Bool D.42010;
  _Bool D.42011;
  _Bool D.42012;
  int D.42013;
  unsigned char D.42015;
  struct MonoInst * iftmp.332;
  int D.42019;
  unsigned int D.42020;
  sizetype D.42023;
  sizetype D.42024;
  sizetype D.42025;
  struct MonoInst * * D.42026;
  struct MonoInst * iftmp.333;
  int D.42029;
  unsigned int D.42030;
  sizetype D.42033;
  sizetype D.42034;
  struct MonoInst * * D.42035;
  _Bool D.42037;
  long int D.42038;
  long int D.42039;
  _Bool D.42042;
  long int D.42043;
  long int D.42044;
  unsigned char D.42047;
  unsigned char D.42048;
  unsigned char D.42049;
  unsigned char D.42050;
  unsigned int D.42055;
  int D.42056;
  struct MonoDebugOptions * D.42066;
  int D.42067;
  struct MonoDebugOptions * D.42078;
  int D.42079;
  struct MonoDebugOptions * D.42087;
  int D.42088;
  unsigned int D.42090;
  unsigned int token.334;
  void * klass.335;
  struct MonoInst * * sp.336;
  struct MonoDebugOptions * D.42103;
  int D.42104;
  struct MonoDebugOptions * D.42112;
  int D.42113;
  guint16 iftmp.337;
  void * D.42119;
  unsigned int D.42120;
  int D.42121;
  struct MonoInst * * sp.338;
  int num_calls.339;
  int D.42127;
  struct MonoDebugOptions * D.42134;
  int D.42135;
  struct MonoDebugOptions * D.42143;
  int D.42144;
  unsigned int D.42146;
  _Bool D.42147;
  long int D.42148;
  long int D.42149;
  <unnamed type> key.340;
  unsigned int D.42159;
  int D.42160;
  struct MonoInst * * sp.341;
  struct MonoInst * D.42166;
  struct MonoInst * D.42169;
  unsigned char D.42170;
  unsigned char D.42171;
  int D.42172;
  int D.42173;
  unsigned int D.42177;
  unsigned int D.42178;
  int num_calls.342;
  int D.42180;
  struct MonoDebugOptions * D.42187;
  int D.42188;
  unsigned int D.42190;
  int D.42191;
  struct MonoInst * D.42192;
  unsigned int D.42193;
  int D.42194;
  int D.42198;
  struct MonoInst * D.42199;
  int D.42200;
  int D.42201;
  struct MonoInst * D.42202;
  int D.42203;
  _Bool D.42207;
  _Bool D.42208;
  _Bool D.42209;
  unsigned int D.42212;
  unsigned int D.42213;
  int D.42214;
  int D.42218;
  struct MonoInst * D.42219;
  int D.42220;
  int D.42221;
  int D.42222;
  int D.42226;
  struct MonoInst * D.42227;
  int D.42228;
  int D.42229;
  unsigned int D.42232;
  unsigned int D.42233;
  int D.42234;
  unsigned char * D.42238;
  int D.42241;
  int D.42242;
  unsigned int D.42243;
  unsigned int D.42244;
  struct MonoBasicBlock * * D.42245;
  short unsigned int D.42250;
  short unsigned int D.42251;
  _Bool D.42252;
  short unsigned int D.42253;
  _Bool D.42254;
  _Bool D.42255;
  short unsigned int D.42261;
  _Bool D.42262;
  _Bool D.42263;
  _Bool D.42264;
  short unsigned int D.42266;
  short unsigned int D.42267;
  _Bool D.42268;
  short unsigned int D.42269;
  _Bool D.42270;
  _Bool D.42271;
  void * D.42274;
  struct MonoBasicBlock * * D.42275;
  struct MonoBasicBlock * * D.42276;
  unsigned int D.42282;
  unsigned int D.42283;
  int D.42284;
  short unsigned int D.42291;
  short unsigned int D.42292;
  _Bool D.42293;
  short unsigned int D.42294;
  _Bool D.42295;
  _Bool D.42296;
  short unsigned int D.42302;
  _Bool D.42303;
  _Bool D.42304;
  _Bool D.42305;
  short unsigned int D.42307;
  short unsigned int D.42308;
  _Bool D.42309;
  short unsigned int D.42310;
  _Bool D.42311;
  _Bool D.42312;
  int D.42318;
  struct MonoInst * D.42319;
  int D.42320;
  int D.42321;
  int D.42322;
  int D.42326;
  struct MonoInst * D.42327;
  int D.42328;
  int D.42329;
  unsigned int D.42332;
  unsigned int D.42333;
  int D.42334;
  unsigned char * D.42338;
  int D.42341;
  int D.42342;
  unsigned int D.42343;
  unsigned int D.42344;
  struct MonoBasicBlock * * D.42345;
  short unsigned int D.42350;
  short unsigned int D.42351;
  _Bool D.42352;
  short unsigned int D.42353;
  _Bool D.42354;
  _Bool D.42355;
  short unsigned int D.42361;
  _Bool D.42362;
  _Bool D.42363;
  _Bool D.42364;
  short unsigned int D.42366;
  short unsigned int D.42367;
  _Bool D.42368;
  short unsigned int D.42369;
  _Bool D.42370;
  _Bool D.42371;
  void * D.42374;
  struct MonoBasicBlock * * D.42375;
  struct MonoBasicBlock * * D.42376;
  unsigned int D.42382;
  unsigned int D.42383;
  int D.42384;
  short unsigned int D.42391;
  short unsigned int D.42392;
  _Bool D.42393;
  short unsigned int D.42394;
  _Bool D.42395;
  _Bool D.42396;
  short unsigned int D.42402;
  _Bool D.42403;
  _Bool D.42404;
  _Bool D.42405;
  short unsigned int D.42407;
  short unsigned int D.42408;
  _Bool D.42409;
  short unsigned int D.42410;
  _Bool D.42411;
  _Bool D.42412;
  void * D.42417;
  struct MonoInst * D.42418;
  int D.42419;
  struct MonoInst * D.42420;
  int D.42421;
  int D.42422;
  unsigned int D.42423;
  int D.42424;
  void * D.42429;
  unsigned int D.42430;
  int D.42431;
  int D.42435;
  struct MonoInst * D.42436;
  int D.42437;
  int D.42438;
  unsigned char * D.42444;
  int D.42447;
  int D.42448;
  unsigned int D.42449;
  unsigned int D.42450;
  struct MonoBasicBlock * * D.42451;
  short unsigned int D.42456;
  short unsigned int D.42457;
  _Bool D.42458;
  short unsigned int D.42459;
  _Bool D.42460;
  _Bool D.42461;
  short unsigned int D.42467;
  _Bool D.42468;
  _Bool D.42469;
  _Bool D.42470;
  short unsigned int D.42472;
  short unsigned int D.42473;
  _Bool D.42474;
  short unsigned int D.42475;
  _Bool D.42476;
  _Bool D.42477;
  unsigned int D.42479;
  void * D.42480;
  struct MonoInst * D.42481;
  int D.42482;
  struct MonoInst * D.42483;
  int D.42484;
  int D.42485;
  struct MonoDebugOptions * D.42495;
  int D.42496;
  struct MonoDebugOptions * D.42504;
  int D.42505;
  struct MonoClass * D.42507;
  struct MonoType * D.42508;
  int D.42509;
  struct MonoInst * D.42510;
  int D.42511;
  int D.42512;
  int D.42513;
  unsigned int D.42514;
  unsigned int D.42515;
  struct MonoInst * * D.42516;
  struct MonoInst * D.42517;
  unsigned char D.42518;
  unsigned char D.42519;
  struct MonoClass * D.42520;
  unsigned int D.42521;
  int D.42522;
  struct MonoType * D.42525;
  int D.42526;
  _Bool iftmp.343;
  int D.42530;
  unsigned char D.42533;
  _Bool D.42534;
  _Bool D.42535;
  _Bool D.42536;
  int D.42537;
  unsigned char D.42539;
  struct MonoInst * iftmp.344;
  int D.42543;
  int D.42544;
  unsigned int D.42545;
  sizetype D.42548;
  sizetype D.42549;
  sizetype D.42550;
  struct MonoInst * * D.42551;
  struct MonoInst * iftmp.345;
  int D.42554;
  unsigned int D.42555;
  sizetype D.42558;
  sizetype D.42559;
  struct MonoInst * * D.42560;
  _Bool D.42562;
  long int D.42563;
  long int D.42564;
  _Bool D.42567;
  long int D.42568;
  long int D.42569;
  unsigned char D.42572;
  unsigned char D.42573;
  unsigned char D.42574;
  unsigned char D.42575;
  int D.42579;
  unsigned int D.42583;
  short unsigned int D.42584;
  unsigned int D.42585;
  int D.42586;
  struct MonoClass * D.42589;
  struct MonoInst * * sp.346;
  struct MonoDebugOptions * D.42600;
  int D.42601;
  int D.42603;
  struct MonoInst * D.42604;
  short unsigned int D.42605;
  short unsigned int D.42606;
  int D.42607;
  int D.42608;
  short unsigned int D.42609;
  unsigned char D.42610;
  struct MonoDebugOptions * D.42617;
  int D.42618;
  unsigned int D.42629;
  int D.42630;
  int D.42633;
  struct MonoInst * * sp.347;
  struct MonoDebugOptions * D.42644;
  int D.42645;
  struct MonoDebugOptions * D.42653;
  int D.42654;
  unsigned int D.42656;
  struct MonoLoaderError * D.42660;
  struct MonoDebugOptions * D.42661;
  int D.42662;
  int D.42668;
  gchar * D.42671;
  <unnamed type> D.42672;
  int D.42675;
  <unnamed type> D.42686;
  unsigned char * D.42691;
  int D.42694;
  const unsigned char * D.42699;
  unsigned int D.42700;
  struct MonoClass * D.42703;
  struct MonoClass * D.42704;
  struct MonoMethodSignature * D.42710;
  struct MonoDebugOptions * D.42711;
  int D.42712;
  <unnamed type> D.42714;
  int D.42717;
  struct MonoMethodSignature * D.42720;
  short unsigned int D.42721;
  struct MonoMethodSignature * D.42722;
  short unsigned int D.42723;
  int D.42726;
  struct MonoInst * D.42727;
  int D.42728;
  int D.42729;
  int D.42730;
  int D.42734;
  struct MonoInst * D.42735;
  int D.42736;
  int D.42737;
  char * D.42745;
  struct MonoInst * D.42746;
  struct MonoInst * argconst.348;
  struct MonoInst * * sp.349;
  int num_calls.350;
  int D.42751;
  struct MonoDebugOptions * D.42758;
  int D.42759;
  struct MonoDebugOptions * D.42767;
  int D.42768;
  unsigned int D.42770;
  struct MonoLoaderError * D.42774;
  struct MonoDebugOptions * D.42775;
  int D.42776;
  <unnamed type> D.42778;
  int D.42781;
  <unnamed type> D.42792;
  struct MonoInst * D.42795;
  struct MonoInst * * sp.351;
  struct MonoInst * D.42799;
  struct MonoInst * * sp.352;
  struct MonoInst * D.42802;
  int num_calls.353;
  int D.42804;
  struct MonoDebugOptions * D.42811;
  int D.42812;
  unsigned char * D.42814;
  struct MonoDebugOptions * D.42821;
  int D.42822;
  short unsigned int D.42824;
  struct MonoDebugOptions * D.42831;
  int D.42832;
  unsigned int D.42834;
  short unsigned int D.42835;
  unsigned int D.42836;
  int D.42837;
  struct MonoClass * D.42840;
  struct MonoInst * * sp.354;
  struct MonoDebugOptions * D.42851;
  int D.42852;
  struct MonoDebugOptions * D.42860;
  int D.42861;
  short unsigned int D.42863;
  struct MonoDebugOptions * D.42870;
  int D.42871;
  unsigned int D.42873;
  int D.42874;
  int D.42877;
  _Bool iftmp.355;
  int D.42881;
  unsigned char D.42884;
  _Bool D.42885;
  _Bool D.42886;
  _Bool D.42887;
  int D.42888;
  struct MonoInst * iftmp.356;
  struct MonoInst * iftmp.357;
  _Bool D.42900;
  long int D.42901;
  long int D.42902;
  _Bool D.42905;
  long int D.42906;
  long int D.42907;
  unsigned char D.42910;
  unsigned char D.42911;
  unsigned char D.42912;
  unsigned char D.42913;
  struct MonoInst * * sp.358;
  struct MonoDebugOptions * D.42924;
  int D.42925;
  struct MonoDebugOptions * D.42933;
  int D.42934;
  short unsigned int D.42936;
  struct MonoDebugOptions * D.42943;
  int D.42944;
  struct MonoType * * D.42948;
  struct MonoType * D.42949;
  int D.42950;
  struct MonoDebugOptions * D.42957;
  int D.42958;
  unsigned int D.42960;
  short unsigned int D.42961;
  struct MonoClass * D.42964;
  struct MonoDebugOptions * D.42974;
  int D.42975;
  struct MonoDebugOptions * D.42983;
  int D.42984;
  short unsigned int D.42986;
  struct MonoDebugOptions * D.42993;
  int D.42994;
  unsigned int D.42996;
  short unsigned int D.42997;
  unsigned int D.42998;
  int D.42999;
  struct MonoClass * D.43002;
  struct MonoInst * * sp.359;
  struct MonoDebugOptions * D.43013;
  int D.43014;
  struct MonoDebugOptions * D.43022;
  int D.43023;
  short unsigned int D.43025;
  struct MonoDebugOptions * D.43032;
  int D.43033;
  unsigned char D.43037;
  unsigned char D.43038;
  unsigned int D.43039;
  int D.43040;
  struct MonoType * D.43043;
  int D.43044;
  _Bool iftmp.360;
  int D.43048;
  unsigned char D.43051;
  _Bool D.43052;
  _Bool D.43053;
  _Bool D.43054;
  int D.43055;
  unsigned char D.43057;
  struct MonoInst * iftmp.361;
  int D.43061;
  unsigned int D.43062;
  sizetype D.43065;
  sizetype D.43066;
  sizetype D.43067;
  struct MonoInst * * D.43068;
  struct MonoInst * iftmp.362;
  int D.43071;
  unsigned int D.43072;
  sizetype D.43075;
  sizetype D.43076;
  struct MonoInst * * D.43077;
  _Bool D.43079;
  long int D.43080;
  long int D.43081;
  _Bool D.43084;
  long int D.43085;
  long int D.43086;
  unsigned char D.43089;
  unsigned char D.43090;
  unsigned char D.43091;
  unsigned char D.43092;
  struct MonoInst * * sp.363;
  struct MonoDebugOptions * D.43103;
  int D.43104;
  struct MonoDebugOptions * D.43112;
  int D.43113;
  short unsigned int D.43115;
  struct MonoDebugOptions * D.43122;
  int D.43123;
  int D.43127;
  struct MonoDebugOptions * D.43134;
  int D.43135;
  struct MonoDebugOptions * D.43143;
  int D.43144;
  struct MonoDebugOptions * D.43152;
  int D.43153;
  unsigned int D.43156;
  int D.43157;
  unsigned char D.43163;
  struct MonoInst * * sp.364;
  struct MonoDebugOptions * D.43171;
  int D.43172;
  struct MonoDebugOptions * D.43181;
  int D.43182;
  unsigned int cc.365;
  unsigned int D.43188;
  unsigned int D.43191;
  unsigned int D.43192;
  unsigned int D.43195;
  unsigned int D.43198;
  unsigned int D.43202;
  _Bool D.43203;
  long int D.43204;
  long int D.43205;
  unsigned int D.43208;
  struct MonoDebugOptions * D.43215;
  int D.43216;
  unsigned char * D.43218;
  struct MonoDebugOptions * D.43225;
  int D.43226;
  unsigned int D.43228;
  struct MonoDebugOptions * D.43235;
  int D.43236;
  struct MonoDebugOptions * D.43244;
  int D.43245;
  struct MonoClass * klass.366;
  struct MonoDebugOptions * D.43251;
  int D.43252;
  int D.43254;
  int D.43257;
  struct MonoInst * D.43258;
  int D.43259;
  int D.43260;
  struct MonoDebugOptions * D.43271;
  int D.43272;
  struct MonoDebugOptions * D.43277;
  int D.43278;
  struct MonoDebugOptions * D.43286;
  int D.43287;
  struct MonoInst * * D.43293;
  struct MonoInst * D.43294;
  short unsigned int D.43295;
  int D.43298;
  struct MonoInst * D.43307;
  struct MonoDebugOptions * D.43317;
  int D.43318;
  unsigned char D.43320;
  int D.43321;
  int D.43322;
  int D.43325;
  unsigned int D.43328;
  unsigned int D.43331;
  unsigned int D.43332;
  unsigned int D.43335;
  unsigned int D.43336;
  unsigned int D.43339;
  unsigned int D.43340;
  _Bool D.43341;
  long int D.43342;
  long int D.43343;
  int D.43346;
  struct MonoInst * D.43347;
  int D.43348;
  int D.43349;
  struct MonoInst * D.43350;
  int D.43351;
  unsigned int D.43352;
  unsigned int D.43353;
  struct MonoInst * * D.43354;
  struct MonoInst * D.43355;
  struct MonoType * D.43356;
  unsigned int D.43357;
  short unsigned int D.43358;
  struct MonoInst * D.43359;
  int D.43360;
  unsigned int D.43361;
  unsigned int D.43362;
  struct MonoInst * * D.43363;
  struct MonoInst * D.43364;
  struct MonoType * D.43365;
  struct MonoInst * D.43366;
  int D.43367;
  unsigned int D.43368;
  unsigned int D.43369;
  struct MonoInst * * D.43370;
  struct MonoInst * D.43371;
  struct MonoClass * D.43372;
  struct MonoInst * D.43373;
  int D.43374;
  unsigned int D.43375;
  unsigned int D.43376;
  struct MonoInst * * D.43377;
  struct MonoInst * D.43378;
  int D.43379;
  unsigned char D.43380;
  <unnamed type> D.43381;
  unsigned int D.43382;
  int D.43383;
  short unsigned int D.43384;
  struct MonoInst * D.43387;
  int D.43388;
  unsigned int D.43389;
  unsigned int D.43390;
  struct MonoInst * * D.43391;
  struct MonoInst * D.43392;
  struct MonoType * D.43393;
  struct MonoClass * D.43394;
  int D.43398;
  const char * D.43407;
  gchar * D.43408;
  struct MonoDebugOptions * D.43417;
  int D.43418;
  struct MonoDebugOptions * D.43426;
  int D.43427;
  unsigned int D.43431;
  unsigned char D.43433;
  unsigned char D.43434;
  int D.43437;
  unsigned char D.43441;
  struct MonoDebugOptions * D.43442;
  int D.43443;
  struct MonoType * D.43445;
  int D.43446;
  int val.367;
  unsigned int D.43448;
  int D.43449;
  struct MonoInst * * sp.368;
  const char * D.43456;
  gchar * D.43457;
  struct MonoDebugOptions * D.43466;
  int D.43467;
  struct MonoInst * iftmp.369;
  int D.43475;
  struct MonoInst * D.43476;
  int D.43477;
  int D.43478;
  unsigned char D.43479;
  unsigned char D.43480;
  struct MonoClass * D.43481;
  unsigned int D.43482;
  int D.43483;
  struct MonoType * D.43486;
  int D.43487;
  _Bool iftmp.370;
  int D.43491;
  unsigned char D.43494;
  _Bool D.43495;
  _Bool D.43496;
  _Bool D.43497;
  int D.43498;
  unsigned char D.43500;
  struct MonoInst * iftmp.371;
  int D.43504;
  int D.43505;
  unsigned int D.43506;
  sizetype D.43509;
  sizetype D.43510;
  sizetype D.43511;
  struct MonoInst * * D.43512;
  struct MonoInst * iftmp.372;
  int D.43515;
  unsigned int D.43516;
  sizetype D.43519;
  sizetype D.43520;
  struct MonoInst * * D.43521;
  _Bool D.43523;
  long int D.43524;
  long int D.43525;
  _Bool D.43528;
  long int D.43529;
  long int D.43530;
  unsigned char D.43533;
  unsigned char D.43534;
  unsigned char D.43535;
  unsigned char D.43536;
  struct MonoType * D.43540;
  unsigned int D.43541;
  short unsigned int D.43542;
  int D.43543;
  unsigned int D.43544;
  int D.43545;
  struct MonoInst * * sp.373;
  struct MonoDebugOptions * D.43554;
  int D.43555;
  struct MonoDebugOptions * D.43561;
  int D.43562;
  struct MonoDebugOptions * D.43568;
  int D.43569;
  struct MonoDebugOptions * D.43575;
  int D.43576;
  struct MonoDebugOptions * D.43584;
  int D.43585;
  struct MonoBasicBlock * D.43587;
  struct MonoBasicBlock * D.43590;
  struct MonoInst * D.43594;
  int D.43603;
  struct MonoInst * D.43604;
  int D.43605;
  int D.43606;
  int D.43607;
  unsigned int D.43608;
  unsigned int D.43609;
  struct MonoInst * * D.43610;
  struct MonoInst * D.43611;
  struct MonoType * D.43612;
  unsigned int D.43613;
  short unsigned int D.43614;
  struct MonoClass * D.43615;
  int D.43616;
  int D.43617;
  short unsigned int D.43618;
  struct MonoClass * D.43621;
  struct MonoInst * D.43627;
  struct MonoType * D.43632;
  unsigned char D.43633;
  struct MonoInst * * D.43638;
  unsigned int D.43639;
  unsigned int D.43640;
  int D.43643;
  struct MonoInst * D.43644;
  int D.43645;
  int D.43646;
  int D.43647;
  unsigned int D.43651;
  struct MonoInst * D.43658;
  short int D.43661;
  short unsigned int D.43664;
  unsigned char D.43667;
  unsigned char D.43668;
  struct MonoInst * D.43671;
  struct MonoBasicBlock * D.43675;
  struct MonoInst * D.43676;
  unsigned int D.43682;
  unsigned int D.43683;
  int D.43684;
  unsigned int D.43685;
  unsigned int D.43686;
  unsigned int D.43689;
  unsigned int D.43690;
  int D.43693;
  struct MonoInst * D.43694;
  int D.43695;
  int D.43696;
  unsigned int i.374;
  unsigned int D.43700;
  int D.43701;
  int D.43702;
  unsigned int D.43703;
  struct GHashTable * D.43704;
  unsigned int D.43707;
  int D.43708;
  int D.43711;
  gchar * D.43714;
  struct GSList * D.43715;
  struct GSList * D.43716;
  int D.43717;
  struct GSList * D.43722;
  _Bool D.43723;
  long int D.43724;
  long int D.43725;
  struct GSList * D.43728;
  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.32693 = method->klass;
      D.32694 = D.32693->image;
      D.32695 = D.32694->assembly;
      D.32696 = D.32695->corlib_internal;
      D.32697 = D.32696 != 0;
      dont_verify = (gboolean) D.32697;
      D.32698 = BIT_FIELD_REF <*method, 8, 160>;
      D.32699 = D.32698 & 124;
      D.32700 = D.32699 == 40;
      D.32701 = (int) D.32700;
      dont_verify = D.32701 | dont_verify;
      D.32698 = BIT_FIELD_REF <*method, 8, 160>;
      D.32699 = D.32698 & 124;
      D.32702 = D.32699 == 44;
      D.32703 = (int) D.32702;
      dont_verify = D.32703 | dont_verify;
      D.32698 = BIT_FIELD_REF <*method, 8, 160>;
      D.32699 = D.32698 & 124;
      D.32704 = D.32699 == 24;
      D.32705 = (int) D.32704;
      dont_verify = D.32705 | dont_verify;
      D.32698 = BIT_FIELD_REF <*method, 8, 160>;
      D.32699 = D.32698 & 124;
      D.32706 = D.32699 == 108;
      D.32707 = (int) D.32706;
      dont_verify = D.32707 | dont_verify;
      D.32698 = BIT_FIELD_REF <*method, 8, 160>;
      D.32699 = D.32698 & 124;
      D.32708 = D.32699 == 104;
      D.32709 = (int) D.32708;
      dont_verify = D.32709 | dont_verify;
      D.32710 = mono_security_get_mode ();
      D.32711 = D.32710 == 3;
      D.32712 = (int) D.32711;
      dont_verify = D.32712 | dont_verify;
      D.32698 = BIT_FIELD_REF <*method, 8, 160>;
      D.32699 = D.32698 & 124;
      D.32704 = D.32699 == 24;
      dont_verify_stloc = (gboolean) D.32704;
      D.32698 = BIT_FIELD_REF <*method, 8, 160>;
      D.32699 = D.32698 & 124;
      D.32713 = D.32699 == 100;
      D.32714 = (int) D.32713;
      dont_verify_stloc = D.32714 | dont_verify_stloc;
      D.32698 = BIT_FIELD_REF <*method, 8, 160>;
      D.32699 = D.32698 & 124;
      D.32715 = D.32699 == 20;
      D.32716 = (int) D.32715;
      dont_verify_stloc = D.32716 | dont_verify_stloc;
      D.32698 = BIT_FIELD_REF <*method, 8, 160>;
      D.32699 = D.32698 & 124;
      D.32717 = D.32699 == 84;
      D.32718 = (int) D.32717;
      dont_verify_stloc = D.32718 | dont_verify_stloc;
      D.32693 = method->klass;
      image = D.32693->image;
      header = mono_method_get_header (method);
      if (header == 0B) goto <D.32719>; else goto <D.32720>;
      <D.32719>:
      {
        struct MonoLoaderError * error;

        error = mono_loader_get_last_error ();
        if (error != 0B) goto <D.32721>; else goto <D.32722>;
        <D.32721>:
        D.32723 = error->exception_type;
        D.32724 = (int) D.32723;
        mono_cfg_set_exception (cfg, D.32724);
        goto <D.32725>;
        <D.32722>:
        mono_cfg_set_exception (cfg, 3);
        D.32726 = cfg->method;
        D.32727 = D.32726->name;
        D.32728 = monoeg_g_strdup_printf ("Missing or incorrect header for method %s", D.32727);
        cfg->exception_message = D.32728;
        <D.32725>:
        goto exception_exit;
      }
      <D.32720>:
      generic_container = mono_method_get_generic_container (method);
      sig = mono_method_signature (method);
      D.32729 = sig->hasthis;
      D.32730 = (int) D.32729;
      D.32731 = sig->param_count;
      D.32732 = (int) D.32731;
      D.32733 = D.32730 + D.32732;
      num_args = (guint) D.32733;
      ip = header->code;
      cfg->cil_start = ip;
      D.32734 = header->code_size;
      end = ip + D.32734;
      D.32735 = cfg->stat_cil_code_size;
      D.32736 = (unsigned int) D.32735;
      D.32734 = header->code_size;
      D.32737 = D.32736 + D.32734;
      D.32738 = (int) D.32737;
      cfg->stat_cil_code_size = D.32738;
      D.32739 = header->init_locals;
      init_locals = (gboolean) D.32739;
      D.32743 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.32744 = D.32743 & 32;
      if (D.32744 != 0) goto <D.32745>; else goto <D.32741>;
      <D.32745>:
      D.32726 = cfg->method;
      if (D.32726 == method) goto <D.32746>; else goto <D.32741>;
      <D.32746>:
      iftmp.68 = 1;
      goto <D.32742>;
      <D.32741>:
      iftmp.68 = 0;
      <D.32742>:
      seq_points = iftmp.68;
      D.32698 = BIT_FIELD_REF <*method, 8, 160>;
      D.32699 = D.32698 & 124;
      if (D.32699 == 20) goto <D.32747>; else goto <D.32748>;
      <D.32747>:
      seq_points = 0;
      <D.32748>:
      D.32743 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.32744 = D.32743 & 32;
      if (D.32744 != 0) goto <D.32749>; else goto <D.32750>;
      <D.32749>:
      D.32726 = cfg->method;
      if (D.32726 == method) goto <D.32751>; else goto <D.32752>;
      <D.32751>:
      minfo = mono_debug_lookup_method (method);
      if (minfo != 0B) goto <D.32753>; else goto <D.32754>;
      <D.32753>:
      {
        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.32755 = cfg->mempool;
            D.32734 = header->code_size;
            D.32756 = mono_bitset_alloc_size (D.32734, 0);
            D.32757 = mono_mempool_alloc0 (D.32755, D.32756);
            D.32734 = header->code_size;
            seq_point_locs = mono_bitset_mem_new (D.32757, D.32734, 0);
            D.32755 = cfg->mempool;
            D.32734 = header->code_size;
            D.32758 = mono_bitset_alloc_size (D.32734, 0);
            D.32759 = mono_mempool_alloc0 (D.32755, D.32758);
            D.32734 = header->code_size;
            seq_point_set_locs = mono_bitset_mem_new (D.32759, D.32734, 0);
            sym_seq_points = 1;
            i = 0;
            goto <D.29842>;
            <D.29841>:
            il_offsets.69 = il_offsets;
            i.70 = (unsigned int) i;
            D.32762 = i.70 * 4;
            D.32763 = il_offsets.69 + D.32762;
            D.32764 = *D.32763;
            D.32765 = (unsigned int) D.32764;
            D.32734 = header->code_size;
            if (D.32765 < D.32734) goto <D.32766>; else goto <D.32767>;
            <D.32766>:
            il_offsets.69 = il_offsets;
            i.70 = (unsigned int) i;
            D.32762 = i.70 * 4;
            D.32763 = il_offsets.69 + D.32762;
            D.32764 = *D.32763;
            D.32768 = (unsigned int) D.32764;
            D.32769 = D.32768 / 32;
            D.32770 = seq_point_locs->data[D.32769];
            il_offsets.69 = il_offsets;
            i.70 = (unsigned int) i;
            D.32762 = i.70 * 4;
            D.32763 = il_offsets.69 + D.32762;
            D.32764 = *D.32763;
            D.32771 = D.32764 & 31;
            D.32772 = 1 << D.32771;
            D.32773 = D.32770 | D.32772;
            seq_point_locs->data[D.32769] = D.32773;
            <D.32767>:
            i = i + 1;
            <D.29842>:
            n_il_offsets.71 = n_il_offsets;
            if (i < n_il_offsets.71) goto <D.29841>; else goto <D.29843>;
            <D.29843>:
            il_offsets.69 = il_offsets;
            monoeg_g_free (il_offsets.69);
            line_numbers.72 = line_numbers;
            monoeg_g_free (line_numbers.72);
          }
        finally
          {
            n_il_offsets = {CLOBBER};
            il_offsets = {CLOBBER};
            line_numbers = {CLOBBER};
          }
      }
      <D.32754>:
      <D.32752>:
      <D.32750>:
      init_locals = 1;
      method_definition = method;
      goto <D.29846>;
      <D.29845>:
      {
        struct MonoMethodInflated * imethod;

        imethod = method_definition;
        method_definition = imethod->declaring;
      }
      <D.29846>:
      D.32776 = BIT_FIELD_REF <*method_definition, 8, 168>;
      D.32777 = D.32776 & 16;
      if (D.32777 != 0) goto <D.29845>; else goto <D.29847>;
      <D.29847>:
      if (dont_verify == 0) goto <D.32778>; else goto <D.32779>;
      <D.32778>:
      D.32780 = cfg->domain;
      D.32781 = mini_assembly_can_skip_verification (D.32780, method);
      if (D.32781 != 0) goto <D.32782>; else goto <D.32783>;
      <D.32782>:
      dont_verify = 1;
      dont_verify_stloc = 1;
      <D.32783>:
      <D.32779>:
      D.32784 = BIT_FIELD_REF <*sig, 8, 88>;
      D.32785 = D.32784 & 2;
      if (D.32785 != 0) goto <D.32786>; else goto <D.32787>;
      <D.32786>:
      generic_context = mono_method_get_context (method);
      goto <D.32788>;
      <D.32787>:
      if (generic_container != 0B) goto <D.32789>; else goto <D.32790>;
      <D.32789>:
      generic_context = &generic_container->context;
      <D.32790>:
      <D.32788>:
      cfg->generic_context = generic_context;
      D.32791 = cfg->generic_sharing_context;
      if (D.32791 == 0B) goto <D.32792>; else goto <D.32793>;
      <D.32792>:
      D.32784 = BIT_FIELD_REF <*sig, 8, 88>;
      D.32794 = D.32784 & 4;
      D.32795 = D.32794 != 0;
      D.32796 = (long int) D.32795;
      D.32797 = __builtin_expect (D.32796, 0);
      if (D.32797 != 0) goto <D.32798>; else goto <D.32799>;
      <D.32798>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6727, "!sig->has_type_parameters");
      <D.32799>:
      <D.32793>:
      D.32800 = sig->generic_param_count;
      if (D.32800 != 0) goto <D.32801>; else goto <D.32802>;
      <D.32801>:
      D.32698 = BIT_FIELD_REF <*method, 8, 160>;
      D.32699 = D.32698 & 124;
      if (D.32699 == 0) goto <D.32803>; else goto <D.32804>;
      <D.32803>:
      D.32805 = BIT_FIELD_REF <*method, 8, 168>;
      D.32806 = D.32805 & 16;
      D.32807 = D.32806 == 0;
      D.32808 = (long int) D.32807;
      D.32809 = __builtin_expect (D.32808, 0);
      if (D.32809 != 0) goto <D.32810>; else goto <D.32811>;
      <D.32810>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6730, "method->is_inflated");
      <D.32811>:
      D.32812 = mono_method_get_context (method);
      D.32813 = D.32812->method_inst;
      D.32814 = D.32813 == 0B;
      D.32815 = (long int) D.32814;
      D.32816 = __builtin_expect (D.32815, 0);
      if (D.32816 != 0) goto <D.32817>; else goto <D.32818>;
      <D.32817>:
      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.32818>:
      <D.32804>:
      <D.32802>:
      D.32805 = BIT_FIELD_REF <*method, 8, 168>;
      D.32806 = D.32805 & 16;
      if (D.32806 != 0) goto <D.32819>; else goto <D.32820>;
      <D.32819>:
      D.32821 = mono_method_get_context (method);
      D.32822 = D.32821->method_inst;
      if (D.32822 != 0B) goto <D.32823>; else goto <D.32824>;
      <D.32823>:
      D.32800 = sig->generic_param_count;
      D.32825 = D.32800 == 0;
      D.32826 = (long int) D.32825;
      D.32827 = __builtin_expect (D.32826, 0);
      if (D.32827 != 0) goto <D.32828>; else goto <D.32829>;
      <D.32828>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6734, "sig->generic_param_count");
      <D.32829>:
      <D.32824>:
      <D.32820>:
      D.32726 = cfg->method;
      if (D.32726 == method) goto <D.32830>; else goto <D.32831>;
      <D.32830>:
      cfg->real_offset = 0;
      goto <D.32832>;
      <D.32831>:
      cfg->real_offset = inline_offset;
      <D.32832>:
      D.32755 = cfg->mempool;
      D.32734 = header->code_size;
      D.32833 = D.32734 * 4;
      D.32834 = mono_mempool_alloc0 (D.32755, D.32833);
      cfg->cil_offset_to_bb = D.32834;
      D.32734 = header->code_size;
      D.32835 = (int) D.32734;
      cfg->cil_offset_to_bb_len = D.32835;
      cfg->current_method = method;
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.32837>; else goto <D.32838>;
      <D.32837>:
      D.32839 = mono_method_full_name (method, 1);
      printf ("method to IR %s\n", D.32839);
      <D.32838>:
      D.32755 = cfg->mempool;
      D.32840 = num_args * 4;
      param_types = mono_mempool_alloc (D.32755, D.32840);
      D.32841 = BIT_FIELD_REF <*sig, 8, 80>;
      D.32842 = D.32841 & 64;
      if (D.32842 != 0) goto <D.32843>; else goto <D.32844>;
      <D.32843>:
      D.32693 = method->klass;
      D.32846 = BIT_FIELD_REF <*D.32693, 8, 160>;
      D.32847 = D.32846 & 8;
      if (D.32847 != 0) goto <D.32848>; else goto <D.32849>;
      <D.32848>:
      D.32693 = method->klass;
      iftmp.73 = &D.32693->this_arg;
      goto <D.32850>;
      <D.32849>:
      D.32693 = method->klass;
      iftmp.73 = &D.32693->byval_arg;
      <D.32850>:
      *param_types = iftmp.73;
      <D.32844>:
      n = 0;
      goto <D.29849>;
      <D.29848>:
      D.32729 = sig->hasthis;
      D.32730 = (int) D.32729;
      D.32851 = D.32730 + n;
      D.32852 = (unsigned int) D.32851;
      D.32853 = D.32852 * 4;
      D.32854 = param_types + D.32853;
      D.32855 = sig->params[n];
      *D.32854 = D.32855;
      n = n + 1;
      <D.29849>:
      D.32731 = sig->param_count;
      D.32732 = (int) D.32731;
      if (D.32732 > n) goto <D.29848>; else goto <D.29850>;
      <D.29850>:
      cfg->arg_types = param_types;
      dont_inline = monoeg_g_list_prepend (dont_inline, method);
      D.32726 = cfg->method;
      if (D.32726 == method) goto <D.32856>; else goto <D.32857>;
      <D.32856>:
      D.32858 = cfg->prof_options;
      D.32859 = D.32858 & 16384;
      if (D.32859 != 0) goto <D.32860>; else goto <D.32861>;
      <D.32860>:
      D.32726 = cfg->method;
      D.32734 = header->code_size;
      D.32862 = (int) D.32734;
      D.32863 = mono_profiler_coverage_alloc (D.32726, D.32862);
      cfg->coverage_info = D.32863;
      <D.32861>:
      D.32755 = cfg->mempool;
      start_bblock = mono_mempool_alloc0 (D.32755, 172);
      D.32864 = cfg->num_bblocks;
      D.32865 = D.32864;
      D.32866 = D.32865 + 1;
      cfg->num_bblocks = D.32866;
      D.32867 = (int) D.32865;
      start_bblock->block_num = D.32867;
      cfg->bb_entry = start_bblock;
      start_bblock->cil_code = 0B;
      start_bblock->cil_length = 0;
      D.32755 = cfg->mempool;
      end_bblock = mono_mempool_alloc0 (D.32755, 172);
      D.32864 = cfg->num_bblocks;
      D.32868 = D.32864;
      D.32869 = D.32868 + 1;
      cfg->num_bblocks = D.32869;
      D.32870 = (int) D.32868;
      end_bblock->block_num = D.32870;
      cfg->bb_exit = end_bblock;
      end_bblock->cil_code = 0B;
      end_bblock->cil_length = 0;
      D.32871 = end_bblock->flags;
      D.32872 = D.32871 | 32;
      end_bblock->flags = D.32872;
      D.32864 = cfg->num_bblocks;
      D.32873 = D.32864 != 2;
      D.32874 = (long int) D.32873;
      D.32875 = __builtin_expect (D.32874, 0);
      if (D.32875 != 0) goto <D.32876>; else goto <D.32877>;
      <D.32876>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6780, "cfg->num_bblocks == 2");
      <D.32877>:
      arg_array = cfg->args;
      D.32878 = BIT_FIELD_REF <*header, 16, 80>;
      D.32879 = D.32878 & 32767;
      if (D.32879 != 0) goto <D.32880>; else goto <D.32881>;
      <D.32880>:
      D.32882 = monoeg_g_hash_table_new (0B, 0B);
      cfg->spvars = D.32882;
      D.32883 = monoeg_g_hash_table_new (0B, 0B);
      cfg->exvars = D.32883;
      <D.32881>:
      i = 0;
      goto <D.29857>;
      <D.29856>:
      {
        struct MonoBasicBlock * try_bb;
        struct MonoExceptionClause * clause;

        D.32884 = header->clauses;
        i.74 = (unsigned int) i;
        D.32886 = i.74 * 24;
        clause = D.32884 + D.32886;
        D.32887 = cfg->cil_offset_to_bb;
        D.32888 = clause->try_offset;
        D.32889 = ip + D.32888;
        D.32890 = (int) D.32889;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.32893 = D.32890 - D.32892;
        D.32894 = (unsigned int) D.32893;
        D.32895 = D.32894 * 4;
        D.32896 = D.32887 + D.32895;
        try_bb = *D.32896;
        if (try_bb == 0B) goto <D.32897>; else goto <D.32898>;
        <D.32897>:
        D.32888 = clause->try_offset;
        D.32889 = ip + D.32888;
        if (D.32889 >= end) goto <D.32899>; else goto <D.32901>;
        <D.32901>:
        D.32888 = clause->try_offset;
        D.32902 = ip + D.32888;
        D.32903 = header->code;
        if (D.32902 < D.32903) goto <D.32899>; else goto <D.32900>;
        <D.32899>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.32905>; else goto <D.32906>;
        <D.32905>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.32907>; else goto <D.32908>;
        <D.32907>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.32908>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32906>:
        D.32909 = mini_get_debug_options ();
        D.32910 = D.32909->break_on_unverified;
        if (D.32910 != 0) goto <D.32911>; else goto unverified;
        <D.32911>:
        raise (5);
        <D.32900>:
        D.32755 = cfg->mempool;
        try_bb = mono_mempool_alloc0 (D.32755, 172);
        D.32864 = cfg->num_bblocks;
        D.32912 = D.32864;
        D.32913 = D.32912 + 1;
        cfg->num_bblocks = D.32913;
        D.32914 = (int) D.32912;
        try_bb->block_num = D.32914;
        D.32888 = clause->try_offset;
        D.32889 = ip + D.32888;
        try_bb->cil_code = D.32889;
        D.32915 = try_bb->cil_code;
        if (D.32915 != 0B) goto <D.32916>; else goto <D.32917>;
        <D.32916>:
        D.32887 = cfg->cil_offset_to_bb;
        D.32915 = try_bb->cil_code;
        D.32918 = (int) D.32915;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.32919 = D.32918 - D.32892;
        D.32920 = (unsigned int) D.32919;
        D.32921 = D.32920 * 4;
        D.32922 = D.32887 + D.32921;
        *D.32922 = try_bb;
        <D.32917>:
        D.32923 = cfg->real_offset;
        try_bb->real_offset = D.32923;
        <D.32898>:
        D.32888 = clause->try_offset;
        try_bb->real_offset = D.32888;
        try_bb->try_start = 1;
        D.32924 = i + 1;
        D.32925 = D.32924 << 8;
        D.32926 = (unsigned int) D.32925;
        D.32927 = clause->flags;
        D.32928 = D.32926 | D.32927;
        try_bb->region = D.32928;
        D.32887 = cfg->cil_offset_to_bb;
        D.32929 = clause->handler_offset;
        D.32930 = ip + D.32929;
        D.32931 = (int) D.32930;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.32932 = D.32931 - D.32892;
        D.32933 = (unsigned int) D.32932;
        D.32934 = D.32933 * 4;
        D.32935 = D.32887 + D.32934;
        tblock = *D.32935;
        if (tblock == 0B) goto <D.32936>; else goto <D.32937>;
        <D.32936>:
        D.32929 = clause->handler_offset;
        D.32930 = ip + D.32929;
        if (D.32930 >= end) goto <D.32938>; else goto <D.32940>;
        <D.32940>:
        D.32929 = clause->handler_offset;
        D.32941 = ip + D.32929;
        D.32903 = header->code;
        if (D.32941 < D.32903) goto <D.32938>; else goto <D.32939>;
        <D.32938>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.32942>; else goto <D.32943>;
        <D.32942>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.32944>; else goto <D.32945>;
        <D.32944>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.32945>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32943>:
        D.32946 = mini_get_debug_options ();
        D.32947 = D.32946->break_on_unverified;
        if (D.32947 != 0) goto <D.32948>; else goto unverified;
        <D.32948>:
        raise (5);
        <D.32939>:
        D.32755 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.32755, 172);
        D.32864 = cfg->num_bblocks;
        D.32949 = D.32864;
        D.32950 = D.32949 + 1;
        cfg->num_bblocks = D.32950;
        D.32951 = (int) D.32949;
        tblock->block_num = D.32951;
        D.32929 = clause->handler_offset;
        D.32930 = ip + D.32929;
        tblock->cil_code = D.32930;
        D.32952 = tblock->cil_code;
        if (D.32952 != 0B) goto <D.32953>; else goto <D.32954>;
        <D.32953>:
        D.32887 = cfg->cil_offset_to_bb;
        D.32952 = tblock->cil_code;
        D.32955 = (int) D.32952;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.32956 = D.32955 - D.32892;
        D.32957 = (unsigned int) D.32956;
        D.32958 = D.32957 * 4;
        D.32959 = D.32887 + D.32958;
        *D.32959 = tblock;
        <D.32954>:
        D.32923 = cfg->real_offset;
        tblock->real_offset = D.32923;
        <D.32937>:
        D.32929 = clause->handler_offset;
        tblock->real_offset = D.32929;
        D.32960 = tblock->flags;
        D.32961 = D.32960 | 16;
        tblock->flags = D.32961;
        if (0 != 0) goto <D.32962>; else goto <D.32963>;
        <D.32962>:
        link_bblock (cfg, try_bb, tblock);
        <D.32963>:
        D.32929 = clause->handler_offset;
        D.32930 = ip + D.32929;
        D.32964 = *D.32930;
        if (D.32964 == 38) goto <D.32965>; else goto <D.32966>;
        <D.32965>:
        D.32960 = tblock->flags;
        D.32967 = D.32960 | 4;
        tblock->flags = D.32967;
        <D.32966>:
        D.32968 = clause->flags;
        D.32969 = D.32968 + 4294967295;
        D.32970 = D.32969 <= 1;
        D.32971 = D.32968 == 4;
        D.32972 = D.32970 | D.32971;
        if (D.32972 != 0) goto <D.32973>; else goto <D.32974>;
        <D.32973>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 736;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        D.32980 = tblock->last_ins;
        if (D.32980 != 0B) goto <D.32981>; else goto <D.32982>;
        <D.32981>:
        D.32980 = tblock->last_ins;
        D.32980->next = ins;
        D.32980 = tblock->last_ins;
        ins->prev = D.32980;
        tblock->last_ins = ins;
        goto <D.32983>;
        <D.32982>:
        tblock->last_ins = ins;
        D.32980 = tblock->last_ins;
        tblock->code = D.32980;
        <D.32983>:
        if (seq_points != 0) goto <D.32984>; else goto <D.32985>;
        <D.32984>:
        D.32927 = clause->flags;
        if (D.32927 != 2) goto <D.32986>; else goto <D.32987>;
        <D.32986>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 341;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        D.32929 = clause->handler_offset;
        D.32988 = (int) D.32929;
        ins->data.op[1].const_val = D.32988;
        ins->flags = 1;
        D.32980 = tblock->last_ins;
        if (D.32980 != 0B) goto <D.32989>; else goto <D.32990>;
        <D.32989>:
        D.32980 = tblock->last_ins;
        D.32980->next = ins;
        D.32980 = tblock->last_ins;
        ins->prev = D.32980;
        tblock->last_ins = ins;
        goto <D.32991>;
        <D.32990>:
        tblock->last_ins = ins;
        D.32980 = tblock->last_ins;
        tblock->code = D.32980;
        <D.32991>:
        <D.32987>:
        <D.32985>:
        D.32927 = clause->flags;
        if (D.32927 == 4) goto <D.32992>; else goto <D.32993>;
        <D.32992>:
        D.32960 = tblock->flags;
        D.32994 = D.32960 | 8;
        tblock->flags = D.32994;
        <D.32993>:
        <D.32974>:
        D.32927 = clause->flags;
        if (D.32927 <= 1) goto <D.32995>; else goto <D.32996>;
        <D.32995>:
        {
          struct MonoInst * dummy_use;

          tblock->in_scount = 1;
          D.32755 = cfg->mempool;
          D.32997 = mono_mempool_alloc (D.32755, 4);
          tblock->in_stack = D.32997;
          D.32998 = tblock->in_stack;
          D.32929 = clause->handler_offset;
          D.32999 = (int) D.32929;
          D.33000 = mono_create_exvar_for_offset (cfg, D.32999);
          *D.32998 = D.33000;
          cfg->cbb = tblock;
          D.32755 = cfg->mempool;
          dummy_use = mono_mempool_alloc (D.32755, 56);
          dummy_use->data.op[1].const_val = 0;
          D.33001 = dummy_use->data.op[1].const_val;
          dummy_use->data.op[0].const_val = D.33001;
          dummy_use->prev = 0B;
          D.33002 = dummy_use->prev;
          dummy_use->next = D.33002;
          dummy_use->opcode = 796;
          dummy_use->flags = 0;
          dummy_use->type = 0;
          dummy_use->dreg = -1;
          dummy_use->sreg3 = -1;
          D.33003 = dummy_use->sreg3;
          dummy_use->sreg2 = D.33003;
          D.33004 = dummy_use->sreg2;
          dummy_use->sreg1 = D.33004;
          D.32979 = cfg->ip;
          dummy_use->cil_code = D.32979;
          D.32998 = tblock->in_stack;
          D.33005 = *D.32998;
          D.33006 = D.33005->dreg;
          dummy_use->sreg1 = D.33006;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.33009>; else goto <D.33010>;
          <D.33009>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = dummy_use;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          dummy_use->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = dummy_use;
          goto <D.33011>;
          <D.33010>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = dummy_use;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.33011>:
          D.32927 = clause->flags;
          if (D.32927 == 1) goto <D.33012>; else goto <D.33013>;
          <D.33012>:
          D.32887 = cfg->cil_offset_to_bb;
          D.33014 = clause->data.filter_offset;
          D.33015 = ip + D.33014;
          D.33016 = (int) D.33015;
          D.32891 = cfg->cil_start;
          D.32892 = (int) D.32891;
          D.33017 = D.33016 - D.32892;
          D.33018 = (unsigned int) D.33017;
          D.33019 = D.33018 * 4;
          D.33020 = D.32887 + D.33019;
          tblock = *D.33020;
          if (tblock == 0B) goto <D.33021>; else goto <D.33022>;
          <D.33021>:
          D.33014 = clause->data.filter_offset;
          D.33015 = ip + D.33014;
          if (D.33015 >= end) goto <D.33023>; else goto <D.33025>;
          <D.33025>:
          D.33014 = clause->data.filter_offset;
          D.33026 = ip + D.33014;
          D.32903 = header->code;
          if (D.33026 < D.32903) goto <D.33023>; else goto <D.33024>;
          <D.33023>:
          D.32904 = cfg->gsharedvt;
          if (D.32904 != 0) goto <D.33027>; else goto <D.33028>;
          <D.33027>:
          D.32836 = cfg->verbose_level;
          if (D.32836 > 2) goto <D.33029>; else goto <D.33030>;
          <D.33029>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.33030>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.33028>:
          D.33031 = mini_get_debug_options ();
          D.33032 = D.33031->break_on_unverified;
          if (D.33032 != 0) goto <D.33033>; else goto unverified;
          <D.33033>:
          raise (5);
          <D.33024>:
          D.32755 = cfg->mempool;
          tblock = mono_mempool_alloc0 (D.32755, 172);
          D.32864 = cfg->num_bblocks;
          D.33034 = D.32864;
          D.33035 = D.33034 + 1;
          cfg->num_bblocks = D.33035;
          D.33036 = (int) D.33034;
          tblock->block_num = D.33036;
          D.33014 = clause->data.filter_offset;
          D.33015 = ip + D.33014;
          tblock->cil_code = D.33015;
          D.32952 = tblock->cil_code;
          if (D.32952 != 0B) goto <D.33037>; else goto <D.33038>;
          <D.33037>:
          D.32887 = cfg->cil_offset_to_bb;
          D.32952 = tblock->cil_code;
          D.32955 = (int) D.32952;
          D.32891 = cfg->cil_start;
          D.32892 = (int) D.32891;
          D.32956 = D.32955 - D.32892;
          D.32957 = (unsigned int) D.32956;
          D.32958 = D.32957 * 4;
          D.32959 = D.32887 + D.32958;
          *D.32959 = tblock;
          <D.33038>:
          D.32923 = cfg->real_offset;
          tblock->real_offset = D.32923;
          <D.33022>:
          D.32960 = tblock->flags;
          D.32961 = D.32960 | 16;
          tblock->flags = D.32961;
          D.33014 = clause->data.filter_offset;
          tblock->real_offset = D.33014;
          tblock->in_scount = 1;
          D.32755 = cfg->mempool;
          D.33039 = mono_mempool_alloc (D.32755, 4);
          tblock->in_stack = D.33039;
          D.32998 = tblock->in_stack;
          D.32929 = clause->handler_offset;
          D.32999 = (int) D.32929;
          D.33040 = mono_create_exvar_for_offset (cfg, D.32999);
          *D.32998 = D.33040;
          D.32755 = cfg->mempool;
          ins = mono_mempool_alloc (D.32755, 56);
          ins->data.op[1].const_val = 0;
          D.32975 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.32975;
          ins->prev = 0B;
          D.32976 = ins->prev;
          ins->next = D.32976;
          ins->opcode = 736;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.32977 = ins->sreg3;
          ins->sreg2 = D.32977;
          D.32978 = ins->sreg2;
          ins->sreg1 = D.32978;
          D.32979 = cfg->ip;
          ins->cil_code = D.32979;
          D.32980 = tblock->last_ins;
          if (D.32980 != 0B) goto <D.33041>; else goto <D.33042>;
          <D.33041>:
          D.32980 = tblock->last_ins;
          D.32980->next = ins;
          D.32980 = tblock->last_ins;
          ins->prev = D.32980;
          tblock->last_ins = ins;
          goto <D.33043>;
          <D.33042>:
          tblock->last_ins = ins;
          D.32980 = tblock->last_ins;
          tblock->code = D.32980;
          <D.33043>:
          <D.33013>:
        }
        <D.32996>:
        D.32927 = clause->flags;
        if (D.32927 != 1) goto <D.33044>; else goto <D.33045>;
        <D.33044>:
        D.33046 = clause->data.catch_class;
        if (D.33046 != 0B) goto <D.33047>; else goto <D.33048>;
        <D.33047>:
        D.32791 = cfg->generic_sharing_context;
        if (D.32791 != 0B) goto <D.33049>; else goto <D.33050>;
        <D.33049>:
        D.33046 = clause->data.catch_class;
        D.33051 = mono_class_check_context_used (D.33046);
        if (D.33051 != 0) goto <D.33052>; else goto <D.33053>;
        <D.33052>:
        D.33057 = method->flags;
        D.33058 = (int) D.33057;
        D.33059 = D.33058 & 16;
        if (D.33059 != 0) goto <D.33054>; else goto <D.33060>;
        <D.33060>:
        D.33061 = mini_method_get_context (method);
        D.33062 = D.33061->method_inst;
        if (D.33062 != 0B) goto <D.33054>; else goto <D.33063>;
        <D.33063>:
        D.32693 = method->klass;
        D.32846 = BIT_FIELD_REF <*D.32693, 8, 160>;
        D.32847 = D.32846 & 8;
        if (D.32847 != 0) goto <D.33054>; else goto <D.33055>;
        <D.33054>:
        mono_get_vtable_var (cfg);
        goto <D.33056>;
        <D.33055>:
        {
          struct MonoInst * dummy_use;

          D.32755 = cfg->mempool;
          dummy_use = mono_mempool_alloc (D.32755, 56);
          dummy_use->data.op[1].const_val = 0;
          D.33064 = dummy_use->data.op[1].const_val;
          dummy_use->data.op[0].const_val = D.33064;
          dummy_use->prev = 0B;
          D.33065 = dummy_use->prev;
          dummy_use->next = D.33065;
          dummy_use->opcode = 796;
          dummy_use->flags = 0;
          dummy_use->type = 0;
          dummy_use->dreg = -1;
          dummy_use->sreg3 = -1;
          D.33066 = dummy_use->sreg3;
          dummy_use->sreg2 = D.33066;
          D.33067 = dummy_use->sreg2;
          dummy_use->sreg1 = D.33067;
          D.32979 = cfg->ip;
          dummy_use->cil_code = D.32979;
          D.33068 = *arg_array;
          D.33069 = D.33068->dreg;
          dummy_use->sreg1 = D.33069;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.33070>; else goto <D.33071>;
          <D.33070>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = dummy_use;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          dummy_use->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = dummy_use;
          goto <D.33072>;
          <D.33071>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = dummy_use;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.33072>:
        }
        <D.33056>:
        <D.33053>:
        <D.33050>:
        <D.33048>:
        <D.33045>:
      }
      i = i + 1;
      <D.29857>:
      D.33073 = header->num_clauses;
      D.33074 = (int) D.33073;
      if (D.33074 > i) goto <D.29856>; else goto <D.29858>;
      <D.29858>:
      goto <D.33075>;
      <D.32857>:
      D.32840 = num_args * 4;
      arg_array = __builtin_alloca (D.32840);
      cfg->cbb = start_bblock;
      cfg->args = arg_array;
      mono_save_args (cfg, sig, inline_args);
      <D.33075>:
      D.32755 = cfg->mempool;
      bblock.75 = mono_mempool_alloc0 (D.32755, 172);
      bblock = bblock.75;
      bblock.76 = bblock;
      D.32864 = cfg->num_bblocks;
      D.33078 = D.32864;
      D.33079 = D.33078 + 1;
      cfg->num_bblocks = D.33079;
      D.33080 = (int) D.33078;
      bblock.76->block_num = D.33080;
      bblock.76 = bblock;
      bblock.76->cil_code = ip;
      bblock.76 = bblock;
      cfg->cbb = bblock.76;
      cfg->ip = ip;
      bblock.76 = bblock;
      D.33081 = bblock.76->cil_code;
      if (D.33081 != 0B) goto <D.33082>; else goto <D.33083>;
      <D.33082>:
      D.32887 = cfg->cil_offset_to_bb;
      bblock.76 = bblock;
      D.33081 = bblock.76->cil_code;
      D.33084 = (int) D.33081;
      D.32891 = cfg->cil_start;
      D.32892 = (int) D.32891;
      D.33085 = D.33084 - D.32892;
      D.33086 = (unsigned int) D.33085;
      D.33087 = D.33086 * 4;
      D.33088 = D.32887 + D.33087;
      bblock.76 = bblock;
      *D.33088 = bblock.76;
      <D.33083>:
      bblock.76 = bblock;
      D.32923 = cfg->real_offset;
      bblock.76->real_offset = D.32923;
      D.32726 = cfg->method;
      if (D.32726 == method) goto <D.33089>; else goto <D.33090>;
      <D.33089>:
      breakpoint_id = mono_debugger_method_has_breakpoint (method);
      if (breakpoint_id != 0) goto <D.33091>; else goto <D.33092>;
      <D.33091>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 445;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      if (D.33093 != 0B) goto <D.33094>; else goto <D.33095>;
      <D.33094>:
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      D.33093->next = ins;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      ins->prev = D.33093;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      goto <D.33096>;
      <D.33095>:
      bblock.76 = bblock;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      D.33093 = bblock.76->last_ins;
      bblock.76->code = D.33093;
      <D.33096>:
      <D.33092>:
      <D.33090>:
      D.33097 = mono_security_get_mode ();
      if (D.33097 == 2) goto <D.33098>; else goto <D.33099>;
      <D.33098>:
      secman = mono_security_manager_get_methods ();
      <D.33099>:
      if (secman != 0B) goto <D.33103>; else goto <D.33101>;
      <D.33103>:
      D.33104 = mono_method_has_declsec (method);
      if (D.33104 != 0) goto <D.33105>; else goto <D.33101>;
      <D.33105>:
      iftmp.77 = 1;
      goto <D.33102>;
      <D.33101>:
      iftmp.77 = 0;
      <D.33102>:
      security = (MonoBoolean) iftmp.77;
      if (security != 0) goto <D.33106>; else goto <D.33107>;
      <D.33106>:
      D.32726 = cfg->method;
      if (D.32726 == method) goto <D.33108>; else goto <D.33109>;
      <D.33108>:
      security = mono_declsec_get_demands (method, &actions);
      <D.33109>:
      <D.33107>:
      if (secman != 0B) goto <D.33113>; else goto <D.33111>;
      <D.33113>:
      D.32698 = BIT_FIELD_REF <*method, 8, 160>;
      D.32699 = D.32698 & 124;
      if (D.32699 == 24) goto <D.33114>; else goto <D.33111>;
      <D.33114>:
      iftmp.78 = 1;
      goto <D.33112>;
      <D.33111>:
      iftmp.78 = 0;
      <D.33112>:
      pinvoke = (MonoBoolean) iftmp.78;
      if (pinvoke != 0) goto <D.33115>; else goto <D.33116>;
      <D.33115>:
      {
        struct MonoMethod * wrapped;

        wrapped = mono_marshal_method_from_wrapper (method);
        if (wrapped != 0B) goto <D.33119>; else goto <D.33117>;
        <D.33119>:
        D.33120 = wrapped->flags;
        D.33121 = (int) D.33120;
        D.33122 = D.33121 & 8192;
        if (D.33122 != 0) goto <D.33123>; else goto <D.33117>;
        <D.33123>:
        {
          struct MonoCustomAttrInfo * custom;

          custom = mono_custom_attrs_from_method (wrapped);
          if (custom != 0B) goto <D.33124>; else goto <D.33125>;
          <D.33124>:
          D.33126 = secman->suppressunmanagedcodesecurity;
          D.33127 = mono_custom_attrs_has_attr (custom, D.33126);
          if (D.33127 != 0) goto <D.33128>; else goto <D.33129>;
          <D.33128>:
          pinvoke = 0;
          <D.33129>:
          <D.33125>:
          if (custom != 0B) goto <D.33130>; else goto <D.33131>;
          <D.33130>:
          mono_custom_attrs_free (custom);
          <D.33131>:
          if (pinvoke != 0) goto <D.33132>; else goto <D.33133>;
          <D.33132>:
          D.33134 = wrapped->klass;
          custom = mono_custom_attrs_from_class (D.33134);
          if (custom != 0B) goto <D.33135>; else goto <D.33136>;
          <D.33135>:
          D.33126 = secman->suppressunmanagedcodesecurity;
          D.33137 = mono_custom_attrs_has_attr (custom, D.33126);
          if (D.33137 != 0) goto <D.33138>; else goto <D.33139>;
          <D.33138>:
          pinvoke = 0;
          <D.33139>:
          <D.33136>:
          if (custom != 0B) goto <D.33140>; else goto <D.33141>;
          <D.33140>:
          mono_custom_attrs_free (custom);
          <D.33141>:
          <D.33133>:
        }
        goto <D.33118>;
        <D.33117>:
        pinvoke = 0;
        <D.33118>:
      }
      <D.33116>:
      if (init_locals != 0) goto <D.33142>; else goto <D.33146>;
      <D.33146>:
      D.32726 = cfg->method;
      if (D.32726 == method) goto <D.33147>; else goto <D.33143>;
      <D.33147>:
      D.33148 = cfg->opt;
      D.33149 = D.33148 & 512;
      if (D.33149 != 0) goto <D.33142>; else goto <D.33143>;
      <D.33143>:
      D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.33151 = D.33150 & 64;
      D.33152 = D.33151 | security;
      D.33153 = D.33152 | pinvoke;
      if (D.33153 != 0) goto <D.33142>; else goto <D.33144>;
      <D.33142>:
      D.32755 = cfg->mempool;
      init_localsbb = mono_mempool_alloc0 (D.32755, 172);
      D.32864 = cfg->num_bblocks;
      D.33154 = D.32864;
      D.33155 = D.33154 + 1;
      cfg->num_bblocks = D.33155;
      D.33156 = (int) D.33154;
      init_localsbb->block_num = D.33156;
      cfg->bb_init = init_localsbb;
      D.32923 = cfg->real_offset;
      init_localsbb->real_offset = D.32923;
      start_bblock->next_bb = init_localsbb;
      bblock.76 = bblock;
      init_localsbb->next_bb = bblock.76;
      link_bblock (cfg, start_bblock, init_localsbb);
      bblock.76 = bblock;
      link_bblock (cfg, init_localsbb, bblock.76);
      cfg->cbb = init_localsbb;
      goto <D.33145>;
      <D.33144>:
      bblock.76 = bblock;
      start_bblock->next_bb = bblock.76;
      bblock.76 = bblock;
      link_bblock (cfg, start_bblock, bblock.76);
      <D.33145>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33157>; else goto <D.33158>;
      <D.33157>:
      D.32726 = cfg->method;
      if (D.32726 == method) goto <D.33159>; else goto <D.33160>;
      <D.33159>:
      {
        struct MonoGSharedVtMethodInfo * info;
        struct MonoInst * var;
        struct MonoInst * locals_var;
        int dreg;

        D.32755 = cfg->mempool;
        info = mono_mempool_alloc0 (D.32755, 8);
        D.32726 = cfg->method;
        info->method = D.32726;
        D.33161 = monoeg_g_ptr_array_new ();
        info->entries = D.33161;
        cfg->gsharedvt_info = info;
        D.33162 = mono_defaults.int_class;
        D.33163 = &D.33162->byval_arg;
        var = mono_compile_create_var (cfg, D.33163, 329);
        cfg->gsharedvt_info_var = var;
        D.33164 = mini_method_check_context_used (cfg, method);
        ins = emit_get_rgctx_gsharedvt_method (cfg, D.33164, method, info);
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.33165 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.33165;
          inst->prev = 0B;
          D.33166 = inst->prev;
          inst->next = D.33166;
          inst->opcode = 424;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.33167 = inst->sreg3;
          inst->sreg2 = D.33167;
          D.33168 = inst->sreg2;
          inst->sreg1 = D.33168;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          D.33169 = var->dreg;
          inst->dreg = D.33169;
          D.33170 = ins->dreg;
          inst->sreg1 = D.33170;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.33171>; else goto <D.33172>;
          <D.33171>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.33173>;
          <D.33172>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.33173>:
        }
        D.33162 = mono_defaults.int_class;
        D.33163 = &D.33162->byval_arg;
        locals_var = mono_compile_create_var (cfg, D.33163, 329);
        cfg->gsharedvt_locals_var = locals_var;
        D.33174 = alloc_ireg (cfg);
        dreg = (int) D.33174;
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.33175 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.33175;
          inst->prev = 0B;
          D.33176 = inst->prev;
          inst->next = D.33176;
          inst->opcode = 393;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.33177 = inst->sreg3;
          inst->sreg2 = D.33177;
          D.33178 = inst->sreg2;
          inst->sreg1 = D.33178;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          inst->dreg = dreg;
          D.33169 = var->dreg;
          inst->sreg1 = D.33169;
          inst->data.op[0].const_val = 0;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.33179>; else goto <D.33180>;
          <D.33179>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.33181>;
          <D.33180>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.33181>:
        }
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 338;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        D.33182 = locals_var->dreg;
        ins->dreg = D.33182;
        ins->sreg1 = dreg;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.33183>; else goto <D.33184>;
        <D.33183>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.33185>;
        <D.33184>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.33185>:
        cfg->gsharedvt_locals_var_ins = ins;
        D.33186 = cfg->flags;
        D.33187 = D.33186 | 1;
        cfg->flags = D.33187;
      }
      <D.33160>:
      <D.33158>:
      if (security != 0) goto <D.33188>; else goto <D.33189>;
      <D.33188>:
      D.32726 = cfg->method;
      if (D.32726 == method) goto <D.33190>; else goto <D.33191>;
      <D.33190>:
      {
        struct MonoInst * args[2];

        try
          {
            D.33192 = cfg->stat_cas_demand_generation;
            D.33193 = D.33192 + 1;
            cfg->stat_cas_demand_generation = D.33193;
            D.33194 = actions.demand.blob;
            if (D.33194 != 0B) goto <D.33195>; else goto <D.33196>;
            <D.33195>:
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.33197>; else goto <D.33198>;
            <D.33197>:
            D.32755 = cfg->mempool;
            D.33199 = mono_mempool_alloc (D.32755, 56);
            args[0] = D.33199;
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200->data.op[1].const_val = 0;
            D.33201 = D.33200->data.op[1].const_val;
            D.33200->data.op[0].const_val = D.33201;
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200->prev = 0B;
            D.33202 = D.33200->prev;
            D.33200->next = D.33202;
            D.33200 = args[0];
            D.33200->opcode = 732;
            D.33200 = args[0];
            D.33200->flags = 0;
            D.33200 = args[0];
            D.33200->type = 0;
            D.33200 = args[0];
            D.33200->dreg = -1;
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200->sreg3 = -1;
            D.33203 = D.33200->sreg3;
            D.33200->sreg2 = D.33203;
            D.33204 = D.33200->sreg2;
            D.33200->sreg1 = D.33204;
            D.33200 = args[0];
            D.32979 = cfg->ip;
            D.33200->cil_code = D.32979;
            D.33200 = args[0];
            D.32755 = cfg->mempool;
            D.33205 = actions.demand.index;
            D.33206 = mono_jump_info_token_new2 (D.32755, image, D.33205, 0B);
            D.33200->data.op[0].p = D.33206;
            D.33200 = args[0];
            D.33200->data.op[1].p = 28B;
            D.33200 = args[0];
            D.33200->type = 6;
            D.33200 = args[0];
            D.33200->klass = 0B;
            D.33200 = args[0];
            D.33207 = alloc_dreg (cfg, 6);
            D.33208 = (int) D.33207;
            D.33200->dreg = D.33208;
            goto <D.33209>;
            <D.33198>:
            D.32755 = cfg->mempool;
            D.33210 = mono_mempool_alloc (D.32755, 56);
            args[0] = D.33210;
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200->data.op[1].const_val = 0;
            D.33201 = D.33200->data.op[1].const_val;
            D.33200->data.op[0].const_val = D.33201;
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200->prev = 0B;
            D.33202 = D.33200->prev;
            D.33200->next = D.33202;
            D.33200 = args[0];
            D.33200->opcode = 362;
            D.33200 = args[0];
            D.33200->flags = 0;
            D.33200 = args[0];
            D.33200->type = 0;
            D.33200 = args[0];
            D.33200->dreg = -1;
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200->sreg3 = -1;
            D.33203 = D.33200->sreg3;
            D.33200->sreg2 = D.33203;
            D.33204 = D.33200->sreg2;
            D.33200->sreg1 = D.33204;
            D.33200 = args[0];
            D.32979 = cfg->ip;
            D.33200->cil_code = D.32979;
            D.33200 = args[0];
            D.33194 = actions.demand.blob;
            D.33200->data.op[0].p = D.33194;
            D.33200 = args[0];
            D.33200->type = 3;
            D.33200 = args[0];
            D.33211 = alloc_dreg (cfg, 3);
            D.33212 = (int) D.33211;
            D.33200->dreg = D.33212;
            <D.33209>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.33213>; else goto <D.33214>;
            <D.33213>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33200 = args[0];
            D.33008->next = D.33200;
            D.33200 = args[0];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33200->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.33200 = args[0];
            bblock.125->last_ins = D.33200;
            goto <D.33215>;
            <D.33214>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.33200 = args[0];
            bblock.125->last_ins = D.33200;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.33215>:
            D.32755 = cfg->mempool;
            D.33216 = mono_mempool_alloc (D.32755, 56);
            args[1] = D.33216;
            D.33217 = args[1];
            D.33217 = args[1];
            D.33217->data.op[1].const_val = 0;
            D.33218 = D.33217->data.op[1].const_val;
            D.33217->data.op[0].const_val = D.33218;
            D.33217 = args[1];
            D.33217 = args[1];
            D.33217->prev = 0B;
            D.33219 = D.33217->prev;
            D.33217->next = D.33219;
            D.33217 = args[1];
            D.33217->opcode = 362;
            D.33217 = args[1];
            D.33217->flags = 0;
            D.33217 = args[1];
            D.33217->type = 0;
            D.33217 = args[1];
            D.33217->dreg = -1;
            D.33217 = args[1];
            D.33217 = args[1];
            D.33217 = args[1];
            D.33217->sreg3 = -1;
            D.33220 = D.33217->sreg3;
            D.33217->sreg2 = D.33220;
            D.33221 = D.33217->sreg2;
            D.33217->sreg1 = D.33221;
            D.33217 = args[1];
            D.32979 = cfg->ip;
            D.33217->cil_code = D.32979;
            D.33217 = args[1];
            D.33222 = actions.demand.size;
            D.33223 = (int) D.33222;
            D.33217->data.op[0].const_val = D.33223;
            D.33217 = args[1];
            D.33217->type = 1;
            D.33217 = args[1];
            D.33224 = alloc_dreg (cfg, 1);
            D.33225 = (int) D.33224;
            D.33217->dreg = D.33225;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.33226>; else goto <D.33227>;
            <D.33226>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33217 = args[1];
            D.33008->next = D.33217;
            D.33217 = args[1];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33217->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.33217 = args[1];
            bblock.125->last_ins = D.33217;
            goto <D.33228>;
            <D.33227>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.33217 = args[1];
            bblock.125->last_ins = D.33217;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.33228>:
            D.33229 = secman->demand;
            mono_emit_method_call (cfg, D.33229, &args, 0B);
            <D.33196>:
            D.33230 = actions.noncasdemand.blob;
            if (D.33230 != 0B) goto <D.33231>; else goto <D.33232>;
            <D.33231>:
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.33233>; else goto <D.33234>;
            <D.33233>:
            D.32755 = cfg->mempool;
            D.33235 = mono_mempool_alloc (D.32755, 56);
            args[0] = D.33235;
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200->data.op[1].const_val = 0;
            D.33201 = D.33200->data.op[1].const_val;
            D.33200->data.op[0].const_val = D.33201;
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200->prev = 0B;
            D.33202 = D.33200->prev;
            D.33200->next = D.33202;
            D.33200 = args[0];
            D.33200->opcode = 732;
            D.33200 = args[0];
            D.33200->flags = 0;
            D.33200 = args[0];
            D.33200->type = 0;
            D.33200 = args[0];
            D.33200->dreg = -1;
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200->sreg3 = -1;
            D.33203 = D.33200->sreg3;
            D.33200->sreg2 = D.33203;
            D.33204 = D.33200->sreg2;
            D.33200->sreg1 = D.33204;
            D.33200 = args[0];
            D.32979 = cfg->ip;
            D.33200->cil_code = D.32979;
            D.33200 = args[0];
            D.32755 = cfg->mempool;
            D.33236 = actions.noncasdemand.index;
            D.33237 = mono_jump_info_token_new2 (D.32755, image, D.33236, 0B);
            D.33200->data.op[0].p = D.33237;
            D.33200 = args[0];
            D.33200->data.op[1].p = 28B;
            D.33200 = args[0];
            D.33200->type = 6;
            D.33200 = args[0];
            D.33200->klass = 0B;
            D.33200 = args[0];
            D.33238 = alloc_dreg (cfg, 6);
            D.33239 = (int) D.33238;
            D.33200->dreg = D.33239;
            goto <D.33240>;
            <D.33234>:
            D.32755 = cfg->mempool;
            D.33241 = mono_mempool_alloc (D.32755, 56);
            args[0] = D.33241;
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200->data.op[1].const_val = 0;
            D.33201 = D.33200->data.op[1].const_val;
            D.33200->data.op[0].const_val = D.33201;
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200->prev = 0B;
            D.33202 = D.33200->prev;
            D.33200->next = D.33202;
            D.33200 = args[0];
            D.33200->opcode = 362;
            D.33200 = args[0];
            D.33200->flags = 0;
            D.33200 = args[0];
            D.33200->type = 0;
            D.33200 = args[0];
            D.33200->dreg = -1;
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200->sreg3 = -1;
            D.33203 = D.33200->sreg3;
            D.33200->sreg2 = D.33203;
            D.33204 = D.33200->sreg2;
            D.33200->sreg1 = D.33204;
            D.33200 = args[0];
            D.32979 = cfg->ip;
            D.33200->cil_code = D.32979;
            D.33200 = args[0];
            D.33230 = actions.noncasdemand.blob;
            D.33200->data.op[0].p = D.33230;
            D.33200 = args[0];
            D.33200->type = 3;
            D.33200 = args[0];
            D.33242 = alloc_dreg (cfg, 3);
            D.33243 = (int) D.33242;
            D.33200->dreg = D.33243;
            <D.33240>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.33244>; else goto <D.33245>;
            <D.33244>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33200 = args[0];
            D.33008->next = D.33200;
            D.33200 = args[0];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33200->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.33200 = args[0];
            bblock.125->last_ins = D.33200;
            goto <D.33246>;
            <D.33245>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.33200 = args[0];
            bblock.125->last_ins = D.33200;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.33246>:
            D.32755 = cfg->mempool;
            D.33247 = mono_mempool_alloc (D.32755, 56);
            args[1] = D.33247;
            D.33217 = args[1];
            D.33217 = args[1];
            D.33217->data.op[1].const_val = 0;
            D.33218 = D.33217->data.op[1].const_val;
            D.33217->data.op[0].const_val = D.33218;
            D.33217 = args[1];
            D.33217 = args[1];
            D.33217->prev = 0B;
            D.33219 = D.33217->prev;
            D.33217->next = D.33219;
            D.33217 = args[1];
            D.33217->opcode = 362;
            D.33217 = args[1];
            D.33217->flags = 0;
            D.33217 = args[1];
            D.33217->type = 0;
            D.33217 = args[1];
            D.33217->dreg = -1;
            D.33217 = args[1];
            D.33217 = args[1];
            D.33217 = args[1];
            D.33217->sreg3 = -1;
            D.33220 = D.33217->sreg3;
            D.33217->sreg2 = D.33220;
            D.33221 = D.33217->sreg2;
            D.33217->sreg1 = D.33221;
            D.33217 = args[1];
            D.32979 = cfg->ip;
            D.33217->cil_code = D.32979;
            D.33217 = args[1];
            D.33248 = actions.noncasdemand.size;
            D.33249 = (int) D.33248;
            D.33217->data.op[0].const_val = D.33249;
            D.33217 = args[1];
            D.33217->type = 1;
            D.33217 = args[1];
            D.33250 = alloc_dreg (cfg, 1);
            D.33251 = (int) D.33250;
            D.33217->dreg = D.33251;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.33252>; else goto <D.33253>;
            <D.33252>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33217 = args[1];
            D.33008->next = D.33217;
            D.33217 = args[1];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33217->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.33217 = args[1];
            bblock.125->last_ins = D.33217;
            goto <D.33254>;
            <D.33253>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.33217 = args[1];
            bblock.125->last_ins = D.33217;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.33254>:
            D.33229 = secman->demand;
            mono_emit_method_call (cfg, D.33229, &args, 0B);
            <D.33232>:
            D.33255 = actions.demandchoice.blob;
            if (D.33255 != 0B) goto <D.33256>; else goto <D.33257>;
            <D.33256>:
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.33258>; else goto <D.33259>;
            <D.33258>:
            D.32755 = cfg->mempool;
            D.33260 = mono_mempool_alloc (D.32755, 56);
            args[0] = D.33260;
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200->data.op[1].const_val = 0;
            D.33201 = D.33200->data.op[1].const_val;
            D.33200->data.op[0].const_val = D.33201;
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200->prev = 0B;
            D.33202 = D.33200->prev;
            D.33200->next = D.33202;
            D.33200 = args[0];
            D.33200->opcode = 732;
            D.33200 = args[0];
            D.33200->flags = 0;
            D.33200 = args[0];
            D.33200->type = 0;
            D.33200 = args[0];
            D.33200->dreg = -1;
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200->sreg3 = -1;
            D.33203 = D.33200->sreg3;
            D.33200->sreg2 = D.33203;
            D.33204 = D.33200->sreg2;
            D.33200->sreg1 = D.33204;
            D.33200 = args[0];
            D.32979 = cfg->ip;
            D.33200->cil_code = D.32979;
            D.33200 = args[0];
            D.32755 = cfg->mempool;
            D.33261 = actions.demandchoice.index;
            D.33262 = mono_jump_info_token_new2 (D.32755, image, D.33261, 0B);
            D.33200->data.op[0].p = D.33262;
            D.33200 = args[0];
            D.33200->data.op[1].p = 28B;
            D.33200 = args[0];
            D.33200->type = 6;
            D.33200 = args[0];
            D.33200->klass = 0B;
            D.33200 = args[0];
            D.33263 = alloc_dreg (cfg, 6);
            D.33264 = (int) D.33263;
            D.33200->dreg = D.33264;
            goto <D.33265>;
            <D.33259>:
            D.32755 = cfg->mempool;
            D.33266 = mono_mempool_alloc (D.32755, 56);
            args[0] = D.33266;
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200->data.op[1].const_val = 0;
            D.33201 = D.33200->data.op[1].const_val;
            D.33200->data.op[0].const_val = D.33201;
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200->prev = 0B;
            D.33202 = D.33200->prev;
            D.33200->next = D.33202;
            D.33200 = args[0];
            D.33200->opcode = 362;
            D.33200 = args[0];
            D.33200->flags = 0;
            D.33200 = args[0];
            D.33200->type = 0;
            D.33200 = args[0];
            D.33200->dreg = -1;
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200 = args[0];
            D.33200->sreg3 = -1;
            D.33203 = D.33200->sreg3;
            D.33200->sreg2 = D.33203;
            D.33204 = D.33200->sreg2;
            D.33200->sreg1 = D.33204;
            D.33200 = args[0];
            D.32979 = cfg->ip;
            D.33200->cil_code = D.32979;
            D.33200 = args[0];
            D.33255 = actions.demandchoice.blob;
            D.33200->data.op[0].p = D.33255;
            D.33200 = args[0];
            D.33200->type = 3;
            D.33200 = args[0];
            D.33267 = alloc_dreg (cfg, 3);
            D.33268 = (int) D.33267;
            D.33200->dreg = D.33268;
            <D.33265>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.33269>; else goto <D.33270>;
            <D.33269>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33200 = args[0];
            D.33008->next = D.33200;
            D.33200 = args[0];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33200->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.33200 = args[0];
            bblock.125->last_ins = D.33200;
            goto <D.33271>;
            <D.33270>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.33200 = args[0];
            bblock.125->last_ins = D.33200;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.33271>:
            D.32755 = cfg->mempool;
            D.33272 = mono_mempool_alloc (D.32755, 56);
            args[1] = D.33272;
            D.33217 = args[1];
            D.33217 = args[1];
            D.33217->data.op[1].const_val = 0;
            D.33218 = D.33217->data.op[1].const_val;
            D.33217->data.op[0].const_val = D.33218;
            D.33217 = args[1];
            D.33217 = args[1];
            D.33217->prev = 0B;
            D.33219 = D.33217->prev;
            D.33217->next = D.33219;
            D.33217 = args[1];
            D.33217->opcode = 362;
            D.33217 = args[1];
            D.33217->flags = 0;
            D.33217 = args[1];
            D.33217->type = 0;
            D.33217 = args[1];
            D.33217->dreg = -1;
            D.33217 = args[1];
            D.33217 = args[1];
            D.33217 = args[1];
            D.33217->sreg3 = -1;
            D.33220 = D.33217->sreg3;
            D.33217->sreg2 = D.33220;
            D.33221 = D.33217->sreg2;
            D.33217->sreg1 = D.33221;
            D.33217 = args[1];
            D.32979 = cfg->ip;
            D.33217->cil_code = D.32979;
            D.33217 = args[1];
            D.33273 = actions.demandchoice.size;
            D.33274 = (int) D.33273;
            D.33217->data.op[0].const_val = D.33274;
            D.33217 = args[1];
            D.33217->type = 1;
            D.33217 = args[1];
            D.33275 = alloc_dreg (cfg, 1);
            D.33276 = (int) D.33275;
            D.33217->dreg = D.33276;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.33277>; else goto <D.33278>;
            <D.33277>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33217 = args[1];
            D.33008->next = D.33217;
            D.33217 = args[1];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33217->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.33217 = args[1];
            bblock.125->last_ins = D.33217;
            goto <D.33279>;
            <D.33278>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.33217 = args[1];
            bblock.125->last_ins = D.33217;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.33279>:
            D.33280 = secman->demandchoice;
            mono_emit_method_call (cfg, D.33280, &args, 0B);
            <D.33257>:
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      <D.33191>:
      <D.33189>:
      if (pinvoke != 0) goto <D.33281>; else goto <D.33282>;
      <D.33281>:
      D.33283 = secman->demandunmanaged;
      mono_emit_method_call (cfg, D.33283, 0B, 0B);
      <D.33282>:
      D.33284 = mono_security_get_mode ();
      if (D.33284 == 1) goto <D.33285>; else goto <D.33286>;
      <D.33285>:
      D.32698 = BIT_FIELD_REF <*method, 8, 160>;
      D.32699 = D.32698 & 124;
      if (D.32699 == 24) goto <D.33287>; else goto <D.33288>;
      <D.33287>:
      {
        struct MonoMethod * wrapped;

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

          D.33291 = wrapped->flags;
          D.33292 = (int) D.33291;
          pinvk = D.33292 & 8192;
          D.33293 = wrapped->iflags;
          D.33294 = (int) D.33293;
          icall = D.33294 & 4096;
          D.33295 = icall | pinvk;
          if (D.33295 != 0) goto <D.33296>; else goto <D.33297>;
          <D.33296>:
          D.32693 = method->klass;
          if (D.32693 != 0B) goto <D.33298>; else goto <D.33299>;
          <D.33298>:
          D.32693 = method->klass;
          D.32694 = D.32693->image;
          if (D.32694 != 0B) goto <D.33300>; else goto <D.33301>;
          <D.33300>:
          D.32693 = method->klass;
          D.32694 = D.32693->image;
          D.33302 = mono_security_core_clr_is_platform_image (D.32694);
          if (D.33302 == 0) goto <D.33303>; else goto <D.33304>;
          <D.33303>:
          {
            struct MonoException * ex;

            if (icall != 0) goto <D.33306>; else goto <D.33307>;
            <D.33306>:
            iftmp.79 = mono_get_exception_security ();
            goto <D.33308>;
            <D.33307>:
            iftmp.79 = mono_get_exception_method_access ();
            <D.33308>:
            ex = iftmp.79;
            emit_throw_exception (cfg, ex);
          }
          <D.33304>:
          <D.33301>:
          <D.33299>:
          <D.33297>:
        }
        <D.33290>:
      }
      <D.33288>:
      <D.33286>:
      D.33309 = cfg->exception_type;
      if (D.33309 != 0) goto exception_exit; else goto <D.33310>;
      <D.33310>:
      D.32734 = header->code_size;
      if (D.32734 == 0) goto <D.33311>; else goto <D.33312>;
      <D.33311>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33313>; else goto <D.33314>;
      <D.33313>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33315>; else goto <D.33316>;
      <D.33315>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33316>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33314>:
      D.33317 = mini_get_debug_options ();
      D.33318 = D.33317->break_on_unverified;
      if (D.33318 != 0) goto <D.33319>; else goto unverified;
      <D.33319>:
      raise (5);
      <D.33312>:
      D.32923 = cfg->real_offset;
      D.33320 = get_basic_blocks (cfg, header, D.32923, ip, end, &err_pos);
      if (D.33320 != 0) goto <D.33321>; else goto <D.33322>;
      <D.33321>:
      ip = err_pos;
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33323>; else goto <D.33324>;
      <D.33323>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33325>; else goto <D.33326>;
      <D.33325>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33326>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33324>:
      D.33327 = mini_get_debug_options ();
      D.33328 = D.33327->break_on_unverified;
      if (D.33328 != 0) goto <D.33329>; else goto unverified;
      <D.33329>:
      raise (5);
      <D.33322>:
      D.32726 = cfg->method;
      if (D.32726 == method) goto <D.33330>; else goto <D.33331>;
      <D.33330>:
      bblock.76 = bblock;
      breakpoint_id.80 = (unsigned int) breakpoint_id;
      mono_debug_init_method (cfg, bblock.76, breakpoint_id.80);
      <D.33331>:
      n = 0;
      goto <D.29873>;
      <D.29872>:
      D.33333 = header->locals[n];
      D.33334 = BIT_FIELD_REF <*D.33333, 16, 48>;
      D.33335 = D.33334 & 16639;
      if (D.33335 == 1) goto <D.33336>; else goto <D.33337>;
      <D.33336>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33338>; else goto <D.33339>;
      <D.33338>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33340>; else goto <D.33341>;
      <D.33340>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33341>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33339>:
      D.33342 = mini_get_debug_options ();
      D.33343 = D.33342->break_on_unverified;
      if (D.33343 != 0) goto <D.33344>; else goto unverified;
      <D.33344>:
      raise (5);
      <D.33337>:
      n = n + 1;
      <D.29873>:
      D.33345 = header->num_locals;
      D.33346 = (int) D.33345;
      if (D.33346 > n) goto <D.29872>; else goto <D.29874>;
      <D.29874>:
      class_inits = 0B;
      D.32791 = cfg->generic_sharing_context;
      if (D.32791 != 0B) goto <D.33347>; else goto <D.33348>;
      <D.33347>:
      D.32726 = cfg->method;
      if (D.32726 == method) goto <D.33349>; else goto <D.33350>;
      <D.33349>:
      D.33057 = method->flags;
      D.33058 = (int) D.33057;
      D.33059 = D.33058 & 16;
      if (D.33059 != 0) goto <D.33351>; else goto <D.33354>;
      <D.33354>:
      D.33355 = mini_method_get_context (method);
      D.33356 = D.33355->method_inst;
      if (D.33356 != 0B) goto <D.33351>; else goto <D.33357>;
      <D.33357>:
      D.32693 = method->klass;
      D.32846 = BIT_FIELD_REF <*D.32693, 8, 160>;
      D.32847 = D.32846 & 8;
      if (D.32847 != 0) goto <D.33351>; else goto <D.33352>;
      <D.33351>:
      mono_get_vtable_var (cfg);
      goto <D.33353>;
      <D.33352>:
      D.33358 = cfg->args;
      D.33359 = *D.33358;
      D.33358 = cfg->args;
      D.33359 = *D.33358;
      D.33360 = D.33359->flags;
      D.33361 = D.33360 | 4;
      D.33359->flags = D.33361;
      <D.33353>:
      <D.33350>:
      <D.33348>:
      if (is_virtual_call != 0) goto <D.33362>; else goto <D.33363>;
      <D.33362>:
      {
        struct MonoInst * arg_ins;

        D.32755 = cfg->mempool;
        arg_ins = mono_mempool_alloc (D.32755, 56);
        arg_ins->data.op[1].const_val = 0;
        D.33364 = arg_ins->data.op[1].const_val;
        arg_ins->data.op[0].const_val = D.33364;
        arg_ins->prev = 0B;
        D.33365 = arg_ins->prev;
        arg_ins->next = D.33365;
        arg_ins->opcode = 424;
        arg_ins->flags = 0;
        arg_ins->type = 0;
        arg_ins->dreg = -1;
        arg_ins->sreg3 = -1;
        D.33366 = arg_ins->sreg3;
        arg_ins->sreg2 = D.33366;
        D.33367 = arg_ins->sreg2;
        arg_ins->sreg1 = D.33367;
        D.32979 = cfg->ip;
        arg_ins->cil_code = D.32979;
        D.33368 = cfg->arg_types;
        D.33369 = *D.33368;
        D.33370 = mono_type_to_regmove (cfg, D.33369);
        D.33371 = (short unsigned int) D.33370;
        arg_ins->opcode = D.33371;
        D.33368 = cfg->arg_types;
        D.33369 = *D.33368;
        type_to_eval_stack_type (cfg, D.33369, arg_ins);
        D.33358 = cfg->args;
        D.33359 = *D.33358;
        D.33372 = D.33359->klass;
        arg_ins->klass = D.33372;
        D.33358 = cfg->args;
        D.33359 = *D.33358;
        D.33373 = D.33359->dreg;
        arg_ins->sreg1 = D.33373;
        D.33374 = arg_ins->type;
        D.33375 = (<unnamed type>) D.33374;
        D.33376 = alloc_dreg (cfg, D.33375);
        D.33377 = (int) D.33376;
        arg_ins->dreg = D.33377;
        D.33378 = arg_ins->opcode;
        if (D.33378 == 427) goto <D.33379>; else goto <D.33380>;
        <D.33379>:
        D.33368 = cfg->arg_types;
        D.33369 = *D.33368;
        D.33381 = mono_class_from_mono_type (D.33369);
        arg_ins->klass = D.33381;
        <D.33380>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.33382>; else goto <D.33383>;
        <D.33382>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = arg_ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        arg_ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = arg_ins;
        goto <D.33384>;
        <D.33383>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = arg_ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.33384>:
        D.33186 = cfg->flags;
        D.33385 = D.33186 | 128;
        cfg->flags = D.33385;
        D.32743 = BIT_FIELD_REF <*cfg, 8, 3424>;
        D.33386 = D.32743 & 64;
        if (D.33386 != 0) goto <D.33387>; else goto <D.33388>;
        <D.33387>:
        D.32743 = BIT_FIELD_REF <*cfg, 8, 3424>;
        D.33386 = D.32743 & 64;
        if (D.33386 != 0) goto <D.33389>; else goto <D.33390>;
        <D.33389>:
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.33391 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.33391;
          inst->prev = 0B;
          D.33392 = inst->prev;
          inst->next = D.33392;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.33393 = inst->sreg3;
          inst->sreg2 = D.33393;
          D.33394 = inst->sreg2;
          inst->sreg1 = D.33394;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          inst->dreg = -1;
          D.33395 = arg_ins->dreg;
          inst->sreg1 = D.33395;
          inst->data.op[1].const_val = 0;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.33396>; else goto <D.33397>;
          <D.33396>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.33398>;
          <D.33397>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.33398>:
        }
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.33399 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.33399;
          inst->prev = 0B;
          D.33400 = inst->prev;
          inst->next = D.33400;
          inst->opcode = 451;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.33401 = inst->sreg3;
          inst->sreg2 = D.33401;
          D.33402 = inst->sreg2;
          inst->sreg1 = D.33402;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          inst->data.op[1].p = "NullReferenceException";
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.33403>; else goto <D.33404>;
          <D.33403>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.33405>;
          <D.33404>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.33405>:
        }
        goto <D.33406>;
        <D.33390>:
        <D.33406>:
        goto <D.33407>;
        <D.33388>:
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.33408 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.33408;
          inst->prev = 0B;
          D.33409 = inst->prev;
          inst->next = D.33409;
          inst->opcode = 340;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.33410 = inst->sreg3;
          inst->sreg2 = D.33410;
          D.33411 = inst->sreg2;
          inst->sreg1 = D.33411;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          inst->dreg = -1;
          D.33395 = arg_ins->dreg;
          inst->sreg1 = D.33395;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.33412>; else goto <D.33413>;
          <D.33412>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.33414>;
          <D.33413>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.33414>:
        }
        <D.33407>:
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.33415 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.33415;
          inst->prev = 0B;
          D.33416 = inst->prev;
          inst->next = D.33416;
          inst->opcode = 799;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.33417 = inst->sreg3;
          inst->sreg2 = D.33417;
          D.33418 = inst->sreg2;
          inst->sreg1 = D.33418;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          inst->dreg = -1;
          D.33395 = arg_ins->dreg;
          inst->sreg1 = D.33395;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.33419>; else goto <D.33420>;
          <D.33419>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.33421>;
          <D.33420>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.33421>:
        }
      }
      <D.33363>:
      D.33422 = dont_verify == 0;
      skip_dead_blocks = (gboolean) D.33422;
      if (skip_dead_blocks != 0) goto <D.33423>; else goto <D.33424>;
      <D.33423>:
      bb = mono_basic_block_split (method, &error);
      original_bb = bb;
      D.33425 = mono_error_ok (&error);
      if (D.33425 == 0) goto <D.33426>; else goto <D.33427>;
      <D.33426>:
      mono_error_cleanup (&error);
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33428>; else goto <D.33429>;
      <D.33428>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33430>; else goto <D.33431>;
      <D.33430>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33431>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33429>:
      D.33432 = mini_get_debug_options ();
      D.33433 = D.33432->break_on_unverified;
      if (D.33433 != 0) goto <D.33434>; else goto unverified;
      <D.33434>:
      raise (5);
      <D.33427>:
      D.33435 = bb == 0B;
      D.33436 = (long int) D.33435;
      D.33437 = __builtin_expect (D.33436, 0);
      if (D.33437 != 0) goto <D.33438>; else goto <D.33439>;
      <D.33438>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7115, "bb");
      <D.33439>:
      <D.33424>:
      D.32755 = cfg->mempool;
      D.33440 = header->max_stack;
      D.33441 = (int) D.33440;
      D.33442 = D.33441 + 1;
      D.33443 = (unsigned int) D.33442;
      D.33444 = D.33443 * 4;
      sp = mono_mempool_alloc0 (D.32755, D.33444);
      stack_start = sp;
      ins_flag = 0;
      start_new_bblock = 0;
      bblock.76 = bblock;
      cfg->cbb = bblock.76;
      goto <D.29888>;
      <D.30724>:
      D.32726 = cfg->method;
      if (D.32726 == method) goto <D.33445>; else goto <D.33446>;
      <D.33445>:
      ip.81 = (int) ip;
      D.32903 = header->code;
      D.33448 = (int) D.32903;
      D.33449 = ip.81 - D.33448;
      D.33450 = (unsigned int) D.33449;
      cfg->real_offset = D.33450;
      goto <D.33451>;
      <D.33446>:
      cfg->real_offset = inline_offset;
      <D.33451>:
      cfg->ip = ip;
      context_used = 0;
      if (start_new_bblock != 0) goto <D.33452>; else goto <D.33453>;
      <D.33452>:
      bblock.76 = bblock;
      ip.81 = (int) ip;
      bblock.76 = bblock;
      D.33081 = bblock.76->cil_code;
      D.33084 = (int) D.33081;
      D.33454 = ip.81 - D.33084;
      bblock.76->cil_length = D.33454;
      if (start_new_bblock == 2) goto <D.33455>; else goto <D.33456>;
      <D.33455>:
      D.32952 = tblock->cil_code;
      D.33457 = D.32952 != ip;
      D.33458 = (long int) D.33457;
      D.33459 = __builtin_expect (D.33458, 0);
      if (D.33459 != 0) goto <D.33460>; else goto <D.33461>;
      <D.33460>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7136, "ip == tblock->cil_code");
      <D.33461>:
      goto <D.33462>;
      <D.33456>:
      D.32887 = cfg->cil_offset_to_bb;
      ip.81 = (int) ip;
      D.32891 = cfg->cil_start;
      D.32892 = (int) D.32891;
      D.33463 = ip.81 - D.32892;
      D.33464 = (unsigned int) D.33463;
      D.33465 = D.33464 * 4;
      D.33466 = D.32887 + D.33465;
      tblock = *D.33466;
      if (tblock == 0B) goto <D.33467>; else goto <D.33468>;
      <D.33467>:
      if (ip >= end) goto <D.33469>; else goto <D.33471>;
      <D.33471>:
      D.32903 = header->code;
      if (D.32903 > ip) goto <D.33469>; else goto <D.33470>;
      <D.33469>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33472>; else goto <D.33473>;
      <D.33472>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33474>; else goto <D.33475>;
      <D.33474>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33475>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33473>:
      D.33476 = mini_get_debug_options ();
      D.33477 = D.33476->break_on_unverified;
      if (D.33477 != 0) goto <D.33478>; else goto unverified;
      <D.33478>:
      raise (5);
      <D.33470>:
      D.32755 = cfg->mempool;
      tblock = mono_mempool_alloc0 (D.32755, 172);
      D.32864 = cfg->num_bblocks;
      D.33479 = D.32864;
      D.33480 = D.33479 + 1;
      cfg->num_bblocks = D.33480;
      D.33481 = (int) D.33479;
      tblock->block_num = D.33481;
      tblock->cil_code = ip;
      D.32952 = tblock->cil_code;
      if (D.32952 != 0B) goto <D.33482>; else goto <D.33483>;
      <D.33482>:
      D.32887 = cfg->cil_offset_to_bb;
      D.32952 = tblock->cil_code;
      D.32955 = (int) D.32952;
      D.32891 = cfg->cil_start;
      D.32892 = (int) D.32891;
      D.32956 = D.32955 - D.32892;
      D.32957 = (unsigned int) D.32956;
      D.32958 = D.32957 * 4;
      D.32959 = D.32887 + D.32958;
      *D.32959 = tblock;
      <D.33483>:
      D.32923 = cfg->real_offset;
      tblock->real_offset = D.32923;
      <D.33468>:
      <D.33462>:
      bblock.76 = bblock;
      bblock.76->next_bb = tblock;
      bblock = tblock;
      bblock.76 = bblock;
      cfg->cbb = bblock.76;
      start_new_bblock = 0;
      i = 0;
      goto <D.29881>;
      <D.29880>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 3) goto <D.33484>; else goto <D.33485>;
      <D.33484>:
      bblock.76 = bblock;
      D.33486 = bblock.76->in_stack;
      i.74 = (unsigned int) i;
      D.33487 = i.74 * 4;
      D.33488 = D.33486 + D.33487;
      D.33489 = *D.33488;
      D.33490 = D.33489->data.op[0].const_val;
      printf ("loading %d from temp %d\n", i, D.33490);
      <D.33485>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.33491 = cfg->varinfo;
      bblock.76 = bblock;
      D.33486 = bblock.76->in_stack;
      i.74 = (unsigned int) i;
      D.33487 = i.74 * 4;
      D.33488 = D.33486 + D.33487;
      D.33489 = *D.33488;
      D.33490 = D.33489->data.op[0].const_val;
      D.33492 = (unsigned int) D.33490;
      D.33493 = D.33492 * 4;
      D.33494 = D.33491 + D.33493;
      D.33495 = *D.33494;
      D.33496 = D.33495->data.op[1].vtype;
      D.33497 = mono_type_to_regmove (cfg, D.33496);
      D.33498 = (short unsigned int) D.33497;
      ins->opcode = D.33498;
      D.33491 = cfg->varinfo;
      bblock.76 = bblock;
      D.33486 = bblock.76->in_stack;
      i.74 = (unsigned int) i;
      D.33487 = i.74 * 4;
      D.33488 = D.33486 + D.33487;
      D.33489 = *D.33488;
      D.33490 = D.33489->data.op[0].const_val;
      D.33492 = (unsigned int) D.33490;
      D.33493 = D.33492 * 4;
      D.33494 = D.33491 + D.33493;
      D.33495 = *D.33494;
      D.33496 = D.33495->data.op[1].vtype;
      type_to_eval_stack_type (cfg, D.33496, ins);
      D.33491 = cfg->varinfo;
      bblock.76 = bblock;
      D.33486 = bblock.76->in_stack;
      i.74 = (unsigned int) i;
      D.33487 = i.74 * 4;
      D.33488 = D.33486 + D.33487;
      D.33489 = *D.33488;
      D.33490 = D.33489->data.op[0].const_val;
      D.33492 = (unsigned int) D.33490;
      D.33493 = D.33492 * 4;
      D.33494 = D.33491 + D.33493;
      D.33495 = *D.33494;
      D.33499 = D.33495->klass;
      ins->klass = D.33499;
      D.33491 = cfg->varinfo;
      bblock.76 = bblock;
      D.33486 = bblock.76->in_stack;
      i.74 = (unsigned int) i;
      D.33487 = i.74 * 4;
      D.33488 = D.33486 + D.33487;
      D.33489 = *D.33488;
      D.33490 = D.33489->data.op[0].const_val;
      D.33492 = (unsigned int) D.33490;
      D.33493 = D.33492 * 4;
      D.33494 = D.33491 + D.33493;
      D.33495 = *D.33494;
      D.33500 = D.33495->dreg;
      ins->sreg1 = D.33500;
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.33503 = alloc_dreg (cfg, D.33502);
      D.33504 = (int) D.33503;
      ins->dreg = D.33504;
      D.33505 = ins->opcode;
      if (D.33505 == 427) goto <D.33506>; else goto <D.33507>;
      <D.33506>:
      D.33491 = cfg->varinfo;
      bblock.76 = bblock;
      D.33486 = bblock.76->in_stack;
      i.74 = (unsigned int) i;
      D.33487 = i.74 * 4;
      D.33488 = D.33486 + D.33487;
      D.33489 = *D.33488;
      D.33490 = D.33489->data.op[0].const_val;
      D.33492 = (unsigned int) D.33490;
      D.33493 = D.33492 * 4;
      D.33494 = D.33491 + D.33493;
      D.33495 = *D.33494;
      D.33496 = D.33495->data.op[1].vtype;
      D.33508 = mono_class_from_mono_type (D.33496);
      ins->klass = D.33508;
      <D.33507>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.33509>; else goto <D.33510>;
      <D.33509>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.33511>;
      <D.33510>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.33511>:
      sp.82 = sp;
      sp = sp.82 + 4;
      *sp.82 = ins;
      i = i + 1;
      <D.29881>:
      bblock.76 = bblock;
      D.33513 = bblock.76->in_scount;
      D.33514 = (int) D.33513;
      if (D.33514 > i) goto <D.29880>; else goto <D.29882>;
      <D.29882>:
      if (class_inits != 0B) goto <D.33515>; else goto <D.33516>;
      <D.33515>:
      monoeg_g_slist_free (class_inits);
      <D.33516>:
      class_inits = 0B;
      goto <D.33517>;
      <D.33453>:
      D.32887 = cfg->cil_offset_to_bb;
      ip.81 = (int) ip;
      D.32891 = cfg->cil_start;
      D.32892 = (int) D.32891;
      D.33463 = ip.81 - D.32892;
      D.33464 = (unsigned int) D.33463;
      D.33465 = D.33464 * 4;
      D.33466 = D.32887 + D.33465;
      tblock = *D.33466;
      if (tblock != 0B) goto <D.33518>; else goto <D.33519>;
      <D.33518>:
      bblock.76 = bblock;
      if (tblock != bblock.76) goto <D.33520>; else goto <D.33521>;
      <D.33520>:
      bblock.76 = bblock;
      link_bblock (cfg, bblock.76, tblock);
      if (sp != stack_start) goto <D.33522>; else goto <D.33523>;
      <D.33522>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      handle_stack_args (cfg, stack_start, D.33527);
      sp = stack_start;
      D.33528 = BIT_FIELD_REF <*cfg, 8, 3400>;
      D.33529 = D.33528 & 32;
      if (D.33529 != 0) goto <D.33530>; else goto <D.33531>;
      <D.33530>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33532>; else goto <D.33533>;
      <D.33532>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33534>; else goto <D.33535>;
      <D.33534>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33535>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33533>:
      D.33536 = mini_get_debug_options ();
      D.33537 = D.33536->break_on_unverified;
      if (D.33537 != 0) goto <D.33538>; else goto unverified;
      <D.33538>:
      raise (5);
      <D.33531>:
      <D.33523>:
      bblock.76 = bblock;
      bblock.76->next_bb = tblock;
      bblock = tblock;
      bblock.76 = bblock;
      cfg->cbb = bblock.76;
      i = 0;
      goto <D.29884>;
      <D.29883>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 3) goto <D.33539>; else goto <D.33540>;
      <D.33539>:
      bblock.76 = bblock;
      D.33486 = bblock.76->in_stack;
      i.74 = (unsigned int) i;
      D.33487 = i.74 * 4;
      D.33488 = D.33486 + D.33487;
      D.33489 = *D.33488;
      D.33490 = D.33489->data.op[0].const_val;
      printf ("loading %d from temp %d\n", i, D.33490);
      <D.33540>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.33491 = cfg->varinfo;
      bblock.76 = bblock;
      D.33486 = bblock.76->in_stack;
      i.74 = (unsigned int) i;
      D.33487 = i.74 * 4;
      D.33488 = D.33486 + D.33487;
      D.33489 = *D.33488;
      D.33490 = D.33489->data.op[0].const_val;
      D.33492 = (unsigned int) D.33490;
      D.33493 = D.33492 * 4;
      D.33494 = D.33491 + D.33493;
      D.33495 = *D.33494;
      D.33496 = D.33495->data.op[1].vtype;
      D.33541 = mono_type_to_regmove (cfg, D.33496);
      D.33542 = (short unsigned int) D.33541;
      ins->opcode = D.33542;
      D.33491 = cfg->varinfo;
      bblock.76 = bblock;
      D.33486 = bblock.76->in_stack;
      i.74 = (unsigned int) i;
      D.33487 = i.74 * 4;
      D.33488 = D.33486 + D.33487;
      D.33489 = *D.33488;
      D.33490 = D.33489->data.op[0].const_val;
      D.33492 = (unsigned int) D.33490;
      D.33493 = D.33492 * 4;
      D.33494 = D.33491 + D.33493;
      D.33495 = *D.33494;
      D.33496 = D.33495->data.op[1].vtype;
      type_to_eval_stack_type (cfg, D.33496, ins);
      D.33491 = cfg->varinfo;
      bblock.76 = bblock;
      D.33486 = bblock.76->in_stack;
      i.74 = (unsigned int) i;
      D.33487 = i.74 * 4;
      D.33488 = D.33486 + D.33487;
      D.33489 = *D.33488;
      D.33490 = D.33489->data.op[0].const_val;
      D.33492 = (unsigned int) D.33490;
      D.33493 = D.33492 * 4;
      D.33494 = D.33491 + D.33493;
      D.33495 = *D.33494;
      D.33499 = D.33495->klass;
      ins->klass = D.33499;
      D.33491 = cfg->varinfo;
      bblock.76 = bblock;
      D.33486 = bblock.76->in_stack;
      i.74 = (unsigned int) i;
      D.33487 = i.74 * 4;
      D.33488 = D.33486 + D.33487;
      D.33489 = *D.33488;
      D.33490 = D.33489->data.op[0].const_val;
      D.33492 = (unsigned int) D.33490;
      D.33493 = D.33492 * 4;
      D.33494 = D.33491 + D.33493;
      D.33495 = *D.33494;
      D.33500 = D.33495->dreg;
      ins->sreg1 = D.33500;
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.33543 = alloc_dreg (cfg, D.33502);
      D.33544 = (int) D.33543;
      ins->dreg = D.33544;
      D.33505 = ins->opcode;
      if (D.33505 == 427) goto <D.33545>; else goto <D.33546>;
      <D.33545>:
      D.33491 = cfg->varinfo;
      bblock.76 = bblock;
      D.33486 = bblock.76->in_stack;
      i.74 = (unsigned int) i;
      D.33487 = i.74 * 4;
      D.33488 = D.33486 + D.33487;
      D.33489 = *D.33488;
      D.33490 = D.33489->data.op[0].const_val;
      D.33492 = (unsigned int) D.33490;
      D.33493 = D.33492 * 4;
      D.33494 = D.33491 + D.33493;
      D.33495 = *D.33494;
      D.33496 = D.33495->data.op[1].vtype;
      D.33547 = mono_class_from_mono_type (D.33496);
      ins->klass = D.33547;
      <D.33546>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.33548>; else goto <D.33549>;
      <D.33548>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.33550>;
      <D.33549>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.33550>:
      sp.85 = sp;
      sp = sp.85 + 4;
      *sp.85 = ins;
      i = i + 1;
      <D.29884>:
      bblock.76 = bblock;
      D.33513 = bblock.76->in_scount;
      D.33514 = (int) D.33513;
      if (D.33514 > i) goto <D.29883>; else goto <D.29885>;
      <D.29885>:
      monoeg_g_slist_free (class_inits);
      class_inits = 0B;
      <D.33521>:
      <D.33519>:
      <D.33517>:
      if (skip_dead_blocks != 0) goto <D.33552>; else goto <D.33553>;
      <D.33552>:
      {
        int ip_offset;

        ip.81 = (int) ip;
        D.32903 = header->code;
        D.33448 = (int) D.32903;
        ip_offset = ip.81 - D.33448;
        D.33554 = bb->end;
        if (D.33554 == ip_offset) goto <D.33555>; else goto <D.33556>;
        <D.33555>:
        bb = bb->next;
        <D.33556>:
        D.33557 = BIT_FIELD_REF <*bb, 8, 224>;
        D.33558 = D.33557 & 2;
        if (D.33558 != 0) goto <D.33559>; else goto <D.33560>;
        <D.33559>:
        {
          int op_size;

          op_size = mono_opcode_size (ip, end);
          D.33561 = op_size <= 0;
          D.33562 = (long int) D.33561;
          D.33563 = __builtin_expect (D.33562, 0);
          if (D.33563 != 0) goto <D.33564>; else goto <D.33565>;
          <D.33564>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7183, "op_size > 0");
          <D.33565>:
          D.32836 = cfg->verbose_level;
          if (D.32836 > 3) goto <D.33566>; else goto <D.33567>;
          <D.33566>:
          printf ("SKIPPING DEAD OP at %x\n", ip_offset);
          <D.33567>:
          D.33568 = ip_offset + op_size;
          D.33554 = bb->end;
          if (D.33568 == D.33554) goto <D.33569>; else goto <D.33570>;
          <D.33569>:
          D.32755 = cfg->mempool;
          ins = mono_mempool_alloc (D.32755, 56);
          ins->data.op[1].const_val = 0;
          D.32975 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.32975;
          ins->prev = 0B;
          D.32976 = ins->prev;
          ins->next = D.32976;
          ins->opcode = 316;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.32977 = ins->sreg3;
          ins->sreg2 = D.32977;
          D.32978 = ins->sreg2;
          ins->sreg1 = D.32978;
          D.32979 = cfg->ip;
          ins->cil_code = D.32979;
          bblock.76 = bblock;
          D.33093 = bblock.76->last_ins;
          if (D.33093 != 0B) goto <D.33571>; else goto <D.33572>;
          <D.33571>:
          bblock.76 = bblock;
          D.33093 = bblock.76->last_ins;
          D.33093->next = ins;
          bblock.76 = bblock;
          D.33093 = bblock.76->last_ins;
          ins->prev = D.33093;
          bblock.76 = bblock;
          bblock.76->last_ins = ins;
          goto <D.33573>;
          <D.33572>:
          bblock.76 = bblock;
          bblock.76 = bblock;
          bblock.76->last_ins = ins;
          D.33093 = bblock.76->last_ins;
          bblock.76->code = D.33093;
          <D.33573>:
          start_new_bblock = 1;
          <D.33570>:
          op_size.86 = (sizetype) op_size;
          ip = ip + op_size.86;
          // predicted unlikely by continue predictor.
          goto <D.29888>;
        }
        <D.33560>:
      }
      <D.33553>:
      if (seq_points != 0) goto <D.33577>; else goto <D.33578>;
      <D.33577>:
      if (sp == stack_start) goto <D.33575>; else goto <D.33579>;
      <D.33579>:
      if (sym_seq_points != 0) goto <D.33580>; else goto <D.33576>;
      <D.33580>:
      ip.81 = (int) ip;
      D.32903 = header->code;
      D.33448 = (int) D.32903;
      D.33449 = ip.81 - D.33448;
      D.33581 = (unsigned int) D.33449;
      D.33582 = D.33581 / 32;
      D.33583 = seq_point_locs->data[D.33582];
      ip.81 = (int) ip;
      D.32903 = header->code;
      D.33448 = (int) D.32903;
      D.33449 = ip.81 - D.33448;
      D.33584 = D.33449 & 31;
      D.33585 = 1 << D.33584;
      D.33586 = D.33583 & D.33585;
      if (D.33586 != 0) goto <D.33575>; else goto <D.33576>;
      <D.33575>:
      {
        gboolean intr_loc;

        D.32903 = header->code;
        if (D.32903 == ip) goto <D.33588>; else goto <D.33591>;
        <D.33591>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 == 0B) goto <D.33592>; else goto <D.33589>;
        <D.33592>:
        D.33593 = cfg->header;
        D.33594 = BIT_FIELD_REF <*D.33593, 16, 80>;
        D.33595 = D.33594 & 32767;
        if (D.33595 != 0) goto <D.33588>; else goto <D.33589>;
        <D.33588>:
        iftmp.87 = 1;
        goto <D.33590>;
        <D.33589>:
        iftmp.87 = 0;
        <D.33590>:
        intr_loc = iftmp.87;
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 341;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        ip.81 = (int) ip;
        D.32903 = header->code;
        D.33448 = (int) D.32903;
        D.33449 = ip.81 - D.33448;
        ins->data.op[1].const_val = D.33449;
        D.33596 = intr_loc != 0;
        D.33597 = (unsigned char) D.33596;
        ins->flags = D.33597;
        if (sp != stack_start) goto <D.33598>; else goto <D.33599>;
        <D.33598>:
        D.33600 = ins->flags;
        D.33601 = D.33600 | 4;
        ins->flags = D.33601;
        <D.33599>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.33602>; else goto <D.33603>;
        <D.33602>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.33604>;
        <D.33603>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.33604>:
        if (sym_seq_points != 0) goto <D.33605>; else goto <D.33606>;
        <D.33605>:
        ip.81 = (int) ip;
        D.32903 = header->code;
        D.33448 = (int) D.32903;
        D.33449 = ip.81 - D.33448;
        D.33581 = (unsigned int) D.33449;
        D.33607 = D.33581 / 32;
        D.33608 = seq_point_set_locs->data[D.33607];
        ip.81 = (int) ip;
        D.32903 = header->code;
        D.33448 = (int) D.32903;
        D.33449 = ip.81 - D.33448;
        D.33584 = D.33449 & 31;
        D.33585 = 1 << D.33584;
        D.33609 = D.33608 | D.33585;
        seq_point_set_locs->data[D.33607] = D.33609;
        <D.33606>:
      }
      <D.33576>:
      <D.33578>:
      bblock.76 = bblock;
      D.32923 = cfg->real_offset;
      bblock.76->real_offset = D.32923;
      D.32726 = cfg->method;
      if (D.32726 == method) goto <D.33610>; else goto <D.33611>;
      <D.33610>:
      D.33612 = cfg->coverage_info;
      if (D.33612 != 0B) goto <D.33613>; else goto <D.33614>;
      <D.33613>:
      {
        guint32 cil_offset;

        ip.81 = (int) ip;
        D.32903 = header->code;
        D.33448 = (int) D.32903;
        D.33449 = ip.81 - D.33448;
        cil_offset = (guint32) D.33449;
        D.33612 = cfg->coverage_info;
        D.33612->data[cil_offset].cil_code = ip;
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 362;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        D.33612 = cfg->coverage_info;
        D.33615 = &D.33612->data[cil_offset].count;
        ins->data.op[0].p = D.33615;
        ins->type = 3;
        D.33616 = alloc_dreg (cfg, 3);
        D.33617 = (int) D.33616;
        ins->dreg = D.33617;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.33618>; else goto <D.33619>;
        <D.33618>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.33620>;
        <D.33619>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.33620>:
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.33621 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.33621;
          inst->prev = 0B;
          D.33622 = inst->prev;
          inst->next = D.33622;
          inst->opcode = 381;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.33623 = inst->sreg3;
          inst->sreg2 = D.33623;
          D.33624 = inst->sreg2;
          inst->sreg1 = D.33624;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          D.33170 = ins->dreg;
          inst->dreg = D.33170;
          inst->data.op[0].const_val = 0;
          inst->data.op[1].const_val = 1;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.33625>; else goto <D.33626>;
          <D.33625>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.33627>;
          <D.33626>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.33627>:
        }
      }
      <D.33614>:
      <D.33611>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 3) goto <D.33628>; else goto <D.33629>;
      <D.33628>:
      bblock.76 = bblock;
      D.33630 = bblock.76->block_num;
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      D.33631 = mono_disasm_code_one (0B, method, ip, 0B);
      printf ("converting (in B%d: stack: %d) %s", D.33630, D.33527, D.33631);
      <D.33629>:
      D.33632 = *ip;
      D.33633 = (int) D.33632;
      switch (D.33633) <default: <D.30723>, case 0: <D.29892>, case 1: <D.29894>, case 2: <D.29895>, case 3: <D.29896>, case 4: <D.29897>, case 5: <D.29898>, case 6: <D.29899>, case 7: <D.29900>, case 8: <D.29901>, case 9: <D.29902>, case 10: <D.29903>, case 11: <D.29904>, case 12: <D.29905>, case 13: <D.29906>, case 14: <D.29907>, case 15: <D.29908>, case 16: <D.29911>, case 17: <D.29912>, case 18: <D.29913>, case 19: <D.29917>, case 20: <D.29918>, case 21: <D.29919>, case 22: <D.29920>, case 23: <D.29921>, case 24: <D.29922>, case 25: <D.29923>, case 26: <D.29924>, case 27: <D.29925>, case 28: <D.29926>, case 29: <D.29927>, case 30: <D.29928>, case 31: <D.29929>, case 32: <D.29930>, case 33: <D.29931>, case 34: <D.29932>, case 35: <D.29938>, case 37: <D.29944>, case 38: <D.29947>, case 39: <D.29948>, case 40: <D.29962>, case 41: <D.29961>, case 42: <D.30097>, case 43: <D.30103>, case 44: <D.30116>, case 45: <D.30117>, case 46: <D.30104>, case 47: <D.30105>, case 48: <D.30106>, case 49: <D.30107>, case 50: <D.30108>, case 51: <D.30109>, case 52: <D.30110>, case 53: <D.30111>, case 54: <D.30112>, case 55: <D.30113>, case 56: <D.30115>, case 57: <D.30118>, case 58: <D.30119>, case 59: <D.30124>, case 60: <D.30125>, case 61: <D.30126>, case 62: <D.30127>, case 63: <D.30128>, case 64: <D.30129>, case 65: <D.30130>, case 66: <D.30131>, case 67: <D.30132>, case 68: <D.30133>, case 69: <D.30135>, case 70: <D.30163>, case 71: <D.30164>, case 72: <D.30165>, case 73: <D.30166>, case 74: <D.30167>, case 75: <D.30168>, case 76: <D.30169>, case 77: <D.30170>, case 78: <D.30171>, case 79: <D.30172>, case 80: <D.30173>, case 81: <D.30180>, case 82: <D.30181>, case 83: <D.30182>, case 84: <D.30183>, case 85: <D.30184>, case 86: <D.30185>, case 87: <D.30186>, case 88: <D.30190>, case 89: <D.30191>, case 90: <D.30188>, case 91: <D.30192>, case 92: <D.30193>, case 93: <D.30194>, case 94: <D.30195>, case 95: <D.30196>, case 96: <D.30197>, case 97: <D.30198>, case 98: <D.30199>, case 99: <D.30200>, case 100: <D.30201>, case 101: <D.30203>, case 102: <D.30204>, case 103: <D.30205>, case 104: <D.30206>, case 105: <D.30207>, case 106: <D.30211>, case 107: <D.30208>, case 108: <D.30209>, case 109: <D.30210>, case 110: <D.30212>, case 111: <D.29963>, case 112: <D.30245>, case 113: <D.30249>, case 114: <D.30259>, case 115: <D.30264>, case 116: <D.30288>, case 117: <D.30294>, case 118: <D.30215>, case 119: <D.30721>, case 120: <D.30722>, case 121: <D.30321>, case 122: <D.30551>, case 123: <D.30325>, case 124: <D.30326>, case 125: <D.30327>, case 126: <D.30328>, case 127: <D.30329>, case 128: <D.30330>, case 129: <D.30427>, case 130: <D.30225>, case 131: <D.30226>, case 132: <D.30227>, case 133: <D.30228>, case 134: <D.30229>, case 135: <D.30230>, case 136: <D.30231>, case 137: <D.30232>, case 138: <D.30233>, case 139: <D.30234>, case 140: <D.30306>, case 141: <D.30428>, case 142: <D.30442>, case 143: <D.30443>, case 144: <D.30446>, case 145: <D.30447>, case 146: <D.30448>, case 147: <D.30449>, case 148: <D.30450>, case 149: <D.30451>, case 150: <D.30452>, case 151: <D.30453>, case 152: <D.30454>, case 153: <D.30455>, case 154: <D.30456>, case 155: <D.30486>, case 156: <D.30487>, case 157: <D.30488>, case 158: <D.30489>, case 159: <D.30490>, case 160: <D.30491>, case 161: <D.30492>, case 162: <D.30493>, case 163: <D.30445>, case 164: <D.30494>, case 165: <D.30300>, case 179: <D.30218>, case 180: <D.30222>, case 181: <D.30219>, case 182: <D.30223>, case 183: <D.30217>, case 184: <D.30224>, case 185: <D.30213>, case 186: <D.30214>, case 194: <D.30496>, case 195: <D.30495>, case 198: <D.30507>, case 208: <D.30526>, case 209: <D.30235>, case 210: <D.30236>, case 211: <D.30237>, case 212: <D.30220>, case 213: <D.30221>, case 214: <D.30239>, case 215: <D.30240>, case 216: <D.30241>, case 217: <D.30242>, case 218: <D.30243>, case 219: <D.30244>, case 220: <D.30552>, case 221: <D.30556>, case 222: <D.30557>, case 223: <D.30187>, case 224: <D.30238>, case 240: <D.30578>, case 254: <D.30639>>
      <D.29892>:
      D.33634 = seq_points != 0;
      D.33635 = sym_seq_points == 0;
      D.33636 = D.33634 & D.33635;
      if (D.33636 != 0) goto <D.33637>; else goto <D.33638>;
      <D.33637>:
      if (sp != stack_start) goto <D.33639>; else goto <D.33640>;
      <D.33639>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 341;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      ip.81 = (int) ip;
      D.32903 = header->code;
      D.33448 = (int) D.32903;
      D.33449 = ip.81 - D.33448;
      ins->data.op[1].const_val = D.33449;
      ins->flags = 0;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.33641>; else goto <D.33642>;
      <D.33641>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.33643>;
      <D.33642>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.33643>:
      <D.33640>:
      <D.33638>:
      D.32743 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.33644 = D.32743 & 16;
      if (D.33644 != 0) goto <D.33645>; else goto <D.33646>;
      <D.33645>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 317;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      goto <D.33647>;
      <D.33646>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 316;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      <D.33647>:
      ip = ip + 1;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      if (D.33093 != 0B) goto <D.33648>; else goto <D.33649>;
      <D.33648>:
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      D.33093->next = ins;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      ins->prev = D.33093;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      goto <D.33650>;
      <D.33649>:
      bblock.76 = bblock;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      D.33093 = bblock.76->last_ins;
      bblock.76->code = D.33093;
      <D.33650>:
      goto <D.29893>;
      <D.29894>:
      D.32726 = cfg->method;
      D.33651 = should_insert_brekpoint (D.32726);
      if (D.33651 != 0) goto <D.33652>; else goto <D.33653>;
      <D.33652>:
      ins = mono_emit_jit_icall (cfg, mono_debugger_agent_user_break, 0B);
      goto <D.33654>;
      <D.33653>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 316;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      <D.33654>:
      ip = ip + 1;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      if (D.33093 != 0B) goto <D.33655>; else goto <D.33656>;
      <D.33655>:
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      D.33093->next = ins;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      ins->prev = D.33093;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      goto <D.33657>;
      <D.33656>:
      bblock.76 = bblock;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      D.33093 = bblock.76->last_ins;
      bblock.76->code = D.33093;
      <D.33657>:
      goto <D.29893>;
      <D.29895>:
      <D.29896>:
      <D.29897>:
      <D.29898>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      D.33440 = header->max_stack;
      D.33441 = (int) D.33440;
      if (D.33527 >= D.33441) goto <D.33658>; else goto <D.33659>;
      <D.33658>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33660>; else goto <D.33661>;
      <D.33660>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33662>; else goto <D.33663>;
      <D.33662>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33663>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33661>:
      D.33664 = mini_get_debug_options ();
      D.33665 = D.33664->break_on_unverified;
      if (D.33665 != 0) goto <D.33666>; else goto unverified;
      <D.33666>:
      raise (5);
      <D.33659>:
      D.33632 = *ip;
      D.33633 = (int) D.33632;
      n = D.33633 + -2;
      n.88 = (unsigned int) n;
      if (n.88 >= num_args) goto <D.33668>; else goto <D.33669>;
      <D.33668>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33670>; else goto <D.33671>;
      <D.33670>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33672>; else goto <D.33673>;
      <D.33672>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33673>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33671>:
      D.33674 = mini_get_debug_options ();
      D.33675 = D.33674->break_on_unverified;
      if (D.33675 != 0) goto <D.33676>; else goto unverified;
      <D.33676>:
      raise (5);
      <D.33669>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.33368 = cfg->arg_types;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33678 = D.33368 + D.33677;
      D.33679 = *D.33678;
      D.33680 = mono_type_to_regmove (cfg, D.33679);
      D.33681 = (short unsigned int) D.33680;
      ins->opcode = D.33681;
      D.33368 = cfg->arg_types;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33678 = D.33368 + D.33677;
      D.33679 = *D.33678;
      type_to_eval_stack_type (cfg, D.33679, ins);
      D.33358 = cfg->args;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33682 = D.33358 + D.33677;
      D.33683 = *D.33682;
      D.33684 = D.33683->klass;
      ins->klass = D.33684;
      D.33358 = cfg->args;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33682 = D.33358 + D.33677;
      D.33683 = *D.33682;
      D.33685 = D.33683->dreg;
      ins->sreg1 = D.33685;
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.33686 = alloc_dreg (cfg, D.33502);
      D.33687 = (int) D.33686;
      ins->dreg = D.33687;
      D.33505 = ins->opcode;
      if (D.33505 == 427) goto <D.33688>; else goto <D.33689>;
      <D.33688>:
      D.33368 = cfg->arg_types;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33678 = D.33368 + D.33677;
      D.33679 = *D.33678;
      D.33690 = mono_class_from_mono_type (D.33679);
      ins->klass = D.33690;
      <D.33689>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.33691>; else goto <D.33692>;
      <D.33691>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.33693>;
      <D.33692>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.33693>:
      ip = ip + 1;
      sp.89 = sp;
      sp = sp.89 + 4;
      *sp.89 = ins;
      goto <D.29893>;
      <D.29899>:
      <D.29900>:
      <D.29901>:
      <D.29902>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      D.33440 = header->max_stack;
      D.33441 = (int) D.33440;
      if (D.33527 >= D.33441) goto <D.33695>; else goto <D.33696>;
      <D.33695>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33697>; else goto <D.33698>;
      <D.33697>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33699>; else goto <D.33700>;
      <D.33699>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33700>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33698>:
      D.33701 = mini_get_debug_options ();
      D.33702 = D.33701->break_on_unverified;
      if (D.33702 != 0) goto <D.33703>; else goto unverified;
      <D.33703>:
      raise (5);
      <D.33696>:
      D.33632 = *ip;
      D.33633 = (int) D.33632;
      n = D.33633 + -6;
      n.88 = (unsigned int) n;
      D.33345 = header->num_locals;
      D.33704 = (unsigned int) D.33345;
      if (n.88 >= D.33704) goto <D.33705>; else goto <D.33706>;
      <D.33705>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33707>; else goto <D.33708>;
      <D.33707>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33709>; else goto <D.33710>;
      <D.33709>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33710>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33708>:
      D.33711 = mini_get_debug_options ();
      D.33712 = D.33711->break_on_unverified;
      if (D.33712 != 0) goto <D.33713>; else goto unverified;
      <D.33713>:
      raise (5);
      <D.33706>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.33333 = header->locals[n];
      D.33714 = mono_type_to_regmove (cfg, D.33333);
      D.33715 = (short unsigned int) D.33714;
      ins->opcode = D.33715;
      D.33333 = header->locals[n];
      type_to_eval_stack_type (cfg, D.33333, ins);
      D.33716 = cfg->locals;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33717 = D.33716 + D.33677;
      D.33718 = *D.33717;
      D.33719 = D.33718->klass;
      ins->klass = D.33719;
      D.33716 = cfg->locals;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33717 = D.33716 + D.33677;
      D.33718 = *D.33717;
      D.33720 = D.33718->dreg;
      ins->sreg1 = D.33720;
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.33721 = alloc_dreg (cfg, D.33502);
      D.33722 = (int) D.33721;
      ins->dreg = D.33722;
      D.33505 = ins->opcode;
      if (D.33505 == 427) goto <D.33723>; else goto <D.33724>;
      <D.33723>:
      D.33333 = header->locals[n];
      D.33725 = mono_class_from_mono_type (D.33333);
      ins->klass = D.33725;
      <D.33724>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.33726>; else goto <D.33727>;
      <D.33726>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.33728>;
      <D.33727>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.33728>:
      ip = ip + 1;
      sp.90 = sp;
      sp = sp.90 + 4;
      *sp.90 = ins;
      goto <D.29893>;
      <D.29903>:
      <D.29904>:
      <D.29905>:
      <D.29906>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.33730>; else goto <D.33731>;
      <D.33730>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33732>; else goto <D.33733>;
      <D.33732>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33734>; else goto <D.33735>;
      <D.33734>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33735>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33733>:
      D.33736 = mini_get_debug_options ();
      D.33737 = D.33736->break_on_unverified;
      if (D.33737 != 0) goto <D.33738>; else goto unverified;
      <D.33738>:
      raise (5);
      <D.33731>:
      D.33632 = *ip;
      D.33633 = (int) D.33632;
      n = D.33633 + -10;
      n.88 = (unsigned int) n;
      D.33345 = header->num_locals;
      D.33704 = (unsigned int) D.33345;
      if (n.88 >= D.33704) goto <D.33739>; else goto <D.33740>;
      <D.33739>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33741>; else goto <D.33742>;
      <D.33741>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33743>; else goto <D.33744>;
      <D.33743>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33744>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33742>:
      D.33745 = mini_get_debug_options ();
      D.33746 = D.33745->break_on_unverified;
      if (D.33746 != 0) goto <D.33747>; else goto unverified;
      <D.33747>:
      raise (5);
      <D.33740>:
      sp = sp + 4294967292;
      if (dont_verify_stloc == 0) goto <D.33748>; else goto <D.33749>;
      <D.33748>:
      D.33333 = header->locals[n];
      D.33750 = *sp;
      D.33751 = target_type_is_incompatible (cfg, D.33333, D.33750);
      if (D.33751 != 0) goto <D.33752>; else goto <D.33753>;
      <D.33752>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33754>; else goto <D.33755>;
      <D.33754>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33756>; else goto <D.33757>;
      <D.33756>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33757>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33755>:
      D.33758 = mini_get_debug_options ();
      D.33759 = D.33758->break_on_unverified;
      if (D.33759 != 0) goto <D.33760>; else goto unverified;
      <D.33760>:
      raise (5);
      <D.33753>:
      <D.33749>:
      emit_stloc_ir (cfg, sp, header, n);
      ip = ip + 1;
      inline_costs = inline_costs + 1;
      goto <D.29893>;
      <D.29907>:
      D.33761 = ip + 2;
      if (D.33761 > end) goto <D.33762>; else goto <D.33763>;
      <D.33762>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33764>; else goto <D.33765>;
      <D.33764>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33766>; else goto <D.33767>;
      <D.33766>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33767>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33765>:
      D.33768 = mini_get_debug_options ();
      D.33769 = D.33768->break_on_unverified;
      if (D.33769 != 0) goto <D.33770>; else goto unverified;
      <D.33770>:
      raise (5);
      <D.33763>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      D.33440 = header->max_stack;
      D.33441 = (int) D.33440;
      if (D.33527 >= D.33441) goto <D.33771>; else goto <D.33772>;
      <D.33771>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33773>; else goto <D.33774>;
      <D.33773>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33775>; else goto <D.33776>;
      <D.33775>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33776>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33774>:
      D.33777 = mini_get_debug_options ();
      D.33778 = D.33777->break_on_unverified;
      if (D.33778 != 0) goto <D.33779>; else goto unverified;
      <D.33779>:
      raise (5);
      <D.33772>:
      D.33780 = ip + 1;
      D.33781 = *D.33780;
      n = (int) D.33781;
      n.88 = (unsigned int) n;
      if (n.88 >= num_args) goto <D.33782>; else goto <D.33783>;
      <D.33782>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33784>; else goto <D.33785>;
      <D.33784>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33786>; else goto <D.33787>;
      <D.33786>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33787>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33785>:
      D.33788 = mini_get_debug_options ();
      D.33789 = D.33788->break_on_unverified;
      if (D.33789 != 0) goto <D.33790>; else goto unverified;
      <D.33790>:
      raise (5);
      <D.33783>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.33368 = cfg->arg_types;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33678 = D.33368 + D.33677;
      D.33679 = *D.33678;
      D.33791 = mono_type_to_regmove (cfg, D.33679);
      D.33792 = (short unsigned int) D.33791;
      ins->opcode = D.33792;
      D.33368 = cfg->arg_types;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33678 = D.33368 + D.33677;
      D.33679 = *D.33678;
      type_to_eval_stack_type (cfg, D.33679, ins);
      D.33358 = cfg->args;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33682 = D.33358 + D.33677;
      D.33683 = *D.33682;
      D.33684 = D.33683->klass;
      ins->klass = D.33684;
      D.33358 = cfg->args;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33682 = D.33358 + D.33677;
      D.33683 = *D.33682;
      D.33685 = D.33683->dreg;
      ins->sreg1 = D.33685;
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.33793 = alloc_dreg (cfg, D.33502);
      D.33794 = (int) D.33793;
      ins->dreg = D.33794;
      D.33505 = ins->opcode;
      if (D.33505 == 427) goto <D.33795>; else goto <D.33796>;
      <D.33795>:
      D.33368 = cfg->arg_types;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33678 = D.33368 + D.33677;
      D.33679 = *D.33678;
      D.33797 = mono_class_from_mono_type (D.33679);
      ins->klass = D.33797;
      <D.33796>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.33798>; else goto <D.33799>;
      <D.33798>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.33800>;
      <D.33799>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.33800>:
      sp.91 = sp;
      sp = sp.91 + 4;
      *sp.91 = ins;
      ip = ip + 2;
      goto <D.29893>;
      <D.29908>:
      D.33761 = ip + 2;
      if (D.33761 > end) goto <D.33802>; else goto <D.33803>;
      <D.33802>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33804>; else goto <D.33805>;
      <D.33804>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33806>; else goto <D.33807>;
      <D.33806>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33807>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33805>:
      D.33808 = mini_get_debug_options ();
      D.33809 = D.33808->break_on_unverified;
      if (D.33809 != 0) goto <D.33810>; else goto unverified;
      <D.33810>:
      raise (5);
      <D.33803>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      D.33440 = header->max_stack;
      D.33441 = (int) D.33440;
      if (D.33527 >= D.33441) goto <D.33811>; else goto <D.33812>;
      <D.33811>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33813>; else goto <D.33814>;
      <D.33813>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33815>; else goto <D.33816>;
      <D.33815>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33816>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33814>:
      D.33817 = mini_get_debug_options ();
      D.33818 = D.33817->break_on_unverified;
      if (D.33818 != 0) goto <D.33819>; else goto unverified;
      <D.33819>:
      raise (5);
      <D.33812>:
      D.33780 = ip + 1;
      D.33781 = *D.33780;
      n = (int) D.33781;
      n.88 = (unsigned int) n;
      if (n.88 >= num_args) goto <D.33820>; else goto <D.33821>;
      <D.33820>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33822>; else goto <D.33823>;
      <D.33822>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33824>; else goto <D.33825>;
      <D.33824>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33825>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33823>:
      D.33826 = mini_get_debug_options ();
      D.33827 = D.33826->break_on_unverified;
      if (D.33827 != 0) goto <D.33828>; else goto unverified;
      <D.33828>:
      raise (5);
      <D.33821>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 314;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33829 = arg_array + D.33677;
      D.33830 = *D.33829;
      ins->data.op[0].p = D.33830;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33829 = arg_array + D.33677;
      D.33830 = *D.33829;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33829 = arg_array + D.33677;
      D.33830 = *D.33829;
      D.33831 = D.33830->flags;
      D.33832 = D.33831 | 16;
      D.33830->flags = D.33832;
      ins->type = 5;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33829 = arg_array + D.33677;
      D.33830 = *D.33829;
      D.33833 = D.33830->klass;
      ins->klass = D.33833;
      D.33834 = alloc_dreg (cfg, 5);
      D.33835 = (int) D.33834;
      ins->dreg = D.33835;
      cfg->has_indirection = 1;
      D.32904 = cfg->gsharedvt;
      D.33836 = D.32904 != 0;
      D.33837 = (long int) D.33836;
      D.33838 = __builtin_expect (D.33837, 0);
      if (D.33838 != 0) goto <D.33839>; else goto <D.33840>;
      <D.33839>:
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33829 = arg_array + D.33677;
      D.33830 = *D.33829;
      D.33841 = D.33830->data.op[1].vtype;
      D.33842 = mini_is_gsharedvt_variable_type (cfg, D.33841);
      if (D.33842 != 0) goto <D.33843>; else goto <D.33844>;
      <D.33843>:
      handle_gsharedvt_ldaddr (cfg);
      <D.33844>:
      <D.33840>:
      D.33846 = mono_arch_is_soft_float ();
      if (D.33846 != 0) goto <D.33847>; else goto <D.33848>;
      <D.33847>:
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33829 = arg_array + D.33677;
      D.33830 = *D.33829;
      D.33849 = D.33830->type;
      D.33850 = D.33849 == 2;
      D.33851 = D.33849 == 4;
      D.33852 = D.33850 | D.33851;
      D.33853 = (int) D.33852;
      iftmp.92 = (_Bool) D.33853;
      goto <D.33854>;
      <D.33848>:
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33829 = arg_array + D.33677;
      D.33830 = *D.33829;
      D.33855 = D.33830->type;
      iftmp.92 = D.33855 == 2;
      <D.33854>:
      if (iftmp.92 != 0) goto <D.33856>; else goto <D.33857>;
      <D.33856>:
      {
        struct MonoInst * var1;
        struct MonoInst * var2;

        n.88 = (unsigned int) n;
        D.33677 = n.88 * 4;
        D.33829 = arg_array + D.33677;
        D.33830 = *D.33829;
        D.33859 = D.33830->dreg;
        D.33860 = D.33859 + 1;
        D.33861 = (unsigned int) D.33860;
        D.33862 = cfg->vreg_to_inst_len;
        if (D.33861 < D.33862) goto <D.33863>; else goto <D.33864>;
        <D.33863>:
        D.33865 = cfg->vreg_to_inst;
        n.88 = (unsigned int) n;
        D.33677 = n.88 * 4;
        D.33829 = arg_array + D.33677;
        D.33830 = *D.33829;
        D.33859 = D.33830->dreg;
        D.33866 = (sizetype) D.33859;
        D.33867 = D.33866 + 1;
        D.33868 = D.33867 * 4;
        D.33869 = D.33865 + D.33868;
        iftmp.93 = *D.33869;
        goto <D.33870>;
        <D.33864>:
        iftmp.93 = 0B;
        <D.33870>:
        var1 = iftmp.93;
        n.88 = (unsigned int) n;
        D.33677 = n.88 * 4;
        D.33829 = arg_array + D.33677;
        D.33830 = *D.33829;
        D.33859 = D.33830->dreg;
        D.33872 = D.33859 + 2;
        D.33873 = (unsigned int) D.33872;
        D.33862 = cfg->vreg_to_inst_len;
        if (D.33873 < D.33862) goto <D.33874>; else goto <D.33875>;
        <D.33874>:
        D.33865 = cfg->vreg_to_inst;
        n.88 = (unsigned int) n;
        D.33677 = n.88 * 4;
        D.33829 = arg_array + D.33677;
        D.33830 = *D.33829;
        D.33859 = D.33830->dreg;
        D.33866 = (sizetype) D.33859;
        D.33876 = D.33866 + 2;
        D.33877 = D.33876 * 4;
        D.33878 = D.33865 + D.33877;
        iftmp.94 = *D.33878;
        goto <D.33879>;
        <D.33875>:
        iftmp.94 = 0B;
        <D.33879>:
        var2 = iftmp.94;
        D.33880 = var1 == 0B;
        D.33881 = (long int) D.33880;
        D.33882 = __builtin_expect (D.33881, 0);
        if (D.33882 != 0) goto <D.33883>; else goto <D.33884>;
        <D.33883>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7323, "var1");
        <D.33884>:
        D.33885 = var2 == 0B;
        D.33886 = (long int) D.33885;
        D.33887 = __builtin_expect (D.33886, 0);
        if (D.33887 != 0) goto <D.33888>; else goto <D.33889>;
        <D.33888>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7323, "var2");
        <D.33889>:
        D.33890 = var1->flags;
        D.33891 = D.33890 | 16;
        var1->flags = D.33891;
        D.33892 = var2->flags;
        D.33893 = D.33892 | 16;
        var2->flags = D.33893;
      }
      <D.33857>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.33894>; else goto <D.33895>;
      <D.33894>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.33896>;
      <D.33895>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.33896>:
      sp.95 = sp;
      sp = sp.95 + 4;
      *sp.95 = ins;
      ip = ip + 2;
      goto <D.29893>;
      <D.29911>:
      D.33761 = ip + 2;
      if (D.33761 > end) goto <D.33898>; else goto <D.33899>;
      <D.33898>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33900>; else goto <D.33901>;
      <D.33900>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33902>; else goto <D.33903>;
      <D.33902>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33903>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33901>:
      D.33904 = mini_get_debug_options ();
      D.33905 = D.33904->break_on_unverified;
      if (D.33905 != 0) goto <D.33906>; else goto unverified;
      <D.33906>:
      raise (5);
      <D.33899>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.33907>; else goto <D.33908>;
      <D.33907>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33909>; else goto <D.33910>;
      <D.33909>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33911>; else goto <D.33912>;
      <D.33911>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33912>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33910>:
      D.33913 = mini_get_debug_options ();
      D.33914 = D.33913->break_on_unverified;
      if (D.33914 != 0) goto <D.33915>; else goto unverified;
      <D.33915>:
      raise (5);
      <D.33908>:
      sp = sp + 4294967292;
      D.33780 = ip + 1;
      D.33781 = *D.33780;
      n = (int) D.33781;
      n.88 = (unsigned int) n;
      if (n.88 >= num_args) goto <D.33916>; else goto <D.33917>;
      <D.33916>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33918>; else goto <D.33919>;
      <D.33918>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33920>; else goto <D.33921>;
      <D.33920>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33921>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33919>:
      D.33922 = mini_get_debug_options ();
      D.33923 = D.33922->break_on_unverified;
      if (D.33923 != 0) goto <D.33924>; else goto unverified;
      <D.33924>:
      raise (5);
      <D.33917>:
      if (dont_verify_stloc == 0) goto <D.33925>; else goto <D.33926>;
      <D.33925>:
      D.33780 = ip + 1;
      D.33781 = *D.33780;
      D.33927 = (unsigned int) D.33781;
      D.33928 = D.33927 * 4;
      D.33929 = param_types + D.33928;
      D.33930 = *D.33929;
      D.33750 = *sp;
      D.33931 = target_type_is_incompatible (cfg, D.33930, D.33750);
      if (D.33931 != 0) goto <D.33932>; else goto <D.33933>;
      <D.33932>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33934>; else goto <D.33935>;
      <D.33934>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33936>; else goto <D.33937>;
      <D.33936>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33937>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33935>:
      D.33938 = mini_get_debug_options ();
      D.33939 = D.33938->break_on_unverified;
      if (D.33939 != 0) goto <D.33940>; else goto unverified;
      <D.33940>:
      raise (5);
      <D.33933>:
      <D.33926>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.33368 = cfg->arg_types;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33678 = D.33368 + D.33677;
      D.33679 = *D.33678;
      D.33941 = mono_type_to_regmove (cfg, D.33679);
      D.33942 = (short unsigned int) D.33941;
      ins->opcode = D.33942;
      D.33358 = cfg->args;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33682 = D.33358 + D.33677;
      D.33683 = *D.33682;
      D.33684 = D.33683->klass;
      ins->klass = D.33684;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      D.33358 = cfg->args;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33682 = D.33358 + D.33677;
      D.33683 = *D.33682;
      D.33685 = D.33683->dreg;
      ins->dreg = D.33685;
      D.33505 = ins->opcode;
      if (D.33505 == 427) goto <D.33944>; else goto <D.33945>;
      <D.33944>:
      D.33368 = cfg->arg_types;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33678 = D.33368 + D.33677;
      D.33679 = *D.33678;
      D.33946 = mono_class_from_mono_type (D.33679);
      ins->klass = D.33946;
      <D.33945>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.33947>; else goto <D.33948>;
      <D.33947>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.33949>;
      <D.33948>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.33949>:
      ip = ip + 2;
      goto <D.29893>;
      <D.29912>:
      D.33761 = ip + 2;
      if (D.33761 > end) goto <D.33950>; else goto <D.33951>;
      <D.33950>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33952>; else goto <D.33953>;
      <D.33952>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33954>; else goto <D.33955>;
      <D.33954>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33955>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33953>:
      D.33956 = mini_get_debug_options ();
      D.33957 = D.33956->break_on_unverified;
      if (D.33957 != 0) goto <D.33958>; else goto unverified;
      <D.33958>:
      raise (5);
      <D.33951>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      D.33440 = header->max_stack;
      D.33441 = (int) D.33440;
      if (D.33527 >= D.33441) goto <D.33959>; else goto <D.33960>;
      <D.33959>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33961>; else goto <D.33962>;
      <D.33961>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33963>; else goto <D.33964>;
      <D.33963>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33964>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33962>:
      D.33965 = mini_get_debug_options ();
      D.33966 = D.33965->break_on_unverified;
      if (D.33966 != 0) goto <D.33967>; else goto unverified;
      <D.33967>:
      raise (5);
      <D.33960>:
      D.33780 = ip + 1;
      D.33781 = *D.33780;
      n = (int) D.33781;
      n.88 = (unsigned int) n;
      D.33345 = header->num_locals;
      D.33704 = (unsigned int) D.33345;
      if (n.88 >= D.33704) goto <D.33968>; else goto <D.33969>;
      <D.33968>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.33970>; else goto <D.33971>;
      <D.33970>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.33972>; else goto <D.33973>;
      <D.33972>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33973>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33971>:
      D.33974 = mini_get_debug_options ();
      D.33975 = D.33974->break_on_unverified;
      if (D.33975 != 0) goto <D.33976>; else goto unverified;
      <D.33976>:
      raise (5);
      <D.33969>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.33333 = header->locals[n];
      D.33977 = mono_type_to_regmove (cfg, D.33333);
      D.33978 = (short unsigned int) D.33977;
      ins->opcode = D.33978;
      D.33333 = header->locals[n];
      type_to_eval_stack_type (cfg, D.33333, ins);
      D.33716 = cfg->locals;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33717 = D.33716 + D.33677;
      D.33718 = *D.33717;
      D.33719 = D.33718->klass;
      ins->klass = D.33719;
      D.33716 = cfg->locals;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33717 = D.33716 + D.33677;
      D.33718 = *D.33717;
      D.33720 = D.33718->dreg;
      ins->sreg1 = D.33720;
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.33979 = alloc_dreg (cfg, D.33502);
      D.33980 = (int) D.33979;
      ins->dreg = D.33980;
      D.33505 = ins->opcode;
      if (D.33505 == 427) goto <D.33981>; else goto <D.33982>;
      <D.33981>:
      D.33333 = header->locals[n];
      D.33983 = mono_class_from_mono_type (D.33333);
      ins->klass = D.33983;
      <D.33982>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.33984>; else goto <D.33985>;
      <D.33984>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.33986>;
      <D.33985>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.33986>:
      sp.96 = sp;
      sp = sp.96 + 4;
      *sp.96 = ins;
      ip = ip + 2;
      goto <D.29893>;
      <D.29913>:
      {
        unsigned char * tmp_ip;

        D.33761 = ip + 2;
        if (D.33761 > end) goto <D.33988>; else goto <D.33989>;
        <D.33988>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.33990>; else goto <D.33991>;
        <D.33990>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.33992>; else goto <D.33993>;
        <D.33992>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33993>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33991>:
        D.33994 = mini_get_debug_options ();
        D.33995 = D.33994->break_on_unverified;
        if (D.33995 != 0) goto <D.33996>; else goto unverified;
        <D.33996>:
        raise (5);
        <D.33989>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        D.33527 = D.33526 /[ex] 4;
        D.33440 = header->max_stack;
        D.33441 = (int) D.33440;
        if (D.33527 >= D.33441) goto <D.33997>; else goto <D.33998>;
        <D.33997>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.33999>; else goto <D.34000>;
        <D.33999>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.34001>; else goto <D.34002>;
        <D.34001>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34002>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34000>:
        D.34003 = mini_get_debug_options ();
        D.34004 = D.34003->break_on_unverified;
        if (D.34004 != 0) goto <D.34005>; else goto unverified;
        <D.34005>:
        raise (5);
        <D.33998>:
        D.33780 = ip + 1;
        D.33781 = *D.33780;
        D.34006 = (short unsigned int) D.33781;
        D.33345 = header->num_locals;
        if (D.34006 >= D.33345) goto <D.34007>; else goto <D.34008>;
        <D.34007>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.34009>; else goto <D.34010>;
        <D.34009>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.34011>; else goto <D.34012>;
        <D.34011>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34012>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34010>:
        D.34013 = mini_get_debug_options ();
        D.34014 = D.34013->break_on_unverified;
        if (D.34014 != 0) goto <D.34015>; else goto unverified;
        <D.34015>:
        raise (5);
        <D.34008>:
        tmp_ip = emit_optimized_ldloca_ir (cfg, ip, end, 1);
        if (tmp_ip != 0B) goto <D.34016>; else goto <D.34017>;
        <D.34016>:
        ip = tmp_ip;
        inline_costs = inline_costs + 1;
        goto <D.29893>;
        <D.34017>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 314;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        D.33716 = cfg->locals;
        D.33780 = ip + 1;
        D.33781 = *D.33780;
        D.33927 = (unsigned int) D.33781;
        D.33928 = D.33927 * 4;
        D.34018 = D.33716 + D.33928;
        D.34019 = *D.34018;
        ins->data.op[0].p = D.34019;
        D.33716 = cfg->locals;
        D.33780 = ip + 1;
        D.33781 = *D.33780;
        D.33927 = (unsigned int) D.33781;
        D.33928 = D.33927 * 4;
        D.34018 = D.33716 + D.33928;
        D.34019 = *D.34018;
        D.33716 = cfg->locals;
        D.33780 = ip + 1;
        D.33781 = *D.33780;
        D.33927 = (unsigned int) D.33781;
        D.33928 = D.33927 * 4;
        D.34018 = D.33716 + D.33928;
        D.34019 = *D.34018;
        D.34020 = D.34019->flags;
        D.34021 = D.34020 | 16;
        D.34019->flags = D.34021;
        ins->type = 5;
        D.33716 = cfg->locals;
        D.33780 = ip + 1;
        D.33781 = *D.33780;
        D.33927 = (unsigned int) D.33781;
        D.33928 = D.33927 * 4;
        D.34018 = D.33716 + D.33928;
        D.34019 = *D.34018;
        D.34022 = D.34019->klass;
        ins->klass = D.34022;
        D.34023 = alloc_dreg (cfg, 5);
        D.34024 = (int) D.34023;
        ins->dreg = D.34024;
        cfg->has_indirection = 1;
        D.32904 = cfg->gsharedvt;
        D.33836 = D.32904 != 0;
        D.33837 = (long int) D.33836;
        D.33838 = __builtin_expect (D.33837, 0);
        if (D.33838 != 0) goto <D.34025>; else goto <D.34026>;
        <D.34025>:
        D.33716 = cfg->locals;
        D.33780 = ip + 1;
        D.33781 = *D.33780;
        D.33927 = (unsigned int) D.33781;
        D.33928 = D.33927 * 4;
        D.34018 = D.33716 + D.33928;
        D.34019 = *D.34018;
        D.34027 = D.34019->data.op[1].vtype;
        D.34028 = mini_is_gsharedvt_variable_type (cfg, D.34027);
        if (D.34028 != 0) goto <D.34029>; else goto <D.34030>;
        <D.34029>:
        handle_gsharedvt_ldaddr (cfg);
        <D.34030>:
        <D.34026>:
        D.34032 = mono_arch_is_soft_float ();
        if (D.34032 != 0) goto <D.34033>; else goto <D.34034>;
        <D.34033>:
        D.33716 = cfg->locals;
        D.33780 = ip + 1;
        D.33781 = *D.33780;
        D.33927 = (unsigned int) D.33781;
        D.33928 = D.33927 * 4;
        D.34018 = D.33716 + D.33928;
        D.34019 = *D.34018;
        D.34035 = D.34019->type;
        D.34036 = D.34035 == 2;
        D.34037 = D.34035 == 4;
        D.34038 = D.34036 | D.34037;
        D.34039 = (int) D.34038;
        iftmp.97 = (_Bool) D.34039;
        goto <D.34040>;
        <D.34034>:
        D.33716 = cfg->locals;
        D.33780 = ip + 1;
        D.33781 = *D.33780;
        D.33927 = (unsigned int) D.33781;
        D.33928 = D.33927 * 4;
        D.34018 = D.33716 + D.33928;
        D.34019 = *D.34018;
        D.34041 = D.34019->type;
        iftmp.97 = D.34041 == 2;
        <D.34040>:
        if (iftmp.97 != 0) goto <D.34042>; else goto <D.34043>;
        <D.34042>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.33716 = cfg->locals;
          D.33780 = ip + 1;
          D.33781 = *D.33780;
          D.33927 = (unsigned int) D.33781;
          D.33928 = D.33927 * 4;
          D.34018 = D.33716 + D.33928;
          D.34019 = *D.34018;
          D.34045 = D.34019->dreg;
          D.34046 = D.34045 + 1;
          D.34047 = (unsigned int) D.34046;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.34047 < D.33862) goto <D.34048>; else goto <D.34049>;
          <D.34048>:
          D.33865 = cfg->vreg_to_inst;
          D.33716 = cfg->locals;
          D.33780 = ip + 1;
          D.33781 = *D.33780;
          D.33927 = (unsigned int) D.33781;
          D.33928 = D.33927 * 4;
          D.34018 = D.33716 + D.33928;
          D.34019 = *D.34018;
          D.34045 = D.34019->dreg;
          D.34050 = (sizetype) D.34045;
          D.34051 = D.34050 + 1;
          D.34052 = D.34051 * 4;
          D.34053 = D.33865 + D.34052;
          iftmp.98 = *D.34053;
          goto <D.34054>;
          <D.34049>:
          iftmp.98 = 0B;
          <D.34054>:
          var1 = iftmp.98;
          D.33716 = cfg->locals;
          D.33780 = ip + 1;
          D.33781 = *D.33780;
          D.33927 = (unsigned int) D.33781;
          D.33928 = D.33927 * 4;
          D.34018 = D.33716 + D.33928;
          D.34019 = *D.34018;
          D.34045 = D.34019->dreg;
          D.34056 = D.34045 + 2;
          D.34057 = (unsigned int) D.34056;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.34057 < D.33862) goto <D.34058>; else goto <D.34059>;
          <D.34058>:
          D.33865 = cfg->vreg_to_inst;
          D.33716 = cfg->locals;
          D.33780 = ip + 1;
          D.33781 = *D.33780;
          D.33927 = (unsigned int) D.33781;
          D.33928 = D.33927 * 4;
          D.34018 = D.33716 + D.33928;
          D.34019 = *D.34018;
          D.34045 = D.34019->dreg;
          D.34050 = (sizetype) D.34045;
          D.34060 = D.34050 + 2;
          D.34061 = D.34060 * 4;
          D.34062 = D.33865 + D.34061;
          iftmp.99 = *D.34062;
          goto <D.34063>;
          <D.34059>:
          iftmp.99 = 0B;
          <D.34063>:
          var2 = iftmp.99;
          D.34064 = var1 == 0B;
          D.34065 = (long int) D.34064;
          D.34066 = __builtin_expect (D.34065, 0);
          if (D.34066 != 0) goto <D.34067>; else goto <D.34068>;
          <D.34067>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7360, "var1");
          <D.34068>:
          D.34069 = var2 == 0B;
          D.34070 = (long int) D.34069;
          D.34071 = __builtin_expect (D.34070, 0);
          if (D.34071 != 0) goto <D.34072>; else goto <D.34073>;
          <D.34072>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7360, "var2");
          <D.34073>:
          D.34074 = var1->flags;
          D.34075 = D.34074 | 16;
          var1->flags = D.34075;
          D.34076 = var2->flags;
          D.34077 = D.34076 | 16;
          var2->flags = D.34077;
        }
        <D.34043>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.34078>; else goto <D.34079>;
        <D.34078>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.34080>;
        <D.34079>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.34080>:
        sp.100 = sp;
        sp = sp.100 + 4;
        *sp.100 = ins;
        ip = ip + 2;
        goto <D.29893>;
      }
      <D.29917>:
      D.33761 = ip + 2;
      if (D.33761 > end) goto <D.34082>; else goto <D.34083>;
      <D.34082>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.34084>; else goto <D.34085>;
      <D.34084>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.34086>; else goto <D.34087>;
      <D.34086>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34087>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34085>:
      D.34088 = mini_get_debug_options ();
      D.34089 = D.34088->break_on_unverified;
      if (D.34089 != 0) goto <D.34090>; else goto unverified;
      <D.34090>:
      raise (5);
      <D.34083>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.34091>; else goto <D.34092>;
      <D.34091>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.34093>; else goto <D.34094>;
      <D.34093>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 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>:
      raise (5);
      <D.34092>:
      sp = sp + 4294967292;
      D.33780 = ip + 1;
      D.33781 = *D.33780;
      D.34006 = (short unsigned int) D.33781;
      D.33345 = header->num_locals;
      if (D.34006 >= D.33345) goto <D.34100>; else goto <D.34101>;
      <D.34100>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.34102>; else goto <D.34103>;
      <D.34102>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.34104>; else goto <D.34105>;
      <D.34104>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34105>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34103>:
      D.34106 = mini_get_debug_options ();
      D.34107 = D.34106->break_on_unverified;
      if (D.34107 != 0) goto <D.34108>; else goto unverified;
      <D.34108>:
      raise (5);
      <D.34101>:
      if (dont_verify_stloc == 0) goto <D.34109>; else goto <D.34110>;
      <D.34109>:
      D.33780 = ip + 1;
      D.33781 = *D.33780;
      D.34111 = (int) D.33781;
      D.34112 = header->locals[D.34111];
      D.33750 = *sp;
      D.34113 = target_type_is_incompatible (cfg, D.34112, D.33750);
      if (D.34113 != 0) goto <D.34114>; else goto <D.34115>;
      <D.34114>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.34116>; else goto <D.34117>;
      <D.34116>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.34118>; else goto <D.34119>;
      <D.34118>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34119>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34117>:
      D.34120 = mini_get_debug_options ();
      D.34121 = D.34120->break_on_unverified;
      if (D.34121 != 0) goto <D.34122>; else goto unverified;
      <D.34122>:
      raise (5);
      <D.34115>:
      <D.34110>:
      D.33780 = ip + 1;
      D.33781 = *D.33780;
      D.34111 = (int) D.33781;
      emit_stloc_ir (cfg, sp, header, D.34111);
      ip = ip + 2;
      inline_costs = inline_costs + 1;
      goto <D.29893>;
      <D.29918>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      D.33440 = header->max_stack;
      D.33441 = (int) D.33440;
      if (D.33527 >= D.33441) goto <D.34123>; else goto <D.34124>;
      <D.34123>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.34125>; else goto <D.34126>;
      <D.34125>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.34127>; else goto <D.34128>;
      <D.34127>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34128>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34126>:
      D.34129 = mini_get_debug_options ();
      D.34130 = D.34129->break_on_unverified;
      if (D.34130 != 0) goto <D.34131>; else goto unverified;
      <D.34131>:
      raise (5);
      <D.34124>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      ins->data.op[0].p = 0B;
      ins->type = 3;
      D.34132 = alloc_dreg (cfg, 3);
      D.34133 = (int) D.34132;
      ins->dreg = D.34133;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.34134>; else goto <D.34135>;
      <D.34134>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.34136>;
      <D.34135>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.34136>:
      ins->type = 6;
      ip = ip + 1;
      sp.101 = sp;
      sp = sp.101 + 4;
      *sp.101 = ins;
      goto <D.29893>;
      <D.29919>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      D.33440 = header->max_stack;
      D.33441 = (int) D.33440;
      if (D.33527 >= D.33441) goto <D.34138>; else goto <D.34139>;
      <D.34138>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.34140>; else goto <D.34141>;
      <D.34140>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.34142>; else goto <D.34143>;
      <D.34142>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34143>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34141>:
      D.34144 = mini_get_debug_options ();
      D.34145 = D.34144->break_on_unverified;
      if (D.34145 != 0) goto <D.34146>; else goto unverified;
      <D.34146>:
      raise (5);
      <D.34139>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      ins->data.op[0].const_val = -1;
      ins->type = 1;
      D.34147 = alloc_dreg (cfg, 1);
      D.34148 = (int) D.34147;
      ins->dreg = D.34148;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.34149>; else goto <D.34150>;
      <D.34149>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.34151>;
      <D.34150>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.34151>:
      ip = ip + 1;
      sp.102 = sp;
      sp = sp.102 + 4;
      *sp.102 = ins;
      goto <D.29893>;
      <D.29920>:
      <D.29921>:
      <D.29922>:
      <D.29923>:
      <D.29924>:
      <D.29925>:
      <D.29926>:
      <D.29927>:
      <D.29928>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      D.33440 = header->max_stack;
      D.33441 = (int) D.33440;
      if (D.33527 >= D.33441) goto <D.34153>; else goto <D.34154>;
      <D.34153>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.34155>; else goto <D.34156>;
      <D.34155>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.34157>; else goto <D.34158>;
      <D.34157>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34158>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34156>:
      D.34159 = mini_get_debug_options ();
      D.34160 = D.34159->break_on_unverified;
      if (D.34160 != 0) goto <D.34161>; else goto unverified;
      <D.34161>:
      raise (5);
      <D.34154>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.33632 = *ip;
      D.33633 = (int) D.33632;
      D.34162 = D.33633 + -22;
      ins->data.op[0].const_val = D.34162;
      ins->type = 1;
      D.34163 = alloc_dreg (cfg, 1);
      D.34164 = (int) D.34163;
      ins->dreg = D.34164;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.34165>; else goto <D.34166>;
      <D.34165>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.34167>;
      <D.34166>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.34167>:
      ip = ip + 1;
      sp.103 = sp;
      sp = sp.103 + 4;
      *sp.103 = ins;
      goto <D.29893>;
      <D.29929>:
      D.33761 = ip + 2;
      if (D.33761 > end) goto <D.34169>; else goto <D.34170>;
      <D.34169>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.34171>; else goto <D.34172>;
      <D.34171>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.34173>; else goto <D.34174>;
      <D.34173>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34174>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34172>:
      D.34175 = mini_get_debug_options ();
      D.34176 = D.34175->break_on_unverified;
      if (D.34176 != 0) goto <D.34177>; else goto unverified;
      <D.34177>:
      raise (5);
      <D.34170>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      D.33440 = header->max_stack;
      D.33441 = (int) D.33440;
      if (D.33527 >= D.33441) goto <D.34178>; else goto <D.34179>;
      <D.34178>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.34180>; else goto <D.34181>;
      <D.34180>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.34182>; else goto <D.34183>;
      <D.34182>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34183>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34181>:
      D.34184 = mini_get_debug_options ();
      D.34185 = D.34184->break_on_unverified;
      if (D.34185 != 0) goto <D.34186>; else goto unverified;
      <D.34186>:
      raise (5);
      <D.34179>:
      ip = ip + 1;
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.34187 = MEM[(signed char *)ip];
      D.34188 = (int) D.34187;
      ins->data.op[0].const_val = D.34188;
      ins->type = 1;
      D.34189 = alloc_dreg (cfg, 1);
      D.34190 = (int) D.34189;
      ins->dreg = D.34190;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.34191>; else goto <D.34192>;
      <D.34191>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.34193>;
      <D.34192>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.34193>:
      ip = ip + 1;
      sp.104 = sp;
      sp = sp.104 + 4;
      *sp.104 = ins;
      goto <D.29893>;
      <D.29930>:
      D.34195 = ip + 5;
      if (D.34195 > end) goto <D.34196>; else goto <D.34197>;
      <D.34196>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.34198>; else goto <D.34199>;
      <D.34198>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.34200>; else goto <D.34201>;
      <D.34200>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34201>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34199>:
      D.34202 = mini_get_debug_options ();
      D.34203 = D.34202->break_on_unverified;
      if (D.34203 != 0) goto <D.34204>; else goto unverified;
      <D.34204>:
      raise (5);
      <D.34197>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      D.33440 = header->max_stack;
      D.33441 = (int) D.33440;
      if (D.33527 >= D.33441) goto <D.34205>; else goto <D.34206>;
      <D.34205>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.34207>; else goto <D.34208>;
      <D.34207>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.34209>; else goto <D.34210>;
      <D.34209>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34210>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34208>:
      D.34211 = mini_get_debug_options ();
      D.34212 = D.34211->break_on_unverified;
      if (D.34212 != 0) goto <D.34213>; else goto unverified;
      <D.34213>:
      raise (5);
      <D.34206>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.34214 = ip + 1;
      D.34215 = mono_read32 (D.34214);
      D.34216 = (int) D.34215;
      ins->data.op[0].const_val = D.34216;
      ins->type = 1;
      D.34217 = alloc_dreg (cfg, 1);
      D.34218 = (int) D.34217;
      ins->dreg = D.34218;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.34219>; else goto <D.34220>;
      <D.34219>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.34221>;
      <D.34220>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.34221>:
      ip = ip + 5;
      sp.105 = sp;
      sp = sp.105 + 4;
      *sp.105 = ins;
      goto <D.29893>;
      <D.29931>:
      D.34223 = ip + 9;
      if (D.34223 > end) goto <D.34224>; else goto <D.34225>;
      <D.34224>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.34226>; else goto <D.34227>;
      <D.34226>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.34228>; else goto <D.34229>;
      <D.34228>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34229>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34227>:
      D.34230 = mini_get_debug_options ();
      D.34231 = D.34230->break_on_unverified;
      if (D.34231 != 0) goto <D.34232>; else goto unverified;
      <D.34232>:
      raise (5);
      <D.34225>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      D.33440 = header->max_stack;
      D.33441 = (int) D.33440;
      if (D.33527 >= D.33441) goto <D.34233>; else goto <D.34234>;
      <D.34233>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.34235>; else goto <D.34236>;
      <D.34235>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.34237>; else goto <D.34238>;
      <D.34237>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34238>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34236>:
      D.34239 = mini_get_debug_options ();
      D.34240 = D.34239->break_on_unverified;
      if (D.34240 != 0) goto <D.34241>; else goto unverified;
      <D.34241>:
      raise (5);
      <D.34234>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 363;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      ins->type = 2;
      D.34242 = alloc_dreg (cfg, 2);
      D.34243 = (int) D.34242;
      ins->dreg = D.34243;
      ip = ip + 1;
      D.34244 = mono_read64 (ip);
      D.34245 = (long long int) D.34244;
      ins->data.i8const = D.34245;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      if (D.33093 != 0B) goto <D.34246>; else goto <D.34247>;
      <D.34246>:
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      D.33093->next = ins;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      ins->prev = D.33093;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      goto <D.34248>;
      <D.34247>:
      bblock.76 = bblock;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      D.33093 = bblock.76->last_ins;
      bblock.76->code = D.33093;
      <D.34248>:
      ip = ip + 8;
      sp.106 = sp;
      sp = sp.106 + 4;
      *sp.106 = ins;
      goto <D.29893>;
      <D.29932>:
      {
        float * f;
        gboolean use_aotconst;

        use_aotconst = 0;
        D.32780 = cfg->domain;
        f = mono_domain_alloc (D.32780, 4);
        D.34195 = ip + 5;
        if (D.34195 > end) goto <D.34250>; else goto <D.34251>;
        <D.34250>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.34252>; else goto <D.34253>;
        <D.34252>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.34254>; else goto <D.34255>;
        <D.34254>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34255>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34253>:
        D.34256 = mini_get_debug_options ();
        D.34257 = D.34256->break_on_unverified;
        if (D.34257 != 0) goto <D.34258>; else goto unverified;
        <D.34258>:
        raise (5);
        <D.34251>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        D.33527 = D.33526 /[ex] 4;
        D.33440 = header->max_stack;
        D.33441 = (int) D.33440;
        if (D.33527 >= D.33441) goto <D.34259>; else goto <D.34260>;
        <D.34259>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.34261>; else goto <D.34262>;
        <D.34261>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.34263>; else goto <D.34264>;
        <D.34263>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34264>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34262>:
        D.34265 = mini_get_debug_options ();
        D.34266 = D.34265->break_on_unverified;
        if (D.34266 != 0) goto <D.34267>; else goto unverified;
        <D.34267>:
        raise (5);
        <D.34260>:
        if (use_aotconst != 0) goto <D.34268>; else goto <D.34269>;
        <D.34268>:
        {
          struct MonoInst * cons;
          int dreg;

          D.32755 = cfg->mempool;
          cons = mono_mempool_alloc (D.32755, 56);
          cons->data.op[1].const_val = 0;
          D.34270 = cons->data.op[1].const_val;
          cons->data.op[0].const_val = D.34270;
          cons->prev = 0B;
          D.34271 = cons->prev;
          cons->next = D.34271;
          D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.33151 = D.33150 & 64;
          if (D.33151 != 0) goto <D.34273>; else goto <D.34274>;
          <D.34273>:
          iftmp.107 = 732;
          goto <D.34275>;
          <D.34274>:
          iftmp.107 = 362;
          <D.34275>:
          cons->opcode = iftmp.107;
          cons->flags = 0;
          cons->type = 0;
          cons->dreg = -1;
          cons->sreg3 = -1;
          D.34276 = cons->sreg3;
          cons->sreg2 = D.34276;
          D.34277 = cons->sreg2;
          cons->sreg1 = D.34277;
          D.32979 = cfg->ip;
          cons->cil_code = D.32979;
          cons->data.op[0].p = f;
          cons->data.op[1].src = 20B;
          cons->type = 3;
          D.34278 = alloc_dreg (cfg, 3);
          D.34279 = (int) D.34278;
          cons->dreg = D.34279;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.34280>; else goto <D.34281>;
          <D.34280>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = cons;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          cons->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = cons;
          goto <D.34282>;
          <D.34281>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = cons;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.34282>:
          D.34283 = alloc_freg (cfg);
          dreg = (int) D.34283;
          D.32755 = cfg->mempool;
          ins = mono_mempool_alloc (D.32755, 56);
          ins->data.op[1].const_val = 0;
          D.32975 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.32975;
          ins->prev = 0B;
          D.32976 = ins->prev;
          ins->next = D.32976;
          ins->opcode = 396;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.32977 = ins->sreg3;
          ins->sreg2 = D.32977;
          D.32978 = ins->sreg2;
          ins->sreg1 = D.32978;
          D.32979 = cfg->ip;
          ins->cil_code = D.32979;
          ins->dreg = dreg;
          D.34284 = cons->dreg;
          ins->sreg1 = D.34284;
          ins->data.op[0].const_val = 0;
          ins->type = 1;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.34285>; else goto <D.34286>;
          <D.34285>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = ins;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          ins->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          goto <D.34287>;
          <D.34286>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.34287>:
          ins->type = 4;
        }
        goto <D.34288>;
        <D.34269>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 364;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        ins->type = 4;
        D.34289 = alloc_dreg (cfg, 4);
        D.34290 = (int) D.34289;
        ins->dreg = D.34290;
        ins->data.op[0].p = f;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        if (D.33093 != 0B) goto <D.34291>; else goto <D.34292>;
        <D.34291>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        D.33093->next = ins;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        ins->prev = D.33093;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        goto <D.34293>;
        <D.34292>:
        bblock.76 = bblock;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        D.33093 = bblock.76->last_ins;
        bblock.76->code = D.33093;
        <D.34293>:
        <D.34288>:
        ip = ip + 1;
        {
          union mono_rfloat mf;

          try
            {
              D.34294 = mono_read32 (ip);
              mf.ival = D.34294;
              D.34295 = mf.fval;
              *f = D.34295;
            }
          finally
            {
              mf = {CLOBBER};
            }
        }
        ip = ip + 4;
        sp.108 = sp;
        sp = sp.108 + 4;
        *sp.108 = ins;
        goto <D.29893>;
      }
      <D.29938>:
      {
        double * d;
        gboolean use_aotconst;

        use_aotconst = 0;
        D.32780 = cfg->domain;
        d = mono_domain_alloc (D.32780, 8);
        D.34223 = ip + 9;
        if (D.34223 > end) goto <D.34297>; else goto <D.34298>;
        <D.34297>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.34299>; else goto <D.34300>;
        <D.34299>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.34301>; else goto <D.34302>;
        <D.34301>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34302>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34300>:
        D.34303 = mini_get_debug_options ();
        D.34304 = D.34303->break_on_unverified;
        if (D.34304 != 0) goto <D.34305>; else goto unverified;
        <D.34305>:
        raise (5);
        <D.34298>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        D.33527 = D.33526 /[ex] 4;
        D.33440 = header->max_stack;
        D.33441 = (int) D.33440;
        if (D.33527 >= D.33441) goto <D.34306>; else goto <D.34307>;
        <D.34306>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.34308>; else goto <D.34309>;
        <D.34308>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.34310>; else goto <D.34311>;
        <D.34310>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34311>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34309>:
        D.34312 = mini_get_debug_options ();
        D.34313 = D.34312->break_on_unverified;
        if (D.34313 != 0) goto <D.34314>; else goto unverified;
        <D.34314>:
        raise (5);
        <D.34307>:
        if (use_aotconst != 0) goto <D.34315>; else goto <D.34316>;
        <D.34315>:
        {
          struct MonoInst * cons;
          int dreg;

          D.32755 = cfg->mempool;
          cons = mono_mempool_alloc (D.32755, 56);
          cons->data.op[1].const_val = 0;
          D.34317 = cons->data.op[1].const_val;
          cons->data.op[0].const_val = D.34317;
          cons->prev = 0B;
          D.34318 = cons->prev;
          cons->next = D.34318;
          D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.33151 = D.33150 & 64;
          if (D.33151 != 0) goto <D.34320>; else goto <D.34321>;
          <D.34320>:
          iftmp.109 = 732;
          goto <D.34322>;
          <D.34321>:
          iftmp.109 = 362;
          <D.34322>:
          cons->opcode = iftmp.109;
          cons->flags = 0;
          cons->type = 0;
          cons->dreg = -1;
          cons->sreg3 = -1;
          D.34323 = cons->sreg3;
          cons->sreg2 = D.34323;
          D.34324 = cons->sreg2;
          cons->sreg1 = D.34324;
          D.32979 = cfg->ip;
          cons->cil_code = D.32979;
          cons->data.op[0].p = d;
          cons->data.op[1].src = 21B;
          cons->type = 3;
          D.34325 = alloc_dreg (cfg, 3);
          D.34326 = (int) D.34325;
          cons->dreg = D.34326;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.34327>; else goto <D.34328>;
          <D.34327>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = cons;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          cons->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = cons;
          goto <D.34329>;
          <D.34328>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = cons;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.34329>:
          D.34330 = alloc_freg (cfg);
          dreg = (int) D.34330;
          D.32755 = cfg->mempool;
          ins = mono_mempool_alloc (D.32755, 56);
          ins->data.op[1].const_val = 0;
          D.32975 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.32975;
          ins->prev = 0B;
          D.32976 = ins->prev;
          ins->next = D.32976;
          ins->opcode = 397;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.32977 = ins->sreg3;
          ins->sreg2 = D.32977;
          D.32978 = ins->sreg2;
          ins->sreg1 = D.32978;
          D.32979 = cfg->ip;
          ins->cil_code = D.32979;
          ins->dreg = dreg;
          D.34331 = cons->dreg;
          ins->sreg1 = D.34331;
          ins->data.op[0].const_val = 0;
          ins->type = 1;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.34332>; else goto <D.34333>;
          <D.34332>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = ins;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          ins->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          goto <D.34334>;
          <D.34333>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.34334>:
          ins->type = 4;
        }
        goto <D.34335>;
        <D.34316>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 365;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        ins->type = 4;
        D.34336 = alloc_dreg (cfg, 4);
        D.34337 = (int) D.34336;
        ins->dreg = D.34337;
        ins->data.op[0].p = d;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        if (D.33093 != 0B) goto <D.34338>; else goto <D.34339>;
        <D.34338>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        D.33093->next = ins;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        ins->prev = D.33093;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        goto <D.34340>;
        <D.34339>:
        bblock.76 = bblock;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        D.33093 = bblock.76->last_ins;
        bblock.76->code = D.33093;
        <D.34340>:
        <D.34335>:
        ip = ip + 1;
        {
          union mono_rdouble mf;

          try
            {
              D.34341 = mono_read64 (ip);
              mf.ival = D.34341;
              D.34342 = mf.fval;
              *d = D.34342;
            }
          finally
            {
              mf = {CLOBBER};
            }
        }
        ip = ip + 8;
        sp.110 = sp;
        sp = sp.110 + 4;
        *sp.110 = ins;
        goto <D.29893>;
      }
      <D.29944>:
      {
        struct MonoInst * temp;
        struct MonoInst * store;

        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        if (D.33526 <= 3) goto <D.34344>; else goto <D.34345>;
        <D.34344>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.34346>; else goto <D.34347>;
        <D.34346>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.34348>; else goto <D.34349>;
        <D.34348>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34349>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34347>:
        D.34350 = mini_get_debug_options ();
        D.34351 = D.34350->break_on_unverified;
        if (D.34351 != 0) goto <D.34352>; else goto unverified;
        <D.34352>:
        raise (5);
        <D.34345>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        D.33527 = D.33526 /[ex] 4;
        D.33440 = header->max_stack;
        D.33441 = (int) D.33440;
        if (D.33527 >= D.33441) goto <D.34353>; else goto <D.34354>;
        <D.34353>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.34355>; else goto <D.34356>;
        <D.34355>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.34357>; else goto <D.34358>;
        <D.34357>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34358>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34356>:
        D.34359 = mini_get_debug_options ();
        D.34360 = D.34359->break_on_unverified;
        if (D.34360 != 0) goto <D.34361>; else goto unverified;
        <D.34361>:
        raise (5);
        <D.34354>:
        sp = sp + 4294967292;
        ins = *sp;
        D.34362 = type_from_stack_type (ins);
        temp = mono_compile_create_var (cfg, D.34362, 329);
        D.32755 = cfg->mempool;
        store = mono_mempool_alloc (D.32755, 56);
        store->data.op[1].const_val = 0;
        D.34363 = store->data.op[1].const_val;
        store->data.op[0].const_val = D.34363;
        store->prev = 0B;
        D.34364 = store->prev;
        store->next = D.34364;
        store->opcode = 424;
        store->flags = 0;
        store->type = 0;
        store->dreg = -1;
        store->sreg3 = -1;
        D.34365 = store->sreg3;
        store->sreg2 = D.34365;
        D.34366 = store->sreg2;
        store->sreg1 = D.34366;
        D.32979 = cfg->ip;
        store->cil_code = D.32979;
        D.33491 = cfg->varinfo;
        D.34367 = temp->data.op[0].const_val;
        D.34368 = (unsigned int) D.34367;
        D.34369 = D.34368 * 4;
        D.34370 = D.33491 + D.34369;
        D.34371 = *D.34370;
        D.34372 = D.34371->data.op[1].vtype;
        D.34373 = mono_type_to_regmove (cfg, D.34372);
        D.34374 = (short unsigned int) D.34373;
        store->opcode = D.34374;
        D.33491 = cfg->varinfo;
        D.34367 = temp->data.op[0].const_val;
        D.34368 = (unsigned int) D.34367;
        D.34369 = D.34368 * 4;
        D.34370 = D.33491 + D.34369;
        D.34371 = *D.34370;
        D.34375 = D.34371->klass;
        store->klass = D.34375;
        D.33170 = ins->dreg;
        store->sreg1 = D.33170;
        D.33491 = cfg->varinfo;
        D.34367 = temp->data.op[0].const_val;
        D.34368 = (unsigned int) D.34367;
        D.34369 = D.34368 * 4;
        D.34370 = D.33491 + D.34369;
        D.34371 = *D.34370;
        D.34376 = D.34371->dreg;
        store->dreg = D.34376;
        D.34377 = store->opcode;
        if (D.34377 == 427) goto <D.34378>; else goto <D.34379>;
        <D.34378>:
        D.33491 = cfg->varinfo;
        D.34367 = temp->data.op[0].const_val;
        D.34368 = (unsigned int) D.34367;
        D.34369 = D.34368 * 4;
        D.34370 = D.33491 + D.34369;
        D.34371 = *D.34370;
        D.34372 = D.34371->data.op[1].vtype;
        D.34380 = mono_class_from_mono_type (D.34372);
        store->klass = D.34380;
        <D.34379>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.34381>; else goto <D.34382>;
        <D.34381>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = store;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        store->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = store;
        goto <D.34383>;
        <D.34382>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = store;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.34383>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 424;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        D.33491 = cfg->varinfo;
        D.34367 = temp->data.op[0].const_val;
        D.34368 = (unsigned int) D.34367;
        D.34369 = D.34368 * 4;
        D.34370 = D.33491 + D.34369;
        D.34371 = *D.34370;
        D.34372 = D.34371->data.op[1].vtype;
        D.34384 = mono_type_to_regmove (cfg, D.34372);
        D.34385 = (short unsigned int) D.34384;
        ins->opcode = D.34385;
        D.33491 = cfg->varinfo;
        D.34367 = temp->data.op[0].const_val;
        D.34368 = (unsigned int) D.34367;
        D.34369 = D.34368 * 4;
        D.34370 = D.33491 + D.34369;
        D.34371 = *D.34370;
        D.34372 = D.34371->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.34372, ins);
        D.33491 = cfg->varinfo;
        D.34367 = temp->data.op[0].const_val;
        D.34368 = (unsigned int) D.34367;
        D.34369 = D.34368 * 4;
        D.34370 = D.33491 + D.34369;
        D.34371 = *D.34370;
        D.34375 = D.34371->klass;
        ins->klass = D.34375;
        D.33491 = cfg->varinfo;
        D.34367 = temp->data.op[0].const_val;
        D.34368 = (unsigned int) D.34367;
        D.34369 = D.34368 * 4;
        D.34370 = D.33491 + D.34369;
        D.34371 = *D.34370;
        D.34376 = D.34371->dreg;
        ins->sreg1 = D.34376;
        D.33501 = ins->type;
        D.33502 = (<unnamed type>) D.33501;
        D.34386 = alloc_dreg (cfg, D.33502);
        D.34387 = (int) D.34386;
        ins->dreg = D.34387;
        D.33505 = ins->opcode;
        if (D.33505 == 427) goto <D.34388>; else goto <D.34389>;
        <D.34388>:
        D.33491 = cfg->varinfo;
        D.34367 = temp->data.op[0].const_val;
        D.34368 = (unsigned int) D.34367;
        D.34369 = D.34368 * 4;
        D.34370 = D.33491 + D.34369;
        D.34371 = *D.34370;
        D.34372 = D.34371->data.op[1].vtype;
        D.34390 = mono_class_from_mono_type (D.34372);
        ins->klass = D.34390;
        <D.34389>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.34391>; else goto <D.34392>;
        <D.34391>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.34393>;
        <D.34392>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.34393>:
        sp.111 = sp;
        sp = sp.111 + 4;
        *sp.111 = ins;
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 424;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        D.33491 = cfg->varinfo;
        D.34367 = temp->data.op[0].const_val;
        D.34368 = (unsigned int) D.34367;
        D.34369 = D.34368 * 4;
        D.34370 = D.33491 + D.34369;
        D.34371 = *D.34370;
        D.34372 = D.34371->data.op[1].vtype;
        D.34395 = mono_type_to_regmove (cfg, D.34372);
        D.34396 = (short unsigned int) D.34395;
        ins->opcode = D.34396;
        D.33491 = cfg->varinfo;
        D.34367 = temp->data.op[0].const_val;
        D.34368 = (unsigned int) D.34367;
        D.34369 = D.34368 * 4;
        D.34370 = D.33491 + D.34369;
        D.34371 = *D.34370;
        D.34372 = D.34371->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.34372, ins);
        D.33491 = cfg->varinfo;
        D.34367 = temp->data.op[0].const_val;
        D.34368 = (unsigned int) D.34367;
        D.34369 = D.34368 * 4;
        D.34370 = D.33491 + D.34369;
        D.34371 = *D.34370;
        D.34375 = D.34371->klass;
        ins->klass = D.34375;
        D.33491 = cfg->varinfo;
        D.34367 = temp->data.op[0].const_val;
        D.34368 = (unsigned int) D.34367;
        D.34369 = D.34368 * 4;
        D.34370 = D.33491 + D.34369;
        D.34371 = *D.34370;
        D.34376 = D.34371->dreg;
        ins->sreg1 = D.34376;
        D.33501 = ins->type;
        D.33502 = (<unnamed type>) D.33501;
        D.34397 = alloc_dreg (cfg, D.33502);
        D.34398 = (int) D.34397;
        ins->dreg = D.34398;
        D.33505 = ins->opcode;
        if (D.33505 == 427) goto <D.34399>; else goto <D.34400>;
        <D.34399>:
        D.33491 = cfg->varinfo;
        D.34367 = temp->data.op[0].const_val;
        D.34368 = (unsigned int) D.34367;
        D.34369 = D.34368 * 4;
        D.34370 = D.33491 + D.34369;
        D.34371 = *D.34370;
        D.34372 = D.34371->data.op[1].vtype;
        D.34401 = mono_class_from_mono_type (D.34372);
        ins->klass = D.34401;
        <D.34400>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.34402>; else goto <D.34403>;
        <D.34402>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.34404>;
        <D.34403>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.34404>:
        sp.112 = sp;
        sp = sp.112 + 4;
        *sp.112 = ins;
        ip = ip + 1;
        inline_costs = inline_costs + 2;
        goto <D.29893>;
      }
      <D.29947>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.34406>; else goto <D.34407>;
      <D.34406>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.34408>; else goto <D.34409>;
      <D.34408>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.34410>; else goto <D.34411>;
      <D.34410>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34411>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34409>:
      D.34412 = mini_get_debug_options ();
      D.34413 = D.34412->break_on_unverified;
      if (D.34413 != 0) goto <D.34414>; else goto unverified;
      <D.34414>:
      raise (5);
      <D.34407>:
      ip = ip + 1;
      sp = sp + 4294967292;
      goto <D.29893>;
      <D.29948>:
      {
        struct MonoCallInst * call;

        D.32726 = cfg->method;
        if (D.32726 != method) goto <D.34415>; else goto <D.34416>;
        <D.34415>:
        D.32698 = BIT_FIELD_REF <*method, 8, 160>;
        D.32699 = D.32698 & 124;
        if (D.32699 == 0) goto <D.34417>; else goto <D.34418>;
        <D.34417>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 1) goto <D.34419>; else goto <D.34420>;
        <D.34419>:
        printf ("inline failed: %s\n", "jmp");
        <D.34420>:
        goto inline_failure;
        <D.34418>:
        <D.34416>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.34421>; else goto <D.34422>;
        <D.34421>:
        D.32693 = method->klass;
        D.34423 = D.32693->name_space;
        D.32693 = method->klass;
        D.34424 = D.32693->name;
        D.34425 = method->name;
        D.34426 = method->signature;
        D.34427 = D.34426->param_count;
        D.34428 = (int) D.34427;
        D.33632 = *ip;
        D.33633 = (int) D.33632;
        D.34429 = mono_opcode_name (D.33633);
        D.34430 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.34423, D.34424, D.34425, D.34428, D.34429, "method-to-ir.c", 7539);
        cfg->exception_message = D.34430;
        D.32836 = cfg->verbose_level;
        if (D.32836 > 1) goto <D.34431>; else goto <D.34432>;
        <D.34431>:
        D.34433 = cfg->exception_message;
        printf ("%s\n", D.34433);
        <D.34432>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34422>:
        D.34195 = ip + 5;
        if (D.34195 > end) goto <D.34434>; else goto <D.34435>;
        <D.34434>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.34436>; else goto <D.34437>;
        <D.34436>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.34438>; else goto <D.34439>;
        <D.34438>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34439>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34437>:
        D.34440 = mini_get_debug_options ();
        D.34441 = D.34440->break_on_unverified;
        if (D.34441 != 0) goto <D.34442>; else goto unverified;
        <D.34442>:
        raise (5);
        <D.34435>:
        if (stack_start != sp) goto <D.34443>; else goto <D.34444>;
        <D.34443>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.34445>; else goto <D.34446>;
        <D.34445>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.34447>; else goto <D.34448>;
        <D.34447>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34448>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34446>:
        D.34449 = mini_get_debug_options ();
        D.34450 = D.34449->break_on_unverified;
        if (D.34450 != 0) goto <D.34451>; else goto unverified;
        <D.34451>:
        raise (5);
        <D.34444>:
        D.34214 = ip + 1;
        token = mono_read32 (D.34214);
        cmethod = mini_get_method (cfg, method, token, 0B, generic_context);
        if (cmethod == 0B) goto <D.34452>; else goto <D.34454>;
        <D.34454>:
        D.34455 = mono_loader_get_last_error ();
        if (D.34455 != 0B) goto <D.34452>; else goto <D.34453>;
        <D.34452>:
        D.34456 = mini_get_debug_options ();
        D.34457 = D.34456->break_on_unverified;
        if (D.34457 != 0) goto <D.34458>; else goto load_error;
        <D.34458>:
        raise (5);
        <D.34453>:
        D.32791 = cfg->generic_sharing_context;
        if (D.32791 != 0B) goto <D.34459>; else goto <D.34460>;
        <D.34459>:
        D.34461 = mono_method_check_context_used (cmethod);
        if (D.34461 != 0) goto <D.34462>; else goto <D.34463>;
        <D.34462>:
        D.32791 = cfg->generic_sharing_context;
        if (D.32791 != 0B) goto <D.34464>; else goto <D.34465>;
        <D.34464>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.34466>; else goto <D.34467>;
        <D.34466>:
        D.32693 = method->klass;
        D.34423 = D.32693->name_space;
        D.32693 = method->klass;
        D.34424 = D.32693->name;
        D.34425 = method->name;
        D.34426 = method->signature;
        D.34427 = D.34426->param_count;
        D.34428 = (int) D.34427;
        D.34468 = mono_opcode_name (39);
        printf ("sharing failed for method %s.%s.%s/%d opcode %s line %d\n", D.34423, D.34424, D.34425, D.34428, D.34468, 7552);
        <D.34467>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34465>:
        <D.34463>:
        <D.34460>:
        D.34469 = mono_security_get_mode ();
        if (D.34469 == 2) goto <D.34470>; else goto <D.34471>;
        <D.34470>:
        D.33309 = cfg->exception_type;
        if (D.33309 != 0) goto exception_exit; else goto <D.34472>;
        <D.34472>:
        <D.34471>:
        if (0 != 0) goto <D.34473>; else goto <D.34474>;
        <D.34473>:
        {
          struct MonoMethodSignature * fsig;
          int i;
          int n;

          fsig = mono_method_signature (cmethod);
          D.34475 = fsig->param_count;
          D.34476 = (int) D.34475;
          D.34477 = fsig->hasthis;
          D.34478 = (int) D.34477;
          n = D.34476 + D.34478;
          D.32836 = cfg->verbose_level;
          if (D.32836 > 1) goto <D.34479>; else goto <D.34480>;
          <D.34479>:
          printf ("AOT disabled: %s:%d\n", "method-to-ir.c", 7564);
          <D.34480>:
          cfg->disable_aot = 1;
          D.32755 = cfg->mempool;
          call = mono_mempool_alloc0 (D.32755, 120);
          call->inst.opcode = 444;
          call->inst.dreg = -1;
          call->inst.sreg3 = -1;
          D.34481 = call->inst.sreg3;
          call->inst.sreg2 = D.34481;
          D.34482 = call->inst.sreg2;
          call->inst.sreg1 = D.34482;
          D.32979 = cfg->ip;
          call->inst.cil_code = D.32979;
          call->method = cmethod;
          call->tail_call = 1;
          D.34483 = mono_method_signature (cmethod);
          call->signature = D.34483;
          D.32755 = cfg->mempool;
          n.113 = (unsigned int) n;
          D.34485 = n.113 * 4;
          D.34486 = mono_mempool_alloc (D.32755, D.34485);
          call->args = D.34486;
          call->inst.data.op[0].p = cmethod;
          i = 0;
          goto <D.29956>;
          <D.29955>:
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.32755 = cfg->mempool;
          D.34491 = mono_mempool_alloc (D.32755, 56);
          *D.34490 = D.34491;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.34492->data.op[1].const_val = 0;
          D.34493 = D.34492->data.op[1].const_val;
          D.34492->data.op[0].const_val = D.34493;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.34492->prev = 0B;
          D.34494 = D.34492->prev;
          D.34492->next = D.34494;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.34492->opcode = 424;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.34492->flags = 0;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.34492->type = 0;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.34492->dreg = -1;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.34492->sreg3 = -1;
          D.34495 = D.34492->sreg3;
          D.34492->sreg2 = D.34495;
          D.34496 = D.34492->sreg2;
          D.34492->sreg1 = D.34496;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.32979 = cfg->ip;
          D.34492->cil_code = D.32979;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.33368 = cfg->arg_types;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34497 = D.33368 + D.34489;
          D.34498 = *D.34497;
          D.34499 = mono_type_to_regmove (cfg, D.34498);
          D.34500 = (short unsigned int) D.34499;
          D.34492->opcode = D.34500;
          D.33368 = cfg->arg_types;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34497 = D.33368 + D.34489;
          D.34498 = *D.34497;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          type_to_eval_stack_type (cfg, D.34498, D.34492);
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.33358 = cfg->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34501 = D.33358 + D.34489;
          D.34502 = *D.34501;
          D.34503 = D.34502->klass;
          D.34492->klass = D.34503;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.33358 = cfg->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34501 = D.33358 + D.34489;
          D.34502 = *D.34501;
          D.34504 = D.34502->dreg;
          D.34492->sreg1 = D.34504;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.34505 = D.34492->type;
          D.34506 = (<unnamed type>) D.34505;
          D.34507 = alloc_dreg (cfg, D.34506);
          D.34508 = (int) D.34507;
          D.34492->dreg = D.34508;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.34509 = D.34492->opcode;
          if (D.34509 == 427) goto <D.34510>; else goto <D.34511>;
          <D.34510>:
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.33368 = cfg->arg_types;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34497 = D.33368 + D.34489;
          D.34498 = *D.34497;
          D.34512 = mono_class_from_mono_type (D.34498);
          D.34492->klass = D.34512;
          <D.34511>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.34513>; else goto <D.34514>;
          <D.34513>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          D.33008->next = D.34492;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.34492->prev = D.33008;
          bblock.125 = cfg->cbb;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          bblock.125->last_ins = D.34492;
          goto <D.34515>;
          <D.34514>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          D.34487 = call->args;
          i.114 = (unsigned int) i;
          D.34489 = i.114 * 4;
          D.34490 = D.34487 + D.34489;
          D.34492 = *D.34490;
          bblock.125->last_ins = D.34492;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.34515>:
          i = i + 1;
          <D.29956>:
          if (i < n) goto <D.29955>; else goto <D.29957>;
          <D.29957>:
          mono_arch_emit_call (cfg, call);
          bblock.76 = bblock;
          D.33093 = bblock.76->last_ins;
          if (D.33093 != 0B) goto <D.34516>; else goto <D.34517>;
          <D.34516>:
          bblock.76 = bblock;
          D.33093 = bblock.76->last_ins;
          D.33093->next = call;
          bblock.76 = bblock;
          D.33093 = bblock.76->last_ins;
          MEM[(struct MonoInst *)call].prev = D.33093;
          bblock.76 = bblock;
          bblock.76->last_ins = call;
          goto <D.34518>;
          <D.34517>:
          bblock.76 = bblock;
          bblock.76 = bblock;
          bblock.76->last_ins = call;
          D.33093 = bblock.76->last_ins;
          bblock.76->code = D.33093;
          <D.34518>:
        }
        goto <D.34519>;
        <D.34474>:
        i = 0;
        goto <D.29959>;
        <D.29958>:
        i.74 = (unsigned int) i;
        D.33487 = i.74 * 4;
        D.34520 = arg_array + D.33487;
        D.34521 = *D.34520;
        i.74 = (unsigned int) i;
        D.33487 = i.74 * 4;
        D.34520 = arg_array + D.33487;
        D.34521 = *D.34520;
        D.34522 = D.34521->flags;
        D.34523 = D.34522 | 4;
        D.34521->flags = D.34523;
        i = i + 1;
        <D.29959>:
        i.115 = (unsigned int) i;
        if (i.115 < num_args) goto <D.29958>; else goto <D.29960>;
        <D.29960>:
        D.32755 = cfg->mempool;
        call = mono_mempool_alloc0 (D.32755, 120);
        call->inst.opcode = 443;
        call->inst.dreg = -1;
        call->inst.sreg3 = -1;
        D.34481 = call->inst.sreg3;
        call->inst.sreg2 = D.34481;
        D.34482 = call->inst.sreg2;
        call->inst.sreg1 = D.34482;
        D.32979 = cfg->ip;
        call->inst.cil_code = D.32979;
        ins = call;
        ins->data.op[0].p = cmethod;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        if (D.33093 != 0B) goto <D.34525>; else goto <D.34526>;
        <D.34525>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        D.33093->next = ins;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        ins->prev = D.33093;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        goto <D.34527>;
        <D.34526>:
        bblock.76 = bblock;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        D.33093 = bblock.76->last_ins;
        bblock.76->code = D.33093;
        <D.34527>:
        <D.34519>:
        ip = ip + 5;
        start_new_bblock = 1;
        goto <D.29893>;
      }
      <D.29961>:
      <D.29962>:
      <D.29963>:
      {
        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.33632 = *ip;
            D.34528 = D.33632 == 111;
            virtual = (int) D.34528;
            D.33632 = *ip;
            D.34529 = D.33632 == 41;
            calli = (int) D.34529;
            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.33632 = *ip;
            call_opcode = (guint32) D.33632;
            emit_widen = 1;
            push_res = 1;
            skip_ret = 0;
            delegate_invoke = 0;
            D.34195 = ip + 5;
            if (D.34195 > end) goto <D.34530>; else goto <D.34531>;
            <D.34530>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.34532>; else goto <D.34533>;
            <D.34532>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.34534>; else goto <D.34535>;
            <D.34534>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.34535>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.34533>:
            D.34536 = mini_get_debug_options ();
            D.34537 = D.34536->break_on_unverified;
            if (D.34537 != 0) goto <D.34538>; else goto unverified;
            <D.34538>:
            raise (5);
            <D.34531>:
            D.34214 = ip + 1;
            token = mono_read32 (D.34214);
            ins = 0B;
            if (calli != 0) goto <D.34539>; else goto <D.34540>;
            <D.34539>:
            cmethod = 0B;
            sp.83 = (int) sp;
            stack_start.84 = (int) stack_start;
            D.33526 = sp.83 - stack_start.84;
            if (D.33526 <= 3) goto <D.34541>; else goto <D.34542>;
            <D.34541>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.34543>; else goto <D.34544>;
            <D.34543>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.34545>; else goto <D.34546>;
            <D.34545>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.34546>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.34544>:
            D.34547 = mini_get_debug_options ();
            D.34548 = D.34547->break_on_unverified;
            if (D.34548 != 0) goto <D.34549>; else goto unverified;
            <D.34549>:
            raise (5);
            <D.34542>:
            sp = sp + 4294967292;
            addr = *sp;
            fsig = mini_get_signature (method, token, generic_context);
            D.34550 = fsig->param_count;
            D.34551 = (int) D.34550;
            D.34552 = fsig->hasthis;
            D.34553 = (int) D.34552;
            n = D.34551 + D.34553;
            D.32805 = BIT_FIELD_REF <*method, 8, 168>;
            D.34554 = D.32805 & 2;
            if (D.34554 != 0) goto <D.34555>; else goto <D.34556>;
            <D.34555>:
            D.34557 = BIT_FIELD_REF <*fsig, 8, 88>;
            D.34558 = D.34557 & 1;
            if (D.34558 != 0) goto <D.34559>; else goto <D.34560>;
            <D.34559>:
            {
              struct MonoInst * args[3];

              try
                {
                  D.32755 = cfg->mempool;
                  D.34561 = mono_mempool_alloc (D.32755, 56);
                  args[0] = D.34561;
                  D.34562 = args[0];
                  D.34562 = args[0];
                  D.34562->data.op[1].const_val = 0;
                  D.34563 = D.34562->data.op[1].const_val;
                  D.34562->data.op[0].const_val = D.34563;
                  D.34562 = args[0];
                  D.34562 = args[0];
                  D.34562->prev = 0B;
                  D.34564 = D.34562->prev;
                  D.34562->next = D.34564;
                  D.34562 = args[0];
                  D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
                  D.33151 = D.33150 & 64;
                  if (D.33151 != 0) goto <D.34566>; else goto <D.34567>;
                  <D.34566>:
                  iftmp.116 = 732;
                  goto <D.34568>;
                  <D.34567>:
                  iftmp.116 = 362;
                  <D.34568>:
                  D.34562->opcode = iftmp.116;
                  D.34562 = args[0];
                  D.34562->flags = 0;
                  D.34562 = args[0];
                  D.34562->type = 0;
                  D.34562 = args[0];
                  D.34562->dreg = -1;
                  D.34562 = args[0];
                  D.34562 = args[0];
                  D.34562 = args[0];
                  D.34562->sreg3 = -1;
                  D.34569 = D.34562->sreg3;
                  D.34562->sreg2 = D.34569;
                  D.34570 = D.34562->sreg2;
                  D.34562->sreg1 = D.34570;
                  D.34562 = args[0];
                  D.32979 = cfg->ip;
                  D.34562->cil_code = D.32979;
                  D.34562 = args[0];
                  D.32693 = method->klass;
                  D.32694 = D.32693->image;
                  D.34562->data.op[0].p = D.32694;
                  D.34562 = args[0];
                  D.34562->data.op[1].src = 12B;
                  D.34562 = args[0];
                  D.34562->type = 3;
                  D.34562 = args[0];
                  D.34571 = alloc_dreg (cfg, 3);
                  D.34572 = (int) D.34571;
                  D.34562->dreg = D.34572;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.34573>; else goto <D.34574>;
                  <D.34573>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.34562 = args[0];
                  D.33008->next = D.34562;
                  D.34562 = args[0];
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.34562->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  D.34562 = args[0];
                  bblock.125->last_ins = D.34562;
                  goto <D.34575>;
                  <D.34574>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  D.34562 = args[0];
                  bblock.125->last_ins = D.34562;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.34575>:
                  D.32755 = cfg->mempool;
                  D.34576 = mono_mempool_alloc (D.32755, 56);
                  args[1] = D.34576;
                  D.34577 = args[1];
                  D.34577 = args[1];
                  D.34577->data.op[1].const_val = 0;
                  D.34578 = D.34577->data.op[1].const_val;
                  D.34577->data.op[0].const_val = D.34578;
                  D.34577 = args[1];
                  D.34577 = args[1];
                  D.34577->prev = 0B;
                  D.34579 = D.34577->prev;
                  D.34577->next = D.34579;
                  D.34577 = args[1];
                  D.34577->opcode = 362;
                  D.34577 = args[1];
                  D.34577->flags = 0;
                  D.34577 = args[1];
                  D.34577->type = 0;
                  D.34577 = args[1];
                  D.34577->dreg = -1;
                  D.34577 = args[1];
                  D.34577 = args[1];
                  D.34577 = args[1];
                  D.34577->sreg3 = -1;
                  D.34580 = D.34577->sreg3;
                  D.34577->sreg2 = D.34580;
                  D.34581 = D.34577->sreg2;
                  D.34577->sreg1 = D.34581;
                  D.34577 = args[1];
                  D.32979 = cfg->ip;
                  D.34577->cil_code = D.32979;
                  D.34577 = args[1];
                  D.34577->data.op[0].p = fsig;
                  D.34577 = args[1];
                  D.34577->type = 3;
                  D.34577 = args[1];
                  D.34582 = alloc_dreg (cfg, 3);
                  D.34583 = (int) D.34582;
                  D.34577->dreg = D.34583;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.34584>; else goto <D.34585>;
                  <D.34584>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.34577 = args[1];
                  D.33008->next = D.34577;
                  D.34577 = args[1];
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.34577->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  D.34577 = args[1];
                  bblock.125->last_ins = D.34577;
                  goto <D.34586>;
                  <D.34585>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  D.34577 = args[1];
                  bblock.125->last_ins = D.34577;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.34586>:
                  args[2] = addr;
                  addr = mono_emit_jit_icall (cfg, mono_get_native_calli_wrapper, &args);
                }
              finally
                {
                  args = {CLOBBER};
                }
            }
            <D.34560>:
            <D.34556>:
            goto <D.34587>;
            <D.34540>:
            {
              struct MonoMethod * cil_method;

              try
                {
                  cmethod = mini_get_method (cfg, method, token, 0B, generic_context);
                  cil_method = cmethod;
                  if (constrained_call != 0B) goto <D.34588>; else goto <D.34589>;
                  <D.34588>:
                  D.32698 = BIT_FIELD_REF <*method, 8, 160>;
                  D.32699 = D.32698 & 124;
                  if (D.32699 != 0) goto <D.34590>; else goto <D.34591>;
                  <D.34590>:
                  D.32836 = cfg->verbose_level;
                  if (D.32836 > 2) goto <D.34592>; else goto <D.34593>;
                  <D.34592>:
                  D.34594 = mono_type_get_full_name (constrained_call);
                  printf ("DM Constrained call to %s\n", D.34594);
                  <D.34593>:
                  D.34597 = constrained_call->byval_arg.type;
                  D.34598 = D.34597 != 19;
                  D.34599 = D.34597 != 30;
                  D.34600 = D.34598 & D.34599;
                  if (D.34600 != 0) goto <D.34595>; else goto <D.34601>;
                  <D.34601>:
                  D.32791 = cfg->generic_sharing_context;
                  if (D.32791 == 0B) goto <D.34595>; else goto <D.34596>;
                  <D.34595>:
                  cil_method.117 = cil_method;
                  cmethod = mono_get_method_constrained_with_method (image, cil_method.117, constrained_call, generic_context);
                  <D.34596>:
                  goto <D.34603>;
                  <D.34591>:
                  D.32836 = cfg->verbose_level;
                  if (D.32836 > 2) goto <D.34604>; else goto <D.34605>;
                  <D.34604>:
                  D.34606 = mono_type_get_full_name (constrained_call);
                  printf ("Constrained call to %s\n", D.34606);
                  <D.34605>:
                  D.34609 = constrained_call->byval_arg.type;
                  D.34610 = D.34609 == 19;
                  D.34611 = D.34609 == 30;
                  D.34612 = D.34610 | D.34611;
                  if (D.34612 != 0) goto <D.34613>; else goto <D.34607>;
                  <D.34613>:
                  D.32791 = cfg->generic_sharing_context;
                  if (D.32791 != 0B) goto <D.34614>; else goto <D.34607>;
                  <D.34614>:
                  D.34615 = mini_is_gsharedvt_klass (cfg, constrained_call);
                  if (D.34615 == 0) goto <D.34616>; else goto <D.34617>;
                  <D.34616>:
                  D.34618 = cmethod->klass;
                  D.34619 = BIT_FIELD_REF <*D.34618, 8, 160>;
                  D.34620 = D.34619 & 8;
                  D.34621 = D.34620 != 0;
                  D.34622 = (long int) D.34621;
                  D.34623 = __builtin_expect (D.34622, 0);
                  if (D.34623 != 0) goto <D.34624>; else goto <D.34625>;
                  <D.34624>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7671, "!cmethod->klass->valuetype");
                  <D.34625>:
                  <D.34617>:
                  goto <D.34608>;
                  <D.34607>:
                  cmethod = mono_get_method_constrained (image, token, constrained_call, generic_context, &cil_method);
                  <D.34608>:
                  <D.34603>:
                  <D.34589>:
                  if (cmethod == 0B) goto <D.34626>; else goto <D.34628>;
                  <D.34628>:
                  D.34629 = mono_loader_get_last_error ();
                  if (D.34629 != 0B) goto <D.34626>; else goto <D.34627>;
                  <D.34626>:
                  D.34630 = mini_get_debug_options ();
                  D.34631 = D.34630->break_on_unverified;
                  if (D.34631 != 0) goto <D.34632>; else goto load_error;
                  <D.34632>:
                  raise (5);
                  <D.34627>:
                  if (dont_verify == 0) goto <D.34633>; else goto <D.34634>;
                  <D.34633>:
                  D.33528 = BIT_FIELD_REF <*cfg, 8, 3400>;
                  D.34635 = D.33528 & 64;
                  if (D.34635 == 0) goto <D.34636>; else goto <D.34637>;
                  <D.34636>:
                  {
                    struct MonoMethod * target_method;

                    target_method = cil_method;
                    D.32805 = BIT_FIELD_REF <*method, 8, 168>;
                    D.32806 = D.32805 & 16;
                    if (D.32806 != 0) goto <D.34638>; else goto <D.34639>;
                    <D.34638>:
                    D.34640 = mono_method_get_generic_container (method_definition);
                    D.34641 = &D.34640->context;
                    target_method = mini_get_method_allow_open (method, token, 0B, D.34641);
                    <D.34639>:
                    D.34642 = mono_method_can_access_method (method_definition, target_method);
                    if (D.34642 == 0) goto <D.34643>; else goto <D.34644>;
                    <D.34643>:
                    cil_method.117 = cil_method;
                    D.34645 = mono_method_can_access_method (method, cil_method.117);
                    if (D.34645 == 0) goto <D.34646>; else goto <D.34647>;
                    <D.34646>:
                    {
                      char * method_fname;
                      char * cil_method_fname;

                      method_fname = mono_method_full_name (method, 1);
                      cil_method.117 = cil_method;
                      cil_method_fname = mono_method_full_name (cil_method.117, 1);
                      mono_cfg_set_exception (cfg, 9);
                      D.34648 = monoeg_g_strdup_printf ("Method `%s\' is inaccessible from method `%s\'\n", cil_method_fname, method_fname);
                      cfg->exception_message = D.34648;
                      monoeg_g_free (method_fname);
                      monoeg_g_free (cil_method_fname);
                      goto exception_exit;
                    }
                    <D.34647>:
                    <D.34644>:
                  }
                  <D.34637>:
                  <D.34634>:
                  D.34649 = mono_security_get_mode ();
                  if (D.34649 == 1) goto <D.34650>; else goto <D.34651>;
                  <D.34650>:
                  cil_method.117 = cil_method;
                  bblock.76 = bblock;
                  ensure_method_is_allowed_to_call_method (cfg, method, cil_method.117, bblock.76, ip);
                  <D.34651>:
                  if (virtual == 0) goto <D.34652>; else goto <D.34653>;
                  <D.34652>:
                  D.34654 = cmethod->flags;
                  D.34655 = (int) D.34654;
                  D.34656 = D.34655 & 1024;
                  if (D.34656 != 0) goto <D.34657>; else goto <D.34658>;
                  <D.34657>:
                  virtual = 1;
                  <D.34658>:
                  <D.34653>:
                  {
                    const int test_flags;
                    const int expected_flags;

                    test_flags = 112;
                    expected_flags = 96;
                    if (virtual == 0) goto <D.34659>; else goto <D.34660>;
                    <D.34659>:
                    D.34618 = cmethod->klass;
                    D.34661 = BIT_FIELD_REF <*D.34618, 8, 176>;
                    D.34662 = D.34661 & 64;
                    if (D.34662 != 0) goto <D.34663>; else goto <D.34664>;
                    <D.34663>:
                    D.34654 = cmethod->flags;
                    D.34655 = (int) D.34654;
                    D.34665 = D.34655 & 112;
                    if (D.34665 == 96) goto <D.34666>; else goto <D.34667>;
                    <D.34666>:
                    D.32726 = cfg->method;
                    D.34668 = BIT_FIELD_REF <*D.32726, 8, 160>;
                    D.34669 = D.34668 & 124;
                    if (D.34669 == 0) goto <D.34670>; else goto <D.34671>;
                    <D.34670>:
                    virtual = 1;
                    <D.34671>:
                    <D.34667>:
                    <D.34664>:
                    <D.34660>:
                  }
                  D.34618 = cmethod->klass;
                  D.34619 = BIT_FIELD_REF <*D.34618, 8, 160>;
                  D.34672 = D.34619 & 1;
                  if (D.34672 == 0) goto <D.34673>; else goto <D.34674>;
                  <D.34673>:
                  D.34618 = cmethod->klass;
                  D.34675 = mono_class_init (D.34618);
                  if (D.34675 == 0) goto <D.34676>; else goto <D.34677>;
                  <D.34676>:
                  D.34678 = mini_get_debug_options ();
                  D.34679 = D.34678->break_on_unverified;
                  if (D.34679 != 0) goto <D.34680>; else goto <D.34681>;
                  <D.34680>:
                  raise (5);
                  goto <D.34682>;
                  <D.34681>:
                  D.34618 = cmethod->klass;
                  cfg->exception_ptr = D.34618;
                  goto load_error;
                  <D.34682>:
                  <D.34677>:
                  <D.34674>:
                  D.34685 = cmethod->iflags;
                  D.34686 = (int) D.34685;
                  D.34687 = D.34686 & 4096;
                  if (D.34687 != 0) goto <D.34688>; else goto <D.34683>;
                  <D.34688>:
                  D.34618 = cmethod->klass;
                  D.34689 = mini_class_is_system_array (D.34618);
                  if (D.34689 != 0) goto <D.34690>; else goto <D.34683>;
                  <D.34690>:
                  D.34618 = cmethod->klass;
                  D.34691 = D.34618->rank;
                  array_rank = (int) D.34691;
                  fsig = mono_method_signature (cmethod);
                  goto <D.34684>;
                  <D.34683>:
                  fsig = mono_method_signature (cmethod);
                  if (fsig == 0B) goto <D.34692>; else goto <D.34693>;
                  <D.34692>:
                  D.34694 = mini_get_debug_options ();
                  D.34695 = D.34694->break_on_unverified;
                  if (D.34695 != 0) goto <D.34696>; else goto load_error;
                  <D.34696>:
                  raise (5);
                  <D.34693>:
                  D.34557 = BIT_FIELD_REF <*fsig, 8, 88>;
                  D.34558 = D.34557 & 1;
                  if (D.34558 != 0) goto <D.34697>; else goto <D.34698>;
                  <D.34697>:
                  {
                    struct MonoMethod * wrapper;

                    check_for_pending_exc.118 = check_for_pending_exc;
                    D.34700 = cfg->compile_aot;
                    D.34701 = (int) D.34700;
                    wrapper = mono_marshal_get_native_wrapper (cmethod, check_for_pending_exc.118, D.34701);
                    fsig = mono_method_signature (wrapper);
                  }
                  goto <D.34702>;
                  <D.34698>:
                  if (constrained_call != 0B) goto <D.34703>; else goto <D.34704>;
                  <D.34703>:
                  fsig = mono_method_signature (cmethod);
                  goto <D.34705>;
                  <D.34704>:
                  fsig = mono_method_get_signature_full (cmethod, image, token, generic_context);
                  <D.34705>:
                  <D.34702>:
                  <D.34684>:
                  cil_method.117 = cil_method;
                  mono_save_token_info (cfg, image, token, cil_method.117);
                  D.34706 = fsig->ret;
                  D.34707 = mono_type_is_void (D.34706);
                  if (D.34707 == 0) goto <D.34708>; else goto <D.34709>;
                  <D.34708>:
                  D.34195 = ip + 5;
                  if (D.34195 >= end) goto <D.34712>; else goto <D.34713>;
                  <D.34713>:
                  D.34195 = ip + 5;
                  D.34714 = *D.34195;
                  D.34715 = D.34714 != 38;
                  D.34716 = D.34714 != 0;
                  D.34717 = D.34715 & D.34716;
                  if (D.34717 != 0) goto <D.34712>; else goto <D.34711>;
                  <D.34712>:
                  if (seq_point_locs == 0B) goto <D.34710>; else goto <D.34718>;
                  <D.34718>:
                  D.34195 = ip + 5;
                  D.34719 = (int) D.34195;
                  D.32903 = header->code;
                  D.33448 = (int) D.32903;
                  D.34720 = D.34719 - D.33448;
                  D.34721 = (unsigned int) D.34720;
                  D.34722 = D.34721 / 32;
                  D.34723 = seq_point_locs->data[D.34722];
                  D.34195 = ip + 5;
                  D.34719 = (int) D.34195;
                  D.32903 = header->code;
                  D.33448 = (int) D.32903;
                  D.34720 = D.34719 - D.33448;
                  D.34724 = D.34720 & 31;
                  D.34725 = 1 << D.34724;
                  D.34726 = D.34723 & D.34725;
                  if (D.34726 == 0) goto <D.34710>; else goto <D.34711>;
                  <D.34710>:
                  need_seq_point = 1;
                  <D.34711>:
                  <D.34709>:
                  D.34550 = fsig->param_count;
                  D.34551 = (int) D.34550;
                  D.34552 = fsig->hasthis;
                  D.34553 = (int) D.34552;
                  n = D.34551 + D.34553;
                  D.34727 = mono_security_get_mode ();
                  if (D.34727 == 2) goto <D.34728>; else goto <D.34729>;
                  <D.34728>:
                  D.34730 = check_linkdemand (cfg, method, cmethod);
                  if (D.34730 != 0) goto <D.34731>; else goto <D.34732>;
                  <D.34731>:
                  D.32726 = cfg->method;
                  if (D.32726 != method) goto <D.34733>; else goto <D.34734>;
                  <D.34733>:
                  D.32698 = BIT_FIELD_REF <*method, 8, 160>;
                  D.32699 = D.32698 & 124;
                  if (D.32699 == 0) goto <D.34735>; else goto <D.34736>;
                  <D.34735>:
                  D.32836 = cfg->verbose_level;
                  if (D.32836 > 1) goto <D.34737>; else goto <D.34738>;
                  <D.34737>:
                  printf ("inline failed: %s\n", "linkdemand");
                  <D.34738>:
                  goto inline_failure;
                  <D.34736>:
                  <D.34734>:
                  <D.34732>:
                  D.33309 = cfg->exception_type;
                  if (D.33309 != 0) goto exception_exit; else goto <D.34739>;
                  <D.34739>:
                  <D.34729>:
                  D.34740 = BIT_FIELD_REF <*cmethod, 8, 160>;
                  D.34741 = D.34740 & 128;
                  if (D.34741 != 0) goto <D.34742>; else goto <D.34743>;
                  <D.34742>:
                  D.32698 = BIT_FIELD_REF <*method, 8, 160>;
                  D.32699 = D.32698 & 124;
                  if (D.32699 != 16) goto <D.34744>; else goto <D.34745>;
                  <D.34744>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 7769);
                  <D.34745>:
                  <D.34743>:
                }
              finally
                {
                  cil_method = {CLOBBER};
                }
            }
            <D.34587>:
            D.32791 = cfg->generic_sharing_context;
            if (D.32791 == 0B) goto <D.34746>; else goto <D.34747>;
            <D.34746>:
            if (cmethod != 0B) goto <D.34748>; else goto <D.34749>;
            <D.34748>:
            D.34618 = cmethod->klass;
            D.34750 = D.34618->generic_container;
            if (D.34750 != 0B) goto <D.34751>; else goto <D.34752>;
            <D.34751>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.34753>; else goto <D.34754>;
            <D.34753>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.34755>; else goto <D.34756>;
            <D.34755>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.34756>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.34754>:
            D.34757 = mini_get_debug_options ();
            D.34758 = D.34757->break_on_unverified;
            if (D.34758 != 0) goto <D.34759>; else goto unverified;
            <D.34759>:
            raise (5);
            <D.34752>:
            <D.34749>:
            <D.34747>:
            D.32791 = cfg->generic_sharing_context;
            if (D.32791 == 0B) goto <D.34760>; else goto <D.34761>;
            <D.34760>:
            if (cmethod != 0B) goto <D.34762>; else goto <D.34763>;
            <D.34762>:
            D.34764 = mono_method_check_context_used (cmethod);
            D.34765 = D.34764 != 0;
            D.34766 = (long int) D.34765;
            D.34767 = __builtin_expect (D.34766, 0);
            if (D.34767 != 0) goto <D.34768>; else goto <D.34769>;
            <D.34768>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7776, "!mono_method_check_context_used (cmethod)");
            <D.34769>:
            <D.34763>:
            <D.34761>:
            sp.83 = (int) sp;
            stack_start.84 = (int) stack_start;
            D.33526 = sp.83 - stack_start.84;
            D.33527 = D.33526 /[ex] 4;
            if (D.33527 < n) goto <D.34770>; else goto <D.34771>;
            <D.34770>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.34772>; else goto <D.34773>;
            <D.34772>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.34774>; else goto <D.34775>;
            <D.34774>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.34775>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.34773>:
            D.34776 = mini_get_debug_options ();
            D.34777 = D.34776->break_on_unverified;
            if (D.34777 != 0) goto <D.34778>; else goto unverified;
            <D.34778>:
            raise (5);
            <D.34771>:
            n.88 = (unsigned int) n;
            D.33677 = n.88 * 4;
            D.34779 = -D.33677;
            sp = sp + D.34779;
            if (constrained_call != 0B) goto <D.34780>; else goto <D.34781>;
            <D.34780>:
            D.34782 = mini_is_gsharedvt_klass (cfg, constrained_call);
            if (D.34782 != 0) goto <D.34783>; else goto <D.34784>;
            <D.34783>:
            D.34618 = cmethod->klass;
            D.34787 = mono_defaults.object_class;
            if (D.34618 != D.34787) goto <D.34788>; else goto <D.34785>;
            <D.34788>:
            D.34789 = BIT_FIELD_REF <*constrained_call, 8, 160>;
            D.34790 = D.34789 & 8;
            if (D.34790 != 0) goto <D.34791>; else goto <D.34785>;
            <D.34791>:
            D.34618 = cmethod->klass;
            D.34619 = BIT_FIELD_REF <*D.34618, 8, 160>;
            D.34620 = D.34619 & 8;
            if (D.34620 != 0) goto <D.34792>; else goto <D.34785>;
            <D.34792>:
            goto <D.34786>;
            <D.34785>:
            D.34618 = cmethod->klass;
            D.34795 = D.34618->image;
            D.34796 = mono_defaults.corlib;
            if (D.34795 != D.34796) goto <D.34797>; else goto <D.34793>;
            <D.34797>:
            D.34618 = cmethod->klass;
            D.34798 = D.34618->flags;
            D.34799 = D.34798 & 32;
            if (D.34799 == 0) goto <D.34800>; else goto <D.34793>;
            <D.34800>:
            D.34618 = cmethod->klass;
            D.34619 = BIT_FIELD_REF <*D.34618, 8, 160>;
            D.34620 = D.34619 & 8;
            if (D.34620 == 0) goto <D.34801>; else goto <D.34793>;
            <D.34801>:
            goto <D.34794>;
            <D.34793>:
            D.34618 = cmethod->klass;
            D.34787 = mono_defaults.object_class;
            if (D.34618 == D.34787) goto <D.34802>; else goto <D.34808>;
            <D.34808>:
            D.34618 = cmethod->klass;
            D.34798 = D.34618->flags;
            D.34799 = D.34798 & 32;
            if (D.34799 != 0) goto <D.34802>; else goto <D.34809>;
            <D.34809>:
            D.34618 = cmethod->klass;
            D.34619 = BIT_FIELD_REF <*D.34618, 8, 160>;
            D.34620 = D.34619 & 8;
            if (D.34620 == 0) goto <D.34810>; else goto <D.34803>;
            <D.34810>:
            D.34618 = cmethod->klass;
            D.34795 = D.34618->image;
            D.34796 = mono_defaults.corlib;
            if (D.34795 != D.34796) goto <D.34802>; else goto <D.34803>;
            <D.34802>:
            D.34706 = fsig->ret;
            D.34811 = mono_type_is_void (D.34706);
            if (D.34811 != 0) goto <D.34804>; else goto <D.34812>;
            <D.34812>:
            D.34706 = fsig->ret;
            D.34813 = BIT_FIELD_REF <*D.34706, 8, 56>;
            D.34814 = D.34813 & 64;
            if (D.34814 == 0) goto <D.34815>; else goto <D.34805>;
            <D.34815>:
            D.34706 = fsig->ret;
            D.34816 = D.34706->type;
            D.34817 = D.34816 + 254;
            D.34818 = D.34817 <= 11;
            D.34819 = D.34816 + 232;
            D.34820 = D.34819 <= 1;
            D.34821 = D.34818 | D.34820;
            if (D.34821 != 0) goto <D.34804>; else goto <D.34805>;
            <D.34805>:
            D.34706 = fsig->ret;
            D.34822 = mono_type_is_reference (D.34706);
            if (D.34822 != 0) goto <D.34804>; else goto <D.34823>;
            <D.34823>:
            D.34706 = fsig->ret;
            D.34824 = mini_is_gsharedvt_type (cfg, D.34706);
            if (D.34824 != 0) goto <D.34804>; else goto <D.34803>;
            <D.34804>:
            D.34550 = fsig->param_count;
            if (D.34550 == 0) goto <D.34806>; else goto <D.34825>;
            <D.34825>:
            D.34826 = BIT_FIELD_REF <*fsig, 8, 80>;
            D.34827 = D.34826 & 64;
            if (D.34827 == 0) goto <D.34828>; else goto <D.34807>;
            <D.34828>:
            D.34550 = fsig->param_count;
            if (D.34550 == 1) goto <D.34806>; else goto <D.34807>;
            <D.34807>:
            D.34550 = fsig->param_count;
            if (D.34550 == 1) goto <D.34829>; else goto <D.34803>;
            <D.34829>:
            D.34830 = fsig->params[0];
            D.34831 = mono_type_is_reference (D.34830);
            if (D.34831 != 0) goto <D.34806>; else goto <D.34832>;
            <D.34832>:
            D.34830 = fsig->params[0];
            D.34833 = mini_is_gsharedvt_type (cfg, D.34830);
            if (D.34833 != 0) goto <D.34806>; else goto <D.34803>;
            <D.34806>:
            {
              struct MonoInst * args[16];

              try
                {
                  D.33750 = *sp;
                  args[0] = D.33750;
                  D.34834 = mono_method_check_context_used (cmethod);
                  if (D.34834 != 0) goto <D.34835>; else goto <D.34836>;
                  <D.34835>:
                  D.34837 = mono_method_check_context_used (cmethod);
                  D.34838 = emit_get_rgctx_method (cfg, D.34837, cmethod, 5);
                  args[1] = D.34838;
                  goto <D.34839>;
                  <D.34836>:
                  D.32755 = cfg->mempool;
                  D.34840 = mono_mempool_alloc (D.32755, 56);
                  args[1] = D.34840;
                  D.34841 = args[1];
                  D.34841 = args[1];
                  D.34841->data.op[1].const_val = 0;
                  D.34842 = D.34841->data.op[1].const_val;
                  D.34841->data.op[0].const_val = D.34842;
                  D.34841 = args[1];
                  D.34841 = args[1];
                  D.34841->prev = 0B;
                  D.34843 = D.34841->prev;
                  D.34841->next = D.34843;
                  D.34841 = args[1];
                  D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
                  D.33151 = D.33150 & 64;
                  if (D.33151 != 0) goto <D.34845>; else goto <D.34846>;
                  <D.34845>:
                  iftmp.119 = 732;
                  goto <D.34847>;
                  <D.34846>:
                  iftmp.119 = 362;
                  <D.34847>:
                  D.34841->opcode = iftmp.119;
                  D.34841 = args[1];
                  D.34841->flags = 0;
                  D.34841 = args[1];
                  D.34841->type = 0;
                  D.34841 = args[1];
                  D.34841->dreg = -1;
                  D.34841 = args[1];
                  D.34841 = args[1];
                  D.34841 = args[1];
                  D.34841->sreg3 = -1;
                  D.34848 = D.34841->sreg3;
                  D.34841->sreg2 = D.34848;
                  D.34849 = D.34841->sreg2;
                  D.34841->sreg1 = D.34849;
                  D.34841 = args[1];
                  D.32979 = cfg->ip;
                  D.34841->cil_code = D.32979;
                  D.34841 = args[1];
                  D.34841->data.op[0].p = cmethod;
                  D.34841 = args[1];
                  D.34841->data.op[1].src = 6B;
                  D.34841 = args[1];
                  D.34841->type = 3;
                  D.34841 = args[1];
                  D.34850 = alloc_dreg (cfg, 3);
                  D.34851 = (int) D.34850;
                  D.34841->dreg = D.34851;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.34852>; else goto <D.34853>;
                  <D.34852>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.34841 = args[1];
                  D.33008->next = D.34841;
                  D.34841 = args[1];
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.34841->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  D.34841 = args[1];
                  bblock.125->last_ins = D.34841;
                  goto <D.34854>;
                  <D.34853>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  D.34841 = args[1];
                  bblock.125->last_ins = D.34841;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.34854>:
                  <D.34839>:
                  D.34855 = mono_class_check_context_used (constrained_call);
                  D.34856 = emit_get_rgctx_klass (cfg, D.34855, constrained_call, 1);
                  args[2] = D.34856;
                  D.34826 = BIT_FIELD_REF <*fsig, 8, 80>;
                  D.34827 = D.34826 & 64;
                  if (D.34827 != 0) goto <D.34859>; else goto <D.34857>;
                  <D.34859>:
                  D.34550 = fsig->param_count;
                  if (D.34550 != 0) goto <D.34860>; else goto <D.34857>;
                  <D.34860>:
                  D.32755 = cfg->mempool;
                  ins = mono_mempool_alloc (D.32755, 56);
                  ins->data.op[1].const_val = 0;
                  D.32975 = ins->data.op[1].const_val;
                  ins->data.op[0].const_val = D.32975;
                  ins->prev = 0B;
                  D.32976 = ins->prev;
                  ins->next = D.32976;
                  ins->opcode = 339;
                  ins->flags = 0;
                  ins->type = 0;
                  ins->dreg = -1;
                  ins->sreg3 = -1;
                  D.32977 = ins->sreg3;
                  ins->sreg2 = D.32977;
                  D.32978 = ins->sreg2;
                  ins->sreg1 = D.32978;
                  D.32979 = cfg->ip;
                  ins->cil_code = D.32979;
                  D.34861 = alloc_preg (cfg);
                  D.34862 = (int) D.34861;
                  ins->dreg = D.34862;
                  D.34550 = fsig->param_count;
                  D.34863 = (unsigned int) D.34550;
                  D.34864 = D.34863 * 4;
                  D.34865 = (int) D.34864;
                  ins->data.op[1].const_val = D.34865;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.34866>; else goto <D.34867>;
                  <D.34866>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.33008->next = ins;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  ins->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  bblock.125->last_ins = ins;
                  goto <D.34868>;
                  <D.34867>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  bblock.125->last_ins = ins;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.34868>:
                  args[4] = ins;
                  D.34830 = fsig->params[0];
                  D.34869 = mini_is_gsharedvt_type (cfg, D.34830);
                  if (D.34869 != 0) goto <D.34870>; else goto <D.34871>;
                  <D.34870>:
                  {
                    int addr_reg;

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

                      D.34875 = sp + 4;
                      D.34876 = *D.34875;
                      D.34877 = D.34876->dreg;
                      D.34878 = (unsigned int) D.34877;
                      D.33862 = cfg->vreg_to_inst_len;
                      if (D.34878 < D.33862) goto <D.34879>; else goto <D.34880>;
                      <D.34879>:
                      D.33865 = cfg->vreg_to_inst;
                      D.34875 = sp + 4;
                      D.34876 = *D.34875;
                      D.34877 = D.34876->dreg;
                      D.34881 = (unsigned int) D.34877;
                      D.34882 = D.34881 * 4;
                      D.34883 = D.33865 + D.34882;
                      iftmp.120 = *D.34883;
                      goto <D.34884>;
                      <D.34880>:
                      iftmp.120 = 0B;
                      <D.34884>:
                      var = iftmp.120;
                      if (var == 0B) goto <D.34885>; else goto <D.34886>;
                      <D.34885>:
                      D.34830 = fsig->params[0];
                      D.34875 = sp + 4;
                      D.34876 = *D.34875;
                      D.34877 = D.34876->dreg;
                      var = mono_compile_create_var_for_vreg (cfg, D.34830, 329, D.34877);
                      <D.34886>:
                      D.32755 = cfg->mempool;
                      ins = mono_mempool_alloc (D.32755, 56);
                      ins->data.op[1].const_val = 0;
                      D.32975 = ins->data.op[1].const_val;
                      ins->data.op[0].const_val = D.32975;
                      ins->prev = 0B;
                      D.32976 = ins->prev;
                      ins->next = D.32976;
                      ins->opcode = 314;
                      ins->flags = 0;
                      ins->type = 0;
                      ins->dreg = -1;
                      ins->sreg3 = -1;
                      D.32977 = ins->sreg3;
                      ins->sreg2 = D.32977;
                      D.32978 = ins->sreg2;
                      ins->sreg1 = D.32978;
                      D.32979 = cfg->ip;
                      ins->cil_code = D.32979;
                      ins->data.op[0].p = var;
                      D.34887 = var->flags;
                      D.34888 = D.34887 | 16;
                      var->flags = D.34888;
                      ins->type = 5;
                      D.34889 = var->klass;
                      ins->klass = D.34889;
                      D.34890 = alloc_dreg (cfg, 5);
                      D.34891 = (int) D.34890;
                      ins->dreg = D.34891;
                      cfg->has_indirection = 1;
                      D.32904 = cfg->gsharedvt;
                      D.33836 = D.32904 != 0;
                      D.33837 = (long int) D.33836;
                      D.33838 = __builtin_expect (D.33837, 0);
                      if (D.33838 != 0) goto <D.34892>; else goto <D.34893>;
                      <D.34892>:
                      D.34894 = var->data.op[1].vtype;
                      D.34895 = mini_is_gsharedvt_variable_type (cfg, D.34894);
                      if (D.34895 != 0) goto <D.34896>; else goto <D.34897>;
                      <D.34896>:
                      handle_gsharedvt_ldaddr (cfg);
                      <D.34897>:
                      <D.34893>:
                      D.34899 = mono_arch_is_soft_float ();
                      if (D.34899 != 0) goto <D.34900>; else goto <D.34901>;
                      <D.34900>:
                      D.34902 = var->type;
                      D.34903 = D.34902 == 2;
                      D.34904 = D.34902 == 4;
                      D.34905 = D.34903 | D.34904;
                      D.34906 = (int) D.34905;
                      iftmp.121 = (_Bool) D.34906;
                      goto <D.34907>;
                      <D.34901>:
                      D.34908 = var->type;
                      iftmp.121 = D.34908 == 2;
                      <D.34907>:
                      if (iftmp.121 != 0) goto <D.34909>; else goto <D.34910>;
                      <D.34909>:
                      {
                        struct MonoInst * var1;
                        struct MonoInst * var2;

                        D.34912 = var->dreg;
                        D.34913 = D.34912 + 1;
                        D.34914 = (unsigned int) D.34913;
                        D.33862 = cfg->vreg_to_inst_len;
                        if (D.34914 < D.33862) goto <D.34915>; else goto <D.34916>;
                        <D.34915>:
                        D.33865 = cfg->vreg_to_inst;
                        D.34912 = var->dreg;
                        D.34917 = (sizetype) D.34912;
                        D.34918 = D.34917 + 1;
                        D.34919 = D.34918 * 4;
                        D.34920 = D.33865 + D.34919;
                        iftmp.122 = *D.34920;
                        goto <D.34921>;
                        <D.34916>:
                        iftmp.122 = 0B;
                        <D.34921>:
                        var1 = iftmp.122;
                        D.34912 = var->dreg;
                        D.34923 = D.34912 + 2;
                        D.34924 = (unsigned int) D.34923;
                        D.33862 = cfg->vreg_to_inst_len;
                        if (D.34924 < D.33862) goto <D.34925>; else goto <D.34926>;
                        <D.34925>:
                        D.33865 = cfg->vreg_to_inst;
                        D.34912 = var->dreg;
                        D.34917 = (sizetype) D.34912;
                        D.34927 = D.34917 + 2;
                        D.34928 = D.34927 * 4;
                        D.34929 = D.33865 + D.34928;
                        iftmp.123 = *D.34929;
                        goto <D.34930>;
                        <D.34926>:
                        iftmp.123 = 0B;
                        <D.34930>:
                        var2 = iftmp.123;
                        D.34931 = var1 == 0B;
                        D.34932 = (long int) D.34931;
                        D.34933 = __builtin_expect (D.34932, 0);
                        if (D.34933 != 0) goto <D.34934>; else goto <D.34935>;
                        <D.34934>:
                        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7827, "var1");
                        <D.34935>:
                        D.34936 = var2 == 0B;
                        D.34937 = (long int) D.34936;
                        D.34938 = __builtin_expect (D.34937, 0);
                        if (D.34938 != 0) goto <D.34939>; else goto <D.34940>;
                        <D.34939>:
                        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7827, "var2");
                        <D.34940>:
                        D.34941 = var1->flags;
                        D.34942 = D.34941 | 16;
                        var1->flags = D.34942;
                        D.34943 = var2->flags;
                        D.34944 = D.34943 | 16;
                        var2->flags = D.34944;
                      }
                      <D.34910>:
                    }
                    bblock.125 = cfg->cbb;
                    D.33008 = bblock.125->last_ins;
                    if (D.33008 != 0B) goto <D.34945>; else goto <D.34946>;
                    <D.34945>:
                    bblock.125 = cfg->cbb;
                    D.33008 = bblock.125->last_ins;
                    D.33008->next = ins;
                    bblock.125 = cfg->cbb;
                    D.33008 = bblock.125->last_ins;
                    ins->prev = D.33008;
                    bblock.125 = cfg->cbb;
                    bblock.125->last_ins = ins;
                    goto <D.34947>;
                    <D.34946>:
                    bblock.125 = cfg->cbb;
                    bblock.125 = cfg->cbb;
                    bblock.125->last_ins = ins;
                    D.33008 = bblock.125->last_ins;
                    bblock.125->code = D.33008;
                    <D.34947>:
                    addr_reg = ins->dreg;
                    D.32755 = cfg->mempool;
                    ins = mono_mempool_alloc (D.32755, 56);
                    ins->data.op[1].const_val = 0;
                    D.32975 = ins->data.op[1].const_val;
                    ins->data.op[0].const_val = D.32975;
                    ins->prev = 0B;
                    D.32976 = ins->prev;
                    ins->next = D.32976;
                    ins->opcode = 374;
                    ins->flags = 0;
                    ins->type = 0;
                    ins->dreg = -1;
                    ins->sreg3 = -1;
                    D.32977 = ins->sreg3;
                    ins->sreg2 = D.32977;
                    D.32978 = ins->sreg2;
                    ins->sreg1 = D.32978;
                    D.32979 = cfg->ip;
                    ins->cil_code = D.32979;
                    ins->sreg1 = addr_reg;
                    D.34948 = args[4];
                    D.34949 = D.34948->dreg;
                    ins->dreg = D.34949;
                    ins->data.op[0].const_val = 0;
                    bblock.125 = cfg->cbb;
                    D.33008 = bblock.125->last_ins;
                    if (D.33008 != 0B) goto <D.34950>; else goto <D.34951>;
                    <D.34950>:
                    bblock.125 = cfg->cbb;
                    D.33008 = bblock.125->last_ins;
                    D.33008->next = ins;
                    bblock.125 = cfg->cbb;
                    D.33008 = bblock.125->last_ins;
                    ins->prev = D.33008;
                    bblock.125 = cfg->cbb;
                    bblock.125->last_ins = ins;
                    goto <D.34952>;
                    <D.34951>:
                    bblock.125 = cfg->cbb;
                    bblock.125 = cfg->cbb;
                    bblock.125->last_ins = ins;
                    D.33008 = bblock.125->last_ins;
                    bblock.125->code = D.33008;
                    <D.34952>:
                  }
                  goto <D.34953>;
                  <D.34871>:
                  D.32755 = cfg->mempool;
                  D.34954 = mono_mempool_alloc (D.32755, 56);
                  args[3] = D.34954;
                  D.34955 = args[3];
                  D.34955 = args[3];
                  D.34955->data.op[1].const_val = 0;
                  D.34956 = D.34955->data.op[1].const_val;
                  D.34955->data.op[0].const_val = D.34956;
                  D.34955 = args[3];
                  D.34955 = args[3];
                  D.34955->prev = 0B;
                  D.34957 = D.34955->prev;
                  D.34955->next = D.34957;
                  D.34955 = args[3];
                  D.34955->opcode = 362;
                  D.34955 = args[3];
                  D.34955->flags = 0;
                  D.34955 = args[3];
                  D.34955->type = 0;
                  D.34955 = args[3];
                  D.34955->dreg = -1;
                  D.34955 = args[3];
                  D.34955 = args[3];
                  D.34955 = args[3];
                  D.34955->sreg3 = -1;
                  D.34958 = D.34955->sreg3;
                  D.34955->sreg2 = D.34958;
                  D.34959 = D.34955->sreg2;
                  D.34955->sreg1 = D.34959;
                  D.34955 = args[3];
                  D.32979 = cfg->ip;
                  D.34955->cil_code = D.32979;
                  D.34955 = args[3];
                  D.34955->data.op[0].const_val = 0;
                  D.34955 = args[3];
                  D.34955->type = 1;
                  D.34955 = args[3];
                  D.34960 = alloc_dreg (cfg, 1);
                  D.34961 = (int) D.34960;
                  D.34955->dreg = D.34961;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.34962>; else goto <D.34963>;
                  <D.34962>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.34955 = args[3];
                  D.33008->next = D.34955;
                  D.34955 = args[3];
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.34955->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  D.34955 = args[3];
                  bblock.125->last_ins = D.34955;
                  goto <D.34964>;
                  <D.34963>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  D.34955 = args[3];
                  bblock.125->last_ins = D.34955;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.34964>:
                  D.32755 = cfg->mempool;
                  ins = mono_mempool_alloc (D.32755, 56);
                  ins->data.op[1].const_val = 0;
                  D.32975 = ins->data.op[1].const_val;
                  ins->data.op[0].const_val = D.32975;
                  ins->prev = 0B;
                  D.32976 = ins->prev;
                  ins->next = D.32976;
                  ins->opcode = 374;
                  ins->flags = 0;
                  ins->type = 0;
                  ins->dreg = -1;
                  ins->sreg3 = -1;
                  D.32977 = ins->sreg3;
                  ins->sreg2 = D.32977;
                  D.32978 = ins->sreg2;
                  ins->sreg1 = D.32978;
                  D.32979 = cfg->ip;
                  ins->cil_code = D.32979;
                  D.34875 = sp + 4;
                  D.34876 = *D.34875;
                  D.34877 = D.34876->dreg;
                  ins->sreg1 = D.34877;
                  D.34948 = args[4];
                  D.34949 = D.34948->dreg;
                  ins->dreg = D.34949;
                  ins->data.op[0].const_val = 0;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.34965>; else goto <D.34966>;
                  <D.34965>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.33008->next = ins;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  ins->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  bblock.125->last_ins = ins;
                  goto <D.34967>;
                  <D.34966>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  bblock.125->last_ins = ins;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.34967>:
                  <D.34953>:
                  goto <D.34858>;
                  <D.34857>:
                  D.32755 = cfg->mempool;
                  D.34968 = mono_mempool_alloc (D.32755, 56);
                  args[3] = D.34968;
                  D.34955 = args[3];
                  D.34955 = args[3];
                  D.34955->data.op[1].const_val = 0;
                  D.34956 = D.34955->data.op[1].const_val;
                  D.34955->data.op[0].const_val = D.34956;
                  D.34955 = args[3];
                  D.34955 = args[3];
                  D.34955->prev = 0B;
                  D.34957 = D.34955->prev;
                  D.34955->next = D.34957;
                  D.34955 = args[3];
                  D.34955->opcode = 362;
                  D.34955 = args[3];
                  D.34955->flags = 0;
                  D.34955 = args[3];
                  D.34955->type = 0;
                  D.34955 = args[3];
                  D.34955->dreg = -1;
                  D.34955 = args[3];
                  D.34955 = args[3];
                  D.34955 = args[3];
                  D.34955->sreg3 = -1;
                  D.34958 = D.34955->sreg3;
                  D.34955->sreg2 = D.34958;
                  D.34959 = D.34955->sreg2;
                  D.34955->sreg1 = D.34959;
                  D.34955 = args[3];
                  D.32979 = cfg->ip;
                  D.34955->cil_code = D.32979;
                  D.34955 = args[3];
                  D.34955->data.op[0].const_val = 0;
                  D.34955 = args[3];
                  D.34955->type = 1;
                  D.34955 = args[3];
                  D.34969 = alloc_dreg (cfg, 1);
                  D.34970 = (int) D.34969;
                  D.34955->dreg = D.34970;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.34971>; else goto <D.34972>;
                  <D.34971>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.34955 = args[3];
                  D.33008->next = D.34955;
                  D.34955 = args[3];
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.34955->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  D.34955 = args[3];
                  bblock.125->last_ins = D.34955;
                  goto <D.34973>;
                  <D.34972>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  D.34955 = args[3];
                  bblock.125->last_ins = D.34955;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.34973>:
                  D.32755 = cfg->mempool;
                  D.34974 = mono_mempool_alloc (D.32755, 56);
                  args[4] = D.34974;
                  D.34948 = args[4];
                  D.34948 = args[4];
                  D.34948->data.op[1].const_val = 0;
                  D.34975 = D.34948->data.op[1].const_val;
                  D.34948->data.op[0].const_val = D.34975;
                  D.34948 = args[4];
                  D.34948 = args[4];
                  D.34948->prev = 0B;
                  D.34976 = D.34948->prev;
                  D.34948->next = D.34976;
                  D.34948 = args[4];
                  D.34948->opcode = 362;
                  D.34948 = args[4];
                  D.34948->flags = 0;
                  D.34948 = args[4];
                  D.34948->type = 0;
                  D.34948 = args[4];
                  D.34948->dreg = -1;
                  D.34948 = args[4];
                  D.34948 = args[4];
                  D.34948 = args[4];
                  D.34948->sreg3 = -1;
                  D.34977 = D.34948->sreg3;
                  D.34948->sreg2 = D.34977;
                  D.34978 = D.34948->sreg2;
                  D.34948->sreg1 = D.34978;
                  D.34948 = args[4];
                  D.32979 = cfg->ip;
                  D.34948->cil_code = D.32979;
                  D.34948 = args[4];
                  D.34948->data.op[0].const_val = 0;
                  D.34948 = args[4];
                  D.34948->type = 1;
                  D.34948 = args[4];
                  D.34979 = alloc_dreg (cfg, 1);
                  D.34980 = (int) D.34979;
                  D.34948->dreg = D.34980;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.34981>; else goto <D.34982>;
                  <D.34981>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.34948 = args[4];
                  D.33008->next = D.34948;
                  D.34948 = args[4];
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.34948->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  D.34948 = args[4];
                  bblock.125->last_ins = D.34948;
                  goto <D.34983>;
                  <D.34982>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  D.34948 = args[4];
                  bblock.125->last_ins = D.34948;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.34983>:
                  <D.34858>:
                  ins = mono_emit_jit_icall (cfg, mono_gsharedvt_constrained_call, &args);
                  emit_widen = 0;
                  D.34706 = fsig->ret;
                  D.34984 = mini_is_gsharedvt_type (cfg, D.34706);
                  if (D.34984 != 0) goto <D.34985>; else goto <D.34986>;
                  <D.34985>:
                  D.34706 = fsig->ret;
                  D.34987 = mono_class_from_mono_type (D.34706);
                  ins = handle_unbox_gsharedvt (cfg, D.34987, ins, &bblock);
                  goto <D.34988>;
                  <D.34986>:
                  D.34706 = fsig->ret;
                  D.34813 = BIT_FIELD_REF <*D.34706, 8, 56>;
                  D.34814 = D.34813 & 64;
                  if (D.34814 == 0) goto <D.34989>; else goto <D.34990>;
                  <D.34989>:
                  D.34706 = fsig->ret;
                  D.34991 = D.34706->type;
                  D.34992 = D.34991 + 254;
                  D.34993 = D.34992 <= 11;
                  D.34994 = D.34991 + 232;
                  D.34995 = D.34994 <= 1;
                  D.34996 = D.34993 | D.34995;
                  if (D.34996 != 0) goto <D.34997>; else goto <D.34998>;
                  <D.34997>:
                  {
                    struct MonoInst * add;

                    D.32755 = cfg->mempool;
                    add = mono_mempool_alloc (D.32755, 56);
                    add->data.op[1].const_val = 0;
                    D.34999 = add->data.op[1].const_val;
                    add->data.op[0].const_val = D.34999;
                    add->prev = 0B;
                    D.35000 = add->prev;
                    add->next = D.35000;
                    add->opcode = 429;
                    add->flags = 0;
                    add->type = 0;
                    add->dreg = -1;
                    add->sreg3 = -1;
                    D.35001 = add->sreg3;
                    add->sreg2 = D.35001;
                    D.35002 = add->sreg2;
                    add->sreg1 = D.35002;
                    D.32979 = cfg->ip;
                    add->cil_code = D.32979;
                    D.35003 = alloc_dreg (cfg, 5);
                    D.35004 = (int) D.35003;
                    add->dreg = D.35004;
                    D.33170 = ins->dreg;
                    add->sreg1 = D.33170;
                    add->data.op[1].const_val = 8;
                    bblock.125 = cfg->cbb;
                    D.33008 = bblock.125->last_ins;
                    if (D.33008 != 0B) goto <D.35005>; else goto <D.35006>;
                    <D.35005>:
                    bblock.125 = cfg->cbb;
                    D.33008 = bblock.125->last_ins;
                    D.33008->next = add;
                    bblock.125 = cfg->cbb;
                    D.33008 = bblock.125->last_ins;
                    add->prev = D.33008;
                    bblock.125 = cfg->cbb;
                    bblock.125->last_ins = add;
                    goto <D.35007>;
                    <D.35006>:
                    bblock.125 = cfg->cbb;
                    bblock.125 = cfg->cbb;
                    bblock.125->last_ins = add;
                    D.33008 = bblock.125->last_ins;
                    bblock.125->code = D.33008;
                    <D.35007>:
                    D.32755 = cfg->mempool;
                    ins = mono_mempool_alloc (D.32755, 56);
                    ins->data.op[1].const_val = 0;
                    D.32975 = ins->data.op[1].const_val;
                    ins->data.op[0].const_val = D.32975;
                    ins->prev = 0B;
                    D.32976 = ins->prev;
                    ins->next = D.32976;
                    D.34706 = fsig->ret;
                    D.35008 = mono_type_to_load_membase (cfg, D.34706);
                    D.35009 = (short unsigned int) D.35008;
                    ins->opcode = D.35009;
                    ins->flags = 0;
                    ins->type = 0;
                    ins->dreg = -1;
                    ins->sreg3 = -1;
                    D.32977 = ins->sreg3;
                    ins->sreg2 = D.32977;
                    D.32978 = ins->sreg2;
                    ins->sreg1 = D.32978;
                    D.32979 = cfg->ip;
                    ins->cil_code = D.32979;
                    ins->dreg = 0;
                    D.35010 = add->dreg;
                    ins->sreg1 = D.35010;
                    ins->data.op[0].const_val = 0;
                    ins->type = 1;
                    D.34706 = fsig->ret;
                    type_to_eval_stack_type (cfg, D.34706, ins);
                    D.33501 = ins->type;
                    D.33502 = (<unnamed type>) D.33501;
                    D.35011 = alloc_dreg (cfg, D.33502);
                    D.35012 = (int) D.35011;
                    ins->dreg = D.35012;
                    bblock.125 = cfg->cbb;
                    D.33008 = bblock.125->last_ins;
                    if (D.33008 != 0B) goto <D.35013>; else goto <D.35014>;
                    <D.35013>:
                    bblock.125 = cfg->cbb;
                    D.33008 = bblock.125->last_ins;
                    D.33008->next = ins;
                    bblock.125 = cfg->cbb;
                    D.33008 = bblock.125->last_ins;
                    ins->prev = D.33008;
                    bblock.125 = cfg->cbb;
                    bblock.125->last_ins = ins;
                    goto <D.35015>;
                    <D.35014>:
                    bblock.125 = cfg->cbb;
                    bblock.125 = cfg->cbb;
                    bblock.125->last_ins = ins;
                    D.33008 = bblock.125->last_ins;
                    bblock.125->code = D.33008;
                    <D.35015>:
                  }
                  <D.34998>:
                  <D.34990>:
                  <D.34988>:
                  goto call_end;
                }
              finally
                {
                  args = {CLOBBER};
                }
            }
            <D.34803>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.35016>; else goto <D.35017>;
            <D.35016>:
            D.32693 = method->klass;
            D.34423 = D.32693->name_space;
            D.32693 = method->klass;
            D.34424 = D.32693->name;
            D.34425 = method->name;
            D.34426 = method->signature;
            D.34427 = D.34426->param_count;
            D.34428 = (int) D.34427;
            D.33632 = *ip;
            D.33633 = (int) D.33632;
            D.35018 = mono_opcode_name (D.33633);
            D.35019 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.34423, D.34424, D.34425, D.34428, D.35018, "method-to-ir.c", 7857);
            cfg->exception_message = D.35019;
            D.32836 = cfg->verbose_level;
            if (D.32836 > 1) goto <D.35020>; else goto <D.35021>;
            <D.35020>:
            D.34433 = cfg->exception_message;
            printf ("%s\n", D.34433);
            <D.35021>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.35017>:
            <D.34794>:
            <D.34786>:
            <D.34784>:
            D.34789 = BIT_FIELD_REF <*constrained_call, 8, 160>;
            D.34790 = D.34789 & 8;
            if (D.34790 != 0) goto <D.35025>; else goto <D.35022>;
            <D.35025>:
            D.34618 = cmethod->klass;
            D.34787 = mono_defaults.object_class;
            if (D.34618 == D.34787) goto <D.35023>; else goto <D.35026>;
            <D.35026>:
            D.34618 = cmethod->klass;
            D.35027 = mono_defaults.enum_class;
            D.35028 = D.35027->parent;
            if (D.34618 == D.35028) goto <D.35023>; else goto <D.35029>;
            <D.35029>:
            D.34618 = cmethod->klass;
            D.35027 = mono_defaults.enum_class;
            if (D.34618 == D.35027) goto <D.35023>; else goto <D.35022>;
            <D.35023>:
            D.32755 = cfg->mempool;
            ins = mono_mempool_alloc (D.32755, 56);
            ins->data.op[1].const_val = 0;
            D.32975 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.32975;
            ins->prev = 0B;
            D.32976 = ins->prev;
            ins->next = D.32976;
            D.35030 = &constrained_call->byval_arg;
            D.35031 = mono_type_to_load_membase (cfg, D.35030);
            D.35032 = (short unsigned int) D.35031;
            ins->opcode = D.35032;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.32977 = ins->sreg3;
            ins->sreg2 = D.32977;
            D.32978 = ins->sreg2;
            ins->sreg1 = D.32978;
            D.32979 = cfg->ip;
            ins->cil_code = D.32979;
            ins->dreg = 0;
            D.33750 = *sp;
            D.33943 = D.33750->dreg;
            ins->sreg1 = D.33943;
            ins->data.op[0].const_val = 0;
            ins->type = 1;
            D.35030 = &constrained_call->byval_arg;
            type_to_eval_stack_type (cfg, D.35030, ins);
            D.33501 = ins->type;
            D.33502 = (<unnamed type>) D.33501;
            D.35033 = alloc_dreg (cfg, D.33502);
            D.35034 = (int) D.35033;
            ins->dreg = D.35034;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.35035>; else goto <D.35036>;
            <D.35035>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = ins;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            ins->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            goto <D.35037>;
            <D.35036>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.35037>:
            ins->klass = constrained_call;
            D.35038 = mono_class_check_context_used (constrained_call);
            D.35039 = handle_box (cfg, ins, constrained_call, D.35038, &bblock);
            *sp = D.35039;
            D.33309 = cfg->exception_type;
            if (D.33309 != 0) goto exception_exit; else goto <D.35040>;
            <D.35040>:
            goto <D.35024>;
            <D.35022>:
            D.34789 = BIT_FIELD_REF <*constrained_call, 8, 160>;
            D.34790 = D.34789 & 8;
            if (D.34790 == 0) goto <D.35041>; else goto <D.35042>;
            <D.35041>:
            {
              int dreg;

              D.35043 = alloc_ireg_ref (cfg);
              dreg = (int) D.35043;
              D.32755 = cfg->mempool;
              ins = mono_mempool_alloc (D.32755, 56);
              ins->data.op[1].const_val = 0;
              D.32975 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.32975;
              ins->prev = 0B;
              D.32976 = ins->prev;
              ins->next = D.32976;
              ins->opcode = 388;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.32977 = ins->sreg3;
              ins->sreg2 = D.32977;
              D.32978 = ins->sreg2;
              ins->sreg1 = D.32978;
              D.32979 = cfg->ip;
              ins->cil_code = D.32979;
              ins->dreg = dreg;
              D.33750 = *sp;
              D.33943 = D.33750->dreg;
              ins->sreg1 = D.33943;
              ins->data.op[0].const_val = 0;
              ins->type = 1;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.35044>; else goto <D.35045>;
              <D.35044>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = ins;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              ins->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              goto <D.35046>;
              <D.35045>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.35046>:
              ins->type = 6;
              *sp = ins;
            }
            goto <D.35047>;
            <D.35042>:
            D.34618 = cmethod->klass;
            D.34619 = BIT_FIELD_REF <*D.34618, 8, 160>;
            D.34620 = D.34619 & 8;
            if (D.34620 != 0) goto <D.35048>; else goto <D.35049>;
            <D.35048>:
            goto <D.35050>;
            <D.35049>:
            {
              int ioffset;
              int slot;

              mono_class_setup_vtable (constrained_call);
              if (constrained_call == 0B) goto <D.35051>; else goto <D.35053>;
              <D.35053>:
              D.35054 = constrained_call->exception_type;
              if (D.35054 != 0) goto <D.35051>; else goto <D.35052>;
              <D.35051>:
              cfg->exception_ptr = constrained_call;
              D.35055 = mini_get_debug_options ();
              D.35056 = D.35055->break_on_unverified;
              if (D.35056 != 0) goto <D.35057>; else goto load_error;
              <D.35057>:
              raise (5);
              <D.35052>:
              D.34618 = cmethod->klass;
              ioffset = mono_class_interface_offset (constrained_call, D.34618);
              if (ioffset == -1) goto <D.35058>; else goto <D.35059>;
              <D.35058>:
              D.35060 = mini_get_debug_options ();
              D.35061 = D.35060->break_on_unverified;
              if (D.35061 != 0) goto <D.35062>; else goto <D.35063>;
              <D.35062>:
              raise (5);
              goto <D.35064>;
              <D.35063>:
              cfg->exception_ptr = constrained_call;
              goto load_error;
              <D.35064>:
              <D.35059>:
              slot = mono_method_get_vtable_slot (cmethod);
              if (slot == -1) goto <D.35065>; else goto <D.35066>;
              <D.35065>:
              D.35067 = mini_get_debug_options ();
              D.35068 = D.35067->break_on_unverified;
              if (D.35068 != 0) goto <D.35069>; else goto <D.35070>;
              <D.35069>:
              raise (5);
              goto <D.35071>;
              <D.35070>:
              D.34618 = cmethod->klass;
              cfg->exception_ptr = D.34618;
              goto load_error;
              <D.35071>:
              <D.35066>:
              D.35072 = constrained_call->vtable;
              D.35073 = ioffset + slot;
              D.35074 = (unsigned int) D.35073;
              D.35075 = D.35074 * 4;
              D.35076 = D.35072 + D.35075;
              cmethod = *D.35076;
              D.34618 = cmethod->klass;
              D.35027 = mono_defaults.enum_class;
              if (D.34618 == D.35027) goto <D.35077>; else goto <D.35078>;
              <D.35077>:
              D.32755 = cfg->mempool;
              ins = mono_mempool_alloc (D.32755, 56);
              ins->data.op[1].const_val = 0;
              D.32975 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.32975;
              ins->prev = 0B;
              D.32976 = ins->prev;
              ins->next = D.32976;
              D.35030 = &constrained_call->byval_arg;
              D.35079 = mono_type_to_load_membase (cfg, D.35030);
              D.35080 = (short unsigned int) D.35079;
              ins->opcode = D.35080;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.32977 = ins->sreg3;
              ins->sreg2 = D.32977;
              D.32978 = ins->sreg2;
              ins->sreg1 = D.32978;
              D.32979 = cfg->ip;
              ins->cil_code = D.32979;
              ins->dreg = 0;
              D.33750 = *sp;
              D.33943 = D.33750->dreg;
              ins->sreg1 = D.33943;
              ins->data.op[0].const_val = 0;
              ins->type = 1;
              D.35030 = &constrained_call->byval_arg;
              type_to_eval_stack_type (cfg, D.35030, ins);
              D.33501 = ins->type;
              D.33502 = (<unnamed type>) D.33501;
              D.35081 = alloc_dreg (cfg, D.33502);
              D.35082 = (int) D.35081;
              ins->dreg = D.35082;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.35083>; else goto <D.35084>;
              <D.35083>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = ins;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              ins->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              goto <D.35085>;
              <D.35084>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.35085>:
              ins->klass = constrained_call;
              D.35086 = mono_class_check_context_used (constrained_call);
              D.35087 = handle_box (cfg, ins, constrained_call, D.35086, &bblock);
              *sp = D.35087;
              D.33309 = cfg->exception_type;
              if (D.33309 != 0) goto exception_exit; else goto <D.35088>;
              <D.35088>:
              <D.35078>:
            }
            <D.35050>:
            virtual = 0;
            <D.35047>:
            <D.35024>:
            constrained_call = 0B;
            <D.34781>:
            if (calli == 0) goto <D.35089>; else goto <D.35090>;
            <D.35089>:
            D.35091 = check_call_signature (cfg, fsig, sp);
            if (D.35091 != 0) goto <D.35092>; else goto <D.35093>;
            <D.35092>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.35094>; else goto <D.35095>;
            <D.35094>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 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>:
            raise (5);
            <D.35093>:
            <D.35090>:
            if (cmethod != 0B) goto <D.35101>; else goto <D.35102>;
            <D.35101>:
            D.34618 = cmethod->klass;
            D.35103 = D.34618->parent;
            D.35104 = mono_defaults.multicastdelegate_class;
            if (D.35103 == D.35104) goto <D.35105>; else goto <D.35106>;
            <D.35105>:
            {
              size_t __s1_len;
              size_t __s2_len;

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

                __s2 = cmethod->name;
                D.35110 = "Invoke";
                D.35111 = MEM[(const unsigned char *)D.35110];
                D.35112 = (int) D.35111;
                D.35113 = *__s2;
                D.35114 = (int) D.35113;
                __result = D.35112 - D.35114;
                {
                  D.35115 = __s2_len != 0;
                  D.35116 = __result == 0;
                  D.35117 = D.35115 & D.35116;
                  if (D.35117 != 0) goto <D.35118>; else goto <D.35119>;
                  <D.35118>:
                  D.35120 = &MEM[(void *)"Invoke" + 1B];
                  D.35121 = *D.35120;
                  D.35122 = (int) D.35121;
                  D.35123 = __s2 + 1;
                  D.35124 = *D.35123;
                  D.35125 = (int) D.35124;
                  __result = D.35122 - D.35125;
                  D.35126 = __s2_len > 1;
                  D.35116 = __result == 0;
                  D.35127 = D.35126 & D.35116;
                  if (D.35127 != 0) goto <D.35128>; else goto <D.35129>;
                  <D.35128>:
                  D.35130 = &MEM[(void *)"Invoke" + 2B];
                  D.35131 = *D.35130;
                  D.35132 = (int) D.35131;
                  D.35133 = __s2 + 2;
                  D.35134 = *D.35133;
                  D.35135 = (int) D.35134;
                  __result = D.35132 - D.35135;
                  D.35136 = __s2_len > 2;
                  D.35116 = __result == 0;
                  D.35137 = D.35136 & D.35116;
                  if (D.35137 != 0) goto <D.35138>; else goto <D.35139>;
                  <D.35138>:
                  D.35140 = &MEM[(void *)"Invoke" + 3B];
                  D.35141 = *D.35140;
                  D.35142 = (int) D.35141;
                  D.35143 = __s2 + 3;
                  D.35144 = *D.35143;
                  D.35145 = (int) D.35144;
                  __result = D.35142 - D.35145;
                  <D.35139>:
                  <D.35129>:
                  <D.35119>:
                }
                D.30009 = __result;
              }
              iftmp.124 = -D.30009;
              goto <D.35146>;
              <D.35109>:
              D.35147 = cmethod->name;
              iftmp.124 = __builtin_strcmp (D.35147, "Invoke");
              <D.35146>:
              D.30010 = iftmp.124;
            }
            if (D.30010 == 0) goto <D.35148>; else goto <D.35149>;
            <D.35148>:
            delegate_invoke = 1;
            <D.35149>:
            <D.35106>:
            <D.35102>:
            if (cmethod != 0B) goto <D.35150>; else goto <D.35151>;
            <D.35150>:
            D.33148 = cfg->opt;
            D.35152 = D.33148 & 2048;
            if (D.35152 != 0) goto <D.35153>; else goto <D.35154>;
            <D.35153>:
            ins = mini_emit_inst_for_sharable_method (cfg, cmethod, fsig, sp);
            if (ins != 0B) goto <D.35155>; else goto <D.35156>;
            <D.35155>:
            bblock.125 = cfg->cbb;
            bblock = bblock.125;
            D.34706 = fsig->ret;
            D.35157 = mono_type_is_void (D.34706);
            if (D.35157 == 0) goto <D.35158>; else goto <D.35159>;
            <D.35158>:
            D.34706 = fsig->ret;
            type_to_eval_stack_type (cfg, D.34706, ins);
            emit_widen = 0;
            <D.35159>:
            goto call_end;
            <D.35156>:
            <D.35154>:
            <D.35151>:
            D.32791 = cfg->generic_sharing_context;
            if (D.32791 != 0B) goto <D.35160>; else goto <D.35161>;
            <D.35160>:
            if (cmethod != 0B) goto <D.35162>; else goto <D.35163>;
            <D.35162>:
            D.34618 = cmethod->klass;
            D.32693 = method->klass;
            if (D.34618 != D.32693) goto <D.35164>; else goto <D.35165>;
            <D.35164>:
            D.34618 = cmethod->klass;
            D.35166 = D.34618->generic_class;
            if (D.35166 != 0B) goto <D.35167>; else goto <D.35168>;
            <D.35167>:
            D.35169 = mono_method_is_generic_sharable (cmethod, 1);
            if (D.35169 != 0) goto <D.35170>; else goto <D.35171>;
            <D.35170>:
            D.34618 = cmethod->klass;
            D.35172 = mono_class_needs_cctor_run (D.34618, method);
            if (D.35172 != 0) goto <D.35173>; else goto <D.35174>;
            <D.35173>:
            D.34618 = cmethod->klass;
            emit_generic_class_init (cfg, D.34618);
            D.34618 = cmethod->klass;
            if (D.34618 == 0B) goto <D.35175>; else goto <D.35177>;
            <D.35177>:
            D.34618 = cmethod->klass;
            D.35178 = D.34618->exception_type;
            if (D.35178 != 0) goto <D.35175>; else goto <D.35176>;
            <D.35175>:
            D.34618 = cmethod->klass;
            cfg->exception_ptr = D.34618;
            D.35179 = mini_get_debug_options ();
            D.35180 = D.35179->break_on_unverified;
            if (D.35180 != 0) goto <D.35181>; else goto load_error;
            <D.35181>:
            raise (5);
            <D.35176>:
            <D.35174>:
            <D.35171>:
            <D.35168>:
            <D.35165>:
            <D.35163>:
            <D.35161>:
            if (cmethod != 0B) goto <D.35182>; else goto <D.35183>;
            <D.35182>:
            check_method_sharing (cfg, cmethod, &pass_vtable, &pass_mrgctx);
            <D.35183>:
            D.32791 = cfg->generic_sharing_context;
            if (D.32791 != 0B) goto <D.35184>; else goto <D.35185>;
            <D.35184>:
            if (cmethod != 0B) goto <D.35186>; else goto <D.35187>;
            <D.35186>:
            {
              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.35188>; else goto <D.35189>;
              <D.35188>:
              D.34618 = cmethod->klass;
              D.34798 = D.34618->flags;
              D.34799 = D.34798 & 32;
              if (D.34799 != 0) goto <D.35190>; else goto <D.35191>;
              <D.35190>:
              if (cmethod_context == 0B) goto <D.35192>; else goto <D.35194>;
              <D.35194>:
              D.35195 = cmethod_context->method_inst;
              if (D.35195 == 0B) goto <D.35192>; else goto <D.35193>;
              <D.35192>:
              pass_imt_from_rgctx = 1;
              <D.35193>:
              <D.35191>:
              <D.35189>:
              if (context_used != 0) goto <D.35198>; else goto <D.35199>;
              <D.35198>:
              D.33057 = method->flags;
              D.33058 = (int) D.33057;
              D.33059 = D.33058 & 16;
              if (D.33059 != 0) goto <D.35196>; else goto <D.35200>;
              <D.35200>:
              D.32693 = method->klass;
              D.32846 = BIT_FIELD_REF <*D.32693, 8, 160>;
              D.32847 = D.32846 & 8;
              if (D.32847 != 0) goto <D.35196>; else goto <D.35197>;
              <D.35196>:
              mono_get_vtable_var (cfg);
              <D.35197>:
              <D.35199>:
            }
            <D.35187>:
            <D.35185>:
            pass_vtable.126 = pass_vtable;
            if (pass_vtable.126 != 0) goto <D.35202>; else goto <D.35203>;
            <D.35202>:
            if (context_used != 0) goto <D.35204>; else goto <D.35205>;
            <D.35204>:
            D.34618 = cmethod->klass;
            vtable_arg = emit_get_rgctx_klass (cfg, context_used, D.34618, 2);
            goto <D.35206>;
            <D.35205>:
            {
              struct MonoVTable * vtable;

              D.32780 = cfg->domain;
              D.34618 = cmethod->klass;
              vtable = mono_class_vtable (D.32780, D.34618);
              D.34618 = cmethod->klass;
              if (D.34618 == 0B) goto <D.35207>; else goto <D.35209>;
              <D.35209>:
              D.34618 = cmethod->klass;
              D.35178 = D.34618->exception_type;
              if (D.35178 != 0) goto <D.35207>; else goto <D.35208>;
              <D.35207>:
              D.34618 = cmethod->klass;
              cfg->exception_ptr = D.34618;
              D.35210 = mini_get_debug_options ();
              D.35211 = D.35210->break_on_unverified;
              if (D.35211 != 0) goto <D.35212>; else goto load_error;
              <D.35212>:
              raise (5);
              <D.35208>:
              D.32755 = cfg->mempool;
              vtable_arg = mono_mempool_alloc (D.32755, 56);
              vtable_arg->data.op[1].const_val = 0;
              D.35213 = vtable_arg->data.op[1].const_val;
              vtable_arg->data.op[0].const_val = D.35213;
              vtable_arg->prev = 0B;
              D.35214 = vtable_arg->prev;
              vtable_arg->next = D.35214;
              D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.33151 = D.33150 & 64;
              if (D.33151 != 0) goto <D.35216>; else goto <D.35217>;
              <D.35216>:
              iftmp.127 = 732;
              goto <D.35218>;
              <D.35217>:
              iftmp.127 = 362;
              <D.35218>:
              vtable_arg->opcode = iftmp.127;
              vtable_arg->flags = 0;
              vtable_arg->type = 0;
              vtable_arg->dreg = -1;
              vtable_arg->sreg3 = -1;
              D.35219 = vtable_arg->sreg3;
              vtable_arg->sreg2 = D.35219;
              D.35220 = vtable_arg->sreg2;
              vtable_arg->sreg1 = D.35220;
              D.32979 = cfg->ip;
              vtable_arg->cil_code = D.32979;
              D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.33151 = D.33150 & 64;
              if (D.33151 != 0) goto <D.35222>; else goto <D.35223>;
              <D.35222>:
              iftmp.128 = vtable->klass;
              goto <D.35224>;
              <D.35223>:
              iftmp.128 = vtable;
              <D.35224>:
              vtable_arg->data.op[0].p = iftmp.128;
              vtable_arg->data.op[1].src = 14B;
              vtable_arg->type = 3;
              D.35225 = alloc_dreg (cfg, 3);
              D.35226 = (int) D.35225;
              vtable_arg->dreg = D.35226;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.35227>; else goto <D.35228>;
              <D.35227>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = vtable_arg;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              vtable_arg->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = vtable_arg;
              goto <D.35229>;
              <D.35228>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = vtable_arg;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.35229>:
            }
            <D.35206>:
            <D.35203>:
            pass_mrgctx.129 = pass_mrgctx;
            if (pass_mrgctx.129 != 0) goto <D.35231>; else goto <D.35232>;
            <D.35231>:
            D.35233 = vtable_arg != 0B;
            D.35234 = (long int) D.35233;
            D.35235 = __builtin_expect (D.35234, 0);
            if (D.35235 != 0) goto <D.35236>; else goto <D.35237>;
            <D.35236>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7986, "!vtable_arg");
            <D.35237>:
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 == 0) goto <D.35238>; else goto <D.35239>;
            <D.35238>:
            D.34618 = cmethod->klass;
            mono_class_setup_vtable (D.34618);
            D.34618 = cmethod->klass;
            if (D.34618 == 0B) goto <D.35240>; else goto <D.35242>;
            <D.35242>:
            D.34618 = cmethod->klass;
            D.35178 = D.34618->exception_type;
            if (D.35178 != 0) goto <D.35240>; else goto <D.35241>;
            <D.35240>:
            D.34618 = cmethod->klass;
            cfg->exception_ptr = D.34618;
            D.35243 = mini_get_debug_options ();
            D.35244 = D.35243->break_on_unverified;
            if (D.35244 != 0) goto <D.35245>; else goto load_error;
            <D.35245>:
            raise (5);
            <D.35241>:
            <D.35239>:
            vtable_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 8);
            D.34654 = cmethod->flags;
            D.34655 = (int) D.34654;
            D.35248 = D.34655 & 64;
            if (D.35248 == 0) goto <D.35246>; else goto <D.35249>;
            <D.35249>:
            D.34654 = cmethod->flags;
            D.34655 = (int) D.34654;
            D.35250 = D.34655 & 32;
            if (D.35250 != 0) goto <D.35246>; else goto <D.35251>;
            <D.35251>:
            D.34618 = cmethod->klass;
            if (D.34618 != 0B) goto <D.35252>; else goto <D.35247>;
            <D.35252>:
            D.34618 = cmethod->klass;
            D.34798 = D.34618->flags;
            D.35253 = D.34798 & 256;
            if (D.35253 != 0) goto <D.35246>; else goto <D.35247>;
            <D.35246>:
            D.34618 = cmethod->klass;
            D.34661 = BIT_FIELD_REF <*D.34618, 8, 176>;
            D.34662 = D.34661 & 64;
            if (D.34662 == 0) goto <D.35254>; else goto <D.35255>;
            <D.35254>:
            if (virtual != 0) goto <D.35256>; else goto <D.35257>;
            <D.35256>:
            check_this = 1;
            <D.35257>:
            virtual = 0;
            <D.35255>:
            <D.35247>:
            <D.35232>:
            if (pass_imt_from_rgctx != 0) goto <D.35258>; else goto <D.35259>;
            <D.35258>:
            pass_vtable.126 = pass_vtable;
            D.35260 = pass_vtable.126 != 0;
            D.35261 = (long int) D.35260;
            D.35262 = __builtin_expect (D.35261, 0);
            if (D.35262 != 0) goto <D.35263>; else goto <D.35264>;
            <D.35263>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8010, "!pass_vtable");
            <D.35264>:
            D.35265 = cmethod == 0B;
            D.35266 = (long int) D.35265;
            D.35267 = __builtin_expect (D.35266, 0);
            if (D.35267 != 0) goto <D.35268>; else goto <D.35269>;
            <D.35268>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8011, "cmethod");
            <D.35269>:
            imt_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
            <D.35259>:
            if (check_this != 0) goto <D.35270>; else goto <D.35271>;
            <D.35270>:
            D.33186 = cfg->flags;
            D.33385 = D.33186 | 128;
            cfg->flags = D.33385;
            D.32743 = BIT_FIELD_REF <*cfg, 8, 3424>;
            D.33386 = D.32743 & 64;
            if (D.33386 != 0) goto <D.35272>; else goto <D.35273>;
            <D.35272>:
            D.32743 = BIT_FIELD_REF <*cfg, 8, 3424>;
            D.33386 = D.32743 & 64;
            if (D.33386 != 0) goto <D.35274>; else goto <D.35275>;
            <D.35274>:
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.35276 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.35276;
              inst->prev = 0B;
              D.35277 = inst->prev;
              inst->next = D.35277;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.35278 = inst->sreg3;
              inst->sreg2 = D.35278;
              D.35279 = inst->sreg2;
              inst->sreg1 = D.35279;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = -1;
              D.33750 = *sp;
              D.33943 = D.33750->dreg;
              inst->sreg1 = D.33943;
              inst->data.op[1].const_val = 0;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.35280>; else goto <D.35281>;
              <D.35280>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.35282>;
              <D.35281>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.35282>:
            }
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.35283 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.35283;
              inst->prev = 0B;
              D.35284 = inst->prev;
              inst->next = D.35284;
              inst->opcode = 451;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.35285 = inst->sreg3;
              inst->sreg2 = D.35285;
              D.35286 = inst->sreg2;
              inst->sreg1 = D.35286;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->data.op[1].p = "NullReferenceException";
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.35287>; else goto <D.35288>;
              <D.35287>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.35289>;
              <D.35288>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.35289>:
            }
            goto <D.35290>;
            <D.35275>:
            <D.35290>:
            goto <D.35291>;
            <D.35273>:
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.35292 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.35292;
              inst->prev = 0B;
              D.35293 = inst->prev;
              inst->next = D.35293;
              inst->opcode = 340;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.35294 = inst->sreg3;
              inst->sreg2 = D.35294;
              D.35295 = inst->sreg2;
              inst->sreg1 = D.35295;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = -1;
              D.33750 = *sp;
              D.33943 = D.33750->dreg;
              inst->sreg1 = D.33943;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.35296>; else goto <D.35297>;
              <D.35296>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.35298>;
              <D.35297>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.35298>:
            }
            <D.35291>:
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.35299 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.35299;
              inst->prev = 0B;
              D.35300 = inst->prev;
              inst->next = D.35300;
              inst->opcode = 799;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.35301 = inst->sreg3;
              inst->sreg2 = D.35301;
              D.35302 = inst->sreg2;
              inst->sreg1 = D.35302;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = -1;
              D.33750 = *sp;
              D.33943 = D.33750->dreg;
              inst->sreg1 = D.33943;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.35303>; else goto <D.35304>;
              <D.35303>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.35305>;
              <D.35304>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.35305>:
            }
            <D.35271>:
            D.35311 = cmethod != 0B;
            D.35312 = virtual != 0;
            D.35313 = D.35311 & D.35312;
            if (D.35313 != 0) goto <D.35314>; else goto <D.35315>;
            <D.35314>:
            D.34654 = cmethod->flags;
            D.34655 = (int) D.34654;
            D.35248 = D.34655 & 64;
            if (D.35248 != 0) goto <D.35316>; else goto <D.35317>;
            <D.35316>:
            D.34654 = cmethod->flags;
            D.34655 = (int) D.34654;
            D.35250 = D.34655 & 32;
            if (D.35250 == 0) goto <D.35318>; else goto <D.35308>;
            <D.35318>:
            D.34618 = cmethod->klass;
            if (D.34618 == 0B) goto <D.35309>; else goto <D.35319>;
            <D.35319>:
            D.34618 = cmethod->klass;
            D.34798 = D.34618->flags;
            D.35253 = D.34798 & 256;
            if (D.35253 == 0) goto <D.35309>; else goto <D.35308>;
            <D.35308>:
            D.34740 = BIT_FIELD_REF <*cmethod, 8, 160>;
            D.35320 = D.34740 & 124;
            if (D.35320 == 36) goto <D.35309>; else goto <D.35310>;
            <D.35309>:
            D.35321 = fsig->generic_param_count;
            if (D.35321 != 0) goto <D.35322>; else goto <D.35323>;
            <D.35322>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 == 0) goto <D.35306>; else goto <D.35324>;
            <D.35324>:
            D.35325 = mini_is_gsharedvt_signature (cfg, fsig);
            if (D.35325 == 0) goto <D.35306>; else goto <D.35307>;
            <D.35306>:
            {
              struct MonoInst * this_temp;
              struct MonoInst * this_arg_temp;
              struct MonoInst * store;
              struct MonoInst * iargs[4];
              gboolean use_imt;

              try
                {
                  use_imt = 0;
                  D.34557 = BIT_FIELD_REF <*fsig, 8, 88>;
                  D.35326 = D.34557 & 2;
                  D.35327 = D.35326 == 0;
                  D.35328 = (long int) D.35327;
                  D.35329 = __builtin_expect (D.35328, 0);
                  if (D.35329 != 0) goto <D.35330>; else goto <D.35331>;
                  <D.35330>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8031, "fsig->is_inflated");
                  <D.35331>:
                  D.32726 = cfg->method;
                  if (D.32726 != method) goto <D.35332>; else goto <D.35333>;
                  <D.35332>:
                  D.32698 = BIT_FIELD_REF <*method, 8, 160>;
                  D.32699 = D.32698 & 124;
                  if (D.32699 == 0) goto <D.35334>; else goto <D.35335>;
                  <D.35334>:
                  D.32836 = cfg->verbose_level;
                  if (D.32836 > 1) goto <D.35336>; else goto <D.35337>;
                  <D.35336>:
                  printf ("inline failed: %s\n", "virtual generic call");
                  <D.35337>:
                  goto inline_failure;
                  <D.35335>:
                  <D.35333>:
                  D.32904 = cfg->gsharedvt;
                  if (D.32904 != 0) goto <D.35338>; else goto <D.35339>;
                  <D.35338>:
                  D.35340 = mini_is_gsharedvt_signature (cfg, fsig);
                  if (D.35340 != 0) goto <D.35341>; else goto <D.35342>;
                  <D.35341>:
                  D.32904 = cfg->gsharedvt;
                  if (D.32904 != 0) goto <D.35343>; else goto <D.35344>;
                  <D.35343>:
                  D.32693 = method->klass;
                  D.34423 = D.32693->name_space;
                  D.32693 = method->klass;
                  D.34424 = D.32693->name;
                  D.34425 = method->name;
                  D.34426 = method->signature;
                  D.34427 = D.34426->param_count;
                  D.34428 = (int) D.34427;
                  D.33632 = *ip;
                  D.33633 = (int) D.33632;
                  D.35345 = mono_opcode_name (D.33633);
                  D.35346 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.34423, D.34424, D.34425, D.34428, D.35345, "method-to-ir.c", 8037);
                  cfg->exception_message = D.35346;
                  D.32836 = cfg->verbose_level;
                  if (D.32836 > 1) goto <D.35347>; else goto <D.35348>;
                  <D.35347>:
                  D.34433 = cfg->exception_message;
                  printf ("%s\n", D.34433);
                  <D.35348>:
                  mono_cfg_set_exception (cfg, 11);
                  goto exception_exit;
                  <D.35344>:
                  <D.35342>:
                  <D.35339>:
                  D.34740 = BIT_FIELD_REF <*cmethod, 8, 160>;
                  D.35320 = D.34740 & 124;
                  if (D.35320 == 0) goto <D.35349>; else goto <D.35350>;
                  <D.35349>:
                  mono_use_imt.130 = mono_use_imt;
                  if (mono_use_imt.130 != 0) goto <D.35352>; else goto <D.35353>;
                  <D.35352>:
                  use_imt = 1;
                  <D.35353>:
                  <D.35350>:
                  if (use_imt != 0) goto <D.35354>; else goto <D.35355>;
                  <D.35354>:
                  D.35356 = imt_arg != 0B;
                  D.35357 = (long int) D.35356;
                  D.35358 = __builtin_expect (D.35357, 0);
                  if (D.35358 != 0) goto <D.35359>; else goto <D.35360>;
                  <D.35359>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8045, "!imt_arg");
                  <D.35360>:
                  if (context_used == 0) goto <D.35361>; else goto <D.35362>;
                  <D.35361>:
                  D.35363 = BIT_FIELD_REF <*cmethod, 8, 168>;
                  D.35364 = D.35363 & 16;
                  D.35365 = D.35364 == 0;
                  D.35366 = (long int) D.35365;
                  D.35367 = __builtin_expect (D.35366, 0);
                  if (D.35367 != 0) goto <D.35368>; else goto <D.35369>;
                  <D.35368>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8047, "cmethod->is_inflated");
                  <D.35369>:
                  <D.35362>:
                  imt_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
                  D.33750 = *sp;
                  ins = mono_emit_method_call_full (cfg, cmethod, fsig, 0, sp, D.33750, imt_arg, 0B);
                  goto <D.35370>;
                  <D.35355>:
                  D.33750 = *sp;
                  D.35371 = type_from_stack_type (D.33750);
                  this_temp = mono_compile_create_var (cfg, D.35371, 329);
                  D.32755 = cfg->mempool;
                  store = mono_mempool_alloc (D.32755, 56);
                  store->data.op[1].const_val = 0;
                  D.35372 = store->data.op[1].const_val;
                  store->data.op[0].const_val = D.35372;
                  store->prev = 0B;
                  D.35373 = store->prev;
                  store->next = D.35373;
                  store->opcode = 424;
                  store->flags = 0;
                  store->type = 0;
                  store->dreg = -1;
                  store->sreg3 = -1;
                  D.35374 = store->sreg3;
                  store->sreg2 = D.35374;
                  D.35375 = store->sreg2;
                  store->sreg1 = D.35375;
                  D.32979 = cfg->ip;
                  store->cil_code = D.32979;
                  D.33491 = cfg->varinfo;
                  D.35376 = this_temp->data.op[0].const_val;
                  D.35377 = (unsigned int) D.35376;
                  D.35378 = D.35377 * 4;
                  D.35379 = D.33491 + D.35378;
                  D.35380 = *D.35379;
                  D.35381 = D.35380->data.op[1].vtype;
                  D.35382 = mono_type_to_regmove (cfg, D.35381);
                  D.35383 = (short unsigned int) D.35382;
                  store->opcode = D.35383;
                  D.33491 = cfg->varinfo;
                  D.35376 = this_temp->data.op[0].const_val;
                  D.35377 = (unsigned int) D.35376;
                  D.35378 = D.35377 * 4;
                  D.35379 = D.33491 + D.35378;
                  D.35380 = *D.35379;
                  D.35384 = D.35380->klass;
                  store->klass = D.35384;
                  D.33750 = *sp;
                  D.33943 = D.33750->dreg;
                  store->sreg1 = D.33943;
                  D.33491 = cfg->varinfo;
                  D.35376 = this_temp->data.op[0].const_val;
                  D.35377 = (unsigned int) D.35376;
                  D.35378 = D.35377 * 4;
                  D.35379 = D.33491 + D.35378;
                  D.35380 = *D.35379;
                  D.35385 = D.35380->dreg;
                  store->dreg = D.35385;
                  D.35386 = store->opcode;
                  if (D.35386 == 427) goto <D.35387>; else goto <D.35388>;
                  <D.35387>:
                  D.33491 = cfg->varinfo;
                  D.35376 = this_temp->data.op[0].const_val;
                  D.35377 = (unsigned int) D.35376;
                  D.35378 = D.35377 * 4;
                  D.35379 = D.33491 + D.35378;
                  D.35380 = *D.35379;
                  D.35381 = D.35380->data.op[1].vtype;
                  D.35389 = mono_class_from_mono_type (D.35381);
                  store->klass = D.35389;
                  <D.35388>:
                  bblock.76 = bblock;
                  D.33093 = bblock.76->last_ins;
                  if (D.33093 != 0B) goto <D.35390>; else goto <D.35391>;
                  <D.35390>:
                  bblock.76 = bblock;
                  D.33093 = bblock.76->last_ins;
                  D.33093->next = store;
                  bblock.76 = bblock;
                  D.33093 = bblock.76->last_ins;
                  store->prev = D.33093;
                  bblock.76 = bblock;
                  bblock.76->last_ins = store;
                  goto <D.35392>;
                  <D.35391>:
                  bblock.76 = bblock;
                  bblock.76 = bblock;
                  bblock.76->last_ins = store;
                  D.33093 = bblock.76->last_ins;
                  bblock.76->code = D.33093;
                  <D.35392>:
                  D.33162 = mono_defaults.int_class;
                  D.33163 = &D.33162->byval_arg;
                  this_arg_temp = mono_compile_create_var (cfg, D.33163, 329);
                  D.32755 = cfg->mempool;
                  D.35393 = mono_mempool_alloc (D.32755, 56);
                  iargs[0] = D.35393;
                  D.35394 = iargs[0];
                  D.35394 = iargs[0];
                  D.35394->data.op[1].const_val = 0;
                  D.35395 = D.35394->data.op[1].const_val;
                  D.35394->data.op[0].const_val = D.35395;
                  D.35394 = iargs[0];
                  D.35394 = iargs[0];
                  D.35394->prev = 0B;
                  D.35396 = D.35394->prev;
                  D.35394->next = D.35396;
                  D.35394 = iargs[0];
                  D.35394->opcode = 424;
                  D.35394 = iargs[0];
                  D.35394->flags = 0;
                  D.35394 = iargs[0];
                  D.35394->type = 0;
                  D.35394 = iargs[0];
                  D.35394->dreg = -1;
                  D.35394 = iargs[0];
                  D.35394 = iargs[0];
                  D.35394 = iargs[0];
                  D.35394->sreg3 = -1;
                  D.35397 = D.35394->sreg3;
                  D.35394->sreg2 = D.35397;
                  D.35398 = D.35394->sreg2;
                  D.35394->sreg1 = D.35398;
                  D.35394 = iargs[0];
                  D.32979 = cfg->ip;
                  D.35394->cil_code = D.32979;
                  D.35394 = iargs[0];
                  D.33491 = cfg->varinfo;
                  D.35376 = this_temp->data.op[0].const_val;
                  D.35377 = (unsigned int) D.35376;
                  D.35378 = D.35377 * 4;
                  D.35379 = D.33491 + D.35378;
                  D.35380 = *D.35379;
                  D.35381 = D.35380->data.op[1].vtype;
                  D.35399 = mono_type_to_regmove (cfg, D.35381);
                  D.35400 = (short unsigned int) D.35399;
                  D.35394->opcode = D.35400;
                  D.33491 = cfg->varinfo;
                  D.35376 = this_temp->data.op[0].const_val;
                  D.35377 = (unsigned int) D.35376;
                  D.35378 = D.35377 * 4;
                  D.35379 = D.33491 + D.35378;
                  D.35380 = *D.35379;
                  D.35381 = D.35380->data.op[1].vtype;
                  D.35394 = iargs[0];
                  type_to_eval_stack_type (cfg, D.35381, D.35394);
                  D.35394 = iargs[0];
                  D.33491 = cfg->varinfo;
                  D.35376 = this_temp->data.op[0].const_val;
                  D.35377 = (unsigned int) D.35376;
                  D.35378 = D.35377 * 4;
                  D.35379 = D.33491 + D.35378;
                  D.35380 = *D.35379;
                  D.35384 = D.35380->klass;
                  D.35394->klass = D.35384;
                  D.35394 = iargs[0];
                  D.33491 = cfg->varinfo;
                  D.35376 = this_temp->data.op[0].const_val;
                  D.35377 = (unsigned int) D.35376;
                  D.35378 = D.35377 * 4;
                  D.35379 = D.33491 + D.35378;
                  D.35380 = *D.35379;
                  D.35385 = D.35380->dreg;
                  D.35394->sreg1 = D.35385;
                  D.35394 = iargs[0];
                  D.35394 = iargs[0];
                  D.35401 = D.35394->type;
                  D.35402 = (<unnamed type>) D.35401;
                  D.35403 = alloc_dreg (cfg, D.35402);
                  D.35404 = (int) D.35403;
                  D.35394->dreg = D.35404;
                  D.35394 = iargs[0];
                  D.35405 = D.35394->opcode;
                  if (D.35405 == 427) goto <D.35406>; else goto <D.35407>;
                  <D.35406>:
                  D.35394 = iargs[0];
                  D.33491 = cfg->varinfo;
                  D.35376 = this_temp->data.op[0].const_val;
                  D.35377 = (unsigned int) D.35376;
                  D.35378 = D.35377 * 4;
                  D.35379 = D.33491 + D.35378;
                  D.35380 = *D.35379;
                  D.35381 = D.35380->data.op[1].vtype;
                  D.35408 = mono_class_from_mono_type (D.35381);
                  D.35394->klass = D.35408;
                  <D.35407>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.35409>; else goto <D.35410>;
                  <D.35409>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.35394 = iargs[0];
                  D.33008->next = D.35394;
                  D.35394 = iargs[0];
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.35394->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  D.35394 = iargs[0];
                  bblock.125->last_ins = D.35394;
                  goto <D.35411>;
                  <D.35410>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  D.35394 = iargs[0];
                  bblock.125->last_ins = D.35394;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.35411>:
                  D.35412 = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
                  iargs[1] = D.35412;
                  D.32755 = cfg->mempool;
                  D.35413 = mono_mempool_alloc (D.32755, 56);
                  iargs[2] = D.35413;
                  D.35414 = iargs[2];
                  D.35414 = iargs[2];
                  D.35414->data.op[1].const_val = 0;
                  D.35415 = D.35414->data.op[1].const_val;
                  D.35414->data.op[0].const_val = D.35415;
                  D.35414 = iargs[2];
                  D.35414 = iargs[2];
                  D.35414->prev = 0B;
                  D.35416 = D.35414->prev;
                  D.35414->next = D.35416;
                  D.35414 = iargs[2];
                  D.35414->opcode = 314;
                  D.35414 = iargs[2];
                  D.35414->flags = 0;
                  D.35414 = iargs[2];
                  D.35414->type = 0;
                  D.35414 = iargs[2];
                  D.35414->dreg = -1;
                  D.35414 = iargs[2];
                  D.35414 = iargs[2];
                  D.35414 = iargs[2];
                  D.35414->sreg3 = -1;
                  D.35417 = D.35414->sreg3;
                  D.35414->sreg2 = D.35417;
                  D.35418 = D.35414->sreg2;
                  D.35414->sreg1 = D.35418;
                  D.35414 = iargs[2];
                  D.32979 = cfg->ip;
                  D.35414->cil_code = D.32979;
                  D.35414 = iargs[2];
                  D.33491 = cfg->varinfo;
                  D.35419 = this_arg_temp->data.op[0].const_val;
                  D.35420 = (unsigned int) D.35419;
                  D.35421 = D.35420 * 4;
                  D.35422 = D.33491 + D.35421;
                  D.35423 = *D.35422;
                  D.35414->data.op[0].p = D.35423;
                  D.33491 = cfg->varinfo;
                  D.35419 = this_arg_temp->data.op[0].const_val;
                  D.35420 = (unsigned int) D.35419;
                  D.35421 = D.35420 * 4;
                  D.35422 = D.33491 + D.35421;
                  D.35423 = *D.35422;
                  D.33491 = cfg->varinfo;
                  D.35419 = this_arg_temp->data.op[0].const_val;
                  D.35420 = (unsigned int) D.35419;
                  D.35421 = D.35420 * 4;
                  D.35422 = D.33491 + D.35421;
                  D.35423 = *D.35422;
                  D.35424 = D.35423->flags;
                  D.35425 = D.35424 | 16;
                  D.35423->flags = D.35425;
                  D.35414 = iargs[2];
                  D.35414->type = 5;
                  D.35414 = iargs[2];
                  D.33491 = cfg->varinfo;
                  D.35419 = this_arg_temp->data.op[0].const_val;
                  D.35420 = (unsigned int) D.35419;
                  D.35421 = D.35420 * 4;
                  D.35422 = D.33491 + D.35421;
                  D.35423 = *D.35422;
                  D.35426 = D.35423->klass;
                  D.35414->klass = D.35426;
                  D.35414 = iargs[2];
                  D.35427 = alloc_dreg (cfg, 5);
                  D.35428 = (int) D.35427;
                  D.35414->dreg = D.35428;
                  cfg->has_indirection = 1;
                  D.32904 = cfg->gsharedvt;
                  D.33836 = D.32904 != 0;
                  D.33837 = (long int) D.33836;
                  D.33838 = __builtin_expect (D.33837, 0);
                  if (D.33838 != 0) goto <D.35429>; else goto <D.35430>;
                  <D.35429>:
                  D.33491 = cfg->varinfo;
                  D.35419 = this_arg_temp->data.op[0].const_val;
                  D.35420 = (unsigned int) D.35419;
                  D.35421 = D.35420 * 4;
                  D.35422 = D.33491 + D.35421;
                  D.35423 = *D.35422;
                  D.35431 = D.35423->data.op[1].vtype;
                  D.35432 = mini_is_gsharedvt_variable_type (cfg, D.35431);
                  if (D.35432 != 0) goto <D.35433>; else goto <D.35434>;
                  <D.35433>:
                  handle_gsharedvt_ldaddr (cfg);
                  <D.35434>:
                  <D.35430>:
                  D.35436 = mono_arch_is_soft_float ();
                  if (D.35436 != 0) goto <D.35437>; else goto <D.35438>;
                  <D.35437>:
                  D.33491 = cfg->varinfo;
                  D.35419 = this_arg_temp->data.op[0].const_val;
                  D.35420 = (unsigned int) D.35419;
                  D.35421 = D.35420 * 4;
                  D.35422 = D.33491 + D.35421;
                  D.35423 = *D.35422;
                  D.35439 = D.35423->type;
                  D.35440 = D.35439 == 2;
                  D.35441 = D.35439 == 4;
                  D.35442 = D.35440 | D.35441;
                  D.35443 = (int) D.35442;
                  iftmp.131 = (_Bool) D.35443;
                  goto <D.35444>;
                  <D.35438>:
                  D.33491 = cfg->varinfo;
                  D.35419 = this_arg_temp->data.op[0].const_val;
                  D.35420 = (unsigned int) D.35419;
                  D.35421 = D.35420 * 4;
                  D.35422 = D.33491 + D.35421;
                  D.35423 = *D.35422;
                  D.35445 = D.35423->type;
                  iftmp.131 = D.35445 == 2;
                  <D.35444>:
                  if (iftmp.131 != 0) goto <D.35446>; else goto <D.35447>;
                  <D.35446>:
                  {
                    struct MonoInst * var1;
                    struct MonoInst * var2;

                    D.33491 = cfg->varinfo;
                    D.35419 = this_arg_temp->data.op[0].const_val;
                    D.35420 = (unsigned int) D.35419;
                    D.35421 = D.35420 * 4;
                    D.35422 = D.33491 + D.35421;
                    D.35423 = *D.35422;
                    D.35449 = D.35423->dreg;
                    D.35450 = D.35449 + 1;
                    D.35451 = (unsigned int) D.35450;
                    D.33862 = cfg->vreg_to_inst_len;
                    if (D.35451 < D.33862) goto <D.35452>; else goto <D.35453>;
                    <D.35452>:
                    D.33865 = cfg->vreg_to_inst;
                    D.33491 = cfg->varinfo;
                    D.35419 = this_arg_temp->data.op[0].const_val;
                    D.35420 = (unsigned int) D.35419;
                    D.35421 = D.35420 * 4;
                    D.35422 = D.33491 + D.35421;
                    D.35423 = *D.35422;
                    D.35449 = D.35423->dreg;
                    D.35454 = (sizetype) D.35449;
                    D.35455 = D.35454 + 1;
                    D.35456 = D.35455 * 4;
                    D.35457 = D.33865 + D.35456;
                    iftmp.132 = *D.35457;
                    goto <D.35458>;
                    <D.35453>:
                    iftmp.132 = 0B;
                    <D.35458>:
                    var1 = iftmp.132;
                    D.33491 = cfg->varinfo;
                    D.35419 = this_arg_temp->data.op[0].const_val;
                    D.35420 = (unsigned int) D.35419;
                    D.35421 = D.35420 * 4;
                    D.35422 = D.33491 + D.35421;
                    D.35423 = *D.35422;
                    D.35449 = D.35423->dreg;
                    D.35460 = D.35449 + 2;
                    D.35461 = (unsigned int) D.35460;
                    D.33862 = cfg->vreg_to_inst_len;
                    if (D.35461 < D.33862) goto <D.35462>; else goto <D.35463>;
                    <D.35462>:
                    D.33865 = cfg->vreg_to_inst;
                    D.33491 = cfg->varinfo;
                    D.35419 = this_arg_temp->data.op[0].const_val;
                    D.35420 = (unsigned int) D.35419;
                    D.35421 = D.35420 * 4;
                    D.35422 = D.33491 + D.35421;
                    D.35423 = *D.35422;
                    D.35449 = D.35423->dreg;
                    D.35454 = (sizetype) D.35449;
                    D.35464 = D.35454 + 2;
                    D.35465 = D.35464 * 4;
                    D.35466 = D.33865 + D.35465;
                    iftmp.133 = *D.35466;
                    goto <D.35467>;
                    <D.35463>:
                    iftmp.133 = 0B;
                    <D.35467>:
                    var2 = iftmp.133;
                    D.35468 = var1 == 0B;
                    D.35469 = (long int) D.35468;
                    D.35470 = __builtin_expect (D.35469, 0);
                    if (D.35470 != 0) goto <D.35471>; else goto <D.35472>;
                    <D.35471>:
                    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8062, "var1");
                    <D.35472>:
                    D.35473 = var2 == 0B;
                    D.35474 = (long int) D.35473;
                    D.35475 = __builtin_expect (D.35474, 0);
                    if (D.35475 != 0) goto <D.35476>; else goto <D.35477>;
                    <D.35476>:
                    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8062, "var2");
                    <D.35477>:
                    D.35478 = var1->flags;
                    D.35479 = D.35478 | 16;
                    var1->flags = D.35479;
                    D.35480 = var2->flags;
                    D.35481 = D.35480 | 16;
                    var2->flags = D.35481;
                  }
                  <D.35447>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.35482>; else goto <D.35483>;
                  <D.35482>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.35414 = iargs[2];
                  D.33008->next = D.35414;
                  D.35414 = iargs[2];
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.35414->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  D.35414 = iargs[2];
                  bblock.125->last_ins = D.35414;
                  goto <D.35484>;
                  <D.35483>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  D.35414 = iargs[2];
                  bblock.125->last_ins = D.35414;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.35484>:
                  addr = mono_emit_jit_icall (cfg, mono_helper_compile_generic_method, &iargs);
                  D.32755 = cfg->mempool;
                  D.35485 = mono_mempool_alloc (D.32755, 56);
                  *sp = D.35485;
                  D.33750 = *sp;
                  D.33750 = *sp;
                  D.33750->data.op[1].const_val = 0;
                  D.35486 = D.33750->data.op[1].const_val;
                  D.33750->data.op[0].const_val = D.35486;
                  D.33750 = *sp;
                  D.33750 = *sp;
                  D.33750->prev = 0B;
                  D.35487 = D.33750->prev;
                  D.33750->next = D.35487;
                  D.33750 = *sp;
                  D.33750->opcode = 424;
                  D.33750 = *sp;
                  D.33750->flags = 0;
                  D.33750 = *sp;
                  D.33750->type = 0;
                  D.33750 = *sp;
                  D.33750->dreg = -1;
                  D.33750 = *sp;
                  D.33750 = *sp;
                  D.33750 = *sp;
                  D.33750->sreg3 = -1;
                  D.35488 = D.33750->sreg3;
                  D.33750->sreg2 = D.35488;
                  D.35489 = D.33750->sreg2;
                  D.33750->sreg1 = D.35489;
                  D.33750 = *sp;
                  D.32979 = cfg->ip;
                  D.33750->cil_code = D.32979;
                  D.33750 = *sp;
                  D.33491 = cfg->varinfo;
                  D.35419 = this_arg_temp->data.op[0].const_val;
                  D.35420 = (unsigned int) D.35419;
                  D.35421 = D.35420 * 4;
                  D.35422 = D.33491 + D.35421;
                  D.35423 = *D.35422;
                  D.35431 = D.35423->data.op[1].vtype;
                  D.35490 = mono_type_to_regmove (cfg, D.35431);
                  D.35491 = (short unsigned int) D.35490;
                  D.33750->opcode = D.35491;
                  D.33491 = cfg->varinfo;
                  D.35419 = this_arg_temp->data.op[0].const_val;
                  D.35420 = (unsigned int) D.35419;
                  D.35421 = D.35420 * 4;
                  D.35422 = D.33491 + D.35421;
                  D.35423 = *D.35422;
                  D.35431 = D.35423->data.op[1].vtype;
                  D.33750 = *sp;
                  type_to_eval_stack_type (cfg, D.35431, D.33750);
                  D.33750 = *sp;
                  D.33491 = cfg->varinfo;
                  D.35419 = this_arg_temp->data.op[0].const_val;
                  D.35420 = (unsigned int) D.35419;
                  D.35421 = D.35420 * 4;
                  D.35422 = D.33491 + D.35421;
                  D.35423 = *D.35422;
                  D.35426 = D.35423->klass;
                  D.33750->klass = D.35426;
                  D.33750 = *sp;
                  D.33491 = cfg->varinfo;
                  D.35419 = this_arg_temp->data.op[0].const_val;
                  D.35420 = (unsigned int) D.35419;
                  D.35421 = D.35420 * 4;
                  D.35422 = D.33491 + D.35421;
                  D.35423 = *D.35422;
                  D.35449 = D.35423->dreg;
                  D.33750->sreg1 = D.35449;
                  D.33750 = *sp;
                  D.33750 = *sp;
                  D.35492 = D.33750->type;
                  D.35493 = (<unnamed type>) D.35492;
                  D.35494 = alloc_dreg (cfg, D.35493);
                  D.35495 = (int) D.35494;
                  D.33750->dreg = D.35495;
                  D.33750 = *sp;
                  D.35496 = D.33750->opcode;
                  if (D.35496 == 427) goto <D.35497>; else goto <D.35498>;
                  <D.35497>:
                  D.33750 = *sp;
                  D.33491 = cfg->varinfo;
                  D.35419 = this_arg_temp->data.op[0].const_val;
                  D.35420 = (unsigned int) D.35419;
                  D.35421 = D.35420 * 4;
                  D.35422 = D.33491 + D.35421;
                  D.35423 = *D.35422;
                  D.35431 = D.35423->data.op[1].vtype;
                  D.35499 = mono_class_from_mono_type (D.35431);
                  D.33750->klass = D.35499;
                  <D.35498>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.35500>; else goto <D.35501>;
                  <D.35500>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.33750 = *sp;
                  D.33008->next = D.33750;
                  D.33750 = *sp;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.33750->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  D.33750 = *sp;
                  bblock.125->last_ins = D.33750;
                  goto <D.35502>;
                  <D.35501>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  D.33750 = *sp;
                  bblock.125->last_ins = D.33750;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.35502>:
                  ins = mono_emit_calli (cfg, fsig, sp, addr, 0B, 0B);
                  <D.35370>:
                  goto call_end;
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            <D.35307>:
            <D.35323>:
            <D.35310>:
            <D.35317>:
            <D.35315>:
            if (cmethod != 0B) goto <D.35503>; else goto <D.35504>;
            <D.35503>:
            D.34618 = cmethod->klass;
            D.35505 = mono_defaults.monitor_class;
            if (D.34618 == D.35505) goto <D.35506>; else goto <D.35507>;
            <D.35506>:
            {
              size_t __s1_len;
              size_t __s2_len;

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

                __s2 = cmethod->name;
                D.35511 = "Enter";
                D.35512 = MEM[(const unsigned char *)D.35511];
                D.35513 = (int) D.35512;
                D.35514 = *__s2;
                D.35515 = (int) D.35514;
                __result = D.35513 - D.35515;
                {
                  D.35516 = __s2_len != 0;
                  D.35517 = __result == 0;
                  D.35518 = D.35516 & D.35517;
                  if (D.35518 != 0) goto <D.35519>; else goto <D.35520>;
                  <D.35519>:
                  D.35521 = &MEM[(void *)"Enter" + 1B];
                  D.35522 = *D.35521;
                  D.35523 = (int) D.35522;
                  D.35524 = __s2 + 1;
                  D.35525 = *D.35524;
                  D.35526 = (int) D.35525;
                  __result = D.35523 - D.35526;
                  D.35527 = __s2_len > 1;
                  D.35517 = __result == 0;
                  D.35528 = D.35527 & D.35517;
                  if (D.35528 != 0) goto <D.35529>; else goto <D.35530>;
                  <D.35529>:
                  D.35531 = &MEM[(void *)"Enter" + 2B];
                  D.35532 = *D.35531;
                  D.35533 = (int) D.35532;
                  D.35534 = __s2 + 2;
                  D.35535 = *D.35534;
                  D.35536 = (int) D.35535;
                  __result = D.35533 - D.35536;
                  D.35537 = __s2_len > 2;
                  D.35517 = __result == 0;
                  D.35538 = D.35537 & D.35517;
                  if (D.35538 != 0) goto <D.35539>; else goto <D.35540>;
                  <D.35539>:
                  D.35541 = &MEM[(void *)"Enter" + 3B];
                  D.35542 = *D.35541;
                  D.35543 = (int) D.35542;
                  D.35544 = __s2 + 3;
                  D.35545 = *D.35544;
                  D.35546 = (int) D.35545;
                  __result = D.35543 - D.35546;
                  <D.35540>:
                  <D.35530>:
                  <D.35520>:
                }
                D.30031 = __result;
              }
              iftmp.134 = -D.30031;
              goto <D.35547>;
              <D.35510>:
              D.35147 = cmethod->name;
              iftmp.134 = __builtin_strcmp (D.35147, "Enter");
              <D.35547>:
              D.30032 = iftmp.134;
            }
            if (D.30032 == 0) goto <D.35548>; else goto <D.35549>;
            <D.35548>:
            D.35550 = mono_method_signature (cmethod);
            D.35551 = D.35550->param_count;
            if (D.35551 == 1) goto <D.35552>; else goto <D.35553>;
            <D.35552>:
            {
              struct MonoBasicBlock * tbb;

              D.32887 = cfg->cil_offset_to_bb;
              D.34195 = ip + 5;
              D.34719 = (int) D.34195;
              D.32891 = cfg->cil_start;
              D.32892 = (int) D.32891;
              D.35554 = D.34719 - D.32892;
              D.35555 = (unsigned int) D.35554;
              D.35556 = D.35555 * 4;
              D.35557 = D.32887 + D.35556;
              tbb = *D.35557;
              if (tbb == 0B) goto <D.35558>; else goto <D.35559>;
              <D.35558>:
              D.34195 = ip + 5;
              if (D.34195 >= end) goto <D.35560>; else goto <D.35562>;
              <D.35562>:
              D.35563 = ip + 5;
              D.32903 = header->code;
              if (D.35563 < D.32903) goto <D.35560>; else goto <D.35561>;
              <D.35560>:
              D.32904 = cfg->gsharedvt;
              if (D.32904 != 0) goto <D.35564>; else goto <D.35565>;
              <D.35564>:
              D.32836 = cfg->verbose_level;
              if (D.32836 > 2) goto <D.35566>; else goto <D.35567>;
              <D.35566>:
              printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
              <D.35567>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.35565>:
              D.35568 = mini_get_debug_options ();
              D.35569 = D.35568->break_on_unverified;
              if (D.35569 != 0) goto <D.35570>; else goto unverified;
              <D.35570>:
              raise (5);
              <D.35561>:
              D.32755 = cfg->mempool;
              tbb = mono_mempool_alloc0 (D.32755, 172);
              D.32864 = cfg->num_bblocks;
              D.35571 = D.32864;
              D.35572 = D.35571 + 1;
              cfg->num_bblocks = D.35572;
              D.35573 = (int) D.35571;
              tbb->block_num = D.35573;
              D.34195 = ip + 5;
              tbb->cil_code = D.34195;
              D.35574 = tbb->cil_code;
              if (D.35574 != 0B) goto <D.35575>; else goto <D.35576>;
              <D.35575>:
              D.32887 = cfg->cil_offset_to_bb;
              D.35574 = tbb->cil_code;
              D.35577 = (int) D.35574;
              D.32891 = cfg->cil_start;
              D.32892 = (int) D.32891;
              D.35578 = D.35577 - D.32892;
              D.35579 = (unsigned int) D.35578;
              D.35580 = D.35579 * 4;
              D.35581 = D.32887 + D.35580;
              *D.35581 = tbb;
              <D.35576>:
              D.32923 = cfg->real_offset;
              tbb->real_offset = D.32923;
              <D.35559>:
              D.35582 = BIT_FIELD_REF <*tbb, 8, 912>;
              D.35583 = D.35582 & 64;
              if (D.35583 != 0) goto <D.35584>; else goto <D.35585>;
              <D.35584>:
              D.35586 = tbb->region;
              D.35587 = D.35586 & 7;
              if (D.35587 == 2) goto <D.35588>; else goto <D.35589>;
              <D.35588>:
              tbb->extend_try_block = 1;
              <D.35589>:
              <D.35585>:
            }
            <D.35553>:
            <D.35549>:
            <D.35507>:
            <D.35504>:
            if (cmethod != 0B) goto <D.35590>; else goto <D.35591>;
            <D.35590>:
            D.33148 = cfg->opt;
            D.35152 = D.33148 & 2048;
            if (D.35152 != 0) goto <D.35592>; else goto <D.35593>;
            <D.35592>:
            ins = mini_emit_inst_for_method (cfg, cmethod, fsig, sp);
            if (ins != 0B) goto <D.35594>; else goto <D.35595>;
            <D.35594>:
            bblock.125 = cfg->cbb;
            bblock = bblock.125;
            D.34706 = fsig->ret;
            D.35596 = mono_type_is_void (D.34706);
            if (D.35596 == 0) goto <D.35597>; else goto <D.35598>;
            <D.35597>:
            D.34706 = fsig->ret;
            type_to_eval_stack_type (cfg, D.34706, ins);
            emit_widen = 0;
            <D.35598>:
            goto call_end;
            <D.35595>:
            <D.35593>:
            <D.35591>:
            if (cmethod != 0B) goto <D.35601>; else goto <D.35602>;
            <D.35601>:
            D.33148 = cfg->opt;
            D.35603 = D.33148 & 4;
            if (D.35603 != 0) goto <D.35604>; else goto <D.35605>;
            <D.35604>:
            if (virtual == 0) goto <D.35599>; else goto <D.35606>;
            <D.35606>:
            D.34654 = cmethod->flags;
            D.34655 = (int) D.34654;
            D.35248 = D.34655 & 64;
            if (D.35248 == 0) goto <D.35599>; else goto <D.35607>;
            <D.35607>:
            D.34654 = cmethod->flags;
            D.34655 = (int) D.34654;
            D.35250 = D.34655 & 32;
            if (D.35250 != 0) goto <D.35599>; else goto <D.35608>;
            <D.35608>:
            D.34618 = cmethod->klass;
            if (D.34618 != 0B) goto <D.35609>; else goto <D.35600>;
            <D.35609>:
            D.34618 = cmethod->klass;
            D.34798 = D.34618->flags;
            D.35253 = D.34798 & 256;
            if (D.35253 != 0) goto <D.35599>; else goto <D.35600>;
            <D.35599>:
            if (disable_inline == 0) goto <D.35610>; else goto <D.35611>;
            <D.35610>:
            D.35612 = mono_method_check_inlining (cfg, cmethod);
            if (D.35612 != 0) goto <D.35613>; else goto <D.35614>;
            <D.35613>:
            D.35615 = monoeg_g_list_find (dont_inline, cmethod);
            if (D.35615 == 0B) goto <D.35616>; else goto <D.35617>;
            <D.35616>:
            {
              int costs;
              gboolean always;

              always = 0;
              D.34685 = cmethod->iflags;
              D.34686 = (int) D.34685;
              D.34687 = D.34686 & 4096;
              if (D.34687 != 0) goto <D.35618>; else goto <D.35620>;
              <D.35620>:
              D.34654 = cmethod->flags;
              D.34655 = (int) D.34654;
              D.35621 = D.34655 & 8192;
              if (D.35621 != 0) goto <D.35618>; else goto <D.35619>;
              <D.35618>:
              D.32726 = cfg->method;
              if (D.32726 != method) goto <D.35622>; else goto <D.35623>;
              <D.35622>:
              D.32698 = BIT_FIELD_REF <*method, 8, 160>;
              D.32699 = D.32698 & 124;
              if (D.32699 == 0) goto <D.35624>; else goto <D.35625>;
              <D.35624>:
              D.32836 = cfg->verbose_level;
              if (D.32836 > 1) goto <D.35626>; else goto <D.35627>;
              <D.35626>:
              printf ("inline failed: %s\n", "wrapper call");
              <D.35627>:
              goto inline_failure;
              <D.35625>:
              <D.35623>:
              check_for_pending_exc.118 = check_for_pending_exc;
              cmethod = mono_marshal_get_native_wrapper (cmethod, check_for_pending_exc.118, 0);
              always = 1;
              <D.35619>:
              D.32923 = cfg->real_offset;
              costs = inline_method (cfg, cmethod, fsig, sp, ip, D.32923, dont_inline, always);
              if (costs != 0) goto <D.35628>; else goto <D.35629>;
              <D.35628>:
              D.32923 = cfg->real_offset;
              D.35630 = D.32923 + 5;
              cfg->real_offset = D.35630;
              bblock.125 = cfg->cbb;
              bblock = bblock.125;
              D.34706 = fsig->ret;
              D.35631 = mono_type_is_void (D.34706);
              if (D.35631 == 0) goto <D.35632>; else goto <D.35633>;
              <D.35632>:
              sp = sp + 4;
              push_res = 0;
              <D.35633>:
              inline_costs = inline_costs + costs;
              goto call_end;
              <D.35629>:
            }
            <D.35617>:
            <D.35614>:
            <D.35611>:
            <D.35600>:
            <D.35605>:
            <D.35602>:
            D.33148 = cfg->opt;
            D.35634 = D.33148 & 4096;
            if (D.35634 != 0) goto <D.35635>; else goto <D.35636>;
            <D.35635>:
            D.35637 = call_opcode == 40;
            D.35638 = cmethod == method;
            D.35639 = D.35637 & D.35638;
            if (D.35639 != 0) goto <D.35640>; else goto <D.35641>;
            <D.35640>:
            D.34195 = ip + 5;
            D.35642 = *D.34195;
            if (D.35642 == 42) goto <D.35643>; else goto <D.35644>;
            <D.35643>:
            if (vtable_arg == 0B) goto <D.35645>; else goto <D.35646>;
            <D.35645>:
            {
              gboolean has_vtargs;
              int i;

              has_vtargs = 0;
              D.32726 = cfg->method;
              if (D.32726 != method) goto <D.35647>; else goto <D.35648>;
              <D.35647>:
              D.32698 = BIT_FIELD_REF <*method, 8, 160>;
              D.32699 = D.32698 & 124;
              if (D.32699 == 0) goto <D.35649>; else goto <D.35650>;
              <D.35649>:
              D.32836 = cfg->verbose_level;
              if (D.32836 > 1) goto <D.35651>; else goto <D.35652>;
              <D.35651>:
              printf ("inline failed: %s\n", "tail call");
              <D.35652>:
              goto inline_failure;
              <D.35650>:
              <D.35648>:
              D.34550 = fsig->param_count;
              D.34551 = (int) D.34550;
              i = D.34551 + -1;
              goto <D.30039>;
              <D.30038>:
              D.35653 = mono_method_signature (cmethod);
              D.35654 = D.35653->params[i];
              D.35655 = mono_type_is_struct (D.35654);
              if (D.35655 != 0) goto <D.35656>; else goto <D.35657>;
              <D.35656>:
              has_vtargs = 1;
              <D.35657>:
              i = i + -1;
              <D.30039>:
              if (i >= 0) goto <D.30038>; else goto <D.30040>;
              <D.30040>:
              if (has_vtargs == 0) goto <D.35658>; else goto <D.35659>;
              <D.35658>:
              i = 0;
              goto <D.30042>;
              <D.30041>:
              D.32755 = cfg->mempool;
              ins = mono_mempool_alloc (D.32755, 56);
              ins->data.op[1].const_val = 0;
              D.32975 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.32975;
              ins->prev = 0B;
              D.32976 = ins->prev;
              ins->next = D.32976;
              ins->opcode = 424;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.32977 = ins->sreg3;
              ins->sreg2 = D.32977;
              D.32978 = ins->sreg2;
              ins->sreg1 = D.32978;
              D.32979 = cfg->ip;
              ins->cil_code = D.32979;
              D.33368 = cfg->arg_types;
              i.135 = (unsigned int) i;
              D.35661 = i.135 * 4;
              D.35662 = D.33368 + D.35661;
              D.35663 = *D.35662;
              D.35664 = mono_type_to_regmove (cfg, D.35663);
              D.35665 = (short unsigned int) D.35664;
              ins->opcode = D.35665;
              D.33358 = cfg->args;
              i.135 = (unsigned int) i;
              D.35661 = i.135 * 4;
              D.35666 = D.33358 + D.35661;
              D.35667 = *D.35666;
              D.35668 = D.35667->klass;
              ins->klass = D.35668;
              i.135 = (unsigned int) i;
              D.35661 = i.135 * 4;
              D.35669 = sp + D.35661;
              D.35670 = *D.35669;
              D.35671 = D.35670->dreg;
              ins->sreg1 = D.35671;
              D.33358 = cfg->args;
              i.135 = (unsigned int) i;
              D.35661 = i.135 * 4;
              D.35666 = D.33358 + D.35661;
              D.35667 = *D.35666;
              D.35672 = D.35667->dreg;
              ins->dreg = D.35672;
              D.33505 = ins->opcode;
              if (D.33505 == 427) goto <D.35673>; else goto <D.35674>;
              <D.35673>:
              D.33368 = cfg->arg_types;
              i.135 = (unsigned int) i;
              D.35661 = i.135 * 4;
              D.35662 = D.33368 + D.35661;
              D.35663 = *D.35662;
              D.35675 = mono_class_from_mono_type (D.35663);
              ins->klass = D.35675;
              <D.35674>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.35676>; else goto <D.35677>;
              <D.35676>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = ins;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              ins->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              goto <D.35678>;
              <D.35677>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.35678>:
              i = i + 1;
              <D.30042>:
              if (i < n) goto <D.30041>; else goto <D.30043>;
              <D.30043>:
              D.32755 = cfg->mempool;
              ins = mono_mempool_alloc (D.32755, 56);
              ins->data.op[1].const_val = 0;
              D.32975 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.32975;
              ins->prev = 0B;
              D.32976 = ins->prev;
              ins->next = D.32976;
              ins->opcode = 442;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.32977 = ins->sreg3;
              ins->sreg2 = D.32977;
              D.32978 = ins->sreg2;
              ins->sreg1 = D.32978;
              D.32979 = cfg->ip;
              ins->cil_code = D.32979;
              bblock.76 = bblock;
              D.33093 = bblock.76->last_ins;
              if (D.33093 != 0B) goto <D.35679>; else goto <D.35680>;
              <D.35679>:
              bblock.76 = bblock;
              D.33093 = bblock.76->last_ins;
              D.33093->next = ins;
              bblock.76 = bblock;
              D.33093 = bblock.76->last_ins;
              ins->prev = D.33093;
              bblock.76 = bblock;
              bblock.76->last_ins = ins;
              goto <D.35681>;
              <D.35680>:
              bblock.76 = bblock;
              bblock.76 = bblock;
              bblock.76->last_ins = ins;
              D.33093 = bblock.76->last_ins;
              bblock.76->code = D.33093;
              <D.35681>:
              D.35682 = start_bblock->out_bb;
              tblock = *D.35682;
              bblock.76 = bblock;
              link_bblock (cfg, bblock.76, tblock);
              ins->data.op[0].target_block = tblock;
              start_new_bblock = 1;
              bblock.76 = bblock;
              D.35683 = ip + 5;
              D.35684 = ip_in_bb (cfg, bblock.76, D.35683);
              if (D.35684 != 0) goto <D.35685>; else goto <D.35686>;
              <D.35685>:
              skip_ret = 1;
              <D.35686>:
              push_res = 0;
              goto call_end;
              <D.35659>:
            }
            <D.35646>:
            <D.35644>:
            <D.35641>:
            <D.35636>:
            num_calls.136 = num_calls;
            num_calls = num_calls.136 + 1;
            D.35688 = num_calls.136 * 10;
            inline_costs = D.35688 + inline_costs;
            if (cmethod != 0B) goto <D.35690>; else goto <D.35689>;
            <D.35690>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.35691>; else goto <D.35689>;
            <D.35691>:
            D.35692 = mini_is_gsharedvt_signature (cfg, fsig);
            if (D.35692 != 0) goto <D.35693>; else goto <D.35689>;
            <D.35693>:
            {
              MonoRgctxInfoType info_type;

              if (virtual != 0) goto <D.35694>; else goto <D.35695>;
              <D.35694>:
              D.34826 = BIT_FIELD_REF <*fsig, 8, 80>;
              D.34827 = D.34826 & 64;
              if (D.34827 != 0) goto <D.35698>; else goto <D.35699>;
              <D.35698>:
              D.32693 = method->klass;
              D.35700 = BIT_FIELD_REF <*D.32693, 8, 176>;
              D.35701 = D.35700 & 64;
              if (D.35701 != 0) goto <D.35696>; else goto <D.35702>;
              <D.35702>:
              D.32693 = method->klass;
              D.34787 = mono_defaults.object_class;
              if (D.32693 == D.34787) goto <D.35696>; else goto <D.35697>;
              <D.35696>:
              D.32904 = cfg->gsharedvt;
              if (D.32904 != 0) goto <D.35703>; else goto <D.35704>;
              <D.35703>:
              D.32693 = method->klass;
              D.34423 = D.32693->name_space;
              D.32693 = method->klass;
              D.34424 = D.32693->name;
              D.34425 = method->name;
              D.34426 = method->signature;
              D.34427 = D.34426->param_count;
              D.34428 = (int) D.34427;
              D.33632 = *ip;
              D.33633 = (int) D.33632;
              D.35705 = mono_opcode_name (D.33633);
              D.35706 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.34423, D.34424, D.34425, D.34428, D.35705, "method-to-ir.c", 8189);
              cfg->exception_message = D.35706;
              D.32836 = cfg->verbose_level;
              if (D.32836 > 1) goto <D.35707>; else goto <D.35708>;
              <D.35707>:
              D.34433 = cfg->exception_message;
              printf ("%s\n", D.34433);
              <D.35708>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.35704>:
              <D.35697>:
              <D.35699>:
              D.35321 = fsig->generic_param_count;
              if (D.35321 != 0) goto <D.35709>; else goto <D.35710>;
              <D.35709>:
              mono_use_imt.130 = mono_use_imt;
              D.35711 = mono_use_imt.130 == 0;
              D.35712 = (long int) D.35711;
              D.35713 = __builtin_expect (D.35712, 0);
              if (D.35713 != 0) goto <D.35714>; else goto <D.35715>;
              <D.35714>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8192, "mono_use_imt");
              <D.35715>:
              D.35356 = imt_arg != 0B;
              D.35357 = (long int) D.35356;
              D.35358 = __builtin_expect (D.35357, 0);
              if (D.35358 != 0) goto <D.35716>; else goto <D.35717>;
              <D.35716>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8193, "!imt_arg");
              <D.35717>:
              imt_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
              vtable_arg = 0B;
              <D.35710>:
              <D.35695>:
              D.34618 = cmethod->klass;
              D.34691 = D.34618->rank;
              if (D.34691 != 0) goto <D.35718>; else goto <D.35719>;
              <D.35718>:
              D.34618 = cmethod->klass;
              D.35720 = D.34618->byval_arg.type;
              if (D.35720 != 29) goto <D.35721>; else goto <D.35722>;
              <D.35721>:
              D.32904 = cfg->gsharedvt;
              if (D.32904 != 0) goto <D.35723>; else goto <D.35724>;
              <D.35723>:
              D.32693 = method->klass;
              D.34423 = D.32693->name_space;
              D.32693 = method->klass;
              D.34424 = D.32693->name;
              D.34425 = method->name;
              D.34426 = method->signature;
              D.34427 = D.34426->param_count;
              D.34428 = (int) D.34427;
              D.33632 = *ip;
              D.33633 = (int) D.33632;
              D.35725 = mono_opcode_name (D.33633);
              D.35726 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.34423, D.34424, D.34425, D.34428, D.35725, "method-to-ir.c", 8204);
              cfg->exception_message = D.35726;
              D.32836 = cfg->verbose_level;
              if (D.32836 > 1) goto <D.35727>; else goto <D.35728>;
              <D.35727>:
              D.34433 = cfg->exception_message;
              printf ("%s\n", D.34433);
              <D.35728>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.35724>:
              <D.35722>:
              <D.35719>:
              D.34618 = cmethod->klass;
              D.35103 = D.34618->parent;
              D.35104 = mono_defaults.multicastdelegate_class;
              if (D.35103 == D.35104) goto <D.35729>; else goto <D.35730>;
              <D.35729>:
              {
                size_t __s1_len;
                size_t __s2_len;

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

                  __s2 = cmethod->name;
                  D.35110 = "Invoke";
                  D.35111 = MEM[(const unsigned char *)D.35110];
                  D.35112 = (int) D.35111;
                  D.35734 = *__s2;
                  D.35735 = (int) D.35734;
                  __result = D.35112 - D.35735;
                  {
                    D.35736 = __s2_len != 0;
                    D.35737 = __result == 0;
                    D.35738 = D.35736 & D.35737;
                    if (D.35738 != 0) goto <D.35739>; else goto <D.35740>;
                    <D.35739>:
                    D.35120 = &MEM[(void *)"Invoke" + 1B];
                    D.35121 = *D.35120;
                    D.35122 = (int) D.35121;
                    D.35741 = __s2 + 1;
                    D.35742 = *D.35741;
                    D.35743 = (int) D.35742;
                    __result = D.35122 - D.35743;
                    D.35744 = __s2_len > 1;
                    D.35737 = __result == 0;
                    D.35745 = D.35744 & D.35737;
                    if (D.35745 != 0) goto <D.35746>; else goto <D.35747>;
                    <D.35746>:
                    D.35130 = &MEM[(void *)"Invoke" + 2B];
                    D.35131 = *D.35130;
                    D.35132 = (int) D.35131;
                    D.35748 = __s2 + 2;
                    D.35749 = *D.35748;
                    D.35750 = (int) D.35749;
                    __result = D.35132 - D.35750;
                    D.35751 = __s2_len > 2;
                    D.35737 = __result == 0;
                    D.35752 = D.35751 & D.35737;
                    if (D.35752 != 0) goto <D.35753>; else goto <D.35754>;
                    <D.35753>:
                    D.35140 = &MEM[(void *)"Invoke" + 3B];
                    D.35141 = *D.35140;
                    D.35142 = (int) D.35141;
                    D.35755 = __s2 + 3;
                    D.35756 = *D.35755;
                    D.35757 = (int) D.35756;
                    __result = D.35142 - D.35757;
                    <D.35754>:
                    <D.35747>:
                    <D.35740>:
                  }
                  D.30052 = __result;
                }
                iftmp.137 = -D.30052;
                goto <D.35758>;
                <D.35733>:
                D.35147 = cmethod->name;
                iftmp.137 = __builtin_strcmp (D.35147, "Invoke");
                <D.35758>:
                D.30053 = iftmp.137;
              }
              if (D.30053 == 0) goto <D.35759>; else goto <D.35760>;
              <D.35759>:
              keep_this_alive = *sp;
              <D.35760>:
              <D.35730>:
              if (virtual != 0) goto <D.35763>; else goto <D.35761>;
              <D.35763>:
              D.34654 = cmethod->flags;
              D.34655 = (int) D.34654;
              D.35248 = D.34655 & 64;
              if (D.35248 != 0) goto <D.35764>; else goto <D.35761>;
              <D.35764>:
              info_type = 17;
              goto <D.35762>;
              <D.35761>:
              info_type = 16;
              <D.35762>:
              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.35689>:
            if (calli != 0) goto <D.35765>; else goto <D.35766>;
            <D.35765>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.35767>; else goto <D.35768>;
            <D.35767>:
            D.35769 = mini_is_gsharedvt_signature (cfg, fsig);
            if (D.35769 != 0) goto <D.35770>; else goto <D.35771>;
            <D.35770>:
            {
              struct MonoInst * callee;

              callee = addr;
              D.32698 = BIT_FIELD_REF <*method, 8, 160>;
              D.32699 = D.32698 & 124;
              if (D.32699 != 4) goto <D.35772>; else goto <D.35773>;
              <D.35772>:
              D.32904 = cfg->gsharedvt;
              if (D.32904 != 0) goto <D.35774>; else goto <D.35775>;
              <D.35774>:
              D.32693 = method->klass;
              D.34423 = D.32693->name_space;
              D.32693 = method->klass;
              D.34424 = D.32693->name;
              D.34425 = method->name;
              D.34426 = method->signature;
              D.34427 = D.34426->param_count;
              D.34428 = (int) D.34427;
              D.33632 = *ip;
              D.33633 = (int) D.33632;
              D.35776 = mono_opcode_name (D.33633);
              D.35777 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.34423, D.34424, D.34425, D.34428, D.35776, "method-to-ir.c", 8225);
              cfg->exception_message = D.35777;
              D.32836 = cfg->verbose_level;
              if (D.32836 > 1) goto <D.35778>; else goto <D.35779>;
              <D.35778>:
              D.34433 = cfg->exception_message;
              printf ("%s\n", D.34433);
              <D.35779>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.35775>:
              <D.35773>:
              addr = emit_get_rgctx_sig (cfg, context_used, fsig, 18);
              ins = mono_emit_calli (cfg, fsig, sp, addr, 0B, callee);
              goto call_end;
            }
            <D.35771>:
            <D.35768>:
            <D.35766>:
            D.35784 = context_used != 0;
            D.35785 = imt_arg == 0B;
            D.35786 = D.35784 & D.35785;
            if (D.35786 != 0) goto <D.35787>; else goto <D.35788>;
            <D.35787>:
            D.35789 = array_rank | delegate_invoke;
            if (D.35789 == 0) goto <D.35790>; else goto <D.35791>;
            <D.35790>:
            D.35792 = mono_method_is_generic_sharable (cmethod, 1);
            if (D.35792 == 0) goto <D.35783>; else goto <D.35793>;
            <D.35793>:
            D.34618 = cmethod->klass;
            D.35794 = mono_class_generic_sharing_enabled (D.34618);
            if (D.35794 == 0) goto <D.35783>; else goto <D.35782>;
            <D.35783>:
            if (virtual == 0) goto <D.35780>; else goto <D.35795>;
            <D.35795>:
            D.34654 = cmethod->flags;
            D.34655 = (int) D.34654;
            D.35250 = D.34655 & 32;
            if (D.35250 != 0) goto <D.35780>; else goto <D.35796>;
            <D.35796>:
            D.34618 = cmethod->klass;
            if (D.34618 != 0B) goto <D.35797>; else goto <D.35781>;
            <D.35797>:
            D.34618 = cmethod->klass;
            D.34798 = D.34618->flags;
            D.35253 = D.34798 & 256;
            if (D.35253 != 0) goto <D.35780>; else goto <D.35781>;
            <D.35781>:
            D.34654 = cmethod->flags;
            D.34655 = (int) D.34654;
            D.35248 = D.34655 & 64;
            if (D.35248 == 0) goto <D.35780>; else goto <D.35782>;
            <D.35780>:
            D.32726 = cfg->method;
            if (D.32726 != method) goto <D.35798>; else goto <D.35799>;
            <D.35798>:
            D.32698 = BIT_FIELD_REF <*method, 8, 160>;
            D.32699 = D.32698 & 124;
            if (D.32699 == 0) goto <D.35800>; else goto <D.35801>;
            <D.35800>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 1) goto <D.35802>; else goto <D.35803>;
            <D.35802>:
            printf ("inline failed: %s\n", "gshared");
            <D.35803>:
            goto inline_failure;
            <D.35801>:
            <D.35799>:
            D.32791 = cfg->generic_sharing_context;
            if (D.32791 == 0B) goto <D.35805>; else goto <D.35808>;
            <D.35808>:
            if (cmethod == 0B) goto <D.35805>; else goto <D.35806>;
            <D.35805>:
            iftmp.138 = 1;
            goto <D.35807>;
            <D.35806>:
            iftmp.138 = 0;
            <D.35807>:
            D.35809 = iftmp.138 != 0;
            D.35810 = (long int) D.35809;
            D.35811 = __builtin_expect (D.35810, 0);
            if (D.35811 != 0) goto <D.35812>; else goto <D.35813>;
            <D.35812>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8243, "cfg->generic_sharing_context && cmethod");
            <D.35813>:
            D.35814 = addr != 0B;
            D.35815 = (long int) D.35814;
            D.35816 = __builtin_expect (D.35815, 0);
            if (D.35816 != 0) goto <D.35817>; else goto <D.35818>;
            <D.35817>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8244, "!addr");
            <D.35818>:
            D.34826 = BIT_FIELD_REF <*fsig, 8, 80>;
            D.34827 = D.34826 & 64;
            if (D.34827 != 0) goto <D.35819>; else goto <D.35820>;
            <D.35819>:
            D.33186 = cfg->flags;
            D.33385 = D.33186 | 128;
            cfg->flags = D.33385;
            D.32743 = BIT_FIELD_REF <*cfg, 8, 3424>;
            D.33386 = D.32743 & 64;
            if (D.33386 != 0) goto <D.35821>; else goto <D.35822>;
            <D.35821>:
            D.32743 = BIT_FIELD_REF <*cfg, 8, 3424>;
            D.33386 = D.32743 & 64;
            if (D.33386 != 0) goto <D.35823>; else goto <D.35824>;
            <D.35823>:
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.35825 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.35825;
              inst->prev = 0B;
              D.35826 = inst->prev;
              inst->next = D.35826;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.35827 = inst->sreg3;
              inst->sreg2 = D.35827;
              D.35828 = inst->sreg2;
              inst->sreg1 = D.35828;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = -1;
              D.33750 = *sp;
              D.33943 = D.33750->dreg;
              inst->sreg1 = D.33943;
              inst->data.op[1].const_val = 0;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.35829>; else goto <D.35830>;
              <D.35829>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.35831>;
              <D.35830>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.35831>:
            }
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.35832 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.35832;
              inst->prev = 0B;
              D.35833 = inst->prev;
              inst->next = D.35833;
              inst->opcode = 451;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.35834 = inst->sreg3;
              inst->sreg2 = D.35834;
              D.35835 = inst->sreg2;
              inst->sreg1 = D.35835;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->data.op[1].p = "NullReferenceException";
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.35836>; else goto <D.35837>;
              <D.35836>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.35838>;
              <D.35837>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.35838>:
            }
            goto <D.35839>;
            <D.35824>:
            <D.35839>:
            goto <D.35840>;
            <D.35822>:
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.35841 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.35841;
              inst->prev = 0B;
              D.35842 = inst->prev;
              inst->next = D.35842;
              inst->opcode = 340;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.35843 = inst->sreg3;
              inst->sreg2 = D.35843;
              D.35844 = inst->sreg2;
              inst->sreg1 = D.35844;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = -1;
              D.33750 = *sp;
              D.33943 = D.33750->dreg;
              inst->sreg1 = D.33943;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.35845>; else goto <D.35846>;
              <D.35845>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.35847>;
              <D.35846>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.35847>:
            }
            <D.35840>:
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.35848 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.35848;
              inst->prev = 0B;
              D.35849 = inst->prev;
              inst->next = D.35849;
              inst->opcode = 799;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.35850 = inst->sreg3;
              inst->sreg2 = D.35850;
              D.35851 = inst->sreg2;
              inst->sreg1 = D.35851;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = -1;
              D.33750 = *sp;
              D.33943 = D.33750->dreg;
              inst->sreg1 = D.33943;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.35852>; else goto <D.35853>;
              <D.35852>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.35854>;
              <D.35853>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.35854>:
            }
            <D.35820>:
            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.35782>:
            <D.35791>:
            <D.35788>:
            if (addr != 0B) goto <D.35855>; else goto <D.35856>;
            <D.35855>:
            if (call_opcode == 40) goto <D.35857>; else goto <D.35858>;
            <D.35857>:
            D.35859 = context_used == 0;
            D.35860 = (long int) D.35859;
            D.35861 = __builtin_expect (D.35860, 0);
            if (D.35861 != 0) goto <D.35862>; else goto <D.35863>;
            <D.35862>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8264, "context_used");
            <D.35863>:
            goto <D.35864>;
            <D.35858>:
            if (call_opcode == 41) goto <D.35865>; else goto <D.35866>;
            <D.35865>:
            D.35233 = vtable_arg != 0B;
            D.35234 = (long int) D.35233;
            D.35235 = __builtin_expect (D.35234, 0);
            if (D.35235 != 0) goto <D.35867>; else goto <D.35868>;
            <D.35867>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8266, "!vtable_arg");
            <D.35868>:
            goto <D.35869>;
            <D.35866>:
            if (0 != 0) goto <D.35870>; else goto <D.35871>;
            <D.35870>:
            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.35871>:
            <D.35869>:
            <D.35864>:
            D.32726 = cfg->method;
            if (D.32726 != method) goto <D.35872>; else goto <D.35873>;
            <D.35872>:
            D.32698 = BIT_FIELD_REF <*method, 8, 160>;
            D.32699 = D.32698 & 124;
            if (D.32699 == 0) goto <D.35874>; else goto <D.35875>;
            <D.35874>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 1) goto <D.35876>; else goto <D.35877>;
            <D.35876>:
            printf ("inline failed: %s\n", "indirect call");
            <D.35877>:
            goto inline_failure;
            <D.35875>:
            <D.35873>:
            D.35880 = addr->opcode;
            D.35881 = D.35880 == 362;
            D.35882 = D.35880 == 732;
            D.35883 = D.35881 | D.35882;
            if (D.35883 != 0) goto <D.35878>; else goto <D.35884>;
            <D.35884>:
            D.35885 = addr->opcode;
            if (D.35885 == 734) goto <D.35878>; else goto <D.35879>;
            <D.35878>:
            {
              int info_type;
              void * info_data;

              D.35886 = addr->opcode;
              D.35887 = D.35886 == 362;
              D.35888 = D.35886 == 732;
              D.35889 = D.35887 | D.35888;
              if (D.35889 != 0) goto <D.35890>; else goto <D.35891>;
              <D.35890>:
              info_type = addr->data.op[1].const_val;
              info_data = addr->data.op[0].p;
              goto <D.35892>;
              <D.35891>:
              D.35893 = addr->data.op[1].src;
              info_type = D.35893->data.op[1].const_val;
              D.35893 = addr->data.op[1].src;
              info_data = D.35893->data.op[0].src;
              <D.35892>:
              info_type.139 = (unsigned int) info_type;
              D.35895 = info_type.139 + 4294967265;
              if (D.35895 <= 1) goto <D.35896>; else goto <D.35897>;
              <D.35896>:
              info_type.140 = (<unnamed type>) info_type;
              ins = mono_emit_abs_call (cfg, info_type.140, info_data, fsig, sp);
              addr->opcode = 316;
              addr->dreg = -1;
              addr->sreg3 = -1;
              D.35899 = addr->sreg3;
              addr->sreg2 = D.35899;
              D.35900 = addr->sreg2;
              addr->sreg1 = D.35900;
              goto call_end;
              <D.35897>:
            }
            <D.35879>:
            ins = mono_emit_calli (cfg, fsig, sp, addr, imt_arg, vtable_arg);
            goto call_end;
            <D.35856>:
            if (array_rank != 0) goto <D.35901>; else goto <D.35902>;
            <D.35901>:
            {
              struct MonoInst * addr;

              {
                size_t __s1_len;
                size_t __s2_len;

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

                  __s2 = cmethod->name;
                  D.35906 = "Set";
                  D.35907 = MEM[(const unsigned char *)D.35906];
                  D.35908 = (int) D.35907;
                  D.35909 = *__s2;
                  D.35910 = (int) D.35909;
                  __result = D.35908 - D.35910;
                  {
                    D.35911 = __s2_len != 0;
                    D.35912 = __result == 0;
                    D.35913 = D.35911 & D.35912;
                    if (D.35913 != 0) goto <D.35914>; else goto <D.35915>;
                    <D.35914>:
                    D.35916 = &MEM[(void *)"Set" + 1B];
                    D.35917 = *D.35916;
                    D.35918 = (int) D.35917;
                    D.35919 = __s2 + 1;
                    D.35920 = *D.35919;
                    D.35921 = (int) D.35920;
                    __result = D.35918 - D.35921;
                    D.35922 = __s2_len > 1;
                    D.35912 = __result == 0;
                    D.35923 = D.35922 & D.35912;
                    if (D.35923 != 0) goto <D.35924>; else goto <D.35925>;
                    <D.35924>:
                    D.35926 = &MEM[(void *)"Set" + 2B];
                    D.35927 = *D.35926;
                    D.35928 = (int) D.35927;
                    D.35929 = __s2 + 2;
                    D.35930 = *D.35929;
                    D.35931 = (int) D.35930;
                    __result = D.35928 - D.35931;
                    D.35932 = __s2_len > 2;
                    D.35912 = __result == 0;
                    D.35933 = D.35932 & D.35912;
                    if (D.35933 != 0) goto <D.35934>; else goto <D.35935>;
                    <D.35934>:
                    D.35936 = &MEM[(void *)"Set" + 3B];
                    D.35937 = *D.35936;
                    D.35938 = (int) D.35937;
                    D.35939 = __s2 + 3;
                    D.35940 = *D.35939;
                    D.35941 = (int) D.35940;
                    __result = D.35938 - D.35941;
                    <D.35935>:
                    <D.35925>:
                    <D.35915>:
                  }
                  D.30069 = __result;
                }
                iftmp.141 = -D.30069;
                goto <D.35942>;
                <D.35905>:
                D.35147 = cmethod->name;
                iftmp.141 = __builtin_strcmp (D.35147, "Set");
                <D.35942>:
                D.30070 = iftmp.141;
              }
              if (D.30070 == 0) goto <D.35943>; else goto <D.35944>;
              <D.35943>:
              {
                struct MonoInst * val;

                D.34550 = fsig->param_count;
                D.34863 = (unsigned int) D.34550;
                D.34864 = D.34863 * 4;
                D.35945 = sp + D.34864;
                val = *D.35945;
                D.35946 = val->type;
                if (D.35946 == 6) goto <D.35947>; else goto <D.35948>;
                <D.35947>:
                {
                  struct MonoInst * iargs[2];

                  try
                    {
                      D.33750 = *sp;
                      iargs[0] = D.33750;
                      iargs[1] = val;
                      mono_emit_jit_icall (cfg, mono_helper_stelem_ref_check, &iargs);
                    }
                  finally
                    {
                      iargs = {CLOBBER};
                    }
                }
                <D.35948>:
                addr = mini_emit_ldelema_ins (cfg, cmethod, sp, ip, 1);
                D.32755 = cfg->mempool;
                ins = mono_mempool_alloc (D.32755, 56);
                ins->data.op[1].const_val = 0;
                D.32975 = ins->data.op[1].const_val;
                ins->data.op[0].const_val = D.32975;
                ins->prev = 0B;
                D.32976 = ins->prev;
                ins->next = D.32976;
                D.34550 = fsig->param_count;
                D.34551 = (int) D.34550;
                D.35949 = D.34551 + -1;
                D.35950 = fsig->params[D.35949];
                D.35951 = mono_type_to_store_membase (cfg, D.35950);
                D.35952 = (short unsigned int) D.35951;
                ins->opcode = D.35952;
                ins->flags = 0;
                ins->type = 0;
                ins->dreg = -1;
                ins->sreg3 = -1;
                D.32977 = ins->sreg3;
                ins->sreg2 = D.32977;
                D.32978 = ins->sreg2;
                ins->sreg1 = D.32978;
                D.32979 = cfg->ip;
                ins->cil_code = D.32979;
                D.35953 = val->dreg;
                ins->sreg1 = D.35953;
                D.35954 = addr->dreg;
                ins->dreg = D.35954;
                ins->data.op[0].const_val = 0;
                D.34550 = fsig->param_count;
                D.34551 = (int) D.34550;
                D.35949 = D.34551 + -1;
                D.35950 = fsig->params[D.35949];
                type_to_eval_stack_type (cfg, D.35950, ins);
                D.34550 = fsig->param_count;
                D.34551 = (int) D.34550;
                D.35949 = D.34551 + -1;
                D.35950 = fsig->params[D.35949];
                D.35955 = mono_class_from_mono_type (D.35950);
                ins->klass = D.35955;
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                if (D.33008 != 0B) goto <D.35956>; else goto <D.35957>;
                <D.35956>:
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                D.33008->next = ins;
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                ins->prev = D.33008;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = ins;
                goto <D.35958>;
                <D.35957>:
                bblock.125 = cfg->cbb;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = ins;
                D.33008 = bblock.125->last_ins;
                bblock.125->code = D.33008;
                <D.35958>:
                D.35961 = BIT_FIELD_REF <*cfg, 8, 3416>;
                D.35962 = D.35961 & 16;
                if (D.35962 != 0) goto <D.35963>; else goto <D.35964>;
                <D.35963>:
                D.35946 = val->type;
                if (D.35946 == 6) goto <D.35965>; else goto <D.35966>;
                <D.35965>:
                D.35967 = val->opcode;
                if (D.35967 != 362) goto <D.35959>; else goto <D.35968>;
                <D.35968>:
                D.35969 = val->data.op[0].const_val;
                if (D.35969 != 0) goto <D.35959>; else goto <D.35960>;
                <D.35959>:
                emit_write_barrier (cfg, addr, val);
                <D.35960>:
                <D.35966>:
                <D.35964>:
              }
              goto <D.35970>;
              <D.35944>:
              {
                size_t __s1_len;
                size_t __s2_len;

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

                  __s2 = cmethod->name;
                  D.35974 = "Get";
                  D.35975 = MEM[(const unsigned char *)D.35974];
                  D.35976 = (int) D.35975;
                  D.35977 = *__s2;
                  D.35978 = (int) D.35977;
                  __result = D.35976 - D.35978;
                  {
                    D.35979 = __s2_len != 0;
                    D.35980 = __result == 0;
                    D.35981 = D.35979 & D.35980;
                    if (D.35981 != 0) goto <D.35982>; else goto <D.35983>;
                    <D.35982>:
                    D.35984 = &MEM[(void *)"Get" + 1B];
                    D.35985 = *D.35984;
                    D.35986 = (int) D.35985;
                    D.35987 = __s2 + 1;
                    D.35988 = *D.35987;
                    D.35989 = (int) D.35988;
                    __result = D.35986 - D.35989;
                    D.35990 = __s2_len > 1;
                    D.35980 = __result == 0;
                    D.35991 = D.35990 & D.35980;
                    if (D.35991 != 0) goto <D.35992>; else goto <D.35993>;
                    <D.35992>:
                    D.35994 = &MEM[(void *)"Get" + 2B];
                    D.35995 = *D.35994;
                    D.35996 = (int) D.35995;
                    D.35997 = __s2 + 2;
                    D.35998 = *D.35997;
                    D.35999 = (int) D.35998;
                    __result = D.35996 - D.35999;
                    D.36000 = __s2_len > 2;
                    D.35980 = __result == 0;
                    D.36001 = D.36000 & D.35980;
                    if (D.36001 != 0) goto <D.36002>; else goto <D.36003>;
                    <D.36002>:
                    D.36004 = &MEM[(void *)"Get" + 3B];
                    D.36005 = *D.36004;
                    D.36006 = (int) D.36005;
                    D.36007 = __s2 + 3;
                    D.36008 = *D.36007;
                    D.36009 = (int) D.36008;
                    __result = D.36006 - D.36009;
                    <D.36003>:
                    <D.35993>:
                    <D.35983>:
                  }
                  D.30080 = __result;
                }
                iftmp.142 = -D.30080;
                goto <D.36010>;
                <D.35973>:
                D.35147 = cmethod->name;
                iftmp.142 = __builtin_strcmp (D.35147, "Get");
                <D.36010>:
                D.30081 = iftmp.142;
              }
              if (D.30081 == 0) goto <D.36011>; else goto <D.36012>;
              <D.36011>:
              addr = mini_emit_ldelema_ins (cfg, cmethod, sp, ip, 0);
              D.32755 = cfg->mempool;
              ins = mono_mempool_alloc (D.32755, 56);
              ins->data.op[1].const_val = 0;
              D.32975 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.32975;
              ins->prev = 0B;
              D.32976 = ins->prev;
              ins->next = D.32976;
              D.34706 = fsig->ret;
              D.36013 = mono_type_to_load_membase (cfg, D.34706);
              D.36014 = (short unsigned int) D.36013;
              ins->opcode = D.36014;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.32977 = ins->sreg3;
              ins->sreg2 = D.32977;
              D.32978 = ins->sreg2;
              ins->sreg1 = D.32978;
              D.32979 = cfg->ip;
              ins->cil_code = D.32979;
              ins->dreg = 0;
              D.35954 = addr->dreg;
              ins->sreg1 = D.35954;
              ins->data.op[0].const_val = 0;
              ins->type = 1;
              D.34706 = fsig->ret;
              type_to_eval_stack_type (cfg, D.34706, ins);
              D.33501 = ins->type;
              D.33502 = (<unnamed type>) D.33501;
              D.36015 = alloc_dreg (cfg, D.33502);
              D.36016 = (int) D.36015;
              ins->dreg = D.36016;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.36017>; else goto <D.36018>;
              <D.36017>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = ins;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              ins->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              goto <D.36019>;
              <D.36018>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.36019>:
              goto <D.36020>;
              <D.36012>:
              {
                size_t __s1_len;
                size_t __s2_len;

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

                  __s2 = cmethod->name;
                  D.36024 = "Address";
                  D.36025 = MEM[(const unsigned char *)D.36024];
                  D.36026 = (int) D.36025;
                  D.36027 = *__s2;
                  D.36028 = (int) D.36027;
                  __result = D.36026 - D.36028;
                  {
                    D.36029 = __s2_len != 0;
                    D.36030 = __result == 0;
                    D.36031 = D.36029 & D.36030;
                    if (D.36031 != 0) goto <D.36032>; else goto <D.36033>;
                    <D.36032>:
                    D.36034 = &MEM[(void *)"Address" + 1B];
                    D.36035 = *D.36034;
                    D.36036 = (int) D.36035;
                    D.36037 = __s2 + 1;
                    D.36038 = *D.36037;
                    D.36039 = (int) D.36038;
                    __result = D.36036 - D.36039;
                    D.36040 = __s2_len > 1;
                    D.36030 = __result == 0;
                    D.36041 = D.36040 & D.36030;
                    if (D.36041 != 0) goto <D.36042>; else goto <D.36043>;
                    <D.36042>:
                    D.36044 = &MEM[(void *)"Address" + 2B];
                    D.36045 = *D.36044;
                    D.36046 = (int) D.36045;
                    D.36047 = __s2 + 2;
                    D.36048 = *D.36047;
                    D.36049 = (int) D.36048;
                    __result = D.36046 - D.36049;
                    D.36050 = __s2_len > 2;
                    D.36030 = __result == 0;
                    D.36051 = D.36050 & D.36030;
                    if (D.36051 != 0) goto <D.36052>; else goto <D.36053>;
                    <D.36052>:
                    D.36054 = &MEM[(void *)"Address" + 3B];
                    D.36055 = *D.36054;
                    D.36056 = (int) D.36055;
                    D.36057 = __s2 + 3;
                    D.36058 = *D.36057;
                    D.36059 = (int) D.36058;
                    __result = D.36056 - D.36059;
                    <D.36053>:
                    <D.36043>:
                    <D.36033>:
                  }
                  D.30089 = __result;
                }
                iftmp.143 = -D.30089;
                goto <D.36060>;
                <D.36023>:
                D.35147 = cmethod->name;
                iftmp.143 = __builtin_strcmp (D.35147, "Address");
                <D.36060>:
                D.30090 = iftmp.143;
              }
              if (D.30090 == 0) goto <D.36061>; else goto <D.36062>;
              <D.36061>:
              D.34618 = cmethod->klass;
              D.36063 = D.34618->element_class;
              D.36064 = BIT_FIELD_REF <*D.36063, 8, 160>;
              D.36065 = D.36064 & 8;
              if (D.36065 == 0) goto <D.36066>; else goto <D.36067>;
              <D.36066>:
              if (readonly == 0) goto <D.36068>; else goto <D.36069>;
              <D.36068>:
              D.33750 = *sp;
              D.34618 = cmethod->klass;
              mini_emit_check_array_type (cfg, D.33750, D.34618);
              <D.36069>:
              <D.36067>:
              D.34618 = cmethod->klass;
              if (D.34618 == 0B) goto <D.36070>; else goto <D.36072>;
              <D.36072>:
              D.34618 = cmethod->klass;
              D.35178 = D.34618->exception_type;
              if (D.35178 != 0) goto <D.36070>; else goto <D.36071>;
              <D.36070>:
              D.34618 = cmethod->klass;
              cfg->exception_ptr = D.34618;
              D.36073 = mini_get_debug_options ();
              D.36074 = D.36073->break_on_unverified;
              if (D.36074 != 0) goto <D.36075>; else goto load_error;
              <D.36075>:
              raise (5);
              <D.36071>:
              readonly = 0;
              addr = mini_emit_ldelema_ins (cfg, cmethod, sp, ip, 0);
              ins = addr;
              goto <D.36076>;
              <D.36062>:
              monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 8334);
              <D.36076>:
              <D.36020>:
              <D.35970>:
              emit_widen = 0;
              goto call_end;
            }
            <D.35902>:
            if (virtual != 0) goto <D.36078>; else goto <D.36079>;
            <D.36078>:
            iftmp.144 = *sp;
            goto <D.36080>;
            <D.36079>:
            iftmp.144 = 0B;
            <D.36080>:
            ins = mini_redirect_call (cfg, cmethod, fsig, sp, iftmp.144);
            if (ins != 0B) goto call_end; else goto <D.36081>;
            <D.36081>:
            if (cmethod != 0B) goto <D.36082>; else goto <D.36083>;
            <D.36082>:
            D.36084 = ins_flag & 4;
            if (D.36084 != 0) goto <D.36085>; else goto <D.36086>;
            <D.36085>:
            if (vtable_arg == 0B) goto <D.36087>; else goto <D.36088>;
            <D.36087>:
            D.32791 = cfg->generic_sharing_context;
            if (D.32791 == 0B) goto <D.36089>; else goto <D.36090>;
            <D.36089>:
            call_opcode.145 = (int) call_opcode;
            D.36092 = is_supported_tail_call (cfg, method, cmethod, fsig, call_opcode.145);
            if (D.36092 != 0) goto <D.36093>; else goto <D.36094>;
            <D.36093>:
            supported_tail_call = 1;
            <D.36094>:
            <D.36090>:
            <D.36088>:
            <D.36086>:
            <D.36083>:
            if (supported_tail_call != 0) goto <D.36095>; else goto <D.36096>;
            <D.36095>:
            {
              struct MonoCallInst * call;

              D.32726 = cfg->method;
              if (D.32726 != method) goto <D.36097>; else goto <D.36098>;
              <D.36097>:
              D.32698 = BIT_FIELD_REF <*method, 8, 160>;
              D.32699 = D.32698 & 124;
              if (D.32699 == 0) goto <D.36099>; else goto <D.36100>;
              <D.36099>:
              D.32836 = cfg->verbose_level;
              if (D.32836 > 1) goto <D.36101>; else goto <D.36102>;
              <D.36101>:
              printf ("inline failed: %s\n", "tail call");
              <D.36102>:
              goto inline_failure;
              <D.36100>:
              <D.36098>:
              if (0 != 0) goto <D.36103>; else goto <D.36104>;
              <D.36103>:
              tail_call = 1;
              goto <D.36105>;
              <D.36104>:
              D.32755 = cfg->mempool;
              call = mono_mempool_alloc0 (D.32755, 120);
              call->inst.opcode = 443;
              call->inst.dreg = -1;
              call->inst.sreg3 = -1;
              D.36106 = call->inst.sreg3;
              call->inst.sreg2 = D.36106;
              D.36107 = call->inst.sreg2;
              call->inst.sreg1 = D.36107;
              D.32979 = cfg->ip;
              call->inst.cil_code = D.32979;
              call->tail_call = 1;
              call->method = cmethod;
              D.36108 = mono_method_signature (cmethod);
              call->signature = D.36108;
              i = 0;
              goto <D.30093>;
              <D.30092>:
              i.74 = (unsigned int) i;
              D.33487 = i.74 * 4;
              D.34520 = arg_array + D.33487;
              D.34521 = *D.34520;
              i.74 = (unsigned int) i;
              D.33487 = i.74 * 4;
              D.34520 = arg_array + D.33487;
              D.34521 = *D.34520;
              D.34522 = D.34521->flags;
              D.34523 = D.34522 | 4;
              D.34521->flags = D.34523;
              D.32755 = cfg->mempool;
              ins = mono_mempool_alloc (D.32755, 56);
              ins->data.op[1].const_val = 0;
              D.32975 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.32975;
              ins->prev = 0B;
              D.32976 = ins->prev;
              ins->next = D.32976;
              ins->opcode = 424;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.32977 = ins->sreg3;
              ins->sreg2 = D.32977;
              D.32978 = ins->sreg2;
              ins->sreg1 = D.32978;
              D.32979 = cfg->ip;
              ins->cil_code = D.32979;
              D.33368 = cfg->arg_types;
              i.74 = (unsigned int) i;
              D.33487 = i.74 * 4;
              D.36109 = D.33368 + D.33487;
              D.36110 = *D.36109;
              D.36111 = mono_type_to_regmove (cfg, D.36110);
              D.36112 = (short unsigned int) D.36111;
              ins->opcode = D.36112;
              D.33358 = cfg->args;
              i.74 = (unsigned int) i;
              D.33487 = i.74 * 4;
              D.36113 = D.33358 + D.33487;
              D.36114 = *D.36113;
              D.36115 = D.36114->klass;
              ins->klass = D.36115;
              i.74 = (unsigned int) i;
              D.33487 = i.74 * 4;
              D.36116 = sp + D.33487;
              D.36117 = *D.36116;
              D.36118 = D.36117->dreg;
              ins->sreg1 = D.36118;
              D.33358 = cfg->args;
              i.74 = (unsigned int) i;
              D.33487 = i.74 * 4;
              D.36113 = D.33358 + D.33487;
              D.36114 = *D.36113;
              D.36119 = D.36114->dreg;
              ins->dreg = D.36119;
              D.33505 = ins->opcode;
              if (D.33505 == 427) goto <D.36120>; else goto <D.36121>;
              <D.36120>:
              D.33368 = cfg->arg_types;
              i.74 = (unsigned int) i;
              D.33487 = i.74 * 4;
              D.36109 = D.33368 + D.33487;
              D.36110 = *D.36109;
              D.36122 = mono_class_from_mono_type (D.36110);
              ins->klass = D.36122;
              <D.36121>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.36123>; else goto <D.36124>;
              <D.36123>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = ins;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              ins->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              goto <D.36125>;
              <D.36124>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.36125>:
              i = i + 1;
              <D.30093>:
              if (i < n) goto <D.30092>; else goto <D.30094>;
              <D.30094>:
              ins = call;
              ins->data.op[0].p = cmethod;
              D.33068 = *arg_array;
              ins->data.op[1].p = D.33068;
              bblock.76 = bblock;
              D.33093 = bblock.76->last_ins;
              if (D.33093 != 0B) goto <D.36126>; else goto <D.36127>;
              <D.36126>:
              bblock.76 = bblock;
              D.33093 = bblock.76->last_ins;
              D.33093->next = ins;
              bblock.76 = bblock;
              D.33093 = bblock.76->last_ins;
              ins->prev = D.33093;
              bblock.76 = bblock;
              bblock.76->last_ins = ins;
              goto <D.36128>;
              <D.36127>:
              bblock.76 = bblock;
              bblock.76 = bblock;
              bblock.76->last_ins = ins;
              D.33093 = bblock.76->last_ins;
              bblock.76->code = D.33093;
              <D.36128>:
              bblock.76 = bblock;
              link_bblock (cfg, bblock.76, end_bblock);
              start_new_bblock = 1;
              D.32887 = cfg->cil_offset_to_bb;
              D.34195 = ip + 5;
              D.34719 = (int) D.34195;
              D.32891 = cfg->cil_start;
              D.32892 = (int) D.32891;
              D.35554 = D.34719 - D.32892;
              D.35555 = (unsigned int) D.35554;
              D.35556 = D.35555 * 4;
              D.35557 = D.32887 + D.35556;
              tblock = *D.35557;
              if (tblock == 0B) goto <D.36129>; else goto <D.36130>;
              <D.36129>:
              D.34195 = ip + 5;
              if (D.34195 >= end) goto <D.36131>; else goto <D.36133>;
              <D.36133>:
              D.35563 = ip + 5;
              D.32903 = header->code;
              if (D.35563 < D.32903) goto <D.36131>; else goto <D.36132>;
              <D.36131>:
              D.32904 = cfg->gsharedvt;
              if (D.32904 != 0) goto <D.36134>; else goto <D.36135>;
              <D.36134>:
              D.32836 = cfg->verbose_level;
              if (D.32836 > 2) goto <D.36136>; else goto <D.36137>;
              <D.36136>:
              printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
              <D.36137>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.36135>:
              D.36138 = mini_get_debug_options ();
              D.36139 = D.36138->break_on_unverified;
              if (D.36139 != 0) goto <D.36140>; else goto unverified;
              <D.36140>:
              raise (5);
              <D.36132>:
              D.32755 = cfg->mempool;
              tblock = mono_mempool_alloc0 (D.32755, 172);
              D.32864 = cfg->num_bblocks;
              D.36141 = D.32864;
              D.36142 = D.36141 + 1;
              cfg->num_bblocks = D.36142;
              D.36143 = (int) D.36141;
              tblock->block_num = D.36143;
              D.34195 = ip + 5;
              tblock->cil_code = D.34195;
              D.32952 = tblock->cil_code;
              if (D.32952 != 0B) goto <D.36144>; else goto <D.36145>;
              <D.36144>:
              D.32887 = cfg->cil_offset_to_bb;
              D.32952 = tblock->cil_code;
              D.32955 = (int) D.32952;
              D.32891 = cfg->cil_start;
              D.32892 = (int) D.32891;
              D.32956 = D.32955 - D.32892;
              D.32957 = (unsigned int) D.32956;
              D.32958 = D.32957 * 4;
              D.32959 = D.32887 + D.32958;
              *D.32959 = tblock;
              <D.36145>:
              D.32923 = cfg->real_offset;
              tblock->real_offset = D.32923;
              <D.36130>:
              bblock.76 = bblock;
              if (tblock == bblock.76) goto <D.36146>; else goto <D.36148>;
              <D.36148>:
              D.36149 = tblock->in_count;
              if (D.36149 == 0) goto <D.36146>; else goto <D.36147>;
              <D.36146>:
              skip_ret = 1;
              <D.36147>:
              push_res = 0;
              goto call_end;
              <D.36105>:
            }
            <D.36096>:
            D.32726 = cfg->method;
            D.34668 = BIT_FIELD_REF <*D.32726, 8, 160>;
            D.34669 = D.34668 & 124;
            if (D.34669 == 64) goto <D.36150>; else goto <D.36151>;
            <D.36150>:
            {
              struct MonoMethod * orig;

              D.32726 = cfg->method;
              orig = mono_marshal_method_from_wrapper (D.32726);
              if (cmethod == orig) goto <D.36152>; else goto <D.36154>;
              <D.36154>:
              D.35363 = BIT_FIELD_REF <*cmethod, 8, 168>;
              D.35364 = D.35363 & 16;
              if (D.35364 != 0) goto <D.36155>; else goto <D.36153>;
              <D.36155>:
              D.36156 = mono_method_get_declaring_generic_method (cmethod);
              if (D.36156 == orig) goto <D.36152>; else goto <D.36153>;
              <D.36152>:
              cmethod = mono_marshal_get_synchronized_inner_wrapper (cmethod);
              <D.36153>:
            }
            <D.36151>:
            D.32726 = cfg->method;
            if (D.32726 != method) goto <D.36157>; else goto <D.36158>;
            <D.36157>:
            D.32698 = BIT_FIELD_REF <*method, 8, 160>;
            D.32699 = D.32698 & 124;
            if (D.32699 == 0) goto <D.36159>; else goto <D.36160>;
            <D.36159>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 1) goto <D.36161>; else goto <D.36162>;
            <D.36161>:
            printf ("inline failed: %s\n", "call");
            <D.36162>:
            goto inline_failure;
            <D.36160>:
            <D.36158>:
            if (virtual != 0) goto <D.36164>; else goto <D.36165>;
            <D.36164>:
            iftmp.146 = *sp;
            goto <D.36166>;
            <D.36165>:
            iftmp.146 = 0B;
            <D.36166>:
            ins = mono_emit_method_call_full (cfg, cmethod, fsig, tail_call, sp, iftmp.146, imt_arg, vtable_arg);
            if (tail_call != 0) goto <D.36167>; else goto <D.36168>;
            <D.36167>:
            bblock.76 = bblock;
            link_bblock (cfg, bblock.76, end_bblock);
            start_new_bblock = 1;
            D.32887 = cfg->cil_offset_to_bb;
            D.34195 = ip + 5;
            D.34719 = (int) D.34195;
            D.32891 = cfg->cil_start;
            D.32892 = (int) D.32891;
            D.35554 = D.34719 - D.32892;
            D.35555 = (unsigned int) D.35554;
            D.35556 = D.35555 * 4;
            D.35557 = D.32887 + D.35556;
            tblock = *D.35557;
            if (tblock == 0B) goto <D.36169>; else goto <D.36170>;
            <D.36169>:
            D.34195 = ip + 5;
            if (D.34195 >= end) goto <D.36171>; else goto <D.36173>;
            <D.36173>:
            D.35563 = ip + 5;
            D.32903 = header->code;
            if (D.35563 < D.32903) goto <D.36171>; else goto <D.36172>;
            <D.36171>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.36174>; else goto <D.36175>;
            <D.36174>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.36176>; else goto <D.36177>;
            <D.36176>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.36177>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.36175>:
            D.36178 = mini_get_debug_options ();
            D.36179 = D.36178->break_on_unverified;
            if (D.36179 != 0) goto <D.36180>; else goto unverified;
            <D.36180>:
            raise (5);
            <D.36172>:
            D.32755 = cfg->mempool;
            tblock = mono_mempool_alloc0 (D.32755, 172);
            D.32864 = cfg->num_bblocks;
            D.36181 = D.32864;
            D.36182 = D.36181 + 1;
            cfg->num_bblocks = D.36182;
            D.36183 = (int) D.36181;
            tblock->block_num = D.36183;
            D.34195 = ip + 5;
            tblock->cil_code = D.34195;
            D.32952 = tblock->cil_code;
            if (D.32952 != 0B) goto <D.36184>; else goto <D.36185>;
            <D.36184>:
            D.32887 = cfg->cil_offset_to_bb;
            D.32952 = tblock->cil_code;
            D.32955 = (int) D.32952;
            D.32891 = cfg->cil_start;
            D.32892 = (int) D.32891;
            D.32956 = D.32955 - D.32892;
            D.32957 = (unsigned int) D.32956;
            D.32958 = D.32957 * 4;
            D.32959 = D.32887 + D.32958;
            *D.32959 = tblock;
            <D.36185>:
            D.32923 = cfg->real_offset;
            tblock->real_offset = D.32923;
            <D.36170>:
            bblock.76 = bblock;
            if (tblock == bblock.76) goto <D.36186>; else goto <D.36188>;
            <D.36188>:
            D.36149 = tblock->in_count;
            if (D.36149 == 0) goto <D.36186>; else goto <D.36187>;
            <D.36186>:
            skip_ret = 1;
            <D.36187>:
            push_res = 0;
            <D.36168>:
            call_end:
            if (push_res != 0) goto <D.36189>; else goto <D.36190>;
            <D.36189>:
            D.34706 = fsig->ret;
            D.36191 = mono_type_is_void (D.34706);
            if (D.36191 == 0) goto <D.36192>; else goto <D.36193>;
            <D.36192>:
            D.36194 = ins == 0B;
            D.36195 = (long int) D.36194;
            D.36196 = __builtin_expect (D.36195, 0);
            if (D.36196 != 0) goto <D.36197>; else goto <D.36198>;
            <D.36197>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8442, "ins");
            <D.36198>:
            if (emit_widen != 0) goto <D.36199>; else goto <D.36200>;
            <D.36199>:
            sp.147 = sp;
            sp = sp.147 + 4;
            D.36202 = mono_emit_widen_call_res (cfg, ins, fsig);
            *sp.147 = D.36202;
            goto <D.36203>;
            <D.36200>:
            sp.148 = sp;
            sp = sp.148 + 4;
            *sp.148 = ins;
            <D.36203>:
            <D.36193>:
            <D.36190>:
            if (keep_this_alive != 0B) goto <D.36205>; else goto <D.36206>;
            <D.36205>:
            {
              struct MonoInst * dummy_use;

              D.32755 = cfg->mempool;
              dummy_use = mono_mempool_alloc (D.32755, 56);
              dummy_use->data.op[1].const_val = 0;
              D.36207 = dummy_use->data.op[1].const_val;
              dummy_use->data.op[0].const_val = D.36207;
              dummy_use->prev = 0B;
              D.36208 = dummy_use->prev;
              dummy_use->next = D.36208;
              dummy_use->opcode = 796;
              dummy_use->flags = 0;
              dummy_use->type = 0;
              dummy_use->dreg = -1;
              dummy_use->sreg3 = -1;
              D.36209 = dummy_use->sreg3;
              dummy_use->sreg2 = D.36209;
              D.36210 = dummy_use->sreg2;
              dummy_use->sreg1 = D.36210;
              D.32979 = cfg->ip;
              dummy_use->cil_code = D.32979;
              D.36211 = keep_this_alive->dreg;
              dummy_use->sreg1 = D.36211;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.36212>; else goto <D.36213>;
              <D.36212>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = dummy_use;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              dummy_use->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = dummy_use;
              goto <D.36214>;
              <D.36213>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = dummy_use;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.36214>:
            }
            <D.36206>:
            D.33309 = cfg->exception_type;
            if (D.33309 != 0) goto exception_exit; else goto <D.36215>;
            <D.36215>:
            ip = ip + 5;
            if (skip_ret != 0) goto <D.36216>; else goto <D.36217>;
            <D.36216>:
            D.33632 = *ip;
            D.36218 = D.33632 != 42;
            D.36219 = (long int) D.36218;
            D.36220 = __builtin_expect (D.36219, 0);
            if (D.36220 != 0) goto <D.36221>; else goto <D.36222>;
            <D.36221>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8460, "*ip == CEE_RET");
            <D.36222>:
            ip = ip + 1;
            <D.36217>:
            ins_flag = 0;
            constrained_call = 0B;
            if (need_seq_point != 0) goto <D.36223>; else goto <D.36224>;
            <D.36223>:
            emit_seq_point (cfg, method, ip, 0, 1);
            <D.36224>:
            goto <D.29893>;
          }
        finally
          {
            pass_vtable = {CLOBBER};
            pass_mrgctx = {CLOBBER};
          }
      }
      <D.30097>:
      D.32726 = cfg->method;
      if (D.32726 != method) goto <D.36225>; else goto <D.36226>;
      <D.36225>:
      if (return_var != 0B) goto <D.36227>; else goto <D.36228>;
      <D.36227>:
      bblock.125 = cfg->cbb;
      D.36229 = bblock.125->in_count;
      if (D.36229 != 0) goto <D.36230>; else goto <D.36231>;
      <D.36230>:
      {
        struct MonoType * ret_type;
        struct MonoInst * store;

        D.36232 = mono_method_signature (method);
        ret_type = D.36232->ret;
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        if (D.33526 <= 3) goto <D.36233>; else goto <D.36234>;
        <D.36233>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36235>; else goto <D.36236>;
        <D.36235>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36237>; else goto <D.36238>;
        <D.36237>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36238>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36236>:
        D.36239 = mini_get_debug_options ();
        D.36240 = D.36239->break_on_unverified;
        if (D.36240 != 0) goto <D.36241>; else goto unverified;
        <D.36241>:
        raise (5);
        <D.36234>:
        sp = sp + 4294967292;
        D.32698 = BIT_FIELD_REF <*method, 8, 160>;
        D.36242 = D.32698 & 124;
        D.36243 = D.36242 == 68;
        D.36244 = D.36242 == 0;
        D.36245 = D.36243 | D.36244;
        if (D.36245 != 0) goto <D.36246>; else goto <D.36247>;
        <D.36246>:
        D.33750 = *sp;
        D.36248 = target_type_is_incompatible (cfg, ret_type, D.33750);
        if (D.36248 != 0) goto <D.36249>; else goto <D.36250>;
        <D.36249>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36251>; else goto <D.36252>;
        <D.36251>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36253>; else goto <D.36254>;
        <D.36253>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36254>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36252>:
        D.36255 = mini_get_debug_options ();
        D.36256 = D.36255->break_on_unverified;
        if (D.36256 != 0) goto <D.36257>; else goto unverified;
        <D.36257>:
        raise (5);
        <D.36250>:
        <D.36247>:
        D.32755 = cfg->mempool;
        store = mono_mempool_alloc (D.32755, 56);
        store->data.op[1].const_val = 0;
        D.36258 = store->data.op[1].const_val;
        store->data.op[0].const_val = D.36258;
        store->prev = 0B;
        D.36259 = store->prev;
        store->next = D.36259;
        store->opcode = 424;
        store->flags = 0;
        store->type = 0;
        store->dreg = -1;
        store->sreg3 = -1;
        D.36260 = store->sreg3;
        store->sreg2 = D.36260;
        D.36261 = store->sreg2;
        store->sreg1 = D.36261;
        D.32979 = cfg->ip;
        store->cil_code = D.32979;
        D.33491 = cfg->varinfo;
        D.36262 = return_var->data.op[0].const_val;
        D.36263 = (unsigned int) D.36262;
        D.36264 = D.36263 * 4;
        D.36265 = D.33491 + D.36264;
        D.36266 = *D.36265;
        D.36267 = D.36266->data.op[1].vtype;
        D.36268 = mono_type_to_regmove (cfg, D.36267);
        D.36269 = (short unsigned int) D.36268;
        store->opcode = D.36269;
        D.33491 = cfg->varinfo;
        D.36262 = return_var->data.op[0].const_val;
        D.36263 = (unsigned int) D.36262;
        D.36264 = D.36263 * 4;
        D.36265 = D.33491 + D.36264;
        D.36266 = *D.36265;
        D.36270 = D.36266->klass;
        store->klass = D.36270;
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        store->sreg1 = D.33943;
        D.33491 = cfg->varinfo;
        D.36262 = return_var->data.op[0].const_val;
        D.36263 = (unsigned int) D.36262;
        D.36264 = D.36263 * 4;
        D.36265 = D.33491 + D.36264;
        D.36266 = *D.36265;
        D.36271 = D.36266->dreg;
        store->dreg = D.36271;
        D.36272 = store->opcode;
        if (D.36272 == 427) goto <D.36273>; else goto <D.36274>;
        <D.36273>:
        D.33491 = cfg->varinfo;
        D.36262 = return_var->data.op[0].const_val;
        D.36263 = (unsigned int) D.36262;
        D.36264 = D.36263 * 4;
        D.36265 = D.33491 + D.36264;
        D.36266 = *D.36265;
        D.36267 = D.36266->data.op[1].vtype;
        D.36275 = mono_class_from_mono_type (D.36267);
        store->klass = D.36275;
        <D.36274>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.36276>; else goto <D.36277>;
        <D.36276>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = store;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        store->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = store;
        goto <D.36278>;
        <D.36277>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = store;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.36278>:
        cfg->ret_var_set = 1;
      }
      <D.36231>:
      <D.36228>:
      goto <D.36279>;
      <D.36226>:
      D.36280 = cfg->lmf_var;
      if (D.36280 != 0B) goto <D.36281>; else goto <D.36282>;
      <D.36281>:
      bblock.125 = cfg->cbb;
      D.36229 = bblock.125->in_count;
      if (D.36229 != 0) goto <D.36283>; else goto <D.36284>;
      <D.36283>:
      emit_pop_lmf (cfg);
      <D.36284>:
      <D.36282>:
      D.36285 = cfg->ret;
      if (D.36285 != 0B) goto <D.36286>; else goto <D.36287>;
      <D.36286>:
      {
        struct MonoType * ret_type;

        D.36288 = mono_method_signature (method);
        D.36289 = D.36288->ret;
        ret_type = mini_replace_type (D.36289);
        D.33634 = seq_points != 0;
        D.33635 = sym_seq_points == 0;
        D.33636 = D.33634 & D.33635;
        if (D.33636 != 0) goto <D.36290>; else goto <D.36291>;
        <D.36290>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 341;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        ip.81 = (int) ip;
        D.32903 = header->code;
        D.33448 = (int) D.32903;
        D.33449 = ip.81 - D.33448;
        ins->data.op[1].const_val = D.33449;
        ins->flags = 1;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.36292>; else goto <D.36293>;
        <D.36292>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.36294>;
        <D.36293>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.36294>:
        <D.36291>:
        D.36295 = return_var != 0B;
        D.36296 = (long int) D.36295;
        D.36297 = __builtin_expect (D.36296, 0);
        if (D.36297 != 0) goto <D.36298>; else goto <D.36299>;
        <D.36298>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8511, "!return_var");
        <D.36299>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        if (D.33526 <= 3) goto <D.36300>; else goto <D.36301>;
        <D.36300>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36302>; else goto <D.36303>;
        <D.36302>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36304>; else goto <D.36305>;
        <D.36304>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36305>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36303>:
        D.36306 = mini_get_debug_options ();
        D.36307 = D.36306->break_on_unverified;
        if (D.36307 != 0) goto <D.36308>; else goto unverified;
        <D.36308>:
        raise (5);
        <D.36301>:
        sp = sp + 4294967292;
        D.32698 = BIT_FIELD_REF <*method, 8, 160>;
        D.36309 = D.32698 & 124;
        D.36310 = D.36309 == 68;
        D.36311 = D.36309 == 0;
        D.36312 = D.36310 | D.36311;
        if (D.36312 != 0) goto <D.36313>; else goto <D.36314>;
        <D.36313>:
        D.33750 = *sp;
        D.36315 = target_type_is_incompatible (cfg, ret_type, D.33750);
        if (D.36315 != 0) goto <D.36316>; else goto <D.36317>;
        <D.36316>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36318>; else goto <D.36319>;
        <D.36318>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36320>; else goto <D.36321>;
        <D.36320>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36321>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36319>:
        D.36322 = mini_get_debug_options ();
        D.36323 = D.36322->break_on_unverified;
        if (D.36323 != 0) goto <D.36324>; else goto unverified;
        <D.36324>:
        raise (5);
        <D.36317>:
        <D.36314>:
        D.36325 = mini_type_to_stind (cfg, ret_type);
        if (D.36325 == 129) goto <D.36326>; else goto <D.36327>;
        <D.36326>:
        {
          struct MonoInst * ret_addr;

          D.36328 = cfg->vret_addr;
          if (D.36328 == 0B) goto <D.36329>; else goto <D.36330>;
          <D.36329>:
          {
            struct MonoInst * ins;

            D.32755 = cfg->mempool;
            ins = mono_mempool_alloc (D.32755, 56);
            ins->data.op[1].const_val = 0;
            D.36331 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.36331;
            ins->prev = 0B;
            D.36332 = ins->prev;
            ins->next = D.36332;
            ins->opcode = 424;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.36333 = ins->sreg3;
            ins->sreg2 = D.36333;
            D.36334 = ins->sreg2;
            ins->sreg1 = D.36334;
            D.32979 = cfg->ip;
            ins->cil_code = D.32979;
            D.36335 = mono_type_to_regmove (cfg, ret_type);
            D.36336 = (short unsigned int) D.36335;
            ins->opcode = D.36336;
            D.36285 = cfg->ret;
            D.36337 = D.36285->klass;
            ins->klass = D.36337;
            D.33750 = *sp;
            D.33943 = D.33750->dreg;
            ins->sreg1 = D.33943;
            D.36285 = cfg->ret;
            D.36338 = D.36285->dreg;
            ins->dreg = D.36338;
            D.36339 = ins->opcode;
            if (D.36339 == 427) goto <D.36340>; else goto <D.36341>;
            <D.36340>:
            D.36342 = mono_class_from_mono_type (ret_type);
            ins->klass = D.36342;
            <D.36341>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.36343>; else goto <D.36344>;
            <D.36343>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = ins;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            ins->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            goto <D.36345>;
            <D.36344>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.36345>:
          }
          goto <D.36346>;
          <D.36330>:
          D.32755 = cfg->mempool;
          ret_addr = mono_mempool_alloc (D.32755, 56);
          ret_addr->data.op[1].const_val = 0;
          D.36347 = ret_addr->data.op[1].const_val;
          ret_addr->data.op[0].const_val = D.36347;
          ret_addr->prev = 0B;
          D.36348 = ret_addr->prev;
          ret_addr->next = D.36348;
          ret_addr->opcode = 424;
          ret_addr->flags = 0;
          ret_addr->type = 0;
          ret_addr->dreg = -1;
          ret_addr->sreg3 = -1;
          D.36349 = ret_addr->sreg3;
          ret_addr->sreg2 = D.36349;
          D.36350 = ret_addr->sreg2;
          ret_addr->sreg1 = D.36350;
          D.32979 = cfg->ip;
          ret_addr->cil_code = D.32979;
          ret_addr->type = 5;
          D.36285 = cfg->ret;
          D.36337 = D.36285->klass;
          ret_addr->klass = D.36337;
          D.36328 = cfg->vret_addr;
          D.36351 = D.36328->dreg;
          ret_addr->sreg1 = D.36351;
          D.36352 = ret_addr->type;
          D.36353 = (<unnamed type>) D.36352;
          D.36354 = alloc_dreg (cfg, D.36353);
          D.36355 = (int) D.36354;
          ret_addr->dreg = D.36355;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.36356>; else goto <D.36357>;
          <D.36356>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = ret_addr;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          ret_addr->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ret_addr;
          goto <D.36358>;
          <D.36357>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ret_addr;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.36358>:
          D.32755 = cfg->mempool;
          ins = mono_mempool_alloc (D.32755, 56);
          ins->data.op[1].const_val = 0;
          D.32975 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.32975;
          ins->prev = 0B;
          D.32976 = ins->prev;
          ins->next = D.32976;
          ins->opcode = 387;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.32977 = ins->sreg3;
          ins->sreg2 = D.32977;
          D.32978 = ins->sreg2;
          ins->sreg1 = D.32978;
          D.32979 = cfg->ip;
          ins->cil_code = D.32979;
          D.33750 = *sp;
          D.33943 = D.33750->dreg;
          ins->sreg1 = D.33943;
          D.36359 = ret_addr->dreg;
          ins->dreg = D.36359;
          ins->data.op[0].const_val = 0;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.36360>; else goto <D.36361>;
          <D.36360>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = ins;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          ins->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          goto <D.36362>;
          <D.36361>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.36362>:
          D.36363 = mono_class_from_mono_type (ret_type);
          ins->klass = D.36363;
          <D.36346>:
        }
        goto <D.36364>;
        <D.36327>:
        D.33750 = *sp;
        mono_arch_emit_setret (cfg, method, D.33750);
        <D.36364>:
      }
      <D.36287>:
      <D.36279>:
      if (sp != stack_start) goto <D.36365>; else goto <D.36366>;
      <D.36365>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.36367>; else goto <D.36368>;
      <D.36367>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.36369>; else goto <D.36370>;
      <D.36369>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36370>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36368>:
      D.36371 = mini_get_debug_options ();
      D.36372 = D.36371->break_on_unverified;
      if (D.36372 != 0) goto <D.36373>; else goto unverified;
      <D.36373>:
      raise (5);
      <D.36366>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 442;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      ip = ip + 1;
      ins->data.op[0].target_block = end_bblock;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      if (D.33093 != 0B) goto <D.36374>; else goto <D.36375>;
      <D.36374>:
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      D.33093->next = ins;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      ins->prev = D.33093;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      goto <D.36376>;
      <D.36375>:
      bblock.76 = bblock;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      D.33093 = bblock.76->last_ins;
      bblock.76->code = D.33093;
      <D.36376>:
      bblock.76 = bblock;
      link_bblock (cfg, bblock.76, end_bblock);
      start_new_bblock = 1;
      goto <D.29893>;
      <D.30103>:
      D.33761 = ip + 2;
      if (D.33761 > end) goto <D.36377>; else goto <D.36378>;
      <D.36377>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.36379>; else goto <D.36380>;
      <D.36379>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.36381>; else goto <D.36382>;
      <D.36381>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36382>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36380>:
      D.36383 = mini_get_debug_options ();
      D.36384 = D.36383->break_on_unverified;
      if (D.36384 != 0) goto <D.36385>; else goto unverified;
      <D.36385>:
      raise (5);
      <D.36378>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 442;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      ip = ip + 1;
      D.33632 = *ip;
      D.36386 = (signed char) D.33632;
      D.36387 = (sizetype) D.36386;
      D.36388 = D.36387 + 1;
      target = ip + D.36388;
      ip = ip + 1;
      D.32887 = cfg->cil_offset_to_bb;
      target.149 = (int) target;
      D.32891 = cfg->cil_start;
      D.32892 = (int) D.32891;
      D.36390 = target.149 - D.32892;
      D.36391 = (unsigned int) D.36390;
      D.36392 = D.36391 * 4;
      D.36393 = D.32887 + D.36392;
      tblock = *D.36393;
      if (tblock == 0B) goto <D.36394>; else goto <D.36395>;
      <D.36394>:
      if (target >= end) goto <D.36396>; else goto <D.36398>;
      <D.36398>:
      D.32903 = header->code;
      if (D.32903 > target) goto <D.36396>; else goto <D.36397>;
      <D.36396>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.36399>; else goto <D.36400>;
      <D.36399>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.36401>; else goto <D.36402>;
      <D.36401>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36402>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36400>:
      D.36403 = mini_get_debug_options ();
      D.36404 = D.36403->break_on_unverified;
      if (D.36404 != 0) goto <D.36405>; else goto unverified;
      <D.36405>:
      raise (5);
      <D.36397>:
      D.32755 = cfg->mempool;
      tblock = mono_mempool_alloc0 (D.32755, 172);
      D.32864 = cfg->num_bblocks;
      D.36406 = D.32864;
      D.36407 = D.36406 + 1;
      cfg->num_bblocks = D.36407;
      D.36408 = (int) D.36406;
      tblock->block_num = D.36408;
      tblock->cil_code = target;
      D.32952 = tblock->cil_code;
      if (D.32952 != 0B) goto <D.36409>; else goto <D.36410>;
      <D.36409>:
      D.32887 = cfg->cil_offset_to_bb;
      D.32952 = tblock->cil_code;
      D.32955 = (int) D.32952;
      D.32891 = cfg->cil_start;
      D.32892 = (int) D.32891;
      D.32956 = D.32955 - D.32892;
      D.32957 = (unsigned int) D.32956;
      D.32958 = D.32957 * 4;
      D.32959 = D.32887 + D.32958;
      *D.32959 = tblock;
      <D.36410>:
      D.32923 = cfg->real_offset;
      tblock->real_offset = D.32923;
      <D.36395>:
      bblock.76 = bblock;
      link_bblock (cfg, bblock.76, tblock);
      ins->data.op[0].target_block = tblock;
      if (sp != stack_start) goto <D.36411>; else goto <D.36412>;
      <D.36411>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      handle_stack_args (cfg, stack_start, D.33527);
      sp = stack_start;
      D.33528 = BIT_FIELD_REF <*cfg, 8, 3400>;
      D.33529 = D.33528 & 32;
      if (D.33529 != 0) goto <D.36413>; else goto <D.36414>;
      <D.36413>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.36415>; else goto <D.36416>;
      <D.36415>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.36417>; else goto <D.36418>;
      <D.36417>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36418>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36416>:
      D.36419 = mini_get_debug_options ();
      D.36420 = D.36419->break_on_unverified;
      if (D.36420 != 0) goto <D.36421>; else goto unverified;
      <D.36421>:
      raise (5);
      <D.36414>:
      <D.36412>:
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      if (D.33093 != 0B) goto <D.36422>; else goto <D.36423>;
      <D.36422>:
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      D.33093->next = ins;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      ins->prev = D.33093;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      goto <D.36424>;
      <D.36423>:
      bblock.76 = bblock;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      D.33093 = bblock.76->last_ins;
      bblock.76->code = D.33093;
      <D.36424>:
      start_new_bblock = 1;
      inline_costs = inline_costs + 10;
      goto <D.29893>;
      <D.30104>:
      <D.30105>:
      <D.30106>:
      <D.30107>:
      <D.30108>:
      <D.30109>:
      <D.30110>:
      <D.30111>:
      <D.30112>:
      <D.30113>:
      D.33761 = ip + 2;
      if (D.33761 > end) goto <D.36425>; else goto <D.36426>;
      <D.36425>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.36427>; else goto <D.36428>;
      <D.36427>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.36429>; else goto <D.36430>;
      <D.36429>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36430>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36428>:
      D.36431 = mini_get_debug_options ();
      D.36432 = D.36431->break_on_unverified;
      if (D.36432 != 0) goto <D.36433>; else goto unverified;
      <D.36433>:
      raise (5);
      <D.36426>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 7) goto <D.36434>; else goto <D.36435>;
      <D.36434>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.36436>; else goto <D.36437>;
      <D.36436>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.36438>; else goto <D.36439>;
      <D.36438>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36439>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36437>:
      D.36440 = mini_get_debug_options ();
      D.36441 = D.36440->break_on_unverified;
      if (D.36441 != 0) goto <D.36442>; else goto unverified;
      <D.36442>:
      raise (5);
      <D.36435>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      D.33632 = *ip;
      D.36443 = (short unsigned int) D.33632;
      D.36444 = D.36443 + 13;
      ins->opcode = D.36444;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      ip = ip + 1;
      D.34187 = MEM[(signed char *)ip];
      D.36445 = (sizetype) D.34187;
      D.36446 = D.36445 + 1;
      target = ip + D.36446;
      ip = ip + 1;
      {
        struct MonoInst * cmp;

        sp = sp + 4294967288;
        D.32755 = cfg->mempool;
        cmp = mono_mempool_alloc (D.32755, 56);
        cmp->data.op[1].const_val = 0;
        D.36447 = cmp->data.op[1].const_val;
        cmp->data.op[0].const_val = D.36447;
        cmp->prev = 0B;
        D.36448 = cmp->prev;
        cmp->next = D.36448;
        cmp->opcode = 322;
        cmp->flags = 0;
        cmp->type = 0;
        cmp->dreg = -1;
        cmp->sreg3 = -1;
        D.36449 = cmp->sreg3;
        cmp->sreg2 = D.36449;
        D.36450 = cmp->sreg2;
        cmp->sreg1 = D.36450;
        D.32979 = cfg->ip;
        cmp->cil_code = D.32979;
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        cmp->sreg1 = D.33943;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        D.34877 = D.34876->dreg;
        cmp->sreg2 = D.34877;
        D.33750 = *sp;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        type_from_op (cmp, D.33750, D.34876);
        D.36451 = cmp->type;
        if (D.36451 == 0) goto <D.36452>; else goto <D.36453>;
        <D.36452>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36454>; else goto <D.36455>;
        <D.36454>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36456>; else goto <D.36457>;
        <D.36456>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36457>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36455>:
        D.36458 = mini_get_debug_options ();
        D.36459 = D.36458->break_on_unverified;
        if (D.36459 != 0) goto <D.36460>; else goto unverified;
        <D.36460>:
        raise (5);
        <D.36453>:
        D.33750 = *sp;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        type_from_op (ins, D.33750, D.34876);
        D.32755 = cfg->mempool;
        D.36461 = mono_mempool_alloc (D.32755, 8);
        ins->data.op[1].many_blocks = D.36461;
        D.32887 = cfg->cil_offset_to_bb;
        target.149 = (int) target;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.36390 = target.149 - D.32892;
        D.36391 = (unsigned int) D.36390;
        D.36392 = D.36391 * 4;
        D.36393 = D.32887 + D.36392;
        tblock = *D.36393;
        if (tblock == 0B) goto <D.36462>; else goto <D.36463>;
        <D.36462>:
        if (target >= end) goto <D.36464>; else goto <D.36466>;
        <D.36466>:
        D.32903 = header->code;
        if (D.32903 > target) goto <D.36464>; else goto <D.36465>;
        <D.36464>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36467>; else goto <D.36468>;
        <D.36467>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36469>; else goto <D.36470>;
        <D.36469>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36470>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36468>:
        D.36471 = mini_get_debug_options ();
        D.36472 = D.36471->break_on_unverified;
        if (D.36472 != 0) goto <D.36473>; else goto unverified;
        <D.36473>:
        raise (5);
        <D.36465>:
        D.32755 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.32755, 172);
        D.32864 = cfg->num_bblocks;
        D.36474 = D.32864;
        D.36475 = D.36474 + 1;
        cfg->num_bblocks = D.36475;
        D.36476 = (int) D.36474;
        tblock->block_num = D.36476;
        tblock->cil_code = target;
        D.32952 = tblock->cil_code;
        if (D.32952 != 0B) goto <D.36477>; else goto <D.36478>;
        <D.36477>:
        D.32887 = cfg->cil_offset_to_bb;
        D.32952 = tblock->cil_code;
        D.32955 = (int) D.32952;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.32956 = D.32955 - D.32892;
        D.32957 = (unsigned int) D.32956;
        D.32958 = D.32957 * 4;
        D.32959 = D.32887 + D.32958;
        *D.32959 = tblock;
        <D.36478>:
        D.32923 = cfg->real_offset;
        tblock->real_offset = D.32923;
        <D.36463>:
        bblock.76 = bblock;
        link_bblock (cfg, bblock.76, tblock);
        D.36479 = ins->data.op[1].many_blocks;
        *D.36479 = tblock;
        if (0 != 0) goto <D.36480>; else goto <D.36481>;
        <D.36480>:
        bblock.76 = bblock;
        link_bblock (cfg, bblock.76, 0B);
        D.36479 = ins->data.op[1].many_blocks;
        D.36482 = D.36479 + 4;
        *D.36482 = 0B;
        start_new_bblock = 1;
        goto <D.36483>;
        <D.36481>:
        D.32887 = cfg->cil_offset_to_bb;
        ip.81 = (int) ip;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.33463 = ip.81 - D.32892;
        D.33464 = (unsigned int) D.33463;
        D.33465 = D.33464 * 4;
        D.33466 = D.32887 + D.33465;
        tblock = *D.33466;
        if (tblock == 0B) goto <D.36484>; else goto <D.36485>;
        <D.36484>:
        if (ip >= end) goto <D.36486>; else goto <D.36488>;
        <D.36488>:
        D.32903 = header->code;
        if (D.32903 > ip) goto <D.36486>; else goto <D.36487>;
        <D.36486>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36489>; else goto <D.36490>;
        <D.36489>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36491>; else goto <D.36492>;
        <D.36491>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36492>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36490>:
        D.36493 = mini_get_debug_options ();
        D.36494 = D.36493->break_on_unverified;
        if (D.36494 != 0) goto <D.36495>; else goto unverified;
        <D.36495>:
        raise (5);
        <D.36487>:
        D.32755 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.32755, 172);
        D.32864 = cfg->num_bblocks;
        D.36496 = D.32864;
        D.36497 = D.36496 + 1;
        cfg->num_bblocks = D.36497;
        D.36498 = (int) D.36496;
        tblock->block_num = D.36498;
        tblock->cil_code = ip;
        D.32952 = tblock->cil_code;
        if (D.32952 != 0B) goto <D.36499>; else goto <D.36500>;
        <D.36499>:
        D.32887 = cfg->cil_offset_to_bb;
        D.32952 = tblock->cil_code;
        D.32955 = (int) D.32952;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.32956 = D.32955 - D.32892;
        D.32957 = (unsigned int) D.32956;
        D.32958 = D.32957 * 4;
        D.32959 = D.32887 + D.32958;
        *D.32959 = tblock;
        <D.36500>:
        D.32923 = cfg->real_offset;
        tblock->real_offset = D.32923;
        <D.36485>:
        bblock.76 = bblock;
        link_bblock (cfg, bblock.76, tblock);
        D.36479 = ins->data.op[1].many_blocks;
        D.36482 = D.36479 + 4;
        *D.36482 = tblock;
        start_new_bblock = 2;
        <D.36483>:
        if (sp != stack_start) goto <D.36501>; else goto <D.36502>;
        <D.36501>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        D.33527 = D.33526 /[ex] 4;
        handle_stack_args (cfg, stack_start, D.33527);
        D.33528 = BIT_FIELD_REF <*cfg, 8, 3400>;
        D.33529 = D.33528 & 32;
        if (D.33529 != 0) goto <D.36503>; else goto <D.36504>;
        <D.36503>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36505>; else goto <D.36506>;
        <D.36505>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36507>; else goto <D.36508>;
        <D.36507>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36508>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36506>:
        D.36509 = mini_get_debug_options ();
        D.36510 = D.36509->break_on_unverified;
        if (D.36510 != 0) goto <D.36511>; else goto unverified;
        <D.36511>:
        raise (5);
        <D.36504>:
        <D.36502>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        if (D.33093 != 0B) goto <D.36512>; else goto <D.36513>;
        <D.36512>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        D.33093->next = cmp;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        cmp->prev = D.33093;
        bblock.76 = bblock;
        bblock.76->last_ins = cmp;
        goto <D.36514>;
        <D.36513>:
        bblock.76 = bblock;
        bblock.76 = bblock;
        bblock.76->last_ins = cmp;
        D.33093 = bblock.76->last_ins;
        bblock.76->code = D.33093;
        <D.36514>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        if (D.33093 != 0B) goto <D.36515>; else goto <D.36516>;
        <D.36515>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        D.33093->next = ins;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        ins->prev = D.33093;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        goto <D.36517>;
        <D.36516>:
        bblock.76 = bblock;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        D.33093 = bblock.76->last_ins;
        bblock.76->code = D.33093;
        <D.36517>:
      }
      sp = stack_start;
      inline_costs = inline_costs + 10;
      goto <D.29893>;
      <D.30115>:
      D.34195 = ip + 5;
      if (D.34195 > end) goto <D.36518>; else goto <D.36519>;
      <D.36518>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.36520>; else goto <D.36521>;
      <D.36520>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.36522>; else goto <D.36523>;
      <D.36522>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36523>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36521>:
      D.36524 = mini_get_debug_options ();
      D.36525 = D.36524->break_on_unverified;
      if (D.36525 != 0) goto <D.36526>; else goto unverified;
      <D.36526>:
      raise (5);
      <D.36519>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 442;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      ip = ip + 1;
      D.36527 = mono_read32 (ip);
      D.36528 = D.36527 + 4;
      target = ip + D.36528;
      ip = ip + 4;
      D.32887 = cfg->cil_offset_to_bb;
      target.149 = (int) target;
      D.32891 = cfg->cil_start;
      D.32892 = (int) D.32891;
      D.36390 = target.149 - D.32892;
      D.36391 = (unsigned int) D.36390;
      D.36392 = D.36391 * 4;
      D.36393 = D.32887 + D.36392;
      tblock = *D.36393;
      if (tblock == 0B) goto <D.36529>; else goto <D.36530>;
      <D.36529>:
      if (target >= end) goto <D.36531>; else goto <D.36533>;
      <D.36533>:
      D.32903 = header->code;
      if (D.32903 > target) goto <D.36531>; else goto <D.36532>;
      <D.36531>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.36534>; else goto <D.36535>;
      <D.36534>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.36536>; else goto <D.36537>;
      <D.36536>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36537>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36535>:
      D.36538 = mini_get_debug_options ();
      D.36539 = D.36538->break_on_unverified;
      if (D.36539 != 0) goto <D.36540>; else goto unverified;
      <D.36540>:
      raise (5);
      <D.36532>:
      D.32755 = cfg->mempool;
      tblock = mono_mempool_alloc0 (D.32755, 172);
      D.32864 = cfg->num_bblocks;
      D.36541 = D.32864;
      D.36542 = D.36541 + 1;
      cfg->num_bblocks = D.36542;
      D.36543 = (int) D.36541;
      tblock->block_num = D.36543;
      tblock->cil_code = target;
      D.32952 = tblock->cil_code;
      if (D.32952 != 0B) goto <D.36544>; else goto <D.36545>;
      <D.36544>:
      D.32887 = cfg->cil_offset_to_bb;
      D.32952 = tblock->cil_code;
      D.32955 = (int) D.32952;
      D.32891 = cfg->cil_start;
      D.32892 = (int) D.32891;
      D.32956 = D.32955 - D.32892;
      D.32957 = (unsigned int) D.32956;
      D.32958 = D.32957 * 4;
      D.32959 = D.32887 + D.32958;
      *D.32959 = tblock;
      <D.36545>:
      D.32923 = cfg->real_offset;
      tblock->real_offset = D.32923;
      <D.36530>:
      bblock.76 = bblock;
      link_bblock (cfg, bblock.76, tblock);
      ins->data.op[0].target_block = tblock;
      if (sp != stack_start) goto <D.36546>; else goto <D.36547>;
      <D.36546>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      handle_stack_args (cfg, stack_start, D.33527);
      sp = stack_start;
      D.33528 = BIT_FIELD_REF <*cfg, 8, 3400>;
      D.33529 = D.33528 & 32;
      if (D.33529 != 0) goto <D.36548>; else goto <D.36549>;
      <D.36548>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.36550>; else goto <D.36551>;
      <D.36550>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.36552>; else goto <D.36553>;
      <D.36552>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36553>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36551>:
      D.36554 = mini_get_debug_options ();
      D.36555 = D.36554->break_on_unverified;
      if (D.36555 != 0) goto <D.36556>; else goto unverified;
      <D.36556>:
      raise (5);
      <D.36549>:
      <D.36547>:
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      if (D.33093 != 0B) goto <D.36557>; else goto <D.36558>;
      <D.36557>:
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      D.33093->next = ins;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      ins->prev = D.33093;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      goto <D.36559>;
      <D.36558>:
      bblock.76 = bblock;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      D.33093 = bblock.76->last_ins;
      bblock.76->code = D.33093;
      <D.36559>:
      start_new_bblock = 1;
      inline_costs = inline_costs + 10;
      goto <D.29893>;
      <D.30116>:
      <D.30117>:
      <D.30118>:
      <D.30119>:
      {
        struct MonoInst * cmp;
        gboolean is_short;
        gboolean is_true;
        guint32 opsize;

        D.33632 = *ip;
        D.36560 = D.33632 + 212;
        D.36561 = D.36560 <= 1;
        is_short = (gboolean) D.36561;
        D.36562 = *ip;
        D.36563 = D.36562 == 45;
        D.36564 = D.36562 == 58;
        D.36565 = D.36563 | D.36564;
        is_true = (gboolean) D.36565;
        if (is_short != 0) goto <D.36567>; else goto <D.36568>;
        <D.36567>:
        iftmp.150 = 1;
        goto <D.36569>;
        <D.36568>:
        iftmp.150 = 4;
        <D.36569>:
        opsize = iftmp.150;
        D.36570 = ip + opsize;
        if (D.36570 > end) goto <D.36571>; else goto <D.36572>;
        <D.36571>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36573>; else goto <D.36574>;
        <D.36573>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36575>; else goto <D.36576>;
        <D.36575>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36576>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36574>:
        D.36577 = mini_get_debug_options ();
        D.36578 = D.36577->break_on_unverified;
        if (D.36578 != 0) goto <D.36579>; else goto unverified;
        <D.36579>:
        raise (5);
        <D.36572>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        if (D.33526 <= 3) goto <D.36580>; else goto <D.36581>;
        <D.36580>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36582>; else goto <D.36583>;
        <D.36582>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36584>; else goto <D.36585>;
        <D.36584>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36585>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36583>:
        D.36586 = mini_get_debug_options ();
        D.36587 = D.36586->break_on_unverified;
        if (D.36587 != 0) goto <D.36588>; else goto unverified;
        <D.36588>:
        raise (5);
        <D.36581>:
        D.36589 = sp + 4294967292;
        D.36590 = *D.36589;
        D.36591 = D.36590->type;
        D.36592 = D.36591 == 7;
        D.36593 = D.36591 == 4;
        D.36594 = D.36592 | D.36593;
        if (D.36594 != 0) goto <D.36595>; else goto <D.36596>;
        <D.36595>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36597>; else goto <D.36598>;
        <D.36597>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36599>; else goto <D.36600>;
        <D.36599>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36600>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36598>:
        D.36601 = mini_get_debug_options ();
        D.36602 = D.36601->break_on_unverified;
        if (D.36602 != 0) goto <D.36603>; else goto unverified;
        <D.36603>:
        raise (5);
        <D.36596>:
        ip = ip + 1;
        if (is_short != 0) goto <D.36605>; else goto <D.36606>;
        <D.36605>:
        D.34187 = MEM[(signed char *)ip];
        iftmp.151 = (sizetype) D.34187;
        goto <D.36607>;
        <D.36606>:
        iftmp.151 = mono_read32 (ip);
        <D.36607>:
        D.36608 = iftmp.151 + opsize;
        target = ip + D.36608;
        ip = ip + opsize;
        sp = sp + 4294967292;
        D.32887 = cfg->cil_offset_to_bb;
        target.149 = (int) target;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.36390 = target.149 - D.32892;
        D.36391 = (unsigned int) D.36390;
        D.36392 = D.36391 * 4;
        D.36393 = D.32887 + D.36392;
        tblock = *D.36393;
        if (tblock == 0B) goto <D.36609>; else goto <D.36610>;
        <D.36609>:
        if (target >= end) goto <D.36611>; else goto <D.36613>;
        <D.36613>:
        D.32903 = header->code;
        if (D.32903 > target) goto <D.36611>; else goto <D.36612>;
        <D.36611>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36614>; else goto <D.36615>;
        <D.36614>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36616>; else goto <D.36617>;
        <D.36616>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36617>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36615>:
        D.36618 = mini_get_debug_options ();
        D.36619 = D.36618->break_on_unverified;
        if (D.36619 != 0) goto <D.36620>; else goto unverified;
        <D.36620>:
        raise (5);
        <D.36612>:
        D.32755 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.32755, 172);
        D.32864 = cfg->num_bblocks;
        D.36621 = D.32864;
        D.36622 = D.36621 + 1;
        cfg->num_bblocks = D.36622;
        D.36623 = (int) D.36621;
        tblock->block_num = D.36623;
        tblock->cil_code = target;
        D.32952 = tblock->cil_code;
        if (D.32952 != 0B) goto <D.36624>; else goto <D.36625>;
        <D.36624>:
        D.32887 = cfg->cil_offset_to_bb;
        D.32952 = tblock->cil_code;
        D.32955 = (int) D.32952;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.32956 = D.32955 - D.32892;
        D.32957 = (unsigned int) D.32956;
        D.32958 = D.32957 * 4;
        D.32959 = D.32887 + D.32958;
        *D.32959 = tblock;
        <D.36625>:
        D.32923 = cfg->real_offset;
        tblock->real_offset = D.32923;
        <D.36610>:
        bblock.76 = bblock;
        link_bblock (cfg, bblock.76, tblock);
        D.32887 = cfg->cil_offset_to_bb;
        ip.81 = (int) ip;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.33463 = ip.81 - D.32892;
        D.33464 = (unsigned int) D.33463;
        D.33465 = D.33464 * 4;
        D.33466 = D.32887 + D.33465;
        tblock = *D.33466;
        if (tblock == 0B) goto <D.36626>; else goto <D.36627>;
        <D.36626>:
        if (ip >= end) goto <D.36628>; else goto <D.36630>;
        <D.36630>:
        D.32903 = header->code;
        if (D.32903 > ip) goto <D.36628>; else goto <D.36629>;
        <D.36628>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36631>; else goto <D.36632>;
        <D.36631>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36633>; else goto <D.36634>;
        <D.36633>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36634>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36632>:
        D.36635 = mini_get_debug_options ();
        D.36636 = D.36635->break_on_unverified;
        if (D.36636 != 0) goto <D.36637>; else goto unverified;
        <D.36637>:
        raise (5);
        <D.36629>:
        D.32755 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.32755, 172);
        D.32864 = cfg->num_bblocks;
        D.36638 = D.32864;
        D.36639 = D.36638 + 1;
        cfg->num_bblocks = D.36639;
        D.36640 = (int) D.36638;
        tblock->block_num = D.36640;
        tblock->cil_code = ip;
        D.32952 = tblock->cil_code;
        if (D.32952 != 0B) goto <D.36641>; else goto <D.36642>;
        <D.36641>:
        D.32887 = cfg->cil_offset_to_bb;
        D.32952 = tblock->cil_code;
        D.32955 = (int) D.32952;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.32956 = D.32955 - D.32892;
        D.32957 = (unsigned int) D.32956;
        D.32958 = D.32957 * 4;
        D.32959 = D.32887 + D.32958;
        *D.32959 = tblock;
        <D.36642>:
        D.32923 = cfg->real_offset;
        tblock->real_offset = D.32923;
        <D.36627>:
        bblock.76 = bblock;
        link_bblock (cfg, bblock.76, tblock);
        if (sp != stack_start) goto <D.36643>; else goto <D.36644>;
        <D.36643>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        D.33527 = D.33526 /[ex] 4;
        handle_stack_args (cfg, stack_start, D.33527);
        D.33528 = BIT_FIELD_REF <*cfg, 8, 3400>;
        D.33529 = D.33528 & 32;
        if (D.33529 != 0) goto <D.36645>; else goto <D.36646>;
        <D.36645>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36647>; else goto <D.36648>;
        <D.36647>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36649>; else goto <D.36650>;
        <D.36649>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36650>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36648>:
        D.36651 = mini_get_debug_options ();
        D.36652 = D.36651->break_on_unverified;
        if (D.36652 != 0) goto <D.36653>; else goto unverified;
        <D.36653>:
        raise (5);
        <D.36646>:
        <D.36644>:
        D.32755 = cfg->mempool;
        cmp = mono_mempool_alloc (D.32755, 56);
        cmp->data.op[1].const_val = 0;
        D.36654 = cmp->data.op[1].const_val;
        cmp->data.op[0].const_val = D.36654;
        cmp->prev = 0B;
        D.36655 = cmp->prev;
        cmp->next = D.36655;
        cmp->opcode = 327;
        cmp->flags = 0;
        cmp->type = 0;
        cmp->dreg = -1;
        cmp->sreg3 = -1;
        D.36656 = cmp->sreg3;
        cmp->sreg2 = D.36656;
        D.36657 = cmp->sreg2;
        cmp->sreg1 = D.36657;
        D.32979 = cfg->ip;
        cmp->cil_code = D.32979;
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        cmp->sreg1 = D.33943;
        D.33750 = *sp;
        type_from_op (cmp, D.33750, 0B);
        D.36658 = cmp->type;
        if (D.36658 == 0) goto <D.36659>; else goto <D.36660>;
        <D.36659>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36661>; else goto <D.36662>;
        <D.36661>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36663>; else goto <D.36664>;
        <D.36663>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36664>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36662>:
        D.36665 = mini_get_debug_options ();
        D.36666 = D.36665->break_on_unverified;
        if (D.36666 != 0) goto <D.36667>; else goto unverified;
        <D.36667>:
        raise (5);
        <D.36660>:
        D.36668 = cmp->opcode;
        if (D.36668 == 328) goto <D.36669>; else goto <D.36670>;
        <D.36669>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 363;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        ins->type = 2;
        D.36671 = alloc_dreg (cfg, 2);
        D.36672 = (int) D.36671;
        ins->dreg = D.36672;
        ins->data.i8const = 0;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        if (D.33093 != 0B) goto <D.36673>; else goto <D.36674>;
        <D.36673>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        D.33093->next = ins;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        ins->prev = D.33093;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        goto <D.36675>;
        <D.36674>:
        bblock.76 = bblock;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        D.33093 = bblock.76->last_ins;
        bblock.76->code = D.33093;
        <D.36675>:
        cmp->opcode = 325;
        D.33170 = ins->dreg;
        cmp->sreg2 = D.33170;
        <D.36670>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        if (D.33093 != 0B) goto <D.36676>; else goto <D.36677>;
        <D.36676>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        D.33093->next = cmp;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        cmp->prev = D.33093;
        bblock.76 = bblock;
        bblock.76->last_ins = cmp;
        goto <D.36678>;
        <D.36677>:
        bblock.76 = bblock;
        bblock.76 = bblock;
        bblock.76->last_ins = cmp;
        D.33093 = bblock.76->last_ins;
        bblock.76->code = D.33093;
        <D.36678>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        if (is_true != 0) goto <D.36680>; else goto <D.36681>;
        <D.36680>:
        iftmp.152 = 64;
        goto <D.36682>;
        <D.36681>:
        iftmp.152 = 59;
        <D.36682>:
        ins->opcode = iftmp.152;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        D.33750 = *sp;
        type_from_op (ins, D.33750, 0B);
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        if (D.33093 != 0B) goto <D.36683>; else goto <D.36684>;
        <D.36683>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        D.33093->next = ins;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        ins->prev = D.33093;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        goto <D.36685>;
        <D.36684>:
        bblock.76 = bblock;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        D.33093 = bblock.76->last_ins;
        bblock.76->code = D.33093;
        <D.36685>:
        D.32755 = cfg->mempool;
        D.36686 = mono_mempool_alloc (D.32755, 8);
        ins->data.op[1].many_blocks = D.36686;
        D.32887 = cfg->cil_offset_to_bb;
        target.149 = (int) target;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.36390 = target.149 - D.32892;
        D.36391 = (unsigned int) D.36390;
        D.36392 = D.36391 * 4;
        D.36393 = D.32887 + D.36392;
        tblock = *D.36393;
        if (tblock == 0B) goto <D.36687>; else goto <D.36688>;
        <D.36687>:
        if (target >= end) goto <D.36689>; else goto <D.36691>;
        <D.36691>:
        D.32903 = header->code;
        if (D.32903 > target) goto <D.36689>; else goto <D.36690>;
        <D.36689>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36692>; else goto <D.36693>;
        <D.36692>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36694>; else goto <D.36695>;
        <D.36694>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36695>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36693>:
        D.36696 = mini_get_debug_options ();
        D.36697 = D.36696->break_on_unverified;
        if (D.36697 != 0) goto <D.36698>; else goto unverified;
        <D.36698>:
        raise (5);
        <D.36690>:
        D.32755 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.32755, 172);
        D.32864 = cfg->num_bblocks;
        D.36699 = D.32864;
        D.36700 = D.36699 + 1;
        cfg->num_bblocks = D.36700;
        D.36701 = (int) D.36699;
        tblock->block_num = D.36701;
        tblock->cil_code = target;
        D.32952 = tblock->cil_code;
        if (D.32952 != 0B) goto <D.36702>; else goto <D.36703>;
        <D.36702>:
        D.32887 = cfg->cil_offset_to_bb;
        D.32952 = tblock->cil_code;
        D.32955 = (int) D.32952;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.32956 = D.32955 - D.32892;
        D.32957 = (unsigned int) D.32956;
        D.32958 = D.32957 * 4;
        D.32959 = D.32887 + D.32958;
        *D.32959 = tblock;
        <D.36703>:
        D.32923 = cfg->real_offset;
        tblock->real_offset = D.32923;
        <D.36688>:
        D.36479 = ins->data.op[1].many_blocks;
        *D.36479 = tblock;
        D.32887 = cfg->cil_offset_to_bb;
        ip.81 = (int) ip;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.33463 = ip.81 - D.32892;
        D.33464 = (unsigned int) D.33463;
        D.33465 = D.33464 * 4;
        D.33466 = D.32887 + D.33465;
        tblock = *D.33466;
        if (tblock == 0B) goto <D.36704>; else goto <D.36705>;
        <D.36704>:
        if (ip >= end) goto <D.36706>; else goto <D.36708>;
        <D.36708>:
        D.32903 = header->code;
        if (D.32903 > ip) goto <D.36706>; else goto <D.36707>;
        <D.36706>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36709>; else goto <D.36710>;
        <D.36709>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36711>; else goto <D.36712>;
        <D.36711>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36712>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36710>:
        D.36713 = mini_get_debug_options ();
        D.36714 = D.36713->break_on_unverified;
        if (D.36714 != 0) goto <D.36715>; else goto unverified;
        <D.36715>:
        raise (5);
        <D.36707>:
        D.32755 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.32755, 172);
        D.32864 = cfg->num_bblocks;
        D.36716 = D.32864;
        D.36717 = D.36716 + 1;
        cfg->num_bblocks = D.36717;
        D.36718 = (int) D.36716;
        tblock->block_num = D.36718;
        tblock->cil_code = ip;
        D.32952 = tblock->cil_code;
        if (D.32952 != 0B) goto <D.36719>; else goto <D.36720>;
        <D.36719>:
        D.32887 = cfg->cil_offset_to_bb;
        D.32952 = tblock->cil_code;
        D.32955 = (int) D.32952;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.32956 = D.32955 - D.32892;
        D.32957 = (unsigned int) D.32956;
        D.32958 = D.32957 * 4;
        D.32959 = D.32887 + D.32958;
        *D.32959 = tblock;
        <D.36720>:
        D.32923 = cfg->real_offset;
        tblock->real_offset = D.32923;
        <D.36705>:
        D.36479 = ins->data.op[1].many_blocks;
        D.36482 = D.36479 + 4;
        *D.36482 = tblock;
        start_new_bblock = 2;
        sp = stack_start;
        inline_costs = inline_costs + 10;
        goto <D.29893>;
      }
      <D.30124>:
      <D.30125>:
      <D.30126>:
      <D.30127>:
      <D.30128>:
      <D.30129>:
      <D.30130>:
      <D.30131>:
      <D.30132>:
      <D.30133>:
      D.34195 = ip + 5;
      if (D.34195 > end) goto <D.36721>; else goto <D.36722>;
      <D.36721>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.36723>; else goto <D.36724>;
      <D.36723>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.36725>; else goto <D.36726>;
      <D.36725>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36726>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36724>:
      D.36727 = mini_get_debug_options ();
      D.36728 = D.36727->break_on_unverified;
      if (D.36728 != 0) goto <D.36729>; else goto unverified;
      <D.36729>:
      raise (5);
      <D.36722>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 7) goto <D.36730>; else goto <D.36731>;
      <D.36730>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.36732>; else goto <D.36733>;
      <D.36732>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.36734>; else goto <D.36735>;
      <D.36734>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36735>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36733>:
      D.36736 = mini_get_debug_options ();
      D.36737 = D.36736->break_on_unverified;
      if (D.36737 != 0) goto <D.36738>; else goto unverified;
      <D.36738>:
      raise (5);
      <D.36731>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      D.33632 = *ip;
      D.36443 = (short unsigned int) D.33632;
      ins->opcode = D.36443;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      ip = ip + 1;
      D.36739 = mono_read32 (ip);
      D.36740 = D.36739 + 4;
      target = ip + D.36740;
      ip = ip + 4;
      {
        struct MonoInst * cmp;

        sp = sp + 4294967288;
        D.32755 = cfg->mempool;
        cmp = mono_mempool_alloc (D.32755, 56);
        cmp->data.op[1].const_val = 0;
        D.36741 = cmp->data.op[1].const_val;
        cmp->data.op[0].const_val = D.36741;
        cmp->prev = 0B;
        D.36742 = cmp->prev;
        cmp->next = D.36742;
        cmp->opcode = 322;
        cmp->flags = 0;
        cmp->type = 0;
        cmp->dreg = -1;
        cmp->sreg3 = -1;
        D.36743 = cmp->sreg3;
        cmp->sreg2 = D.36743;
        D.36744 = cmp->sreg2;
        cmp->sreg1 = D.36744;
        D.32979 = cfg->ip;
        cmp->cil_code = D.32979;
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        cmp->sreg1 = D.33943;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        D.34877 = D.34876->dreg;
        cmp->sreg2 = D.34877;
        D.33750 = *sp;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        type_from_op (cmp, D.33750, D.34876);
        D.36745 = cmp->type;
        if (D.36745 == 0) goto <D.36746>; else goto <D.36747>;
        <D.36746>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36748>; else goto <D.36749>;
        <D.36748>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36750>; else goto <D.36751>;
        <D.36750>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36751>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36749>:
        D.36752 = mini_get_debug_options ();
        D.36753 = D.36752->break_on_unverified;
        if (D.36753 != 0) goto <D.36754>; else goto unverified;
        <D.36754>:
        raise (5);
        <D.36747>:
        D.33750 = *sp;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        type_from_op (ins, D.33750, D.34876);
        D.32755 = cfg->mempool;
        D.36755 = mono_mempool_alloc (D.32755, 8);
        ins->data.op[1].many_blocks = D.36755;
        D.32887 = cfg->cil_offset_to_bb;
        target.149 = (int) target;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.36390 = target.149 - D.32892;
        D.36391 = (unsigned int) D.36390;
        D.36392 = D.36391 * 4;
        D.36393 = D.32887 + D.36392;
        tblock = *D.36393;
        if (tblock == 0B) goto <D.36756>; else goto <D.36757>;
        <D.36756>:
        if (target >= end) goto <D.36758>; else goto <D.36760>;
        <D.36760>:
        D.32903 = header->code;
        if (D.32903 > target) goto <D.36758>; else goto <D.36759>;
        <D.36758>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36761>; else goto <D.36762>;
        <D.36761>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36763>; else goto <D.36764>;
        <D.36763>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36764>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36762>:
        D.36765 = mini_get_debug_options ();
        D.36766 = D.36765->break_on_unverified;
        if (D.36766 != 0) goto <D.36767>; else goto unverified;
        <D.36767>:
        raise (5);
        <D.36759>:
        D.32755 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.32755, 172);
        D.32864 = cfg->num_bblocks;
        D.36768 = D.32864;
        D.36769 = D.36768 + 1;
        cfg->num_bblocks = D.36769;
        D.36770 = (int) D.36768;
        tblock->block_num = D.36770;
        tblock->cil_code = target;
        D.32952 = tblock->cil_code;
        if (D.32952 != 0B) goto <D.36771>; else goto <D.36772>;
        <D.36771>:
        D.32887 = cfg->cil_offset_to_bb;
        D.32952 = tblock->cil_code;
        D.32955 = (int) D.32952;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.32956 = D.32955 - D.32892;
        D.32957 = (unsigned int) D.32956;
        D.32958 = D.32957 * 4;
        D.32959 = D.32887 + D.32958;
        *D.32959 = tblock;
        <D.36772>:
        D.32923 = cfg->real_offset;
        tblock->real_offset = D.32923;
        <D.36757>:
        bblock.76 = bblock;
        link_bblock (cfg, bblock.76, tblock);
        D.36479 = ins->data.op[1].many_blocks;
        *D.36479 = tblock;
        if (0 != 0) goto <D.36773>; else goto <D.36774>;
        <D.36773>:
        bblock.76 = bblock;
        link_bblock (cfg, bblock.76, 0B);
        D.36479 = ins->data.op[1].many_blocks;
        D.36482 = D.36479 + 4;
        *D.36482 = 0B;
        start_new_bblock = 1;
        goto <D.36775>;
        <D.36774>:
        D.32887 = cfg->cil_offset_to_bb;
        ip.81 = (int) ip;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.33463 = ip.81 - D.32892;
        D.33464 = (unsigned int) D.33463;
        D.33465 = D.33464 * 4;
        D.33466 = D.32887 + D.33465;
        tblock = *D.33466;
        if (tblock == 0B) goto <D.36776>; else goto <D.36777>;
        <D.36776>:
        if (ip >= end) goto <D.36778>; else goto <D.36780>;
        <D.36780>:
        D.32903 = header->code;
        if (D.32903 > ip) goto <D.36778>; else goto <D.36779>;
        <D.36778>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36781>; else goto <D.36782>;
        <D.36781>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36783>; else goto <D.36784>;
        <D.36783>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36784>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36782>:
        D.36785 = mini_get_debug_options ();
        D.36786 = D.36785->break_on_unverified;
        if (D.36786 != 0) goto <D.36787>; else goto unverified;
        <D.36787>:
        raise (5);
        <D.36779>:
        D.32755 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.32755, 172);
        D.32864 = cfg->num_bblocks;
        D.36788 = D.32864;
        D.36789 = D.36788 + 1;
        cfg->num_bblocks = D.36789;
        D.36790 = (int) D.36788;
        tblock->block_num = D.36790;
        tblock->cil_code = ip;
        D.32952 = tblock->cil_code;
        if (D.32952 != 0B) goto <D.36791>; else goto <D.36792>;
        <D.36791>:
        D.32887 = cfg->cil_offset_to_bb;
        D.32952 = tblock->cil_code;
        D.32955 = (int) D.32952;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.32956 = D.32955 - D.32892;
        D.32957 = (unsigned int) D.32956;
        D.32958 = D.32957 * 4;
        D.32959 = D.32887 + D.32958;
        *D.32959 = tblock;
        <D.36792>:
        D.32923 = cfg->real_offset;
        tblock->real_offset = D.32923;
        <D.36777>:
        bblock.76 = bblock;
        link_bblock (cfg, bblock.76, tblock);
        D.36479 = ins->data.op[1].many_blocks;
        D.36482 = D.36479 + 4;
        *D.36482 = tblock;
        start_new_bblock = 2;
        <D.36775>:
        if (sp != stack_start) goto <D.36793>; else goto <D.36794>;
        <D.36793>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        D.33527 = D.33526 /[ex] 4;
        handle_stack_args (cfg, stack_start, D.33527);
        D.33528 = BIT_FIELD_REF <*cfg, 8, 3400>;
        D.33529 = D.33528 & 32;
        if (D.33529 != 0) goto <D.36795>; else goto <D.36796>;
        <D.36795>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36797>; else goto <D.36798>;
        <D.36797>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36799>; else goto <D.36800>;
        <D.36799>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36800>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36798>:
        D.36801 = mini_get_debug_options ();
        D.36802 = D.36801->break_on_unverified;
        if (D.36802 != 0) goto <D.36803>; else goto unverified;
        <D.36803>:
        raise (5);
        <D.36796>:
        <D.36794>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        if (D.33093 != 0B) goto <D.36804>; else goto <D.36805>;
        <D.36804>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        D.33093->next = cmp;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        cmp->prev = D.33093;
        bblock.76 = bblock;
        bblock.76->last_ins = cmp;
        goto <D.36806>;
        <D.36805>:
        bblock.76 = bblock;
        bblock.76 = bblock;
        bblock.76->last_ins = cmp;
        D.33093 = bblock.76->last_ins;
        bblock.76->code = D.33093;
        <D.36806>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        if (D.33093 != 0B) goto <D.36807>; else goto <D.36808>;
        <D.36807>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        D.33093->next = ins;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        ins->prev = D.33093;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        goto <D.36809>;
        <D.36808>:
        bblock.76 = bblock;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        D.33093 = bblock.76->last_ins;
        bblock.76->code = D.33093;
        <D.36809>:
      }
      sp = stack_start;
      inline_costs = inline_costs + 10;
      goto <D.29893>;
      <D.30135>:
      {
        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.36810 = alloc_preg (cfg);
        offset_reg = (int) D.36810;
        D.36811 = alloc_preg (cfg);
        target_reg = (int) D.36811;
        D.36812 = alloc_preg (cfg);
        table_reg = (int) D.36812;
        D.36813 = alloc_preg (cfg);
        sum_reg = (int) D.36813;
        D.34195 = ip + 5;
        if (D.34195 > end) goto <D.36814>; else goto <D.36815>;
        <D.36814>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36816>; else goto <D.36817>;
        <D.36816>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36818>; else goto <D.36819>;
        <D.36818>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36819>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36817>:
        D.36820 = mini_get_debug_options ();
        D.36821 = D.36820->break_on_unverified;
        if (D.36821 != 0) goto <D.36822>; else goto unverified;
        <D.36822>:
        raise (5);
        <D.36815>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        if (D.33526 <= 3) goto <D.36823>; else goto <D.36824>;
        <D.36823>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36825>; else goto <D.36826>;
        <D.36825>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36827>; else goto <D.36828>;
        <D.36827>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36828>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36826>:
        D.36829 = mini_get_debug_options ();
        D.36830 = D.36829->break_on_unverified;
        if (D.36830 != 0) goto <D.36831>; else goto unverified;
        <D.36831>:
        raise (5);
        <D.36824>:
        D.34214 = ip + 1;
        D.36832 = mono_read32 (D.34214);
        n = (int) D.36832;
        sp = sp + 4294967292;
        src1 = *sp;
        D.36833 = src1->type;
        D.36834 = D.36833 != 1;
        D.36835 = D.36833 != 3;
        D.36836 = D.36834 & D.36835;
        if (D.36836 != 0) goto <D.36837>; else goto <D.36838>;
        <D.36837>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36839>; else goto <D.36840>;
        <D.36839>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36841>; else goto <D.36842>;
        <D.36841>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36842>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36840>:
        D.36843 = mini_get_debug_options ();
        D.36844 = D.36843->break_on_unverified;
        if (D.36844 != 0) goto <D.36845>; else goto unverified;
        <D.36845>:
        raise (5);
        <D.36838>:
        ip = ip + 5;
        n.88 = (unsigned int) n;
        D.33677 = n.88 * 4;
        D.36846 = ip + D.33677;
        if (D.36846 > end) goto <D.36847>; else goto <D.36848>;
        <D.36847>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36849>; else goto <D.36850>;
        <D.36849>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36851>; else goto <D.36852>;
        <D.36851>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36852>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36850>:
        D.36853 = mini_get_debug_options ();
        D.36854 = D.36853->break_on_unverified;
        if (D.36854 != 0) goto <D.36855>; else goto unverified;
        <D.36855>:
        raise (5);
        <D.36848>:
        n.88 = (unsigned int) n;
        D.33677 = n.88 * 4;
        target = ip + D.33677;
        D.32887 = cfg->cil_offset_to_bb;
        target.149 = (int) target;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.36390 = target.149 - D.32892;
        D.36391 = (unsigned int) D.36390;
        D.36392 = D.36391 * 4;
        D.36393 = D.32887 + D.36392;
        default_bblock = *D.36393;
        if (default_bblock == 0B) goto <D.36856>; else goto <D.36857>;
        <D.36856>:
        if (target >= end) goto <D.36858>; else goto <D.36860>;
        <D.36860>:
        D.32903 = header->code;
        if (D.32903 > target) goto <D.36858>; else goto <D.36859>;
        <D.36858>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36861>; else goto <D.36862>;
        <D.36861>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36863>; else goto <D.36864>;
        <D.36863>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36864>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36862>:
        D.36865 = mini_get_debug_options ();
        D.36866 = D.36865->break_on_unverified;
        if (D.36866 != 0) goto <D.36867>; else goto unverified;
        <D.36867>:
        raise (5);
        <D.36859>:
        D.32755 = cfg->mempool;
        default_bblock = mono_mempool_alloc0 (D.32755, 172);
        D.32864 = cfg->num_bblocks;
        D.36868 = D.32864;
        D.36869 = D.36868 + 1;
        cfg->num_bblocks = D.36869;
        D.36870 = (int) D.36868;
        default_bblock->block_num = D.36870;
        default_bblock->cil_code = target;
        D.36871 = default_bblock->cil_code;
        if (D.36871 != 0B) goto <D.36872>; else goto <D.36873>;
        <D.36872>:
        D.32887 = cfg->cil_offset_to_bb;
        D.36871 = default_bblock->cil_code;
        D.36874 = (int) D.36871;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.36875 = D.36874 - D.32892;
        D.36876 = (unsigned int) D.36875;
        D.36877 = D.36876 * 4;
        D.36878 = D.32887 + D.36877;
        *D.36878 = default_bblock;
        <D.36873>:
        D.32923 = cfg->real_offset;
        default_bblock->real_offset = D.32923;
        <D.36857>:
        D.36879 = default_bblock->flags;
        D.36880 = D.36879 | 32;
        default_bblock->flags = D.36880;
        D.32755 = cfg->mempool;
        n.88 = (unsigned int) n;
        D.33677 = n.88 * 4;
        targets = mono_mempool_alloc (D.32755, D.33677);
        i = 0;
        goto <D.30146>;
        <D.30145>:
        D.32887 = cfg->cil_offset_to_bb;
        D.36881 = mono_read32 (ip);
        D.36882 = target + D.36881;
        D.36883 = (int) D.36882;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.36884 = D.36883 - D.32892;
        D.36885 = (unsigned int) D.36884;
        D.36886 = D.36885 * 4;
        D.36887 = D.32887 + D.36886;
        tblock = *D.36887;
        if (tblock == 0B) goto <D.36888>; else goto <D.36889>;
        <D.36888>:
        D.36892 = mono_read32 (ip);
        D.36893 = target + D.36892;
        if (D.36893 >= end) goto <D.36890>; else goto <D.36894>;
        <D.36894>:
        D.36895 = mono_read32 (ip);
        D.36896 = target + D.36895;
        D.32903 = header->code;
        if (D.36896 < D.32903) goto <D.36890>; else goto <D.36891>;
        <D.36890>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36897>; else goto <D.36898>;
        <D.36897>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36899>; else goto <D.36900>;
        <D.36899>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36900>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36898>:
        D.36901 = mini_get_debug_options ();
        D.36902 = D.36901->break_on_unverified;
        if (D.36902 != 0) goto <D.36903>; else goto unverified;
        <D.36903>:
        raise (5);
        <D.36891>:
        D.32755 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.32755, 172);
        D.32864 = cfg->num_bblocks;
        D.36904 = D.32864;
        D.36905 = D.36904 + 1;
        cfg->num_bblocks = D.36905;
        D.36906 = (int) D.36904;
        tblock->block_num = D.36906;
        D.36907 = mono_read32 (ip);
        D.36908 = target + D.36907;
        tblock->cil_code = D.36908;
        D.32952 = tblock->cil_code;
        if (D.32952 != 0B) goto <D.36909>; else goto <D.36910>;
        <D.36909>:
        D.32887 = cfg->cil_offset_to_bb;
        D.32952 = tblock->cil_code;
        D.32955 = (int) D.32952;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.32956 = D.32955 - D.32892;
        D.32957 = (unsigned int) D.32956;
        D.32958 = D.32957 * 4;
        D.32959 = D.32887 + D.32958;
        *D.32959 = tblock;
        <D.36910>:
        D.32923 = cfg->real_offset;
        tblock->real_offset = D.32923;
        <D.36889>:
        i.74 = (unsigned int) i;
        D.33487 = i.74 * 4;
        D.36911 = targets + D.33487;
        *D.36911 = tblock;
        i.74 = (unsigned int) i;
        D.33487 = i.74 * 4;
        D.36911 = targets + D.33487;
        D.36912 = *D.36911;
        i.74 = (unsigned int) i;
        D.33487 = i.74 * 4;
        D.36911 = targets + D.33487;
        D.36912 = *D.36911;
        D.36913 = D.36912->flags;
        D.36914 = D.36913 | 32;
        D.36912->flags = D.36914;
        ip = ip + 4;
        i = i + 1;
        <D.30146>:
        if (i < n) goto <D.30145>; else goto <D.30147>;
        <D.30147>:
        if (sp != stack_start) goto <D.36915>; else goto <D.36916>;
        <D.36915>:
        bblock.76 = bblock;
        link_bblock (cfg, bblock.76, default_bblock);
        i = 0;
        goto <D.30149>;
        <D.30148>:
        bblock.76 = bblock;
        i.74 = (unsigned int) i;
        D.33487 = i.74 * 4;
        D.36911 = targets + D.33487;
        D.36912 = *D.36911;
        link_bblock (cfg, bblock.76, D.36912);
        i = i + 1;
        <D.30149>:
        if (i < n) goto <D.30148>; else goto <D.30150>;
        <D.30150>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        D.33527 = D.33526 /[ex] 4;
        handle_stack_args (cfg, stack_start, D.33527);
        sp = stack_start;
        D.33528 = BIT_FIELD_REF <*cfg, 8, 3400>;
        D.33529 = D.33528 & 32;
        if (D.33529 != 0) goto <D.36917>; else goto <D.36918>;
        <D.36917>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.36919>; else goto <D.36920>;
        <D.36919>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.36921>; else goto <D.36922>;
        <D.36921>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36922>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36920>:
        D.36923 = mini_get_debug_options ();
        D.36924 = D.36923->break_on_unverified;
        if (D.36924 != 0) goto <D.36925>; else goto unverified;
        <D.36925>:
        raise (5);
        <D.36918>:
        <D.36916>:
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.36926 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.36926;
          inst->prev = 0B;
          D.36927 = inst->prev;
          inst->next = D.36927;
          inst->opcode = 327;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.36928 = inst->sreg3;
          inst->sreg2 = D.36928;
          D.36929 = inst->sreg2;
          inst->sreg1 = D.36929;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          inst->dreg = -1;
          D.36930 = src1->dreg;
          inst->sreg1 = D.36930;
          inst->data.op[1].const_val = n;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.36931>; else goto <D.36932>;
          <D.36931>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.36933>;
          <D.36932>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.36933>:
        }
        {
          struct MonoInst * ins;
          struct MonoBasicBlock * falsebb;

          D.32755 = cfg->mempool;
          ins = mono_mempool_alloc (D.32755, 56);
          ins->data.op[1].const_val = 0;
          D.36934 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.36934;
          ins->prev = 0B;
          D.36935 = ins->prev;
          ins->next = D.36935;
          ins->opcode = 654;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.36936 = ins->sreg3;
          ins->sreg2 = D.36936;
          D.36937 = ins->sreg2;
          ins->sreg1 = D.36937;
          D.32979 = cfg->ip;
          ins->cil_code = D.32979;
          if (0 != 0) goto <D.36938>; else goto <D.36939>;
          <D.36938>:
          D.32755 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.32755, 172);
          D.32864 = cfg->num_bblocks;
          D.36940 = D.32864;
          D.36941 = D.36940 + 1;
          cfg->num_bblocks = D.36941;
          D.36942 = (int) D.36940;
          falsebb->block_num = D.36942;
          ins->data.op[0].target_block = default_bblock;
          bblock.125 = cfg->cbb;
          mono_link_bblock (cfg, bblock.125, default_bblock);
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.36943>; else goto <D.36944>;
          <D.36943>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = ins;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          ins->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          goto <D.36945>;
          <D.36944>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.36945>:
          D.36946 = falsebb->cil_code;
          if (D.36946 != 0B) goto <D.36947>; else goto <D.36948>;
          <D.36947>:
          D.32887 = cfg->cil_offset_to_bb;
          D.36946 = falsebb->cil_code;
          D.36949 = (int) D.36946;
          D.32891 = cfg->cil_start;
          D.32892 = (int) D.32891;
          D.36950 = D.36949 - D.32892;
          D.36951 = (unsigned int) D.36950;
          D.36952 = D.36951 * 4;
          D.36953 = D.32887 + D.36952;
          *D.36953 = falsebb;
          <D.36948>:
          D.32923 = cfg->real_offset;
          falsebb->real_offset = D.32923;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.36957>; else goto <D.36954>;
          <D.36957>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.36958 = D.33008->opcode;
          D.36959 = D.36958 + 64985;
          D.36960 = D.36959 <= 9;
          D.36961 = D.36958 + 64878;
          D.36962 = D.36961 <= 9;
          D.36963 = D.36960 | D.36962;
          if (D.36963 != 0) goto <D.36955>; else goto <D.36964>;
          <D.36964>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.36965 = D.33008->opcode;
          D.36966 = D.36965 + 64888;
          if (D.36966 <= 9) goto <D.36955>; else goto <D.36954>;
          <D.36955>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.36967 = D.33008->data.op[1].many_blocks;
          D.36968 = D.36967 + 4;
          D.36969 = *D.36968;
          if (D.36969 == 0B) goto <D.36970>; else goto <D.36954>;
          <D.36970>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.36967 = D.33008->data.op[1].many_blocks;
          D.36968 = D.36967 + 4;
          *D.36968 = falsebb;
          bblock.125 = cfg->cbb;
          mono_link_bblock (cfg, bblock.125, falsebb);
          goto <D.36956>;
          <D.36954>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 == 0B) goto <D.36971>; else goto <D.36973>;
          <D.36973>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.36974 = D.33008->opcode;
          D.36975 = D.36974 != 442;
          D.36976 = D.36974 != 759;
          D.36977 = D.36975 & D.36976;
          if (D.36977 != 0) goto <D.36978>; else goto <D.36972>;
          <D.36978>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.36979 = D.33008->opcode;
          D.36980 = D.36979 + 64985;
          D.36981 = D.36980 > 9;
          D.36982 = D.36979 + 64878;
          D.36983 = D.36982 > 9;
          D.36984 = D.36981 & D.36983;
          if (D.36984 != 0) goto <D.36985>; else goto <D.36972>;
          <D.36985>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.36965 = D.33008->opcode;
          D.36966 = D.36965 + 64888;
          if (D.36966 > 9) goto <D.36971>; else goto <D.36972>;
          <D.36971>:
          bblock.125 = cfg->cbb;
          mono_link_bblock (cfg, bblock.125, falsebb);
          <D.36972>:
          <D.36956>:
          bblock.125 = cfg->cbb;
          bblock.125->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.36986>;
          <D.36939>:
          D.32755 = cfg->mempool;
          D.36987 = mono_mempool_alloc (D.32755, 8);
          ins->data.op[1].many_blocks = D.36987;
          D.36988 = ins->data.op[1].many_blocks;
          *D.36988 = default_bblock;
          D.36988 = ins->data.op[1].many_blocks;
          D.36989 = D.36988 + 4;
          *D.36989 = 0B;
          bblock.125 = cfg->cbb;
          mono_link_bblock (cfg, bblock.125, default_bblock);
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.36990>; else goto <D.36991>;
          <D.36990>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = ins;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          ins->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          goto <D.36992>;
          <D.36991>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.36992>:
          D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.36993 = D.33150 & 8;
          if (D.36993 == 0) goto <D.36994>; else goto <D.36995>;
          <D.36994>:
          D.32755 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.32755, 172);
          D.32864 = cfg->num_bblocks;
          D.36996 = D.32864;
          D.36997 = D.36996 + 1;
          cfg->num_bblocks = D.36997;
          D.36998 = (int) D.36996;
          falsebb->block_num = D.36998;
          D.36988 = ins->data.op[1].many_blocks;
          D.36989 = D.36988 + 4;
          *D.36989 = falsebb;
          bblock.125 = cfg->cbb;
          mono_link_bblock (cfg, bblock.125, falsebb);
          D.36946 = falsebb->cil_code;
          if (D.36946 != 0B) goto <D.36999>; else goto <D.37000>;
          <D.36999>:
          D.32887 = cfg->cil_offset_to_bb;
          D.36946 = falsebb->cil_code;
          D.36949 = (int) D.36946;
          D.32891 = cfg->cil_start;
          D.32892 = (int) D.32891;
          D.36950 = D.36949 - D.32892;
          D.36951 = (unsigned int) D.36950;
          D.36952 = D.36951 * 4;
          D.36953 = D.32887 + D.36952;
          *D.36953 = falsebb;
          <D.37000>:
          D.32923 = cfg->real_offset;
          falsebb->real_offset = D.32923;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.37004>; else goto <D.37001>;
          <D.37004>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.37005 = D.33008->opcode;
          D.37006 = D.37005 + 64985;
          D.37007 = D.37006 <= 9;
          D.37008 = D.37005 + 64878;
          D.37009 = D.37008 <= 9;
          D.37010 = D.37007 | D.37009;
          if (D.37010 != 0) goto <D.37002>; else goto <D.37011>;
          <D.37011>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.36965 = D.33008->opcode;
          D.36966 = D.36965 + 64888;
          if (D.36966 <= 9) goto <D.37002>; else goto <D.37001>;
          <D.37002>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.36967 = D.33008->data.op[1].many_blocks;
          D.36968 = D.36967 + 4;
          D.36969 = *D.36968;
          if (D.36969 == 0B) goto <D.37012>; else goto <D.37001>;
          <D.37012>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.36967 = D.33008->data.op[1].many_blocks;
          D.36968 = D.36967 + 4;
          *D.36968 = falsebb;
          bblock.125 = cfg->cbb;
          mono_link_bblock (cfg, bblock.125, falsebb);
          goto <D.37003>;
          <D.37001>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 == 0B) goto <D.37013>; else goto <D.37015>;
          <D.37015>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.37016 = D.33008->opcode;
          D.37017 = D.37016 != 442;
          D.37018 = D.37016 != 759;
          D.37019 = D.37017 & D.37018;
          if (D.37019 != 0) goto <D.37020>; else goto <D.37014>;
          <D.37020>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.37021 = D.33008->opcode;
          D.37022 = D.37021 + 64985;
          D.37023 = D.37022 > 9;
          D.37024 = D.37021 + 64878;
          D.37025 = D.37024 > 9;
          D.37026 = D.37023 & D.37025;
          if (D.37026 != 0) goto <D.37027>; else goto <D.37014>;
          <D.37027>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.36965 = D.33008->opcode;
          D.36966 = D.36965 + 64888;
          if (D.36966 > 9) goto <D.37013>; else goto <D.37014>;
          <D.37013>:
          bblock.125 = cfg->cbb;
          mono_link_bblock (cfg, bblock.125, falsebb);
          <D.37014>:
          <D.37003>:
          bblock.125 = cfg->cbb;
          bblock.125->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.37028>;
          <D.36995>:
          bblock.125 = cfg->cbb;
          bblock.125->extended = 1;
          <D.37028>:
          <D.36986>:
        }
        bblock.125 = cfg->cbb;
        bblock = bblock.125;
        i = 0;
        goto <D.30155>;
        <D.30154>:
        bblock.76 = bblock;
        i.74 = (unsigned int) i;
        D.33487 = i.74 * 4;
        D.36911 = targets + D.33487;
        D.36912 = *D.36911;
        link_bblock (cfg, bblock.76, D.36912);
        i = i + 1;
        <D.30155>:
        if (i < n) goto <D.30154>; else goto <D.30156>;
        <D.30156>:
        D.32755 = cfg->mempool;
        table = mono_mempool_alloc (D.32755, 8);
        table->table = targets;
        table->table_size = n;
        use_op_switch = 0;
        D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.33151 = D.33150 & 64;
        if (D.33151 == 0) goto <D.37029>; else goto <D.37030>;
        <D.37029>:
        use_op_switch = 1;
        <D.37030>:
        if (0 != 0) goto <D.37031>; else goto <D.37032>;
        <D.37031>:
        use_op_switch = 1;
        <D.37032>:
        bblock.125 = cfg->cbb;
        bblock.125->has_jump_table = 1;
        if (use_op_switch != 0) goto <D.37033>; else goto <D.37034>;
        <D.37033>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 370;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        D.36930 = src1->dreg;
        ins->sreg1 = D.36930;
        ins->data.op[0].p = table;
        ins->data.op[1].many_blocks = targets;
        n.153 = (struct MonoClass *) n;
        ins->klass = n.153;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.37036>; else goto <D.37037>;
        <D.37036>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.37038>;
        <D.37037>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.37038>:
        goto <D.37039>;
        <D.37034>:
        if (0 != 0) goto <D.37040>; else goto <D.37041>;
        <D.37040>:
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.37042 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.37042;
          inst->prev = 0B;
          D.37043 = inst->prev;
          inst->next = D.37043;
          inst->opcode = 439;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.37044 = inst->sreg3;
          inst->sreg2 = D.37044;
          D.37045 = inst->sreg2;
          inst->sreg1 = D.37045;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          inst->dreg = offset_reg;
          D.36930 = src1->dreg;
          inst->sreg1 = D.36930;
          inst->data.op[1].const_val = 3;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.37046>; else goto <D.37047>;
          <D.37046>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.37048>;
          <D.37047>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.37048>:
        }
        goto <D.37049>;
        <D.37041>:
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.37050 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.37050;
          inst->prev = 0B;
          D.37051 = inst->prev;
          inst->next = D.37051;
          inst->opcode = 439;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.37052 = inst->sreg3;
          inst->sreg2 = D.37052;
          D.37053 = inst->sreg2;
          inst->sreg1 = D.37053;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          inst->dreg = offset_reg;
          D.36930 = src1->dreg;
          inst->sreg1 = D.36930;
          inst->data.op[1].const_val = 2;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.37054>; else goto <D.37055>;
          <D.37054>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.37056>;
          <D.37055>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.37056>:
        }
        <D.37049>:
        D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.33151 = D.33150 & 64;
        if (D.33151 != 0) goto <D.37057>; else goto <D.37058>;
        <D.37057>:
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.37059 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.37059;
          inst->prev = 0B;
          D.37060 = inst->prev;
          inst->next = D.37060;
          D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.33151 = D.33150 & 64;
          if (D.33151 != 0) goto <D.37062>; else goto <D.37063>;
          <D.37062>:
          iftmp.154 = 732;
          goto <D.37064>;
          <D.37063>:
          iftmp.154 = 362;
          <D.37064>:
          inst->opcode = iftmp.154;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.37065 = inst->sreg3;
          inst->sreg2 = D.37065;
          D.37066 = inst->sreg2;
          inst->sreg1 = D.37066;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          inst->dreg = table_reg;
          inst->data.op[0].p = table;
          inst->data.op[1].const_val = 8;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.37067>; else goto <D.37068>;
          <D.37067>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.37069>;
          <D.37068>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.37069>:
        }
        goto <D.37070>;
        <D.37058>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 731;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        ins->data.op[1].const_val = 8;
        ins->data.op[0].p = table;
        ins->dreg = table_reg;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.37071>; else goto <D.37072>;
        <D.37071>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.37073>;
        <D.37072>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.37073>:
        <D.37070>:
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.37074 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.37074;
          inst->prev = 0B;
          D.37075 = inst->prev;
          inst->next = D.37075;
          inst->opcode = 565;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.37076 = inst->sreg3;
          inst->sreg2 = D.37076;
          D.37077 = inst->sreg2;
          inst->sreg1 = D.37077;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          inst->dreg = sum_reg;
          inst->sreg1 = table_reg;
          inst->sreg2 = offset_reg;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.37078>; else goto <D.37079>;
          <D.37078>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.37080>;
          <D.37079>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.37080>:
        }
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.37081 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.37081;
          inst->prev = 0B;
          D.37082 = inst->prev;
          inst->next = D.37082;
          inst->opcode = 388;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.37083 = inst->sreg3;
          inst->sreg2 = D.37083;
          D.37084 = inst->sreg2;
          inst->sreg1 = D.37084;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          inst->dreg = target_reg;
          inst->sreg1 = sum_reg;
          inst->data.op[0].const_val = 0;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.37085>; else goto <D.37086>;
          <D.37085>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.37087>;
          <D.37086>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.37087>:
        }
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.37088 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.37088;
          inst->prev = 0B;
          D.37089 = inst->prev;
          inst->next = D.37089;
          inst->opcode = 759;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.37090 = inst->sreg3;
          inst->sreg2 = D.37090;
          D.37091 = inst->sreg2;
          inst->sreg1 = D.37091;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          inst->dreg = -1;
          inst->sreg1 = target_reg;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.37092>; else goto <D.37093>;
          <D.37092>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.37094>;
          <D.37093>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.37094>:
        }
        <D.37039>:
        start_new_bblock = 1;
        inline_costs = inline_costs + 20;
        goto <D.29893>;
      }
      <D.30163>:
      <D.30164>:
      <D.30165>:
      <D.30166>:
      <D.30167>:
      <D.30168>:
      <D.30169>:
      <D.30170>:
      <D.30171>:
      <D.30172>:
      <D.30173>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.37095>; else goto <D.37096>;
      <D.37095>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37097>; else goto <D.37098>;
      <D.37097>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37099>; else goto <D.37100>;
      <D.37099>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37100>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37098>:
      D.37101 = mini_get_debug_options ();
      D.37102 = D.37101->break_on_unverified;
      if (D.37102 != 0) goto <D.37103>; else goto unverified;
      <D.37103>:
      raise (5);
      <D.37096>:
      sp = sp + 4294967292;
      D.33632 = *ip;
      D.33633 = (int) D.33632;
      switch (D.33633) <default: <D.30179>, case 76: <D.30177>, case 78: <D.30174>, case 79: <D.30175>, case 80: <D.30178>>
      <D.30174>:
      <D.30175>:
      D.37104 = alloc_freg (cfg);
      dreg = (int) D.37104;
      goto <D.30176>;
      <D.30177>:
      D.37105 = alloc_lreg (cfg);
      dreg = (int) D.37105;
      goto <D.30176>;
      <D.30178>:
      D.37106 = alloc_ireg_ref (cfg);
      dreg = (int) D.37106;
      goto <D.30176>;
      <D.30179>:
      D.37107 = alloc_preg (cfg);
      dreg = (int) D.37107;
      <D.30176>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      D.33632 = *ip;
      D.33633 = (int) D.33632;
      D.37108 = ldind_to_load_membase (D.33633);
      D.37109 = (short unsigned int) D.37108;
      ins->opcode = D.37109;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      ins->dreg = dreg;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      ins->data.op[0].const_val = 0;
      ins->type = 1;
      D.33632 = *ip;
      D.33633 = (int) D.33632;
      D.37110 = D.33633 + -70;
      D.37111 = ldind_type[D.37110];
      ins->type = D.37111;
      D.33600 = ins->flags;
      D.37112 = (unsigned char) ins_flag;
      D.37113 = D.33600 | D.37112;
      ins->flags = D.37113;
      ins_flag = 0;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      if (D.33093 != 0B) goto <D.37114>; else goto <D.37115>;
      <D.37114>:
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      D.33093->next = ins;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      ins->prev = D.33093;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      goto <D.37116>;
      <D.37115>:
      bblock.76 = bblock;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      D.33093 = bblock.76->last_ins;
      bblock.76->code = D.33093;
      <D.37116>:
      sp.155 = sp;
      sp = sp.155 + 4;
      *sp.155 = ins;
      D.33600 = ins->flags;
      D.37118 = (int) D.33600;
      D.37119 = D.37118 & 4;
      if (D.37119 != 0) goto <D.37120>; else goto <D.37121>;
      <D.37120>:
      emit_memory_barrier (cfg, 4);
      <D.37121>:
      ip = ip + 1;
      goto <D.29893>;
      <D.30180>:
      <D.30181>:
      <D.30182>:
      <D.30183>:
      <D.30184>:
      <D.30185>:
      <D.30186>:
      <D.30187>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 7) goto <D.37122>; else goto <D.37123>;
      <D.37122>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37124>; else goto <D.37125>;
      <D.37124>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37126>; else goto <D.37127>;
      <D.37126>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37127>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37125>:
      D.37128 = mini_get_debug_options ();
      D.37129 = D.37128->break_on_unverified;
      if (D.37129 != 0) goto <D.37130>; else goto unverified;
      <D.37130>:
      raise (5);
      <D.37123>:
      sp = sp + 4294967288;
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      D.33632 = *ip;
      D.33633 = (int) D.33632;
      D.37131 = stind_to_store_membase (D.33633);
      D.37132 = (short unsigned int) D.37131;
      ins->opcode = D.37132;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      D.34877 = D.34876->dreg;
      ins->sreg1 = D.34877;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->dreg = D.33943;
      ins->data.op[0].const_val = 0;
      D.33600 = ins->flags;
      D.37112 = (unsigned char) ins_flag;
      D.37113 = D.33600 | D.37112;
      ins->flags = D.37113;
      ins_flag = 0;
      D.33600 = ins->flags;
      D.37118 = (int) D.33600;
      D.37119 = D.37118 & 4;
      if (D.37119 != 0) goto <D.37133>; else goto <D.37134>;
      <D.37133>:
      emit_memory_barrier (cfg, 4);
      <D.37134>:
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      if (D.33093 != 0B) goto <D.37135>; else goto <D.37136>;
      <D.37135>:
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      D.33093->next = ins;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      ins->prev = D.33093;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      goto <D.37137>;
      <D.37136>:
      bblock.76 = bblock;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      D.33093 = bblock.76->last_ins;
      bblock.76->code = D.33093;
      <D.37137>:
      D.35961 = BIT_FIELD_REF <*cfg, 8, 3416>;
      D.35962 = D.35961 & 16;
      if (D.35962 != 0) goto <D.37140>; else goto <D.37141>;
      <D.37140>:
      D.33632 = *ip;
      if (D.33632 == 81) goto <D.37142>; else goto <D.37143>;
      <D.37142>:
      D.32698 = BIT_FIELD_REF <*method, 8, 160>;
      D.32699 = D.32698 & 124;
      if (D.32699 != 96) goto <D.37144>; else goto <D.37145>;
      <D.37144>:
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      D.37146 = D.34876->opcode;
      if (D.37146 != 362) goto <D.37138>; else goto <D.37147>;
      <D.37147>:
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      D.37148 = D.34876->data.op[0].p;
      if (D.37148 != 0B) goto <D.37138>; else goto <D.37139>;
      <D.37138>:
      D.33750 = *sp;
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      emit_write_barrier (cfg, D.33750, D.34876);
      <D.37139>:
      <D.37145>:
      <D.37143>:
      <D.37141>:
      inline_costs = inline_costs + 1;
      ip = ip + 1;
      goto <D.29893>;
      <D.30188>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 7) goto <D.37149>; else goto <D.37150>;
      <D.37149>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37151>; else goto <D.37152>;
      <D.37151>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37153>; else goto <D.37154>;
      <D.37153>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37154>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37152>:
      D.37155 = mini_get_debug_options ();
      D.37156 = D.37155->break_on_unverified;
      if (D.37156 != 0) goto <D.37157>; else goto unverified;
      <D.37157>:
      raise (5);
      <D.37150>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      D.33632 = *ip;
      D.36443 = (short unsigned int) D.33632;
      ins->opcode = D.36443;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      sp = sp + 4294967288;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      D.34877 = D.34876->dreg;
      ins->sreg2 = D.34877;
      D.33750 = *sp;
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      type_from_op (ins, D.33750, D.34876);
      D.33501 = ins->type;
      if (D.33501 == 0) goto <D.37158>; else goto <D.37159>;
      <D.37158>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37160>; else goto <D.37161>;
      <D.37160>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37162>; else goto <D.37163>;
      <D.37162>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37163>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37161>:
      D.37164 = mini_get_debug_options ();
      D.37165 = D.37164->break_on_unverified;
      if (D.37165 != 0) goto <D.37166>; else goto unverified;
      <D.37166>:
      raise (5);
      <D.37159>:
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.37167 = alloc_dreg (cfg, D.33502);
      D.37168 = (int) D.37167;
      ins->dreg = D.37168;
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      D.37146 = D.34876->opcode;
      if (D.37146 == 362) goto <D.37169>; else goto <D.37170>;
      <D.37169>:
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      D.37171 = D.34876->data.op[0].const_val;
      D.37172 = (long long int) D.37171;
      D.37173 = mono_arch_is_inst_imm (D.37172);
      if (D.37173 != 0) goto <D.37174>; else goto <D.37175>;
      <D.37174>:
      {
        int imm_opcode;

        D.33505 = ins->opcode;
        D.37176 = (int) D.33505;
        imm_opcode = mono_op_to_op_imm_noemul (D.37176);
        if (imm_opcode != -1) goto <D.37177>; else goto <D.37178>;
        <D.37177>:
        D.37179 = (short unsigned int) imm_opcode;
        ins->opcode = D.37179;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        D.37171 = D.34876->data.op[0].const_val;
        D.37180 = (void *) D.37171;
        ins->data.op[1].p = D.37180;
        ins->sreg2 = -1;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        D.34876->opcode = 316;
        <D.37178>:
      }
      <D.37175>:
      <D.37170>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.37181>; else goto <D.37182>;
      <D.37181>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.37183>;
      <D.37182>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.37183>:
      sp.156 = sp;
      sp = sp.156 + 4;
      D.37185 = mono_decompose_opcode (cfg, ins);
      *sp.156 = D.37185;
      ip = ip + 1;
      goto <D.29893>;
      <D.30190>:
      <D.30191>:
      <D.30192>:
      <D.30193>:
      <D.30194>:
      <D.30195>:
      <D.30196>:
      <D.30197>:
      <D.30198>:
      <D.30199>:
      <D.30200>:
      <D.30201>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 7) goto <D.37186>; else goto <D.37187>;
      <D.37186>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37188>; else goto <D.37189>;
      <D.37188>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37190>; else goto <D.37191>;
      <D.37190>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37191>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37189>:
      D.37192 = mini_get_debug_options ();
      D.37193 = D.37192->break_on_unverified;
      if (D.37193 != 0) goto <D.37194>; else goto unverified;
      <D.37194>:
      raise (5);
      <D.37187>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      D.33632 = *ip;
      D.36443 = (short unsigned int) D.33632;
      ins->opcode = D.36443;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      sp = sp + 4294967288;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      D.34877 = D.34876->dreg;
      ins->sreg2 = D.34877;
      D.33750 = *sp;
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      type_from_op (ins, D.33750, D.34876);
      D.33501 = ins->type;
      if (D.33501 == 0) goto <D.37195>; else goto <D.37196>;
      <D.37195>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37197>; else goto <D.37198>;
      <D.37197>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37199>; else goto <D.37200>;
      <D.37199>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37200>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37198>:
      D.37201 = mini_get_debug_options ();
      D.37202 = D.37201->break_on_unverified;
      if (D.37202 != 0) goto <D.37203>; else goto unverified;
      <D.37203>:
      raise (5);
      <D.37196>:
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.37204 = alloc_dreg (cfg, D.33502);
      D.37205 = (int) D.37204;
      ins->dreg = D.37205;
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      D.37146 = D.34876->opcode;
      D.37206 = D.37146 + 65174;
      if (D.37206 <= 1) goto <D.37207>; else goto <D.37208>;
      <D.37207>:
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      D.37146 = D.34876->opcode;
      if (D.37146 == 362) goto <D.37210>; else goto <D.37211>;
      <D.37210>:
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      D.37171 = D.34876->data.op[0].const_val;
      iftmp.157 = (gint64) D.37171;
      goto <D.37212>;
      <D.37211>:
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      iftmp.157 = D.34876->data.i8const;
      <D.37212>:
      D.37213 = mono_arch_is_inst_imm (iftmp.157);
      if (D.37213 != 0) goto <D.37214>; else goto <D.37215>;
      <D.37214>:
      {
        int imm_opcode;

        D.33505 = ins->opcode;
        D.37176 = (int) D.33505;
        imm_opcode = mono_op_to_op_imm_noemul (D.37176);
        D.37216 = ins->opcode;
        D.37217 = D.37216 == 571;
        D.37218 = D.37216 == 629;
        D.37219 = D.37217 | D.37218;
        if (D.37219 != 0) goto <D.37220>; else goto <D.37221>;
        <D.37220>:
        D.33148 = cfg->opt;
        D.37222 = D.33148 & 48;
        if (D.37222 != 0) goto <D.37223>; else goto <D.37224>;
        <D.37223>:
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        D.37146 = D.34876->opcode;
        if (D.37146 == 362) goto <D.37225>; else goto <D.37226>;
        <D.37225>:
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        D.37171 = D.34876->data.op[0].const_val;
        D.37227 = (unsigned int) D.37171;
        D.37228 = mono_is_power_of_two (D.37227);
        if (D.37228 >= 0) goto <D.37229>; else goto <D.37230>;
        <D.37229>:
        D.33505 = ins->opcode;
        D.37176 = (int) D.33505;
        imm_opcode = mono_op_to_op_imm (D.37176);
        <D.37230>:
        <D.37226>:
        <D.37224>:
        <D.37221>:
        if (imm_opcode != -1) goto <D.37231>; else goto <D.37232>;
        <D.37231>:
        D.37233 = (short unsigned int) imm_opcode;
        ins->opcode = D.37233;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        D.37146 = D.34876->opcode;
        if (D.37146 == 363) goto <D.37234>; else goto <D.37235>;
        <D.37234>:
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        D.37171 = D.34876->data.op[0].const_val;
        ins->data.op[0].const_val = D.37171;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        D.37236 = D.34876->data.op[1].const_val;
        ins->data.op[1].const_val = D.37236;
        goto <D.37237>;
        <D.37235>:
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        D.37171 = D.34876->data.op[0].const_val;
        ins->data.op[1].const_val = D.37171;
        <D.37237>:
        ins->sreg2 = -1;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        D.37238 = D.34876->next;
        if (D.37238 == 0B) goto <D.37239>; else goto <D.37240>;
        <D.37239>:
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        D.34876->opcode = 316;
        <D.37240>:
        <D.37232>:
      }
      <D.37215>:
      <D.37208>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.37241>; else goto <D.37242>;
      <D.37241>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.37243>;
      <D.37242>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.37243>:
      sp.158 = sp;
      sp = sp.158 + 4;
      D.37245 = mono_decompose_opcode (cfg, ins);
      *sp.158 = D.37245;
      ip = ip + 1;
      goto <D.29893>;
      <D.30203>:
      <D.30204>:
      <D.30205>:
      <D.30206>:
      <D.30207>:
      <D.30208>:
      <D.30209>:
      <D.30210>:
      <D.30211>:
      <D.30212>:
      <D.30213>:
      <D.30214>:
      <D.30215>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.37246>; else goto <D.37247>;
      <D.37246>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37248>; else goto <D.37249>;
      <D.37248>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37250>; else goto <D.37251>;
      <D.37250>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37251>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37249>:
      D.37252 = mini_get_debug_options ();
      D.37253 = D.37252->break_on_unverified;
      if (D.37253 != 0) goto <D.37254>; else goto unverified;
      <D.37254>:
      raise (5);
      <D.37247>:
      D.37257 = *ip;
      D.37258 = D.37257 == 106;
      D.37259 = D.37257 == 110;
      D.37260 = D.37258 | D.37259;
      if (D.37260 != 0) goto <D.37261>; else goto <D.37255>;
      <D.37261>:
      D.36589 = sp + 4294967292;
      D.36590 = *D.36589;
      D.37262 = D.36590->opcode;
      if (D.37262 == 362) goto <D.37263>; else goto <D.37255>;
      <D.37263>:
      {
        int data;

        D.36589 = sp + 4294967292;
        D.36590 = *D.36589;
        data = D.36590->data.op[0].const_val;
        D.36589 = sp + 4294967292;
        D.36590 = *D.36589;
        D.36590->opcode = 363;
        D.36589 = sp + 4294967292;
        D.36590 = *D.36589;
        D.36590->type = 2;
        D.36589 = sp + 4294967292;
        D.36590 = *D.36589;
        D.36590->data.op[0].const_val = data;
        D.33632 = *ip;
        if (D.33632 == 110) goto <D.37264>; else goto <D.37265>;
        <D.37264>:
        D.36589 = sp + 4294967292;
        D.36590 = *D.36589;
        D.36590->data.op[1].const_val = 0;
        goto <D.37266>;
        <D.37265>:
        D.36589 = sp + 4294967292;
        D.36590 = *D.36589;
        if (data < 0) goto <D.37268>; else goto <D.37269>;
        <D.37268>:
        iftmp.159 = -1;
        goto <D.37270>;
        <D.37269>:
        iftmp.159 = 0;
        <D.37270>:
        D.36590->data.op[1].const_val = iftmp.159;
        <D.37266>:
        D.36589 = sp + 4294967292;
        D.36590 = *D.36589;
        D.37271 = alloc_dreg (cfg, 2);
        D.37272 = (int) D.37271;
        D.36590->dreg = D.37272;
      }
      goto <D.37256>;
      <D.37255>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      D.33632 = *ip;
      D.36443 = (short unsigned int) D.33632;
      ins->opcode = D.36443;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      sp = sp + 4294967292;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      D.33750 = *sp;
      type_from_op (ins, D.33750, 0B);
      D.33501 = ins->type;
      if (D.33501 == 0) goto <D.37273>; else goto <D.37274>;
      <D.37273>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37275>; else goto <D.37276>;
      <D.37275>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37277>; else goto <D.37278>;
      <D.37277>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37278>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37276>:
      D.37279 = mini_get_debug_options ();
      D.37280 = D.37279->break_on_unverified;
      if (D.37280 != 0) goto <D.37281>; else goto unverified;
      <D.37281>:
      raise (5);
      <D.37274>:
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.37282 = alloc_dreg (cfg, D.33502);
      D.37283 = (int) D.37282;
      ins->dreg = D.37283;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.37284>; else goto <D.37285>;
      <D.37284>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.37286>;
      <D.37285>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.37286>:
      sp.160 = sp;
      sp = sp.160 + 4;
      D.37288 = mono_decompose_opcode (cfg, ins);
      *sp.160 = D.37288;
      <D.37256>:
      ip = ip + 1;
      goto <D.29893>;
      <D.30217>:
      <D.30218>:
      <D.30219>:
      <D.30220>:
      <D.30221>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.37289>; else goto <D.37290>;
      <D.37289>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37291>; else goto <D.37292>;
      <D.37291>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37293>; else goto <D.37294>;
      <D.37293>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37294>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37292>:
      D.37295 = mini_get_debug_options ();
      D.37296 = D.37295->break_on_unverified;
      if (D.37296 != 0) goto <D.37297>; else goto unverified;
      <D.37297>:
      raise (5);
      <D.37290>:
      D.36589 = sp + 4294967292;
      D.36590 = *D.36589;
      D.37298 = D.36590->type;
      if (D.37298 == 4) goto <D.37299>; else goto <D.37300>;
      <D.37299>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 185;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      sp = sp + 4294967292;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      D.33750 = *sp;
      type_from_op (ins, D.33750, 0B);
      D.33501 = ins->type;
      if (D.33501 == 0) goto <D.37301>; else goto <D.37302>;
      <D.37301>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37303>; else goto <D.37304>;
      <D.37303>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37305>; else goto <D.37306>;
      <D.37305>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37306>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37304>:
      D.37307 = mini_get_debug_options ();
      D.37308 = D.37307->break_on_unverified;
      if (D.37308 != 0) goto <D.37309>; else goto unverified;
      <D.37309>:
      raise (5);
      <D.37302>:
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.37310 = alloc_dreg (cfg, D.33502);
      D.37311 = (int) D.37310;
      ins->dreg = D.37311;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.37312>; else goto <D.37313>;
      <D.37312>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.37314>;
      <D.37313>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.37314>:
      sp.161 = sp;
      sp = sp.161 + 4;
      D.37316 = mono_decompose_opcode (cfg, ins);
      *sp.161 = D.37316;
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      D.33632 = *ip;
      D.36443 = (short unsigned int) D.33632;
      ins->opcode = D.36443;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      sp = sp + 4294967292;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      D.33750 = *sp;
      type_from_op (ins, D.33750, 0B);
      D.33501 = ins->type;
      if (D.33501 == 0) goto <D.37317>; else goto <D.37318>;
      <D.37317>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37319>; else goto <D.37320>;
      <D.37319>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37321>; else goto <D.37322>;
      <D.37321>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37322>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37320>:
      D.37323 = mini_get_debug_options ();
      D.37324 = D.37323->break_on_unverified;
      if (D.37324 != 0) goto <D.37325>; else goto unverified;
      <D.37325>:
      raise (5);
      <D.37318>:
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.37326 = alloc_dreg (cfg, D.33502);
      D.37327 = (int) D.37326;
      ins->dreg = D.37327;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.37328>; else goto <D.37329>;
      <D.37328>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.37330>;
      <D.37329>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.37330>:
      sp.162 = sp;
      sp = sp.162 + 4;
      D.37332 = mono_decompose_opcode (cfg, ins);
      *sp.162 = D.37332;
      goto <D.37333>;
      <D.37300>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      D.33632 = *ip;
      D.36443 = (short unsigned int) D.33632;
      ins->opcode = D.36443;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      sp = sp + 4294967292;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      D.33750 = *sp;
      type_from_op (ins, D.33750, 0B);
      D.33501 = ins->type;
      if (D.33501 == 0) goto <D.37334>; else goto <D.37335>;
      <D.37334>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37336>; else goto <D.37337>;
      <D.37336>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37338>; else goto <D.37339>;
      <D.37338>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37339>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37337>:
      D.37340 = mini_get_debug_options ();
      D.37341 = D.37340->break_on_unverified;
      if (D.37341 != 0) goto <D.37342>; else goto unverified;
      <D.37342>:
      raise (5);
      <D.37335>:
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.37343 = alloc_dreg (cfg, D.33502);
      D.37344 = (int) D.37343;
      ins->dreg = D.37344;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.37345>; else goto <D.37346>;
      <D.37345>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.37347>;
      <D.37346>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.37347>:
      sp.163 = sp;
      sp = sp.163 + 4;
      D.37349 = mono_decompose_opcode (cfg, ins);
      *sp.163 = D.37349;
      <D.37333>:
      ip = ip + 1;
      goto <D.29893>;
      <D.30222>:
      <D.30223>:
      <D.30224>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.37350>; else goto <D.37351>;
      <D.37350>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37352>; else goto <D.37353>;
      <D.37352>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37354>; else goto <D.37355>;
      <D.37354>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37355>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37353>:
      D.37356 = mini_get_debug_options ();
      D.37357 = D.37356->break_on_unverified;
      if (D.37357 != 0) goto <D.37358>; else goto unverified;
      <D.37358>:
      raise (5);
      <D.37351>:
      D.36589 = sp + 4294967292;
      D.36590 = *D.36589;
      D.37298 = D.36590->type;
      if (D.37298 == 4) goto <D.37359>; else goto <D.37360>;
      <D.37359>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 186;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      sp = sp + 4294967292;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      D.33750 = *sp;
      type_from_op (ins, D.33750, 0B);
      D.33501 = ins->type;
      if (D.33501 == 0) goto <D.37361>; else goto <D.37362>;
      <D.37361>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37363>; else goto <D.37364>;
      <D.37363>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37365>; else goto <D.37366>;
      <D.37365>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37366>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37364>:
      D.37367 = mini_get_debug_options ();
      D.37368 = D.37367->break_on_unverified;
      if (D.37368 != 0) goto <D.37369>; else goto unverified;
      <D.37369>:
      raise (5);
      <D.37362>:
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.37370 = alloc_dreg (cfg, D.33502);
      D.37371 = (int) D.37370;
      ins->dreg = D.37371;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.37372>; else goto <D.37373>;
      <D.37372>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.37374>;
      <D.37373>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.37374>:
      sp.164 = sp;
      sp = sp.164 + 4;
      D.37376 = mono_decompose_opcode (cfg, ins);
      *sp.164 = D.37376;
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      D.33632 = *ip;
      D.36443 = (short unsigned int) D.33632;
      ins->opcode = D.36443;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      sp = sp + 4294967292;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      D.33750 = *sp;
      type_from_op (ins, D.33750, 0B);
      D.33501 = ins->type;
      if (D.33501 == 0) goto <D.37377>; else goto <D.37378>;
      <D.37377>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37379>; else goto <D.37380>;
      <D.37379>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37381>; else goto <D.37382>;
      <D.37381>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37382>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37380>:
      D.37383 = mini_get_debug_options ();
      D.37384 = D.37383->break_on_unverified;
      if (D.37384 != 0) goto <D.37385>; else goto unverified;
      <D.37385>:
      raise (5);
      <D.37378>:
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.37386 = alloc_dreg (cfg, D.33502);
      D.37387 = (int) D.37386;
      ins->dreg = D.37387;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.37388>; else goto <D.37389>;
      <D.37388>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.37390>;
      <D.37389>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.37390>:
      sp.165 = sp;
      sp = sp.165 + 4;
      D.37392 = mono_decompose_opcode (cfg, ins);
      *sp.165 = D.37392;
      goto <D.37393>;
      <D.37360>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      D.33632 = *ip;
      D.36443 = (short unsigned int) D.33632;
      ins->opcode = D.36443;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      sp = sp + 4294967292;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      D.33750 = *sp;
      type_from_op (ins, D.33750, 0B);
      D.33501 = ins->type;
      if (D.33501 == 0) goto <D.37394>; else goto <D.37395>;
      <D.37394>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37396>; else goto <D.37397>;
      <D.37396>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37398>; else goto <D.37399>;
      <D.37398>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37399>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37397>:
      D.37400 = mini_get_debug_options ();
      D.37401 = D.37400->break_on_unverified;
      if (D.37401 != 0) goto <D.37402>; else goto unverified;
      <D.37402>:
      raise (5);
      <D.37395>:
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.37403 = alloc_dreg (cfg, D.33502);
      D.37404 = (int) D.37403;
      ins->dreg = D.37404;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.37405>; else goto <D.37406>;
      <D.37405>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.37407>;
      <D.37406>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.37407>:
      sp.166 = sp;
      sp = sp.166 + 4;
      D.37409 = mono_decompose_opcode (cfg, ins);
      *sp.166 = D.37409;
      <D.37393>:
      ip = ip + 1;
      goto <D.29893>;
      <D.30225>:
      <D.30226>:
      <D.30227>:
      <D.30228>:
      <D.30229>:
      <D.30230>:
      <D.30231>:
      <D.30232>:
      <D.30233>:
      <D.30234>:
      <D.30235>:
      <D.30236>:
      <D.30237>:
      <D.30238>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.37410>; else goto <D.37411>;
      <D.37410>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37412>; else goto <D.37413>;
      <D.37412>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37414>; else goto <D.37415>;
      <D.37414>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37415>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37413>:
      D.37416 = mini_get_debug_options ();
      D.37417 = D.37416->break_on_unverified;
      if (D.37417 != 0) goto <D.37418>; else goto unverified;
      <D.37418>:
      raise (5);
      <D.37411>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      D.33632 = *ip;
      D.36443 = (short unsigned int) D.33632;
      ins->opcode = D.36443;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      sp = sp + 4294967292;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      D.33750 = *sp;
      type_from_op (ins, D.33750, 0B);
      D.33501 = ins->type;
      if (D.33501 == 0) goto <D.37419>; else goto <D.37420>;
      <D.37419>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37421>; else goto <D.37422>;
      <D.37421>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37423>; else goto <D.37424>;
      <D.37423>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37424>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37422>:
      D.37425 = mini_get_debug_options ();
      D.37426 = D.37425->break_on_unverified;
      if (D.37426 != 0) goto <D.37427>; else goto unverified;
      <D.37427>:
      raise (5);
      <D.37420>:
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.37428 = alloc_dreg (cfg, D.33502);
      D.37429 = (int) D.37428;
      ins->dreg = D.37429;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.37430>; else goto <D.37431>;
      <D.37430>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.37432>;
      <D.37431>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.37432>:
      sp.167 = sp;
      sp = sp.167 + 4;
      D.37434 = mono_decompose_opcode (cfg, ins);
      *sp.167 = D.37434;
      D.33309 = cfg->exception_type;
      if (D.33309 != 0) goto exception_exit; else goto <D.37435>;
      <D.37435>:
      ip = ip + 1;
      goto <D.29893>;
      <D.30239>:
      <D.30240>:
      <D.30241>:
      <D.30242>:
      <D.30243>:
      <D.30244>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 7) goto <D.37436>; else goto <D.37437>;
      <D.37436>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37438>; else goto <D.37439>;
      <D.37438>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37440>; else goto <D.37441>;
      <D.37440>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37441>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37439>:
      D.37442 = mini_get_debug_options ();
      D.37443 = D.37442->break_on_unverified;
      if (D.37443 != 0) goto <D.37444>; else goto unverified;
      <D.37444>:
      raise (5);
      <D.37437>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      D.33632 = *ip;
      D.36443 = (short unsigned int) D.33632;
      ins->opcode = D.36443;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      sp = sp + 4294967288;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      D.34877 = D.34876->dreg;
      ins->sreg2 = D.34877;
      D.33750 = *sp;
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      type_from_op (ins, D.33750, D.34876);
      D.33501 = ins->type;
      if (D.33501 == 0) goto <D.37445>; else goto <D.37446>;
      <D.37445>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37447>; else goto <D.37448>;
      <D.37447>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37449>; else goto <D.37450>;
      <D.37449>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37450>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37448>:
      D.37451 = mini_get_debug_options ();
      D.37452 = D.37451->break_on_unverified;
      if (D.37452 != 0) goto <D.37453>; else goto unverified;
      <D.37453>:
      raise (5);
      <D.37446>:
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.37454 = alloc_dreg (cfg, D.33502);
      D.37455 = (int) D.37454;
      ins->dreg = D.37455;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.37456>; else goto <D.37457>;
      <D.37456>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.37458>;
      <D.37457>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.37458>:
      sp.168 = sp;
      sp = sp.168 + 4;
      D.37460 = mono_decompose_opcode (cfg, ins);
      *sp.168 = D.37460;
      ip = ip + 1;
      goto <D.29893>;
      <D.30245>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37461>; else goto <D.37462>;
      <D.37461>:
      D.32693 = method->klass;
      D.34423 = D.32693->name_space;
      D.32693 = method->klass;
      D.34424 = D.32693->name;
      D.34425 = method->name;
      D.34426 = method->signature;
      D.34427 = D.34426->param_count;
      D.34428 = (int) D.34427;
      D.33632 = *ip;
      D.33633 = (int) D.33632;
      D.37463 = mono_opcode_name (D.33633);
      D.37464 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.34423, D.34424, D.34425, D.34428, D.37463, "method-to-ir.c", 9069);
      cfg->exception_message = D.37464;
      D.32836 = cfg->verbose_level;
      if (D.32836 > 1) goto <D.37465>; else goto <D.37466>;
      <D.37465>:
      D.34433 = cfg->exception_message;
      printf ("%s\n", D.34433);
      <D.37466>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37462>:
      D.34195 = ip + 5;
      if (D.34195 > end) goto <D.37467>; else goto <D.37468>;
      <D.37467>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37469>; else goto <D.37470>;
      <D.37469>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37471>; else goto <D.37472>;
      <D.37471>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37472>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37470>:
      D.37473 = mini_get_debug_options ();
      D.37474 = D.37473->break_on_unverified;
      if (D.37474 != 0) goto <D.37475>; else goto unverified;
      <D.37475>:
      raise (5);
      <D.37468>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 7) goto <D.37476>; else goto <D.37477>;
      <D.37476>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37478>; else goto <D.37479>;
      <D.37478>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37480>; else goto <D.37481>;
      <D.37480>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37481>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37479>:
      D.37482 = mini_get_debug_options ();
      D.37483 = D.37482->break_on_unverified;
      if (D.37483 != 0) goto <D.37484>; else goto unverified;
      <D.37484>:
      raise (5);
      <D.37477>:
      D.34214 = ip + 1;
      token = mono_read32 (D.34214);
      klass.169 = mini_get_class (method, token, generic_context);
      klass = klass.169;
      klass.170 = klass;
      if (klass.170 == 0B) goto <D.37486>; else goto <D.37489>;
      <D.37489>:
      klass.170 = klass;
      D.37490 = klass.170->exception_type;
      if (D.37490 != 0) goto <D.37486>; else goto <D.37487>;
      <D.37486>:
      klass.170 = klass;
      cfg->exception_ptr = klass.170;
      D.37491 = mini_get_debug_options ();
      D.37492 = D.37491->break_on_unverified;
      if (D.37492 != 0) goto <D.37493>; else goto load_error;
      <D.37493>:
      raise (5);
      <D.37487>:
      sp = sp + 4294967288;
      klass.170 = klass;
      D.37494 = generic_class_is_reference_type (cfg, klass.170);
      if (D.37494 != 0) goto <D.37495>; else goto <D.37496>;
      <D.37495>:
      {
        struct MonoInst * store;
        struct MonoInst * load;
        int dreg;

        D.37497 = alloc_ireg_ref (cfg);
        dreg = (int) D.37497;
        D.32755 = cfg->mempool;
        load = mono_mempool_alloc (D.32755, 56);
        load->data.op[1].const_val = 0;
        D.37498 = load->data.op[1].const_val;
        load->data.op[0].const_val = D.37498;
        load->prev = 0B;
        D.37499 = load->prev;
        load->next = D.37499;
        load->opcode = 388;
        load->flags = 0;
        load->type = 0;
        load->dreg = -1;
        load->sreg3 = -1;
        D.37500 = load->sreg3;
        load->sreg2 = D.37500;
        D.37501 = load->sreg2;
        load->sreg1 = D.37501;
        D.32979 = cfg->ip;
        load->cil_code = D.32979;
        load->dreg = dreg;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        D.34877 = D.34876->dreg;
        load->sreg1 = D.34877;
        load->data.op[0].const_val = 0;
        load->type = 1;
        D.37502 = load->flags;
        D.37112 = (unsigned char) ins_flag;
        D.37503 = D.37502 | D.37112;
        load->flags = D.37503;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.37504>; else goto <D.37505>;
        <D.37504>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = load;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        load->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = load;
        goto <D.37506>;
        <D.37505>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = load;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.37506>:
        D.32755 = cfg->mempool;
        store = mono_mempool_alloc (D.32755, 56);
        store->data.op[1].const_val = 0;
        D.37507 = store->data.op[1].const_val;
        store->data.op[0].const_val = D.37507;
        store->prev = 0B;
        D.37508 = store->prev;
        store->next = D.37508;
        store->opcode = 374;
        store->flags = 0;
        store->type = 0;
        store->dreg = -1;
        store->sreg3 = -1;
        D.37509 = store->sreg3;
        store->sreg2 = D.37509;
        D.37510 = store->sreg2;
        store->sreg1 = D.37510;
        D.32979 = cfg->ip;
        store->cil_code = D.32979;
        store->sreg1 = dreg;
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        store->dreg = D.33943;
        store->data.op[0].const_val = 0;
        D.37511 = store->flags;
        D.37112 = (unsigned char) ins_flag;
        D.37512 = D.37511 | D.37112;
        store->flags = D.37512;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.37513>; else goto <D.37514>;
        <D.37513>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = store;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        store->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = store;
        goto <D.37515>;
        <D.37514>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = store;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.37515>:
        D.35961 = BIT_FIELD_REF <*cfg, 8, 3416>;
        D.35962 = D.35961 & 16;
        if (D.35962 != 0) goto <D.37516>; else goto <D.37517>;
        <D.37516>:
        D.32726 = cfg->method;
        D.34668 = BIT_FIELD_REF <*D.32726, 8, 160>;
        D.34669 = D.34668 & 124;
        if (D.34669 != 96) goto <D.37518>; else goto <D.37519>;
        <D.37518>:
        D.33750 = *sp;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        emit_write_barrier (cfg, D.33750, D.34876);
        <D.37519>:
        <D.37517>:
      }
      goto <D.37520>;
      <D.37496>:
      D.33750 = *sp;
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      klass.170 = klass;
      mini_emit_stobj (cfg, D.33750, D.34876, klass.170, 0);
      <D.37520>:
      ins_flag = 0;
      ip = ip + 5;
      goto <D.29893>;
      <D.30249>:
      {
        int loc_index;
        int stloc_len;

        loc_index = -1;
        stloc_len = 0;
        D.34195 = ip + 5;
        if (D.34195 > end) goto <D.37521>; else goto <D.37522>;
        <D.37521>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.37523>; else goto <D.37524>;
        <D.37523>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.37525>; else goto <D.37526>;
        <D.37525>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.37526>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.37524>:
        D.37527 = mini_get_debug_options ();
        D.37528 = D.37527->break_on_unverified;
        if (D.37528 != 0) goto <D.37529>; else goto unverified;
        <D.37529>:
        raise (5);
        <D.37522>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        if (D.33526 <= 3) goto <D.37530>; else goto <D.37531>;
        <D.37530>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.37532>; else goto <D.37533>;
        <D.37532>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.37534>; else goto <D.37535>;
        <D.37534>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.37535>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.37533>:
        D.37536 = mini_get_debug_options ();
        D.37537 = D.37536->break_on_unverified;
        if (D.37537 != 0) goto <D.37538>; else goto unverified;
        <D.37538>:
        raise (5);
        <D.37531>:
        sp = sp + 4294967292;
        D.34214 = ip + 1;
        token = mono_read32 (D.34214);
        klass.171 = mini_get_class (method, token, generic_context);
        klass = klass.171;
        klass.170 = klass;
        if (klass.170 == 0B) goto <D.37540>; else goto <D.37542>;
        <D.37542>:
        klass.170 = klass;
        D.37490 = klass.170->exception_type;
        if (D.37490 != 0) goto <D.37540>; else goto <D.37541>;
        <D.37540>:
        klass.170 = klass;
        cfg->exception_ptr = klass.170;
        D.37543 = mini_get_debug_options ();
        D.37544 = D.37543->break_on_unverified;
        if (D.37544 != 0) goto <D.37545>; else goto load_error;
        <D.37545>:
        raise (5);
        <D.37541>:
        D.34195 = ip + 5;
        D.35642 = *D.34195;
        D.37546 = (int) D.35642;
        switch (D.37546) <default: <D.30258>, case 10: <D.30254>, case 11: <D.30255>, case 12: <D.30256>, case 13: <D.30257>, case 19: <D.30252>>
        <D.30252>:
        D.37547 = ip + 6;
        D.37548 = *D.37547;
        loc_index = (int) D.37548;
        stloc_len = 2;
        goto <D.30253>;
        <D.30254>:
        <D.30255>:
        <D.30256>:
        <D.30257>:
        D.34195 = ip + 5;
        D.35642 = *D.34195;
        D.37546 = (int) D.35642;
        loc_index = D.37546 + -10;
        stloc_len = 1;
        goto <D.30253>;
        <D.30258>:
        goto <D.30253>;
        <D.30253>:
        if (loc_index != -1) goto <D.37549>; else goto <D.37550>;
        <D.37549>:
        bblock.76 = bblock;
        D.35683 = ip + 5;
        D.37551 = ip_in_bb (cfg, bblock.76, D.35683);
        if (D.37551 != 0) goto <D.37552>; else goto <D.37553>;
        <D.37552>:
        loc_index.172 = (unsigned int) loc_index;
        D.33345 = header->num_locals;
        D.33704 = (unsigned int) D.33345;
        if (loc_index.172 >= D.33704) goto <D.37555>; else goto <D.37556>;
        <D.37555>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.37557>; else goto <D.37558>;
        <D.37557>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.37559>; else goto <D.37560>;
        <D.37559>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.37560>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.37558>:
        D.37561 = mini_get_debug_options ();
        D.37562 = D.37561->break_on_unverified;
        if (D.37562 != 0) goto <D.37563>; else goto unverified;
        <D.37563>:
        raise (5);
        <D.37556>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        klass.170 = klass;
        D.37564 = &klass.170->byval_arg;
        D.37565 = mono_type_to_load_membase (cfg, D.37564);
        D.37566 = (short unsigned int) D.37565;
        ins->opcode = D.37566;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        ins->dreg = 0;
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        ins->sreg1 = D.33943;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        klass.170 = klass;
        D.37564 = &klass.170->byval_arg;
        type_to_eval_stack_type (cfg, D.37564, ins);
        D.33501 = ins->type;
        D.33502 = (<unnamed type>) D.33501;
        D.37567 = alloc_dreg (cfg, D.33502);
        D.37568 = (int) D.37567;
        ins->dreg = D.37568;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.37569>; else goto <D.37570>;
        <D.37569>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.37571>;
        <D.37570>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.37571>:
        D.33716 = cfg->locals;
        loc_index.172 = (unsigned int) loc_index;
        D.37572 = loc_index.172 * 4;
        D.37573 = D.33716 + D.37572;
        D.37574 = *D.37573;
        D.37575 = D.37574->dreg;
        ins->dreg = D.37575;
        ip = ip + 5;
        stloc_len.173 = (sizetype) stloc_len;
        ip = ip + stloc_len.173;
        goto <D.29893>;
        <D.37553>:
        <D.37550>:
        D.34195 = ip + 5;
        D.35642 = *D.34195;
        if (D.35642 == 129) goto <D.37577>; else goto <D.37578>;
        <D.37577>:
        bblock.76 = bblock;
        D.35683 = ip + 5;
        D.37579 = ip_in_bb (cfg, bblock.76, D.35683);
        if (D.37579 != 0) goto <D.37580>; else goto <D.37581>;
        <D.37580>:
        D.37582 = ip + 6;
        D.37583 = mono_read32 (D.37582);
        if (D.37583 == token) goto <D.37584>; else goto <D.37585>;
        <D.37584>:
        klass.170 = klass;
        D.37586 = generic_class_is_reference_type (cfg, klass.170);
        if (D.37586 == 0) goto <D.37587>; else goto <D.37588>;
        <D.37587>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        if (D.33526 <= 3) goto <D.37589>; else goto <D.37590>;
        <D.37589>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.37591>; else goto <D.37592>;
        <D.37591>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.37593>; else goto <D.37594>;
        <D.37593>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.37594>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.37592>:
        D.37595 = mini_get_debug_options ();
        D.37596 = D.37595->break_on_unverified;
        if (D.37596 != 0) goto <D.37597>; else goto unverified;
        <D.37597>:
        raise (5);
        <D.37590>:
        sp = sp + 4294967292;
        D.33750 = *sp;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        klass.170 = klass;
        mini_emit_stobj (cfg, D.33750, D.34876, klass.170, 0);
        ip = ip + 10;
        ins_flag = 0;
        goto <D.29893>;
        <D.37588>:
        <D.37585>:
        <D.37581>:
        <D.37578>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        klass.170 = klass;
        D.37564 = &klass.170->byval_arg;
        D.37598 = mono_type_to_load_membase (cfg, D.37564);
        D.37599 = (short unsigned int) D.37598;
        ins->opcode = D.37599;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        ins->dreg = 0;
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        ins->sreg1 = D.33943;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        klass.170 = klass;
        D.37564 = &klass.170->byval_arg;
        type_to_eval_stack_type (cfg, D.37564, ins);
        D.33501 = ins->type;
        D.33502 = (<unnamed type>) D.33501;
        D.37600 = alloc_dreg (cfg, D.33502);
        D.37601 = (int) D.37600;
        ins->dreg = D.37601;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.37602>; else goto <D.37603>;
        <D.37602>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.37604>;
        <D.37603>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.37604>:
        sp.174 = sp;
        sp = sp.174 + 4;
        *sp.174 = ins;
        ip = ip + 5;
        ins_flag = 0;
        inline_costs = inline_costs + 1;
        goto <D.29893>;
      }
      <D.30259>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      D.33440 = header->max_stack;
      D.33441 = (int) D.33440;
      if (D.33527 >= D.33441) goto <D.37606>; else goto <D.37607>;
      <D.37606>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37608>; else goto <D.37609>;
      <D.37608>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37610>; else goto <D.37611>;
      <D.37610>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37611>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37609>:
      D.37612 = mini_get_debug_options ();
      D.37613 = D.37612->break_on_unverified;
      if (D.37613 != 0) goto <D.37614>; else goto unverified;
      <D.37614>:
      raise (5);
      <D.37607>:
      D.34195 = ip + 5;
      if (D.34195 > end) goto <D.37615>; else goto <D.37616>;
      <D.37615>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.37617>; else goto <D.37618>;
      <D.37617>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.37619>; else goto <D.37620>;
      <D.37619>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37620>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37618>:
      D.37621 = mini_get_debug_options ();
      D.37622 = D.37621->break_on_unverified;
      if (D.37622 != 0) goto <D.37623>; else goto unverified;
      <D.37623>:
      raise (5);
      <D.37616>:
      D.34214 = ip + 1;
      D.37624 = mono_read32 (D.34214);
      n = (int) D.37624;
      D.32698 = BIT_FIELD_REF <*method, 8, 160>;
      D.32699 = D.32698 & 124;
      if (D.32699 == 68) goto <D.37625>; else goto <D.37626>;
      <D.37625>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      n.175 = (unsigned int) n;
      D.37628 = mono_method_get_wrapper_data (method, n.175);
      ins->data.op[0].p = D.37628;
      ins->type = 3;
      D.37629 = alloc_dreg (cfg, 3);
      D.37630 = (int) D.37629;
      ins->dreg = D.37630;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.37631>; else goto <D.37632>;
      <D.37631>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.37633>;
      <D.37632>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.37633>:
      ins->type = 6;
      *sp = ins;
      goto <D.37634>;
      <D.37626>:
      D.32698 = BIT_FIELD_REF <*method, 8, 160>;
      D.32699 = D.32698 & 124;
      if (D.32699 != 0) goto <D.37635>; else goto <D.37636>;
      <D.37635>:
      {
        struct MonoInst * iargs[1];

        try
          {
            D.32755 = cfg->mempool;
            D.37637 = mono_mempool_alloc (D.32755, 56);
            iargs[0] = D.37637;
            D.37638 = iargs[0];
            D.37638 = iargs[0];
            D.37638->data.op[1].const_val = 0;
            D.37639 = D.37638->data.op[1].const_val;
            D.37638->data.op[0].const_val = D.37639;
            D.37638 = iargs[0];
            D.37638 = iargs[0];
            D.37638->prev = 0B;
            D.37640 = D.37638->prev;
            D.37638->next = D.37640;
            D.37638 = iargs[0];
            D.37638->opcode = 362;
            D.37638 = iargs[0];
            D.37638->flags = 0;
            D.37638 = iargs[0];
            D.37638->type = 0;
            D.37638 = iargs[0];
            D.37638->dreg = -1;
            D.37638 = iargs[0];
            D.37638 = iargs[0];
            D.37638 = iargs[0];
            D.37638->sreg3 = -1;
            D.37641 = D.37638->sreg3;
            D.37638->sreg2 = D.37641;
            D.37642 = D.37638->sreg2;
            D.37638->sreg1 = D.37642;
            D.37638 = iargs[0];
            D.32979 = cfg->ip;
            D.37638->cil_code = D.32979;
            D.37638 = iargs[0];
            n.175 = (unsigned int) n;
            D.37643 = mono_method_get_wrapper_data (method, n.175);
            D.37638->data.op[0].p = D.37643;
            D.37638 = iargs[0];
            D.37638->type = 3;
            D.37638 = iargs[0];
            D.37644 = alloc_dreg (cfg, 3);
            D.37645 = (int) D.37644;
            D.37638->dreg = D.37645;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.37646>; else goto <D.37647>;
            <D.37646>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.37638 = iargs[0];
            D.33008->next = D.37638;
            D.37638 = iargs[0];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.37638->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.37638 = iargs[0];
            bblock.125->last_ins = D.37638;
            goto <D.37648>;
            <D.37647>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.37638 = iargs[0];
            bblock.125->last_ins = D.37638;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.37648>:
            D.37649 = mono_emit_jit_icall (cfg, mono_string_new_wrapper, &iargs);
            *sp = D.37649;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.37650>;
      <D.37636>:
      D.33148 = cfg->opt;
      D.33149 = D.33148 & 512;
      if (D.33149 != 0) goto <D.37651>; else goto <D.37652>;
      <D.37651>:
      {
        struct MonoInst * iargs[3];

        try
          {
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.37653>; else goto <D.37654>;
            <D.37653>:
            D.37655 = cfg->ldstr_list;
            n.176 = (void *) n;
            D.37657 = monoeg_g_list_prepend (D.37655, n.176);
            cfg->ldstr_list = D.37657;
            <D.37654>:
            D.33148 = cfg->opt;
            D.33149 = D.33148 & 512;
            if (D.33149 != 0) goto <D.37658>; else goto <D.37661>;
            <D.37661>:
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.37658>; else goto <D.37659>;
            <D.37658>:
            {
              struct MonoInst * __domain_var;

              __domain_var = mono_get_domainvar (cfg);
              D.32755 = cfg->mempool;
              D.37662 = mono_mempool_alloc (D.32755, 56);
              iargs[0] = D.37662;
              D.37663 = iargs[0];
              D.37663 = iargs[0];
              D.37663->data.op[1].const_val = 0;
              D.37664 = D.37663->data.op[1].const_val;
              D.37663->data.op[0].const_val = D.37664;
              D.37663 = iargs[0];
              D.37663 = iargs[0];
              D.37663->prev = 0B;
              D.37665 = D.37663->prev;
              D.37663->next = D.37665;
              D.37663 = iargs[0];
              D.37663->opcode = 424;
              D.37663 = iargs[0];
              D.37663->flags = 0;
              D.37663 = iargs[0];
              D.37663->type = 0;
              D.37663 = iargs[0];
              D.37663->dreg = -1;
              D.37663 = iargs[0];
              D.37663 = iargs[0];
              D.37663 = iargs[0];
              D.37663->sreg3 = -1;
              D.37666 = D.37663->sreg3;
              D.37663->sreg2 = D.37666;
              D.37667 = D.37663->sreg2;
              D.37663->sreg1 = D.37667;
              D.37663 = iargs[0];
              D.32979 = cfg->ip;
              D.37663->cil_code = D.32979;
              D.37663 = iargs[0];
              D.33491 = cfg->varinfo;
              D.37668 = __domain_var->data.op[0].const_val;
              D.37669 = (unsigned int) D.37668;
              D.37670 = D.37669 * 4;
              D.37671 = D.33491 + D.37670;
              D.37672 = *D.37671;
              D.37673 = D.37672->data.op[1].vtype;
              D.37674 = mono_type_to_regmove (cfg, D.37673);
              D.37675 = (short unsigned int) D.37674;
              D.37663->opcode = D.37675;
              D.33491 = cfg->varinfo;
              D.37668 = __domain_var->data.op[0].const_val;
              D.37669 = (unsigned int) D.37668;
              D.37670 = D.37669 * 4;
              D.37671 = D.33491 + D.37670;
              D.37672 = *D.37671;
              D.37673 = D.37672->data.op[1].vtype;
              D.37663 = iargs[0];
              type_to_eval_stack_type (cfg, D.37673, D.37663);
              D.37663 = iargs[0];
              D.33491 = cfg->varinfo;
              D.37668 = __domain_var->data.op[0].const_val;
              D.37669 = (unsigned int) D.37668;
              D.37670 = D.37669 * 4;
              D.37671 = D.33491 + D.37670;
              D.37672 = *D.37671;
              D.37676 = D.37672->klass;
              D.37663->klass = D.37676;
              D.37663 = iargs[0];
              D.33491 = cfg->varinfo;
              D.37668 = __domain_var->data.op[0].const_val;
              D.37669 = (unsigned int) D.37668;
              D.37670 = D.37669 * 4;
              D.37671 = D.33491 + D.37670;
              D.37672 = *D.37671;
              D.37677 = D.37672->dreg;
              D.37663->sreg1 = D.37677;
              D.37663 = iargs[0];
              D.37663 = iargs[0];
              D.37678 = D.37663->type;
              D.37679 = (<unnamed type>) D.37678;
              D.37680 = alloc_dreg (cfg, D.37679);
              D.37681 = (int) D.37680;
              D.37663->dreg = D.37681;
              D.37663 = iargs[0];
              D.37682 = D.37663->opcode;
              if (D.37682 == 427) goto <D.37683>; else goto <D.37684>;
              <D.37683>:
              D.37663 = iargs[0];
              D.33491 = cfg->varinfo;
              D.37668 = __domain_var->data.op[0].const_val;
              D.37669 = (unsigned int) D.37668;
              D.37670 = D.37669 * 4;
              D.37671 = D.33491 + D.37670;
              D.37672 = *D.37671;
              D.37673 = D.37672->data.op[1].vtype;
              D.37685 = mono_class_from_mono_type (D.37673);
              D.37663->klass = D.37685;
              <D.37684>:
            }
            goto <D.37660>;
            <D.37659>:
            D.32755 = cfg->mempool;
            D.37686 = mono_mempool_alloc (D.32755, 56);
            iargs[0] = D.37686;
            D.37663 = iargs[0];
            D.37663 = iargs[0];
            D.37663->data.op[1].const_val = 0;
            D.37664 = D.37663->data.op[1].const_val;
            D.37663->data.op[0].const_val = D.37664;
            D.37663 = iargs[0];
            D.37663 = iargs[0];
            D.37663->prev = 0B;
            D.37665 = D.37663->prev;
            D.37663->next = D.37665;
            D.37663 = iargs[0];
            D.37663->opcode = 362;
            D.37663 = iargs[0];
            D.37663->flags = 0;
            D.37663 = iargs[0];
            D.37663->type = 0;
            D.37663 = iargs[0];
            D.37663->dreg = -1;
            D.37663 = iargs[0];
            D.37663 = iargs[0];
            D.37663 = iargs[0];
            D.37663->sreg3 = -1;
            D.37666 = D.37663->sreg3;
            D.37663->sreg2 = D.37666;
            D.37667 = D.37663->sreg2;
            D.37663->sreg1 = D.37667;
            D.37663 = iargs[0];
            D.32979 = cfg->ip;
            D.37663->cil_code = D.32979;
            D.37663 = iargs[0];
            D.32780 = cfg->domain;
            D.37663->data.op[0].p = D.32780;
            D.37663 = iargs[0];
            D.37663->type = 3;
            D.37663 = iargs[0];
            D.37687 = alloc_dreg (cfg, 3);
            D.37688 = (int) D.37687;
            D.37663->dreg = D.37688;
            <D.37660>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.37689>; else goto <D.37690>;
            <D.37689>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.37663 = iargs[0];
            D.33008->next = D.37663;
            D.37663 = iargs[0];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.37663->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.37663 = iargs[0];
            bblock.125->last_ins = D.37663;
            goto <D.37691>;
            <D.37690>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.37663 = iargs[0];
            bblock.125->last_ins = D.37663;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.37691>:
            D.32755 = cfg->mempool;
            D.37692 = mono_mempool_alloc (D.32755, 56);
            iargs[1] = D.37692;
            D.37693 = iargs[1];
            D.37693 = iargs[1];
            D.37693->data.op[1].const_val = 0;
            D.37694 = D.37693->data.op[1].const_val;
            D.37693->data.op[0].const_val = D.37694;
            D.37693 = iargs[1];
            D.37693 = iargs[1];
            D.37693->prev = 0B;
            D.37695 = D.37693->prev;
            D.37693->next = D.37695;
            D.37693 = iargs[1];
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.37697>; else goto <D.37698>;
            <D.37697>:
            iftmp.177 = 732;
            goto <D.37699>;
            <D.37698>:
            iftmp.177 = 362;
            <D.37699>:
            D.37693->opcode = iftmp.177;
            D.37693 = iargs[1];
            D.37693->flags = 0;
            D.37693 = iargs[1];
            D.37693->type = 0;
            D.37693 = iargs[1];
            D.37693->dreg = -1;
            D.37693 = iargs[1];
            D.37693 = iargs[1];
            D.37693 = iargs[1];
            D.37693->sreg3 = -1;
            D.37700 = D.37693->sreg3;
            D.37693->sreg2 = D.37700;
            D.37701 = D.37693->sreg2;
            D.37693->sreg1 = D.37701;
            D.37693 = iargs[1];
            D.32979 = cfg->ip;
            D.37693->cil_code = D.32979;
            D.37693 = iargs[1];
            D.37693->data.op[0].p = image;
            D.37693 = iargs[1];
            D.37693->data.op[1].src = 12B;
            D.37693 = iargs[1];
            D.37693->type = 3;
            D.37693 = iargs[1];
            D.37702 = alloc_dreg (cfg, 3);
            D.37703 = (int) D.37702;
            D.37693->dreg = D.37703;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.37704>; else goto <D.37705>;
            <D.37704>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.37693 = iargs[1];
            D.33008->next = D.37693;
            D.37693 = iargs[1];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.37693->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.37693 = iargs[1];
            bblock.125->last_ins = D.37693;
            goto <D.37706>;
            <D.37705>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.37693 = iargs[1];
            bblock.125->last_ins = D.37693;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.37706>:
            D.32755 = cfg->mempool;
            D.37707 = mono_mempool_alloc (D.32755, 56);
            iargs[2] = D.37707;
            D.37708 = iargs[2];
            D.37708 = iargs[2];
            D.37708->data.op[1].const_val = 0;
            D.37709 = D.37708->data.op[1].const_val;
            D.37708->data.op[0].const_val = D.37709;
            D.37708 = iargs[2];
            D.37708 = iargs[2];
            D.37708->prev = 0B;
            D.37710 = D.37708->prev;
            D.37708->next = D.37710;
            D.37708 = iargs[2];
            D.37708->opcode = 362;
            D.37708 = iargs[2];
            D.37708->flags = 0;
            D.37708 = iargs[2];
            D.37708->type = 0;
            D.37708 = iargs[2];
            D.37708->dreg = -1;
            D.37708 = iargs[2];
            D.37708 = iargs[2];
            D.37708 = iargs[2];
            D.37708->sreg3 = -1;
            D.37711 = D.37708->sreg3;
            D.37708->sreg2 = D.37711;
            D.37712 = D.37708->sreg2;
            D.37708->sreg1 = D.37712;
            D.37708 = iargs[2];
            D.32979 = cfg->ip;
            D.37708->cil_code = D.32979;
            D.37708 = iargs[2];
            D.37713 = n & 16777215;
            D.37708->data.op[0].const_val = D.37713;
            D.37708 = iargs[2];
            D.37708->type = 1;
            D.37708 = iargs[2];
            D.37714 = alloc_dreg (cfg, 1);
            D.37715 = (int) D.37714;
            D.37708->dreg = D.37715;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.37716>; else goto <D.37717>;
            <D.37716>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.37708 = iargs[2];
            D.33008->next = D.37708;
            D.37708 = iargs[2];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.37708->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.37708 = iargs[2];
            bblock.125->last_ins = D.37708;
            goto <D.37718>;
            <D.37717>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.37708 = iargs[2];
            bblock.125->last_ins = D.37708;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.37718>:
            D.37719 = mono_emit_jit_icall (cfg, mono_ldstr, &iargs);
            *sp = D.37719;
            D.32780 = cfg->domain;
            n.178 = (unsigned int) n;
            D.37721 = n.178 & 16777215;
            mono_ldstr (D.32780, image, D.37721);
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.37722>;
      <D.37652>:
      bblock.76 = bblock;
      D.37723 = BIT_FIELD_REF <*bblock.76, 8, 912>;
      D.37724 = D.37723 & 1;
      if (D.37724 != 0) goto <D.37725>; else goto <D.37726>;
      <D.37725>:
      {
        struct MonoInst * iargs[2];

        try
          {
            D.34796 = mono_defaults.corlib;
            if (D.34796 == image) goto <D.37727>; else goto <D.37728>;
            <D.37727>:
            D.32755 = cfg->mempool;
            D.37729 = mono_mempool_alloc (D.32755, 56);
            iargs[0] = D.37729;
            D.37730 = iargs[0];
            D.37730 = iargs[0];
            D.37730->data.op[1].const_val = 0;
            D.37731 = D.37730->data.op[1].const_val;
            D.37730->data.op[0].const_val = D.37731;
            D.37730 = iargs[0];
            D.37730 = iargs[0];
            D.37730->prev = 0B;
            D.37732 = D.37730->prev;
            D.37730->next = D.37732;
            D.37730 = iargs[0];
            D.37730->opcode = 362;
            D.37730 = iargs[0];
            D.37730->flags = 0;
            D.37730 = iargs[0];
            D.37730->type = 0;
            D.37730 = iargs[0];
            D.37730->dreg = -1;
            D.37730 = iargs[0];
            D.37730 = iargs[0];
            D.37730 = iargs[0];
            D.37730->sreg3 = -1;
            D.37733 = D.37730->sreg3;
            D.37730->sreg2 = D.37733;
            D.37734 = D.37730->sreg2;
            D.37730->sreg1 = D.37734;
            D.37730 = iargs[0];
            D.32979 = cfg->ip;
            D.37730->cil_code = D.32979;
            D.37730 = iargs[0];
            D.37713 = n & 16777215;
            D.37730->data.op[0].const_val = D.37713;
            D.37730 = iargs[0];
            D.37730->type = 1;
            D.37730 = iargs[0];
            D.37735 = alloc_dreg (cfg, 1);
            D.37736 = (int) D.37735;
            D.37730->dreg = D.37736;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.37737>; else goto <D.37738>;
            <D.37737>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.37730 = iargs[0];
            D.33008->next = D.37730;
            D.37730 = iargs[0];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.37730->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.37730 = iargs[0];
            bblock.125->last_ins = D.37730;
            goto <D.37739>;
            <D.37738>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.37730 = iargs[0];
            bblock.125->last_ins = D.37730;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.37739>:
            D.37740 = mono_emit_jit_icall (cfg, mono_helper_ldstr_mscorlib, &iargs);
            *sp = D.37740;
            goto <D.37741>;
            <D.37728>:
            D.32755 = cfg->mempool;
            D.37742 = mono_mempool_alloc (D.32755, 56);
            iargs[0] = D.37742;
            D.37730 = iargs[0];
            D.37730 = iargs[0];
            D.37730->data.op[1].const_val = 0;
            D.37731 = D.37730->data.op[1].const_val;
            D.37730->data.op[0].const_val = D.37731;
            D.37730 = iargs[0];
            D.37730 = iargs[0];
            D.37730->prev = 0B;
            D.37732 = D.37730->prev;
            D.37730->next = D.37732;
            D.37730 = iargs[0];
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.37744>; else goto <D.37745>;
            <D.37744>:
            iftmp.179 = 732;
            goto <D.37746>;
            <D.37745>:
            iftmp.179 = 362;
            <D.37746>:
            D.37730->opcode = iftmp.179;
            D.37730 = iargs[0];
            D.37730->flags = 0;
            D.37730 = iargs[0];
            D.37730->type = 0;
            D.37730 = iargs[0];
            D.37730->dreg = -1;
            D.37730 = iargs[0];
            D.37730 = iargs[0];
            D.37730 = iargs[0];
            D.37730->sreg3 = -1;
            D.37733 = D.37730->sreg3;
            D.37730->sreg2 = D.37733;
            D.37734 = D.37730->sreg2;
            D.37730->sreg1 = D.37734;
            D.37730 = iargs[0];
            D.32979 = cfg->ip;
            D.37730->cil_code = D.32979;
            D.37730 = iargs[0];
            D.37730->data.op[0].p = image;
            D.37730 = iargs[0];
            D.37730->data.op[1].src = 12B;
            D.37730 = iargs[0];
            D.37730->type = 3;
            D.37730 = iargs[0];
            D.37747 = alloc_dreg (cfg, 3);
            D.37748 = (int) D.37747;
            D.37730->dreg = D.37748;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.37749>; else goto <D.37750>;
            <D.37749>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.37730 = iargs[0];
            D.33008->next = D.37730;
            D.37730 = iargs[0];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.37730->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.37730 = iargs[0];
            bblock.125->last_ins = D.37730;
            goto <D.37751>;
            <D.37750>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.37730 = iargs[0];
            bblock.125->last_ins = D.37730;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.37751>:
            D.32755 = cfg->mempool;
            D.37752 = mono_mempool_alloc (D.32755, 56);
            iargs[1] = D.37752;
            D.37753 = iargs[1];
            D.37753 = iargs[1];
            D.37753->data.op[1].const_val = 0;
            D.37754 = D.37753->data.op[1].const_val;
            D.37753->data.op[0].const_val = D.37754;
            D.37753 = iargs[1];
            D.37753 = iargs[1];
            D.37753->prev = 0B;
            D.37755 = D.37753->prev;
            D.37753->next = D.37755;
            D.37753 = iargs[1];
            D.37753->opcode = 362;
            D.37753 = iargs[1];
            D.37753->flags = 0;
            D.37753 = iargs[1];
            D.37753->type = 0;
            D.37753 = iargs[1];
            D.37753->dreg = -1;
            D.37753 = iargs[1];
            D.37753 = iargs[1];
            D.37753 = iargs[1];
            D.37753->sreg3 = -1;
            D.37756 = D.37753->sreg3;
            D.37753->sreg2 = D.37756;
            D.37757 = D.37753->sreg2;
            D.37753->sreg1 = D.37757;
            D.37753 = iargs[1];
            D.32979 = cfg->ip;
            D.37753->cil_code = D.32979;
            D.37753 = iargs[1];
            D.37713 = n & 16777215;
            D.37753->data.op[0].const_val = D.37713;
            D.37753 = iargs[1];
            D.37753->type = 1;
            D.37753 = iargs[1];
            D.37758 = alloc_dreg (cfg, 1);
            D.37759 = (int) D.37758;
            D.37753->dreg = D.37759;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.37760>; else goto <D.37761>;
            <D.37760>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.37753 = iargs[1];
            D.33008->next = D.37753;
            D.37753 = iargs[1];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.37753->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.37753 = iargs[1];
            bblock.125->last_ins = D.37753;
            goto <D.37762>;
            <D.37761>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.37753 = iargs[1];
            bblock.125->last_ins = D.37753;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.37762>:
            D.37763 = mono_emit_jit_icall (cfg, mono_helper_ldstr, &iargs);
            *sp = D.37763;
            <D.37741>:
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.37764>;
      <D.37726>:
      D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.33151 = D.33150 & 64;
      if (D.33151 != 0) goto <D.37765>; else goto <D.37766>;
      <D.37765>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 732;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.32755 = cfg->mempool;
      n.175 = (unsigned int) n;
      D.37767 = mono_jump_info_token_new2 (D.32755, image, n.175, 0B);
      ins->data.op[0].p = D.37767;
      ins->data.op[1].p = 17B;
      ins->type = 6;
      D.37768 = mono_defaults.string_class;
      ins->klass = D.37768;
      D.37769 = alloc_dreg (cfg, 6);
      D.37770 = (int) D.37769;
      ins->dreg = D.37770;
      *sp = ins;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      if (D.33093 != 0B) goto <D.37771>; else goto <D.37772>;
      <D.37771>:
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      D.33093->next = ins;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      ins->prev = D.33093;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      goto <D.37773>;
      <D.37772>:
      bblock.76 = bblock;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      D.33093 = bblock.76->last_ins;
      bblock.76->code = D.33093;
      <D.37773>:
      goto <D.37774>;
      <D.37766>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      ins->data.op[0].p = 0B;
      ins->type = 3;
      D.37775 = alloc_dreg (cfg, 3);
      D.37776 = (int) D.37775;
      ins->dreg = D.37776;
      ins->type = 6;
      D.32780 = cfg->domain;
      n.178 = (unsigned int) n;
      D.37721 = n.178 & 16777215;
      D.37777 = mono_ldstr (D.32780, image, D.37721);
      ins->data.op[0].p = D.37777;
      D.37778 = ins->data.op[0].p;
      if (D.37778 == 0B) goto <D.37779>; else goto <D.37780>;
      <D.37779>:
      mono_cfg_set_exception (cfg, 14);
      goto exception_exit;
      <D.37780>:
      *sp = ins;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      if (D.33093 != 0B) goto <D.37781>; else goto <D.37782>;
      <D.37781>:
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      D.33093->next = ins;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      ins->prev = D.33093;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      goto <D.37783>;
      <D.37782>:
      bblock.76 = bblock;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      D.33093 = bblock.76->last_ins;
      bblock.76->code = D.33093;
      <D.37783>:
      <D.37774>:
      <D.37764>:
      <D.37722>:
      <D.37650>:
      <D.37634>:
      sp = sp + 4;
      ip = ip + 5;
      goto <D.29893>;
      <D.30264>:
      {
        struct MonoInst * iargs[2];
        struct MonoMethodSignature * fsig;
        struct MonoInst this_ins;
        struct MonoInst * alloc;
        struct MonoInst * vtable_arg;

        try
          {
            vtable_arg = 0B;
            D.34195 = ip + 5;
            if (D.34195 > end) goto <D.37784>; else goto <D.37785>;
            <D.37784>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.37786>; else goto <D.37787>;
            <D.37786>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.37788>; else goto <D.37789>;
            <D.37788>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.37789>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.37787>:
            D.37790 = mini_get_debug_options ();
            D.37791 = D.37790->break_on_unverified;
            if (D.37791 != 0) goto <D.37792>; else goto unverified;
            <D.37792>:
            raise (5);
            <D.37785>:
            D.34214 = ip + 1;
            token = mono_read32 (D.34214);
            cmethod = mini_get_method (cfg, method, token, 0B, generic_context);
            if (cmethod == 0B) goto <D.37793>; else goto <D.37795>;
            <D.37795>:
            D.37796 = mono_loader_get_last_error ();
            if (D.37796 != 0B) goto <D.37793>; else goto <D.37794>;
            <D.37793>:
            D.37797 = mini_get_debug_options ();
            D.37798 = D.37797->break_on_unverified;
            if (D.37798 != 0) goto <D.37799>; else goto load_error;
            <D.37799>:
            raise (5);
            <D.37794>:
            fsig = mono_method_get_signature (cmethod, image, token);
            if (fsig == 0B) goto <D.37800>; else goto <D.37801>;
            <D.37800>:
            D.37802 = mini_get_debug_options ();
            D.37803 = D.37802->break_on_unverified;
            if (D.37803 != 0) goto <D.37804>; else goto load_error;
            <D.37804>:
            raise (5);
            <D.37801>:
            mono_save_token_info (cfg, image, token, cmethod);
            D.34618 = cmethod->klass;
            D.37805 = mono_class_init (D.34618);
            if (D.37805 == 0) goto <D.37806>; else goto <D.37807>;
            <D.37806>:
            D.37808 = mini_get_debug_options ();
            D.37809 = D.37808->break_on_unverified;
            if (D.37809 != 0) goto <D.37810>; else goto <D.37811>;
            <D.37810>:
            raise (5);
            goto <D.37812>;
            <D.37811>:
            D.34618 = cmethod->klass;
            cfg->exception_ptr = D.34618;
            goto load_error;
            <D.37812>:
            <D.37807>:
            context_used = mini_method_check_context_used (cfg, cmethod);
            D.37813 = mono_security_get_mode ();
            if (D.37813 == 2) goto <D.37814>; else goto <D.37815>;
            <D.37814>:
            D.37816 = check_linkdemand (cfg, method, cmethod);
            if (D.37816 != 0) goto <D.37817>; else goto <D.37818>;
            <D.37817>:
            D.32726 = cfg->method;
            if (D.32726 != method) goto <D.37819>; else goto <D.37820>;
            <D.37819>:
            D.32698 = BIT_FIELD_REF <*method, 8, 160>;
            D.32699 = D.32698 & 124;
            if (D.32699 == 0) goto <D.37821>; else goto <D.37822>;
            <D.37821>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 1) goto <D.37823>; else goto <D.37824>;
            <D.37823>:
            printf ("inline failed: %s\n", "linkdemand");
            <D.37824>:
            goto inline_failure;
            <D.37822>:
            <D.37820>:
            <D.37818>:
            D.33309 = cfg->exception_type;
            if (D.33309 != 0) goto exception_exit; else goto <D.37825>;
            <D.37825>:
            goto <D.37826>;
            <D.37815>:
            D.37827 = mono_security_get_mode ();
            if (D.37827 == 1) goto <D.37828>; else goto <D.37829>;
            <D.37828>:
            bblock.76 = bblock;
            ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock.76, ip);
            <D.37829>:
            <D.37826>:
            D.32791 = cfg->generic_sharing_context;
            if (D.32791 != 0B) goto <D.37830>; else goto <D.37831>;
            <D.37830>:
            if (cmethod != 0B) goto <D.37832>; else goto <D.37833>;
            <D.37832>:
            D.34618 = cmethod->klass;
            D.32693 = method->klass;
            if (D.34618 != D.32693) goto <D.37834>; else goto <D.37835>;
            <D.37834>:
            D.34618 = cmethod->klass;
            D.35166 = D.34618->generic_class;
            if (D.35166 != 0B) goto <D.37836>; else goto <D.37837>;
            <D.37836>:
            D.37838 = mono_method_is_generic_sharable (cmethod, 1);
            if (D.37838 != 0) goto <D.37839>; else goto <D.37840>;
            <D.37839>:
            D.34618 = cmethod->klass;
            D.37841 = mono_class_needs_cctor_run (D.34618, method);
            if (D.37841 != 0) goto <D.37842>; else goto <D.37843>;
            <D.37842>:
            D.34618 = cmethod->klass;
            emit_generic_class_init (cfg, D.34618);
            D.34618 = cmethod->klass;
            if (D.34618 == 0B) goto <D.37844>; else goto <D.37846>;
            <D.37846>:
            D.34618 = cmethod->klass;
            D.35178 = D.34618->exception_type;
            if (D.35178 != 0) goto <D.37844>; else goto <D.37845>;
            <D.37844>:
            D.34618 = cmethod->klass;
            cfg->exception_ptr = D.34618;
            D.37847 = mini_get_debug_options ();
            D.37848 = D.37847->break_on_unverified;
            if (D.37848 != 0) goto <D.37849>; else goto load_error;
            <D.37849>:
            raise (5);
            <D.37845>:
            <D.37843>:
            <D.37840>:
            <D.37837>:
            <D.37835>:
            <D.37833>:
            <D.37831>:
            D.34618 = cmethod->klass;
            D.34619 = BIT_FIELD_REF <*D.34618, 8, 160>;
            D.34620 = D.34619 & 8;
            if (D.34620 != 0) goto <D.37850>; else goto <D.37851>;
            <D.37850>:
            D.34618 = cmethod->klass;
            D.37852 = mono_class_generic_sharing_enabled (D.34618);
            if (D.37852 != 0) goto <D.37853>; else goto <D.37854>;
            <D.37853>:
            D.37855 = mono_method_is_generic_sharable (cmethod, 1);
            if (D.37855 != 0) goto <D.37856>; else goto <D.37857>;
            <D.37856>:
            D.35363 = BIT_FIELD_REF <*cmethod, 8, 168>;
            D.35364 = D.35363 & 16;
            if (D.35364 != 0) goto <D.37860>; else goto <D.37858>;
            <D.37860>:
            D.37861 = mono_method_get_context (cmethod);
            D.37862 = D.37861->method_inst;
            if (D.37862 != 0B) goto <D.37863>; else goto <D.37858>;
            <D.37863>:
            D.32780 = cfg->domain;
            D.34618 = cmethod->klass;
            mono_class_vtable (D.32780, D.34618);
            D.34618 = cmethod->klass;
            if (D.34618 == 0B) goto <D.37864>; else goto <D.37866>;
            <D.37866>:
            D.34618 = cmethod->klass;
            D.35178 = D.34618->exception_type;
            if (D.35178 != 0) goto <D.37864>; else goto <D.37865>;
            <D.37864>:
            D.34618 = cmethod->klass;
            cfg->exception_ptr = D.34618;
            D.37867 = mini_get_debug_options ();
            D.37868 = D.37867->break_on_unverified;
            if (D.37868 != 0) goto <D.37869>; else goto load_error;
            <D.37869>:
            raise (5);
            <D.37865>:
            vtable_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 8);
            goto <D.37859>;
            <D.37858>:
            if (context_used != 0) goto <D.37870>; else goto <D.37871>;
            <D.37870>:
            D.34618 = cmethod->klass;
            vtable_arg = emit_get_rgctx_klass (cfg, context_used, D.34618, 2);
            goto <D.37872>;
            <D.37871>:
            {
              struct MonoVTable * vtable;

              D.32780 = cfg->domain;
              D.34618 = cmethod->klass;
              vtable = mono_class_vtable (D.32780, D.34618);
              D.34618 = cmethod->klass;
              if (D.34618 == 0B) goto <D.37873>; else goto <D.37875>;
              <D.37875>:
              D.34618 = cmethod->klass;
              D.35178 = D.34618->exception_type;
              if (D.35178 != 0) goto <D.37873>; else goto <D.37874>;
              <D.37873>:
              D.34618 = cmethod->klass;
              cfg->exception_ptr = D.34618;
              D.37876 = mini_get_debug_options ();
              D.37877 = D.37876->break_on_unverified;
              if (D.37877 != 0) goto <D.37878>; else goto load_error;
              <D.37878>:
              raise (5);
              <D.37874>:
              D.32755 = cfg->mempool;
              vtable_arg = mono_mempool_alloc (D.32755, 56);
              vtable_arg->data.op[1].const_val = 0;
              D.37879 = vtable_arg->data.op[1].const_val;
              vtable_arg->data.op[0].const_val = D.37879;
              vtable_arg->prev = 0B;
              D.37880 = vtable_arg->prev;
              vtable_arg->next = D.37880;
              D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.33151 = D.33150 & 64;
              if (D.33151 != 0) goto <D.37882>; else goto <D.37883>;
              <D.37882>:
              iftmp.180 = 732;
              goto <D.37884>;
              <D.37883>:
              iftmp.180 = 362;
              <D.37884>:
              vtable_arg->opcode = iftmp.180;
              vtable_arg->flags = 0;
              vtable_arg->type = 0;
              vtable_arg->dreg = -1;
              vtable_arg->sreg3 = -1;
              D.37885 = vtable_arg->sreg3;
              vtable_arg->sreg2 = D.37885;
              D.37886 = vtable_arg->sreg2;
              vtable_arg->sreg1 = D.37886;
              D.32979 = cfg->ip;
              vtable_arg->cil_code = D.32979;
              D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.33151 = D.33150 & 64;
              if (D.33151 != 0) goto <D.37888>; else goto <D.37889>;
              <D.37888>:
              iftmp.181 = vtable->klass;
              goto <D.37890>;
              <D.37889>:
              iftmp.181 = vtable;
              <D.37890>:
              vtable_arg->data.op[0].p = iftmp.181;
              vtable_arg->data.op[1].src = 14B;
              vtable_arg->type = 3;
              D.37891 = alloc_dreg (cfg, 3);
              D.37892 = (int) D.37891;
              vtable_arg->dreg = D.37892;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.37893>; else goto <D.37894>;
              <D.37893>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = vtable_arg;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              vtable_arg->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = vtable_arg;
              goto <D.37895>;
              <D.37894>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = vtable_arg;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.37895>:
            }
            <D.37872>:
            <D.37859>:
            <D.37857>:
            <D.37854>:
            <D.37851>:
            D.37896 = fsig->param_count;
            n = (int) D.37896;
            sp.83 = (int) sp;
            stack_start.84 = (int) stack_start;
            D.33526 = sp.83 - stack_start.84;
            D.33527 = D.33526 /[ex] 4;
            if (D.33527 < n) goto <D.37897>; else goto <D.37898>;
            <D.37897>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.37899>; else goto <D.37900>;
            <D.37899>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.37901>; else goto <D.37902>;
            <D.37901>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.37902>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.37900>:
            D.37903 = mini_get_debug_options ();
            D.37904 = D.37903->break_on_unverified;
            if (D.37904 != 0) goto <D.37905>; else goto unverified;
            <D.37905>:
            raise (5);
            <D.37898>:
            bblock.76 = bblock;
            D.37723 = BIT_FIELD_REF <*bblock.76, 8, 912>;
            D.37724 = D.37723 & 1;
            if (D.37724 != 0) goto <D.37909>; else goto <D.37910>;
            <D.37909>:
            D.34618 = cmethod->klass;
            D.34795 = D.34618->image;
            D.34796 = mono_defaults.corlib;
            if (D.34795 == D.34796) goto <D.37911>; else goto <D.37912>;
            <D.37911>:
            D.34618 = cmethod->klass;
            D.37913 = is_exception_class (D.34618);
            if (D.37913 != 0) goto <D.37914>; else goto <D.37915>;
            <D.37914>:
            if (n <= 2) goto <D.37916>; else goto <D.37917>;
            <D.37916>:
            if (n <= 0) goto <D.37908>; else goto <D.37918>;
            <D.37918>:
            D.37919 = fsig->params[0];
            D.37920 = BIT_FIELD_REF <*D.37919, 16, 48>;
            D.37921 = D.37920 & 16639;
            if (D.37921 == 14) goto <D.37908>; else goto <D.37907>;
            <D.37908>:
            if (n <= 1) goto <D.37906>; else goto <D.37922>;
            <D.37922>:
            D.37923 = fsig->params[1];
            D.37924 = BIT_FIELD_REF <*D.37923, 16, 48>;
            D.37925 = D.37924 & 16639;
            if (D.37925 == 14) goto <D.37906>; else goto <D.37907>;
            <D.37906>:
            {
              struct MonoInst * iargs[3];

              try
                {
                  D.37926 = vtable_arg != 0B;
                  D.37927 = (long int) D.37926;
                  D.37928 = __builtin_expect (D.37927, 0);
                  if (D.37928 != 0) goto <D.37929>; else goto <D.37930>;
                  <D.37929>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9300, "!vtable_arg");
                  <D.37930>:
                  n.88 = (unsigned int) n;
                  D.33677 = n.88 * 4;
                  D.34779 = -D.33677;
                  sp = sp + D.34779;
                  D.32755 = cfg->mempool;
                  D.37931 = mono_mempool_alloc (D.32755, 56);
                  iargs[0] = D.37931;
                  D.37932 = iargs[0];
                  D.37932 = iargs[0];
                  D.37932->data.op[1].const_val = 0;
                  D.37933 = D.37932->data.op[1].const_val;
                  D.37932->data.op[0].const_val = D.37933;
                  D.37932 = iargs[0];
                  D.37932 = iargs[0];
                  D.37932->prev = 0B;
                  D.37934 = D.37932->prev;
                  D.37932->next = D.37934;
                  D.37932 = iargs[0];
                  D.37932->opcode = 362;
                  D.37932 = iargs[0];
                  D.37932->flags = 0;
                  D.37932 = iargs[0];
                  D.37932->type = 0;
                  D.37932 = iargs[0];
                  D.37932->dreg = -1;
                  D.37932 = iargs[0];
                  D.37932 = iargs[0];
                  D.37932 = iargs[0];
                  D.37932->sreg3 = -1;
                  D.37935 = D.37932->sreg3;
                  D.37932->sreg2 = D.37935;
                  D.37936 = D.37932->sreg2;
                  D.37932->sreg1 = D.37936;
                  D.37932 = iargs[0];
                  D.32979 = cfg->ip;
                  D.37932->cil_code = D.32979;
                  D.37932 = iargs[0];
                  D.34618 = cmethod->klass;
                  D.37937 = D.34618->type_token;
                  D.37938 = (int) D.37937;
                  D.37932->data.op[0].const_val = D.37938;
                  D.37932 = iargs[0];
                  D.37932->type = 1;
                  D.37932 = iargs[0];
                  D.37939 = alloc_dreg (cfg, 1);
                  D.37940 = (int) D.37939;
                  D.37932->dreg = D.37940;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.37941>; else goto <D.37942>;
                  <D.37941>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.37932 = iargs[0];
                  D.33008->next = D.37932;
                  D.37932 = iargs[0];
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.37932->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  D.37932 = iargs[0];
                  bblock.125->last_ins = D.37932;
                  goto <D.37943>;
                  <D.37942>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  D.37932 = iargs[0];
                  bblock.125->last_ins = D.37932;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.37943>:
                  switch (n) <default: <D.30276>, case 0: <D.30272>, case 1: <D.30274>, case 2: <D.30275>>
                  <D.30272>:
                  sp.182 = sp;
                  sp = sp.182 + 4;
                  D.37945 = mono_emit_jit_icall (cfg, mono_create_corlib_exception_0, &iargs);
                  *sp.182 = D.37945;
                  goto <D.30273>;
                  <D.30274>:
                  D.33750 = *sp;
                  iargs[1] = D.33750;
                  sp.183 = sp;
                  sp = sp.183 + 4;
                  D.37947 = mono_emit_jit_icall (cfg, mono_create_corlib_exception_1, &iargs);
                  *sp.183 = D.37947;
                  goto <D.30273>;
                  <D.30275>:
                  D.33750 = *sp;
                  iargs[1] = D.33750;
                  D.37948 = MEM[(struct MonoInst * *)sp + 4B];
                  iargs[2] = D.37948;
                  sp.184 = sp;
                  sp = sp.184 + 4;
                  D.37950 = mono_emit_jit_icall (cfg, mono_create_corlib_exception_2, &iargs);
                  *sp.184 = D.37950;
                  goto <D.30273>;
                  <D.30276>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 9319);
                  <D.30273>:
                  ip = ip + 5;
                  inline_costs = inline_costs + 5;
                  goto <D.29893>;
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            <D.37907>:
            <D.37917>:
            <D.37915>:
            <D.37912>:
            <D.37910>:
            goto <D.30278>;
            <D.30277>:
            sp = sp + 4294967292;
            D.34875 = sp + 4;
            D.33750 = *sp;
            *D.34875 = D.33750;
            <D.30278>:
            n.185 = n;
            n = n.185 + -1;
            if (n.185 != 0) goto <D.30277>; else goto <D.30279>;
            <D.30279>:
            this_ins.type = 6;
            *sp = &this_ins;
            D.37952 = check_call_signature (cfg, fsig, sp);
            if (D.37952 != 0) goto <D.37953>; else goto <D.37954>;
            <D.37953>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.37955>; else goto <D.37956>;
            <D.37955>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.37957>; else goto <D.37958>;
            <D.37957>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.37958>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.37956>:
            D.37959 = mini_get_debug_options ();
            D.37960 = D.37959->break_on_unverified;
            if (D.37960 != 0) goto <D.37961>; else goto unverified;
            <D.37961>:
            raise (5);
            <D.37954>:
            iargs[0] = 0B;
            D.34618 = cmethod->klass;
            D.37962 = mini_class_is_system_array (D.34618);
            if (D.37962 != 0) goto <D.37963>; else goto <D.37964>;
            <D.37963>:
            D.37926 = vtable_arg != 0B;
            D.37927 = (long int) D.37926;
            D.37928 = __builtin_expect (D.37927, 0);
            if (D.37928 != 0) goto <D.37965>; else goto <D.37966>;
            <D.37965>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9342, "!vtable_arg");
            <D.37966>:
            D.37967 = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
            *sp = D.37967;
            D.37896 = fsig->param_count;
            if (D.37896 == 1) goto <D.37968>; else goto <D.37969>;
            <D.37968>:
            alloc = mono_emit_jit_icall (cfg, mono_array_new_1, sp);
            goto <D.37970>;
            <D.37969>:
            D.37896 = fsig->param_count;
            if (D.37896 == 2) goto <D.37971>; else goto <D.37972>;
            <D.37971>:
            alloc = mono_emit_jit_icall (cfg, mono_array_new_2, sp);
            goto <D.37973>;
            <D.37972>:
            D.37896 = fsig->param_count;
            if (D.37896 == 3) goto <D.37974>; else goto <D.37975>;
            <D.37974>:
            alloc = mono_emit_jit_icall (cfg, mono_array_new_3, sp);
            goto <D.37976>;
            <D.37975>:
            D.37896 = fsig->param_count;
            if (D.37896 == 4) goto <D.37977>; else goto <D.37978>;
            <D.37977>:
            alloc = mono_emit_jit_icall (cfg, mono_array_new_4, sp);
            goto <D.37979>;
            <D.37978>:
            D.37896 = fsig->param_count;
            D.37980 = (int) D.37896;
            alloc = handle_array_new (cfg, D.37980, sp, ip);
            <D.37979>:
            <D.37976>:
            <D.37973>:
            <D.37970>:
            goto <D.37981>;
            <D.37964>:
            D.34740 = BIT_FIELD_REF <*cmethod, 8, 160>;
            D.34741 = D.34740 & 128;
            if (D.34741 != 0) goto <D.37982>; else goto <D.37983>;
            <D.37982>:
            D.35784 = context_used != 0;
            D.37984 = (long int) D.35784;
            D.37985 = __builtin_expect (D.37984, 0);
            if (D.37985 != 0) goto <D.37986>; else goto <D.37987>;
            <D.37986>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9359, "!context_used");
            <D.37987>:
            D.37926 = vtable_arg != 0B;
            D.37927 = (long int) D.37926;
            D.37928 = __builtin_expect (D.37927, 0);
            if (D.37928 != 0) goto <D.37988>; else goto <D.37989>;
            <D.37988>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9360, "!vtable_arg");
            <D.37989>:
            D.32755 = cfg->mempool;
            D.37990 = mono_mempool_alloc (D.32755, 56);
            *sp = D.37990;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->data.op[1].const_val = 0;
            D.35486 = D.33750->data.op[1].const_val;
            D.33750->data.op[0].const_val = D.35486;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->prev = 0B;
            D.35487 = D.33750->prev;
            D.33750->next = D.35487;
            D.33750 = *sp;
            D.33750->opcode = 362;
            D.33750 = *sp;
            D.33750->flags = 0;
            D.33750 = *sp;
            D.33750->type = 0;
            D.33750 = *sp;
            D.33750->dreg = -1;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->sreg3 = -1;
            D.35488 = D.33750->sreg3;
            D.33750->sreg2 = D.35488;
            D.35489 = D.33750->sreg2;
            D.33750->sreg1 = D.35489;
            D.33750 = *sp;
            D.32979 = cfg->ip;
            D.33750->cil_code = D.32979;
            D.33750 = *sp;
            D.33750->data.op[0].p = 0B;
            D.33750 = *sp;
            D.33750->type = 3;
            D.33750 = *sp;
            D.37991 = alloc_dreg (cfg, 3);
            D.37992 = (int) D.37991;
            D.33750->dreg = D.37992;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.37993>; else goto <D.37994>;
            <D.37993>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750 = *sp;
            D.33008->next = D.33750;
            D.33750 = *sp;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            goto <D.37995>;
            <D.37994>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.37995>:
            alloc = mono_emit_method_call_full (cfg, cmethod, fsig, 0, sp, 0B, 0B, 0B);
            goto <D.37996>;
            <D.37983>:
            {
              struct MonoInst * callvirt_this_arg;

              callvirt_this_arg = 0B;
              D.34618 = cmethod->klass;
              D.34619 = BIT_FIELD_REF <*D.34618, 8, 160>;
              D.34620 = D.34619 & 8;
              if (D.34620 != 0) goto <D.37997>; else goto <D.37998>;
              <D.37997>:
              D.34618 = cmethod->klass;
              D.37999 = &D.34618->byval_arg;
              D.38000 = mono_compile_create_var (cfg, D.37999, 329);
              iargs[0] = D.38000;
              D.38001 = iargs[0];
              D.38002 = D.38001->dreg;
              D.34618 = cmethod->klass;
              D.37999 = &D.34618->byval_arg;
              emit_init_rvar (cfg, D.38002, D.37999);
              D.32755 = cfg->mempool;
              D.38003 = mono_mempool_alloc (D.32755, 56);
              *sp = D.38003;
              D.33750 = *sp;
              D.33750 = *sp;
              D.33750->data.op[1].const_val = 0;
              D.35486 = D.33750->data.op[1].const_val;
              D.33750->data.op[0].const_val = D.35486;
              D.33750 = *sp;
              D.33750 = *sp;
              D.33750->prev = 0B;
              D.35487 = D.33750->prev;
              D.33750->next = D.35487;
              D.33750 = *sp;
              D.33750->opcode = 314;
              D.33750 = *sp;
              D.33750->flags = 0;
              D.33750 = *sp;
              D.33750->type = 0;
              D.33750 = *sp;
              D.33750->dreg = -1;
              D.33750 = *sp;
              D.33750 = *sp;
              D.33750 = *sp;
              D.33750->sreg3 = -1;
              D.35488 = D.33750->sreg3;
              D.33750->sreg2 = D.35488;
              D.35489 = D.33750->sreg2;
              D.33750->sreg1 = D.35489;
              D.33750 = *sp;
              D.32979 = cfg->ip;
              D.33750->cil_code = D.32979;
              D.33750 = *sp;
              D.33491 = cfg->varinfo;
              D.38001 = iargs[0];
              D.38004 = D.38001->data.op[0].const_val;
              D.38005 = (unsigned int) D.38004;
              D.38006 = D.38005 * 4;
              D.38007 = D.33491 + D.38006;
              D.38008 = *D.38007;
              D.33750->data.op[0].p = D.38008;
              D.33491 = cfg->varinfo;
              D.38001 = iargs[0];
              D.38004 = D.38001->data.op[0].const_val;
              D.38005 = (unsigned int) D.38004;
              D.38006 = D.38005 * 4;
              D.38007 = D.33491 + D.38006;
              D.38008 = *D.38007;
              D.33491 = cfg->varinfo;
              D.38001 = iargs[0];
              D.38004 = D.38001->data.op[0].const_val;
              D.38005 = (unsigned int) D.38004;
              D.38006 = D.38005 * 4;
              D.38007 = D.33491 + D.38006;
              D.38008 = *D.38007;
              D.38009 = D.38008->flags;
              D.38010 = D.38009 | 16;
              D.38008->flags = D.38010;
              D.33750 = *sp;
              D.33750->type = 5;
              D.33750 = *sp;
              D.33491 = cfg->varinfo;
              D.38001 = iargs[0];
              D.38004 = D.38001->data.op[0].const_val;
              D.38005 = (unsigned int) D.38004;
              D.38006 = D.38005 * 4;
              D.38007 = D.33491 + D.38006;
              D.38008 = *D.38007;
              D.38011 = D.38008->klass;
              D.33750->klass = D.38011;
              D.33750 = *sp;
              D.38012 = alloc_dreg (cfg, 5);
              D.38013 = (int) D.38012;
              D.33750->dreg = D.38013;
              cfg->has_indirection = 1;
              D.32904 = cfg->gsharedvt;
              D.33836 = D.32904 != 0;
              D.33837 = (long int) D.33836;
              D.33838 = __builtin_expect (D.33837, 0);
              if (D.33838 != 0) goto <D.38014>; else goto <D.38015>;
              <D.38014>:
              D.33491 = cfg->varinfo;
              D.38001 = iargs[0];
              D.38004 = D.38001->data.op[0].const_val;
              D.38005 = (unsigned int) D.38004;
              D.38006 = D.38005 * 4;
              D.38007 = D.33491 + D.38006;
              D.38008 = *D.38007;
              D.38016 = D.38008->data.op[1].vtype;
              D.38017 = mini_is_gsharedvt_variable_type (cfg, D.38016);
              if (D.38017 != 0) goto <D.38018>; else goto <D.38019>;
              <D.38018>:
              handle_gsharedvt_ldaddr (cfg);
              <D.38019>:
              <D.38015>:
              D.38021 = mono_arch_is_soft_float ();
              if (D.38021 != 0) goto <D.38022>; else goto <D.38023>;
              <D.38022>:
              D.33491 = cfg->varinfo;
              D.38001 = iargs[0];
              D.38004 = D.38001->data.op[0].const_val;
              D.38005 = (unsigned int) D.38004;
              D.38006 = D.38005 * 4;
              D.38007 = D.33491 + D.38006;
              D.38008 = *D.38007;
              D.38024 = D.38008->type;
              D.38025 = D.38024 == 2;
              D.38026 = D.38024 == 4;
              D.38027 = D.38025 | D.38026;
              D.38028 = (int) D.38027;
              iftmp.186 = (_Bool) D.38028;
              goto <D.38029>;
              <D.38023>:
              D.33491 = cfg->varinfo;
              D.38001 = iargs[0];
              D.38004 = D.38001->data.op[0].const_val;
              D.38005 = (unsigned int) D.38004;
              D.38006 = D.38005 * 4;
              D.38007 = D.33491 + D.38006;
              D.38008 = *D.38007;
              D.38030 = D.38008->type;
              iftmp.186 = D.38030 == 2;
              <D.38029>:
              if (iftmp.186 != 0) goto <D.38031>; else goto <D.38032>;
              <D.38031>:
              {
                struct MonoInst * var1;
                struct MonoInst * var2;

                D.33491 = cfg->varinfo;
                D.38001 = iargs[0];
                D.38004 = D.38001->data.op[0].const_val;
                D.38005 = (unsigned int) D.38004;
                D.38006 = D.38005 * 4;
                D.38007 = D.33491 + D.38006;
                D.38008 = *D.38007;
                D.38034 = D.38008->dreg;
                D.38035 = D.38034 + 1;
                D.38036 = (unsigned int) D.38035;
                D.33862 = cfg->vreg_to_inst_len;
                if (D.38036 < D.33862) goto <D.38037>; else goto <D.38038>;
                <D.38037>:
                D.33865 = cfg->vreg_to_inst;
                D.33491 = cfg->varinfo;
                D.38001 = iargs[0];
                D.38004 = D.38001->data.op[0].const_val;
                D.38005 = (unsigned int) D.38004;
                D.38006 = D.38005 * 4;
                D.38007 = D.33491 + D.38006;
                D.38008 = *D.38007;
                D.38034 = D.38008->dreg;
                D.38039 = (sizetype) D.38034;
                D.38040 = D.38039 + 1;
                D.38041 = D.38040 * 4;
                D.38042 = D.33865 + D.38041;
                iftmp.187 = *D.38042;
                goto <D.38043>;
                <D.38038>:
                iftmp.187 = 0B;
                <D.38043>:
                var1 = iftmp.187;
                D.33491 = cfg->varinfo;
                D.38001 = iargs[0];
                D.38004 = D.38001->data.op[0].const_val;
                D.38005 = (unsigned int) D.38004;
                D.38006 = D.38005 * 4;
                D.38007 = D.33491 + D.38006;
                D.38008 = *D.38007;
                D.38034 = D.38008->dreg;
                D.38045 = D.38034 + 2;
                D.38046 = (unsigned int) D.38045;
                D.33862 = cfg->vreg_to_inst_len;
                if (D.38046 < D.33862) goto <D.38047>; else goto <D.38048>;
                <D.38047>:
                D.33865 = cfg->vreg_to_inst;
                D.33491 = cfg->varinfo;
                D.38001 = iargs[0];
                D.38004 = D.38001->data.op[0].const_val;
                D.38005 = (unsigned int) D.38004;
                D.38006 = D.38005 * 4;
                D.38007 = D.33491 + D.38006;
                D.38008 = *D.38007;
                D.38034 = D.38008->dreg;
                D.38039 = (sizetype) D.38034;
                D.38049 = D.38039 + 2;
                D.38050 = D.38049 * 4;
                D.38051 = D.33865 + D.38050;
                iftmp.188 = *D.38051;
                goto <D.38052>;
                <D.38048>:
                iftmp.188 = 0B;
                <D.38052>:
                var2 = iftmp.188;
                D.38053 = var1 == 0B;
                D.38054 = (long int) D.38053;
                D.38055 = __builtin_expect (D.38054, 0);
                if (D.38055 != 0) goto <D.38056>; else goto <D.38057>;
                <D.38056>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9371, "var1");
                <D.38057>:
                D.38058 = var2 == 0B;
                D.38059 = (long int) D.38058;
                D.38060 = __builtin_expect (D.38059, 0);
                if (D.38060 != 0) goto <D.38061>; else goto <D.38062>;
                <D.38061>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9371, "var2");
                <D.38062>:
                D.38063 = var1->flags;
                D.38064 = D.38063 | 16;
                var1->flags = D.38064;
                D.38065 = var2->flags;
                D.38066 = D.38065 | 16;
                var2->flags = D.38066;
              }
              <D.38032>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.38067>; else goto <D.38068>;
              <D.38067>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33750 = *sp;
              D.33008->next = D.33750;
              D.33750 = *sp;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33750->prev = D.33008;
              bblock.125 = cfg->cbb;
              D.33750 = *sp;
              bblock.125->last_ins = D.33750;
              goto <D.38069>;
              <D.38068>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              D.33750 = *sp;
              bblock.125->last_ins = D.33750;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.38069>:
              alloc = 0B;
              goto <D.38070>;
              <D.37998>:
              if (context_used != 0) goto <D.38071>; else goto <D.38072>;
              <D.38071>:
              D.34618 = cmethod->klass;
              alloc = handle_alloc (cfg, D.34618, 0, context_used);
              *sp = alloc;
              goto <D.38073>;
              <D.38072>:
              {
                struct MonoVTable * vtable;

                vtable = 0B;
                D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
                D.33151 = D.33150 & 64;
                if (D.33151 == 0) goto <D.38074>; else goto <D.38075>;
                <D.38074>:
                D.32780 = cfg->domain;
                D.34618 = cmethod->klass;
                vtable = mono_class_vtable (D.32780, D.34618);
                <D.38075>:
                D.34618 = cmethod->klass;
                if (D.34618 == 0B) goto <D.38076>; else goto <D.38078>;
                <D.38078>:
                D.34618 = cmethod->klass;
                D.35178 = D.34618->exception_type;
                if (D.35178 != 0) goto <D.38076>; else goto <D.38077>;
                <D.38076>:
                D.34618 = cmethod->klass;
                cfg->exception_ptr = D.34618;
                D.38079 = mini_get_debug_options ();
                D.38080 = D.38079->break_on_unverified;
                if (D.38080 != 0) goto <D.38081>; else goto load_error;
                <D.38081>:
                raise (5);
                <D.38077>:
                D.34618 = cmethod->klass;
                D.38082 = mini_field_access_needs_cctor_run (cfg, method, D.34618, vtable);
                if (D.38082 != 0) goto <D.38083>; else goto <D.38084>;
                <D.38083>:
                D.34618 = cmethod->klass;
                D.38085 = monoeg_g_slist_find (class_inits, D.34618);
                if (D.38085 == 0B) goto <D.38086>; else goto <D.38087>;
                <D.38086>:
                D.34618 = cmethod->klass;
                helper_sig_class_init_trampoline.189 = helper_sig_class_init_trampoline;
                mono_emit_abs_call (cfg, 15, D.34618, helper_sig_class_init_trampoline.189, 0B);
                D.32836 = cfg->verbose_level;
                if (D.32836 > 2) goto <D.38089>; else goto <D.38090>;
                <D.38089>:
                D.34618 = cmethod->klass;
                D.38091 = D.34618->name_space;
                D.34618 = cmethod->klass;
                D.38092 = D.34618->name;
                printf ("class %s.%s needs init call for ctor\n", D.38091, D.38092);
                <D.38090>:
                D.34618 = cmethod->klass;
                class_inits = monoeg_g_slist_prepend (class_inits, D.34618);
                <D.38087>:
                <D.38084>:
                D.34618 = cmethod->klass;
                alloc = handle_alloc (cfg, D.34618, 0, 0);
                *sp = alloc;
              }
              <D.38073>:
              <D.38070>:
              D.33309 = cfg->exception_type;
              if (D.33309 != 0) goto exception_exit; else goto <D.38093>;
              <D.38093>:
              if (alloc != 0B) goto <D.38094>; else goto <D.38095>;
              <D.38094>:
              {
                struct MonoInst * inst;

                D.32755 = cfg->mempool;
                inst = mono_mempool_alloc (D.32755, 56);
                inst->data.op[1].const_val = 0;
                D.38096 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.38096;
                inst->prev = 0B;
                D.38097 = inst->prev;
                inst->next = D.38097;
                inst->opcode = 799;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.38098 = inst->sreg3;
                inst->sreg2 = D.38098;
                D.38099 = inst->sreg2;
                inst->sreg1 = D.38099;
                D.32979 = cfg->ip;
                inst->cil_code = D.32979;
                inst->dreg = -1;
                D.38100 = alloc->dreg;
                inst->sreg1 = D.38100;
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                if (D.33008 != 0B) goto <D.38101>; else goto <D.38102>;
                <D.38101>:
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                D.33008->next = inst;
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                inst->prev = D.33008;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                goto <D.38103>;
                <D.38102>:
                bblock.125 = cfg->cbb;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                D.33008 = bblock.125->last_ins;
                bblock.125->code = D.33008;
                <D.38103>:
              }
              <D.38095>:
              D.34618 = cmethod->klass;
              D.34661 = BIT_FIELD_REF <*D.34618, 8, 176>;
              D.34662 = D.34661 & 64;
              if (D.34662 != 0) goto <D.38104>; else goto <D.38105>;
              <D.38104>:
              callvirt_this_arg = *sp;
              <D.38105>:
              if (cmethod != 0B) goto <D.38108>; else goto <D.38106>;
              <D.38108>:
              D.33148 = cfg->opt;
              D.35152 = D.33148 & 2048;
              if (D.35152 != 0) goto <D.38109>; else goto <D.38106>;
              <D.38109>:
              ins = mini_emit_inst_for_ctor (cfg, cmethod, fsig, sp);
              if (ins != 0B) goto <D.38110>; else goto <D.38106>;
              <D.38110>:
              D.38111 = fsig->ret;
              D.38112 = mono_type_is_void (D.38111);
              if (D.38112 == 0) goto <D.38113>; else goto <D.38114>;
              <D.38113>:
              D.38111 = fsig->ret;
              type_to_eval_stack_type (cfg, D.38111, ins);
              *sp = ins;
              sp = sp + 4;
              <D.38114>:
              D.33309 = cfg->exception_type;
              if (D.33309 != 0) goto exception_exit; else goto <D.38115>;
              <D.38115>:
              goto <D.38107>;
              <D.38106>:
              D.33148 = cfg->opt;
              D.35603 = D.33148 & 4;
              if (D.35603 != 0) goto <D.38118>; else goto <D.38116>;
              <D.38118>:
              D.35311 = cmethod != 0B;
              D.35859 = context_used == 0;
              D.38119 = D.35311 & D.35859;
              if (D.38119 != 0) goto <D.38120>; else goto <D.38116>;
              <D.38120>:
              D.38121 = vtable_arg == 0B;
              D.38122 = disable_inline == 0;
              D.38123 = D.38121 & D.38122;
              if (D.38123 != 0) goto <D.38124>; else goto <D.38116>;
              <D.38124>:
              D.38125 = mono_method_check_inlining (cfg, cmethod);
              if (D.38125 != 0) goto <D.38126>; else goto <D.38116>;
              <D.38126>:
              D.34618 = cmethod->klass;
              D.38127 = mono_defaults.exception_class;
              D.38128 = mono_class_is_subclass_of (D.34618, D.38127, 0);
              if (D.38128 == 0) goto <D.38129>; else goto <D.38116>;
              <D.38129>:
              D.38130 = monoeg_g_list_find (dont_inline, cmethod);
              if (D.38130 == 0B) goto <D.38131>; else goto <D.38116>;
              <D.38131>:
              {
                int costs;

                D.32923 = cfg->real_offset;
                costs = inline_method (cfg, cmethod, fsig, sp, ip, D.32923, dont_inline, 0);
                if (costs != 0) goto <D.38132>; else goto <D.38133>;
                <D.38132>:
                D.32923 = cfg->real_offset;
                D.35630 = D.32923 + 5;
                cfg->real_offset = D.35630;
                bblock.125 = cfg->cbb;
                bblock = bblock.125;
                D.38134 = costs + -5;
                inline_costs = D.38134 + inline_costs;
                goto <D.38135>;
                <D.38133>:
                D.32726 = cfg->method;
                if (D.32726 != method) goto <D.38136>; else goto <D.38137>;
                <D.38136>:
                D.32698 = BIT_FIELD_REF <*method, 8, 160>;
                D.32699 = D.32698 & 124;
                if (D.32699 == 0) goto <D.38138>; else goto <D.38139>;
                <D.38138>:
                D.32836 = cfg->verbose_level;
                if (D.32836 > 1) goto <D.38140>; else goto <D.38141>;
                <D.38140>:
                printf ("inline failed: %s\n", "inline failure");
                <D.38141>:
                goto inline_failure;
                <D.38139>:
                <D.38137>:
                D.32904 = cfg->gsharedvt;
                if (D.32904 != 0) goto <D.38142>; else goto <D.38143>;
                <D.38142>:
                D.38144 = mini_is_gsharedvt_signature (cfg, fsig);
                if (D.38144 != 0) goto <D.38145>; else goto <D.38146>;
                <D.38145>:
                D.32904 = cfg->gsharedvt;
                if (D.32904 != 0) goto <D.38147>; else goto <D.38148>;
                <D.38147>:
                D.32693 = method->klass;
                D.34423 = D.32693->name_space;
                D.32693 = method->klass;
                D.34424 = D.32693->name;
                D.34425 = method->name;
                D.34426 = method->signature;
                D.34427 = D.34426->param_count;
                D.34428 = (int) D.34427;
                D.33632 = *ip;
                D.33633 = (int) D.33632;
                D.38149 = mono_opcode_name (D.33633);
                D.38150 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.34423, D.34424, D.34425, D.34428, D.38149, "method-to-ir.c", 9439);
                cfg->exception_message = D.38150;
                D.32836 = cfg->verbose_level;
                if (D.32836 > 1) goto <D.38151>; else goto <D.38152>;
                <D.38151>:
                D.34433 = cfg->exception_message;
                printf ("%s\n", D.34433);
                <D.38152>:
                mono_cfg_set_exception (cfg, 11);
                goto exception_exit;
                <D.38148>:
                <D.38146>:
                <D.38143>:
                mono_emit_method_call_full (cfg, cmethod, fsig, 0, sp, callvirt_this_arg, 0B, 0B);
                <D.38135>:
              }
              goto <D.38117>;
              <D.38116>:
              D.32904 = cfg->gsharedvt;
              if (D.32904 != 0) goto <D.38155>; else goto <D.38153>;
              <D.38155>:
              D.38156 = mini_is_gsharedvt_signature (cfg, fsig);
              if (D.38156 != 0) goto <D.38157>; else goto <D.38153>;
              <D.38157>:
              {
                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.38154>;
              <D.38153>:
              if (context_used != 0) goto <D.38161>; else goto <D.38158>;
              <D.38161>:
              D.38162 = mono_method_is_generic_sharable (cmethod, 1);
              if (D.38162 == 0) goto <D.38159>; else goto <D.38163>;
              <D.38163>:
              D.34618 = cmethod->klass;
              D.38164 = mono_class_generic_sharing_enabled (D.34618);
              if (D.38164 == 0) goto <D.38159>; else goto <D.38158>;
              <D.38159>:
              {
                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.38160>;
              <D.38158>:
              D.32726 = cfg->method;
              if (D.32726 != method) goto <D.38165>; else goto <D.38166>;
              <D.38165>:
              D.32698 = BIT_FIELD_REF <*method, 8, 160>;
              D.32699 = D.32698 & 124;
              if (D.32699 == 0) goto <D.38167>; else goto <D.38168>;
              <D.38167>:
              D.32836 = cfg->verbose_level;
              if (D.32836 > 1) goto <D.38169>; else goto <D.38170>;
              <D.38169>:
              printf ("inline failed: %s\n", "ctor call");
              <D.38170>:
              goto inline_failure;
              <D.38168>:
              <D.38166>:
              ins = mono_emit_method_call_full (cfg, cmethod, fsig, 0, sp, callvirt_this_arg, 0B, vtable_arg);
              <D.38160>:
              <D.38154>:
              <D.38117>:
              <D.38107>:
            }
            <D.37996>:
            <D.37981>:
            if (alloc == 0B) goto <D.38171>; else goto <D.38172>;
            <D.38171>:
            D.32755 = cfg->mempool;
            ins = mono_mempool_alloc (D.32755, 56);
            ins->data.op[1].const_val = 0;
            D.32975 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.32975;
            ins->prev = 0B;
            D.32976 = ins->prev;
            ins->next = D.32976;
            ins->opcode = 424;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.32977 = ins->sreg3;
            ins->sreg2 = D.32977;
            D.32978 = ins->sreg2;
            ins->sreg1 = D.32978;
            D.32979 = cfg->ip;
            ins->cil_code = D.32979;
            D.33491 = cfg->varinfo;
            D.38001 = iargs[0];
            D.38004 = D.38001->data.op[0].const_val;
            D.38005 = (unsigned int) D.38004;
            D.38006 = D.38005 * 4;
            D.38007 = D.33491 + D.38006;
            D.38008 = *D.38007;
            D.38016 = D.38008->data.op[1].vtype;
            D.38173 = mono_type_to_regmove (cfg, D.38016);
            D.38174 = (short unsigned int) D.38173;
            ins->opcode = D.38174;
            D.33491 = cfg->varinfo;
            D.38001 = iargs[0];
            D.38004 = D.38001->data.op[0].const_val;
            D.38005 = (unsigned int) D.38004;
            D.38006 = D.38005 * 4;
            D.38007 = D.33491 + D.38006;
            D.38008 = *D.38007;
            D.38016 = D.38008->data.op[1].vtype;
            type_to_eval_stack_type (cfg, D.38016, ins);
            D.33491 = cfg->varinfo;
            D.38001 = iargs[0];
            D.38004 = D.38001->data.op[0].const_val;
            D.38005 = (unsigned int) D.38004;
            D.38006 = D.38005 * 4;
            D.38007 = D.33491 + D.38006;
            D.38008 = *D.38007;
            D.38011 = D.38008->klass;
            ins->klass = D.38011;
            D.33491 = cfg->varinfo;
            D.38001 = iargs[0];
            D.38004 = D.38001->data.op[0].const_val;
            D.38005 = (unsigned int) D.38004;
            D.38006 = D.38005 * 4;
            D.38007 = D.33491 + D.38006;
            D.38008 = *D.38007;
            D.38034 = D.38008->dreg;
            ins->sreg1 = D.38034;
            D.33501 = ins->type;
            D.33502 = (<unnamed type>) D.33501;
            D.38175 = alloc_dreg (cfg, D.33502);
            D.38176 = (int) D.38175;
            ins->dreg = D.38176;
            D.33505 = ins->opcode;
            if (D.33505 == 427) goto <D.38177>; else goto <D.38178>;
            <D.38177>:
            D.33491 = cfg->varinfo;
            D.38001 = iargs[0];
            D.38004 = D.38001->data.op[0].const_val;
            D.38005 = (unsigned int) D.38004;
            D.38006 = D.38005 * 4;
            D.38007 = D.33491 + D.38006;
            D.38008 = *D.38007;
            D.38016 = D.38008->data.op[1].vtype;
            D.38179 = mono_class_from_mono_type (D.38016);
            ins->klass = D.38179;
            <D.38178>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.38180>; else goto <D.38181>;
            <D.38180>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = ins;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            ins->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            goto <D.38182>;
            <D.38181>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.38182>:
            D.38183 = ins->klass;
            D.38184 = &D.38183->byval_arg;
            type_to_eval_stack_type (cfg, D.38184, ins);
            sp.190 = sp;
            sp = sp.190 + 4;
            *sp.190 = ins;
            goto <D.38186>;
            <D.38172>:
            sp.191 = sp;
            sp = sp.191 + 4;
            *sp.191 = alloc;
            <D.38186>:
            ip = ip + 5;
            inline_costs = inline_costs + 5;
            goto <D.29893>;
          }
        finally
          {
            iargs = {CLOBBER};
            this_ins = {CLOBBER};
          }
      }
      <D.30288>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.38188>; else goto <D.38189>;
      <D.38188>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.38190>; else goto <D.38191>;
      <D.38190>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.38192>; else goto <D.38193>;
      <D.38192>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38193>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38191>:
      D.38194 = mini_get_debug_options ();
      D.38195 = D.38194->break_on_unverified;
      if (D.38195 != 0) goto <D.38196>; else goto unverified;
      <D.38196>:
      raise (5);
      <D.38189>:
      sp = sp + 4294967292;
      D.34195 = ip + 5;
      if (D.34195 > end) goto <D.38197>; else goto <D.38198>;
      <D.38197>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.38199>; else goto <D.38200>;
      <D.38199>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.38201>; else goto <D.38202>;
      <D.38201>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38202>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38200>:
      D.38203 = mini_get_debug_options ();
      D.38204 = D.38203->break_on_unverified;
      if (D.38204 != 0) goto <D.38205>; else goto unverified;
      <D.38205>:
      raise (5);
      <D.38198>:
      D.34214 = ip + 1;
      token = mono_read32 (D.34214);
      klass.192 = mini_get_class (method, token, generic_context);
      klass = klass.192;
      klass.170 = klass;
      if (klass.170 == 0B) goto <D.38207>; else goto <D.38209>;
      <D.38209>:
      klass.170 = klass;
      D.37490 = klass.170->exception_type;
      if (D.37490 != 0) goto <D.38207>; else goto <D.38208>;
      <D.38207>:
      klass.170 = klass;
      cfg->exception_ptr = klass.170;
      D.38210 = mini_get_debug_options ();
      D.38211 = D.38210->break_on_unverified;
      if (D.38211 != 0) goto <D.38212>; else goto load_error;
      <D.38212>:
      raise (5);
      <D.38208>:
      D.33750 = *sp;
      D.35492 = D.33750->type;
      if (D.35492 != 6) goto <D.38213>; else goto <D.38214>;
      <D.38213>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.38215>; else goto <D.38216>;
      <D.38215>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.38217>; else goto <D.38218>;
      <D.38217>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38218>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38216>:
      D.38219 = mini_get_debug_options ();
      D.38220 = D.38219->break_on_unverified;
      if (D.38220 != 0) goto <D.38221>; else goto unverified;
      <D.38221>:
      raise (5);
      <D.38214>:
      klass.170 = klass;
      context_used = mini_class_check_context_used (cfg, klass.170);
      if (context_used == 0) goto <D.38224>; else goto <D.38222>;
      <D.38224>:
      klass.170 = klass;
      D.38225 = mini_class_has_reference_variant_generic_argument (cfg, klass.170, context_used);
      if (D.38225 != 0) goto <D.38226>; else goto <D.38222>;
      <D.38226>:
      {
        struct MonoMethod * mono_castclass;
        struct MonoInst * args[3];

        try
          {
            mono_castclass = mono_marshal_get_castclass_with_cache ();
            D.33750 = *sp;
            args[0] = D.33750;
            D.32755 = cfg->mempool;
            D.38227 = mono_mempool_alloc (D.32755, 56);
            args[1] = D.38227;
            D.38228 = args[1];
            D.38228 = args[1];
            D.38228->data.op[1].const_val = 0;
            D.38229 = D.38228->data.op[1].const_val;
            D.38228->data.op[0].const_val = D.38229;
            D.38228 = args[1];
            D.38228 = args[1];
            D.38228->prev = 0B;
            D.38230 = D.38228->prev;
            D.38228->next = D.38230;
            D.38228 = args[1];
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.38232>; else goto <D.38233>;
            <D.38232>:
            iftmp.193 = 732;
            goto <D.38234>;
            <D.38233>:
            iftmp.193 = 362;
            <D.38234>:
            D.38228->opcode = iftmp.193;
            D.38228 = args[1];
            D.38228->flags = 0;
            D.38228 = args[1];
            D.38228->type = 0;
            D.38228 = args[1];
            D.38228->dreg = -1;
            D.38228 = args[1];
            D.38228 = args[1];
            D.38228 = args[1];
            D.38228->sreg3 = -1;
            D.38235 = D.38228->sreg3;
            D.38228->sreg2 = D.38235;
            D.38236 = D.38228->sreg2;
            D.38228->sreg1 = D.38236;
            D.38228 = args[1];
            D.32979 = cfg->ip;
            D.38228->cil_code = D.32979;
            D.38228 = args[1];
            klass.170 = klass;
            D.38228->data.op[0].p = klass.170;
            D.38228 = args[1];
            D.38228->data.op[1].src = 11B;
            D.38228 = args[1];
            D.38228->type = 3;
            D.38228 = args[1];
            D.38237 = alloc_dreg (cfg, 3);
            D.38238 = (int) D.38237;
            D.38228->dreg = D.38238;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.38239>; else goto <D.38240>;
            <D.38239>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.38228 = args[1];
            D.33008->next = D.38228;
            D.38228 = args[1];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.38228->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.38228 = args[1];
            bblock.125->last_ins = D.38228;
            goto <D.38241>;
            <D.38240>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.38228 = args[1];
            bblock.125->last_ins = D.38228;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.38241>:
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.38242>; else goto <D.38243>;
            <D.38242>:
            D.32755 = cfg->mempool;
            D.38244 = mono_mempool_alloc (D.32755, 56);
            args[2] = D.38244;
            D.38245 = args[2];
            D.38245 = args[2];
            D.38245->data.op[1].const_val = 0;
            D.38246 = D.38245->data.op[1].const_val;
            D.38245->data.op[0].const_val = D.38246;
            D.38245 = args[2];
            D.38245 = args[2];
            D.38245->prev = 0B;
            D.38247 = D.38245->prev;
            D.38245->next = D.38247;
            D.38245 = args[2];
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.38249>; else goto <D.38250>;
            <D.38249>:
            iftmp.194 = 732;
            goto <D.38251>;
            <D.38250>:
            iftmp.194 = 362;
            <D.38251>:
            D.38245->opcode = iftmp.194;
            D.38245 = args[2];
            D.38245->flags = 0;
            D.38245 = args[2];
            D.38245->type = 0;
            D.38245 = args[2];
            D.38245->dreg = -1;
            D.38245 = args[2];
            D.38245 = args[2];
            D.38245 = args[2];
            D.38245->sreg3 = -1;
            D.38252 = D.38245->sreg3;
            D.38245->sreg2 = D.38252;
            D.38253 = D.38245->sreg2;
            D.38245->sreg1 = D.38253;
            D.38245 = args[2];
            D.32979 = cfg->ip;
            D.38245->cil_code = D.32979;
            D.38245 = args[2];
            D.38245->data.op[0].p = 0B;
            D.38245 = args[2];
            D.38245->data.op[1].src = 43B;
            D.38245 = args[2];
            D.38245->type = 3;
            D.38245 = args[2];
            D.38254 = alloc_dreg (cfg, 3);
            D.38255 = (int) D.38254;
            D.38245->dreg = D.38255;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.38256>; else goto <D.38257>;
            <D.38256>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.38245 = args[2];
            D.33008->next = D.38245;
            D.38245 = args[2];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.38245->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.38245 = args[2];
            bblock.125->last_ins = D.38245;
            goto <D.38258>;
            <D.38257>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.38245 = args[2];
            bblock.125->last_ins = D.38245;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.38258>:
            goto <D.38259>;
            <D.38243>:
            D.32755 = cfg->mempool;
            D.38260 = mono_mempool_alloc (D.32755, 56);
            args[2] = D.38260;
            D.38245 = args[2];
            D.38245 = args[2];
            D.38245->data.op[1].const_val = 0;
            D.38246 = D.38245->data.op[1].const_val;
            D.38245->data.op[0].const_val = D.38246;
            D.38245 = args[2];
            D.38245 = args[2];
            D.38245->prev = 0B;
            D.38247 = D.38245->prev;
            D.38245->next = D.38247;
            D.38245 = args[2];
            D.38245->opcode = 362;
            D.38245 = args[2];
            D.38245->flags = 0;
            D.38245 = args[2];
            D.38245->type = 0;
            D.38245 = args[2];
            D.38245->dreg = -1;
            D.38245 = args[2];
            D.38245 = args[2];
            D.38245 = args[2];
            D.38245->sreg3 = -1;
            D.38252 = D.38245->sreg3;
            D.38245->sreg2 = D.38252;
            D.38253 = D.38245->sreg2;
            D.38245->sreg1 = D.38253;
            D.38245 = args[2];
            D.32979 = cfg->ip;
            D.38245->cil_code = D.32979;
            D.38245 = args[2];
            D.32780 = cfg->domain;
            D.38261 = mono_domain_alloc0 (D.32780, 4);
            D.38245->data.op[0].p = D.38261;
            D.38245 = args[2];
            D.38245->type = 3;
            D.38245 = args[2];
            D.38262 = alloc_dreg (cfg, 3);
            D.38263 = (int) D.38262;
            D.38245->dreg = D.38263;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.38264>; else goto <D.38265>;
            <D.38264>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.38245 = args[2];
            D.33008->next = D.38245;
            D.38245 = args[2];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.38245->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.38245 = args[2];
            bblock.125->last_ins = D.38245;
            goto <D.38266>;
            <D.38265>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.38245 = args[2];
            bblock.125->last_ins = D.38245;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.38266>:
            <D.38259>:
            klass.170 = klass;
            D.33750 = *sp;
            D.33943 = D.33750->dreg;
            save_cast_details (cfg, klass.170, D.33943, 1, &bblock);
            sp.195 = sp;
            sp = sp.195 + 4;
            D.38268 = mono_emit_method_call (cfg, mono_castclass, &args, 0B);
            *sp.195 = D.38268;
            reset_cast_details (cfg);
            ip = ip + 5;
            inline_costs = inline_costs + 2;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      goto <D.38223>;
      <D.38222>:
      if (context_used == 0) goto <D.38272>; else goto <D.38269>;
      <D.38272>:
      klass.170 = klass;
      D.38273 = BIT_FIELD_REF <*klass.170, 8, 176>;
      D.38274 = D.38273 & 64;
      if (D.38274 != 0) goto <D.38270>; else goto <D.38275>;
      <D.38275>:
      klass.170 = klass;
      D.38276 = klass.170->flags;
      D.38277 = D.38276 & 32;
      if (D.38277 != 0) goto <D.38270>; else goto <D.38269>;
      <D.38270>:
      {
        struct MonoMethod * mono_castclass;
        struct MonoInst * iargs[1];
        int costs;

        try
          {
            klass.170 = klass;
            mono_castclass = mono_marshal_get_castclass (klass.170);
            D.33750 = *sp;
            iargs[0] = D.33750;
            klass.170 = klass;
            D.33750 = *sp;
            D.33943 = D.33750->dreg;
            save_cast_details (cfg, klass.170, D.33943, 1, &bblock);
            D.38278 = mono_method_signature (mono_castclass);
            D.32923 = cfg->real_offset;
            costs = inline_method (cfg, mono_castclass, D.38278, &iargs, ip, D.32923, dont_inline, 1);
            reset_cast_details (cfg);
            D.33309 = cfg->exception_type;
            if (D.33309 != 0) goto exception_exit; else goto <D.38279>;
            <D.38279>:
            D.38280 = costs <= 0;
            D.38281 = (long int) D.38280;
            D.38282 = __builtin_expect (D.38281, 0);
            if (D.38282 != 0) goto <D.38283>; else goto <D.38284>;
            <D.38283>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9524, "costs > 0");
            <D.38284>:
            ip = ip + 5;
            D.32923 = cfg->real_offset;
            D.35630 = D.32923 + 5;
            cfg->real_offset = D.35630;
            bblock.125 = cfg->cbb;
            bblock = bblock.125;
            sp.196 = sp;
            sp = sp.196 + 4;
            D.38286 = iargs[0];
            *sp.196 = D.38286;
            inline_costs = inline_costs + costs;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.38271>;
      <D.38269>:
      klass.170 = klass;
      D.33750 = *sp;
      ins = handle_castclass (cfg, klass.170, D.33750, context_used);
      D.33309 = cfg->exception_type;
      if (D.33309 != 0) goto exception_exit; else goto <D.38287>;
      <D.38287>:
      bblock.125 = cfg->cbb;
      bblock = bblock.125;
      sp.197 = sp;
      sp = sp.197 + 4;
      *sp.197 = ins;
      ip = ip + 5;
      <D.38271>:
      <D.38223>:
      goto <D.29893>;
      <D.30294>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.38289>; else goto <D.38290>;
      <D.38289>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.38291>; else goto <D.38292>;
      <D.38291>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.38293>; else goto <D.38294>;
      <D.38293>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38294>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38292>:
      D.38295 = mini_get_debug_options ();
      D.38296 = D.38295->break_on_unverified;
      if (D.38296 != 0) goto <D.38297>; else goto unverified;
      <D.38297>:
      raise (5);
      <D.38290>:
      sp = sp + 4294967292;
      D.34195 = ip + 5;
      if (D.34195 > end) goto <D.38298>; else goto <D.38299>;
      <D.38298>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.38300>; else goto <D.38301>;
      <D.38300>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.38302>; else goto <D.38303>;
      <D.38302>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38303>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38301>:
      D.38304 = mini_get_debug_options ();
      D.38305 = D.38304->break_on_unverified;
      if (D.38305 != 0) goto <D.38306>; else goto unverified;
      <D.38306>:
      raise (5);
      <D.38299>:
      D.34214 = ip + 1;
      token = mono_read32 (D.34214);
      klass.198 = mini_get_class (method, token, generic_context);
      klass = klass.198;
      klass.170 = klass;
      if (klass.170 == 0B) goto <D.38308>; else goto <D.38310>;
      <D.38310>:
      klass.170 = klass;
      D.37490 = klass.170->exception_type;
      if (D.37490 != 0) goto <D.38308>; else goto <D.38309>;
      <D.38308>:
      klass.170 = klass;
      cfg->exception_ptr = klass.170;
      D.38311 = mini_get_debug_options ();
      D.38312 = D.38311->break_on_unverified;
      if (D.38312 != 0) goto <D.38313>; else goto load_error;
      <D.38313>:
      raise (5);
      <D.38309>:
      D.33750 = *sp;
      D.35492 = D.33750->type;
      if (D.35492 != 6) goto <D.38314>; else goto <D.38315>;
      <D.38314>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.38316>; else goto <D.38317>;
      <D.38316>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.38318>; else goto <D.38319>;
      <D.38318>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38319>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38317>:
      D.38320 = mini_get_debug_options ();
      D.38321 = D.38320->break_on_unverified;
      if (D.38321 != 0) goto <D.38322>; else goto unverified;
      <D.38322>:
      raise (5);
      <D.38315>:
      klass.170 = klass;
      context_used = mini_class_check_context_used (cfg, klass.170);
      if (context_used == 0) goto <D.38325>; else goto <D.38323>;
      <D.38325>:
      klass.170 = klass;
      D.38326 = mini_class_has_reference_variant_generic_argument (cfg, klass.170, context_used);
      if (D.38326 != 0) goto <D.38327>; else goto <D.38323>;
      <D.38327>:
      {
        struct MonoMethod * mono_isinst;
        struct MonoInst * args[3];

        try
          {
            mono_isinst = mono_marshal_get_isinst_with_cache ();
            D.33750 = *sp;
            args[0] = D.33750;
            D.32755 = cfg->mempool;
            D.38328 = mono_mempool_alloc (D.32755, 56);
            args[1] = D.38328;
            D.38329 = args[1];
            D.38329 = args[1];
            D.38329->data.op[1].const_val = 0;
            D.38330 = D.38329->data.op[1].const_val;
            D.38329->data.op[0].const_val = D.38330;
            D.38329 = args[1];
            D.38329 = args[1];
            D.38329->prev = 0B;
            D.38331 = D.38329->prev;
            D.38329->next = D.38331;
            D.38329 = args[1];
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.38333>; else goto <D.38334>;
            <D.38333>:
            iftmp.199 = 732;
            goto <D.38335>;
            <D.38334>:
            iftmp.199 = 362;
            <D.38335>:
            D.38329->opcode = iftmp.199;
            D.38329 = args[1];
            D.38329->flags = 0;
            D.38329 = args[1];
            D.38329->type = 0;
            D.38329 = args[1];
            D.38329->dreg = -1;
            D.38329 = args[1];
            D.38329 = args[1];
            D.38329 = args[1];
            D.38329->sreg3 = -1;
            D.38336 = D.38329->sreg3;
            D.38329->sreg2 = D.38336;
            D.38337 = D.38329->sreg2;
            D.38329->sreg1 = D.38337;
            D.38329 = args[1];
            D.32979 = cfg->ip;
            D.38329->cil_code = D.32979;
            D.38329 = args[1];
            klass.170 = klass;
            D.38329->data.op[0].p = klass.170;
            D.38329 = args[1];
            D.38329->data.op[1].src = 11B;
            D.38329 = args[1];
            D.38329->type = 3;
            D.38329 = args[1];
            D.38338 = alloc_dreg (cfg, 3);
            D.38339 = (int) D.38338;
            D.38329->dreg = D.38339;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.38340>; else goto <D.38341>;
            <D.38340>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.38329 = args[1];
            D.33008->next = D.38329;
            D.38329 = args[1];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.38329->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.38329 = args[1];
            bblock.125->last_ins = D.38329;
            goto <D.38342>;
            <D.38341>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.38329 = args[1];
            bblock.125->last_ins = D.38329;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.38342>:
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.38343>; else goto <D.38344>;
            <D.38343>:
            D.32755 = cfg->mempool;
            D.38345 = mono_mempool_alloc (D.32755, 56);
            args[2] = D.38345;
            D.38346 = args[2];
            D.38346 = args[2];
            D.38346->data.op[1].const_val = 0;
            D.38347 = D.38346->data.op[1].const_val;
            D.38346->data.op[0].const_val = D.38347;
            D.38346 = args[2];
            D.38346 = args[2];
            D.38346->prev = 0B;
            D.38348 = D.38346->prev;
            D.38346->next = D.38348;
            D.38346 = args[2];
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.38350>; else goto <D.38351>;
            <D.38350>:
            iftmp.200 = 732;
            goto <D.38352>;
            <D.38351>:
            iftmp.200 = 362;
            <D.38352>:
            D.38346->opcode = iftmp.200;
            D.38346 = args[2];
            D.38346->flags = 0;
            D.38346 = args[2];
            D.38346->type = 0;
            D.38346 = args[2];
            D.38346->dreg = -1;
            D.38346 = args[2];
            D.38346 = args[2];
            D.38346 = args[2];
            D.38346->sreg3 = -1;
            D.38353 = D.38346->sreg3;
            D.38346->sreg2 = D.38353;
            D.38354 = D.38346->sreg2;
            D.38346->sreg1 = D.38354;
            D.38346 = args[2];
            D.32979 = cfg->ip;
            D.38346->cil_code = D.32979;
            D.38346 = args[2];
            D.38346->data.op[0].p = 0B;
            D.38346 = args[2];
            D.38346->data.op[1].src = 43B;
            D.38346 = args[2];
            D.38346->type = 3;
            D.38346 = args[2];
            D.38355 = alloc_dreg (cfg, 3);
            D.38356 = (int) D.38355;
            D.38346->dreg = D.38356;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.38357>; else goto <D.38358>;
            <D.38357>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.38346 = args[2];
            D.33008->next = D.38346;
            D.38346 = args[2];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.38346->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.38346 = args[2];
            bblock.125->last_ins = D.38346;
            goto <D.38359>;
            <D.38358>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.38346 = args[2];
            bblock.125->last_ins = D.38346;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.38359>:
            goto <D.38360>;
            <D.38344>:
            D.32755 = cfg->mempool;
            D.38361 = mono_mempool_alloc (D.32755, 56);
            args[2] = D.38361;
            D.38346 = args[2];
            D.38346 = args[2];
            D.38346->data.op[1].const_val = 0;
            D.38347 = D.38346->data.op[1].const_val;
            D.38346->data.op[0].const_val = D.38347;
            D.38346 = args[2];
            D.38346 = args[2];
            D.38346->prev = 0B;
            D.38348 = D.38346->prev;
            D.38346->next = D.38348;
            D.38346 = args[2];
            D.38346->opcode = 362;
            D.38346 = args[2];
            D.38346->flags = 0;
            D.38346 = args[2];
            D.38346->type = 0;
            D.38346 = args[2];
            D.38346->dreg = -1;
            D.38346 = args[2];
            D.38346 = args[2];
            D.38346 = args[2];
            D.38346->sreg3 = -1;
            D.38353 = D.38346->sreg3;
            D.38346->sreg2 = D.38353;
            D.38354 = D.38346->sreg2;
            D.38346->sreg1 = D.38354;
            D.38346 = args[2];
            D.32979 = cfg->ip;
            D.38346->cil_code = D.32979;
            D.38346 = args[2];
            D.32780 = cfg->domain;
            D.38362 = mono_domain_alloc0 (D.32780, 4);
            D.38346->data.op[0].p = D.38362;
            D.38346 = args[2];
            D.38346->type = 3;
            D.38346 = args[2];
            D.38363 = alloc_dreg (cfg, 3);
            D.38364 = (int) D.38363;
            D.38346->dreg = D.38364;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.38365>; else goto <D.38366>;
            <D.38365>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.38346 = args[2];
            D.33008->next = D.38346;
            D.38346 = args[2];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.38346->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.38346 = args[2];
            bblock.125->last_ins = D.38346;
            goto <D.38367>;
            <D.38366>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.38346 = args[2];
            bblock.125->last_ins = D.38346;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.38367>:
            <D.38360>:
            sp.201 = sp;
            sp = sp.201 + 4;
            D.38369 = mono_emit_method_call (cfg, mono_isinst, &args, 0B);
            *sp.201 = D.38369;
            ip = ip + 5;
            inline_costs = inline_costs + 2;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      goto <D.38324>;
      <D.38323>:
      if (context_used == 0) goto <D.38373>; else goto <D.38370>;
      <D.38373>:
      klass.170 = klass;
      D.38273 = BIT_FIELD_REF <*klass.170, 8, 176>;
      D.38274 = D.38273 & 64;
      if (D.38274 != 0) goto <D.38371>; else goto <D.38374>;
      <D.38374>:
      klass.170 = klass;
      D.38276 = klass.170->flags;
      D.38277 = D.38276 & 32;
      if (D.38277 != 0) goto <D.38371>; else goto <D.38370>;
      <D.38371>:
      {
        struct MonoMethod * mono_isinst;
        struct MonoInst * iargs[1];
        int costs;

        try
          {
            klass.170 = klass;
            mono_isinst = mono_marshal_get_isinst (klass.170);
            D.33750 = *sp;
            iargs[0] = D.33750;
            D.38375 = mono_method_signature (mono_isinst);
            D.32923 = cfg->real_offset;
            costs = inline_method (cfg, mono_isinst, D.38375, &iargs, ip, D.32923, dont_inline, 1);
            D.33309 = cfg->exception_type;
            if (D.33309 != 0) goto exception_exit; else goto <D.38376>;
            <D.38376>:
            D.38377 = costs <= 0;
            D.38378 = (long int) D.38377;
            D.38379 = __builtin_expect (D.38378, 0);
            if (D.38379 != 0) goto <D.38380>; else goto <D.38381>;
            <D.38380>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9584, "costs > 0");
            <D.38381>:
            ip = ip + 5;
            D.32923 = cfg->real_offset;
            D.35630 = D.32923 + 5;
            cfg->real_offset = D.35630;
            bblock.125 = cfg->cbb;
            bblock = bblock.125;
            sp.202 = sp;
            sp = sp.202 + 4;
            D.38383 = iargs[0];
            *sp.202 = D.38383;
            inline_costs = inline_costs + costs;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.38372>;
      <D.38370>:
      klass.170 = klass;
      D.33750 = *sp;
      ins = handle_isinst (cfg, klass.170, D.33750, context_used);
      D.33309 = cfg->exception_type;
      if (D.33309 != 0) goto exception_exit; else goto <D.38384>;
      <D.38384>:
      bblock.125 = cfg->cbb;
      bblock = bblock.125;
      sp.203 = sp;
      sp = sp.203 + 4;
      *sp.203 = ins;
      ip = ip + 5;
      <D.38372>:
      <D.38324>:
      goto <D.29893>;
      <D.30300>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.38386>; else goto <D.38387>;
      <D.38386>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.38388>; else goto <D.38389>;
      <D.38388>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.38390>; else goto <D.38391>;
      <D.38390>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38391>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38389>:
      D.38392 = mini_get_debug_options ();
      D.38393 = D.38392->break_on_unverified;
      if (D.38393 != 0) goto <D.38394>; else goto unverified;
      <D.38394>:
      raise (5);
      <D.38387>:
      sp = sp + 4294967292;
      D.34195 = ip + 5;
      if (D.34195 > end) goto <D.38395>; else goto <D.38396>;
      <D.38395>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.38397>; else goto <D.38398>;
      <D.38397>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.38399>; else goto <D.38400>;
      <D.38399>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38400>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38398>:
      D.38401 = mini_get_debug_options ();
      D.38402 = D.38401->break_on_unverified;
      if (D.38402 != 0) goto <D.38403>; else goto unverified;
      <D.38403>:
      raise (5);
      <D.38396>:
      D.34214 = ip + 1;
      token = mono_read32 (D.34214);
      klass.204 = mini_get_class (method, token, generic_context);
      klass = klass.204;
      klass.170 = klass;
      if (klass.170 == 0B) goto <D.38405>; else goto <D.38407>;
      <D.38407>:
      klass.170 = klass;
      D.37490 = klass.170->exception_type;
      if (D.37490 != 0) goto <D.38405>; else goto <D.38406>;
      <D.38405>:
      klass.170 = klass;
      cfg->exception_ptr = klass.170;
      D.38408 = mini_get_debug_options ();
      D.38409 = D.38408->break_on_unverified;
      if (D.38409 != 0) goto <D.38410>; else goto load_error;
      <D.38410>:
      raise (5);
      <D.38406>:
      klass.170 = klass;
      mono_save_token_info (cfg, image, token, klass.170);
      klass.170 = klass;
      context_used = mini_class_check_context_used (cfg, klass.170);
      klass.170 = klass;
      D.38411 = mini_is_gsharedvt_klass (cfg, klass.170);
      if (D.38411 != 0) goto <D.38412>; else goto <D.38413>;
      <D.38412>:
      klass.170 = klass;
      D.33750 = *sp;
      D.38414 = handle_unbox_gsharedvt (cfg, klass.170, D.33750, &bblock);
      *sp = D.38414;
      sp = sp + 4;
      ip = ip + 5;
      inline_costs = inline_costs + 2;
      goto <D.29893>;
      <D.38413>:
      klass.170 = klass;
      D.38415 = generic_class_is_reference_type (cfg, klass.170);
      if (D.38415 != 0) goto <D.38416>; else goto <D.38417>;
      <D.38416>:
      if (context_used == 0) goto <D.38420>; else goto <D.38418>;
      <D.38420>:
      klass.170 = klass;
      D.38421 = mini_class_has_reference_variant_generic_argument (cfg, klass.170, context_used);
      if (D.38421 != 0) goto <D.38422>; else goto <D.38418>;
      <D.38422>:
      {
        struct MonoMethod * mono_castclass;
        struct MonoInst * args[3];

        try
          {
            mono_castclass = mono_marshal_get_castclass_with_cache ();
            D.33750 = *sp;
            args[0] = D.33750;
            D.32755 = cfg->mempool;
            D.38423 = mono_mempool_alloc (D.32755, 56);
            args[1] = D.38423;
            D.38424 = args[1];
            D.38424 = args[1];
            D.38424->data.op[1].const_val = 0;
            D.38425 = D.38424->data.op[1].const_val;
            D.38424->data.op[0].const_val = D.38425;
            D.38424 = args[1];
            D.38424 = args[1];
            D.38424->prev = 0B;
            D.38426 = D.38424->prev;
            D.38424->next = D.38426;
            D.38424 = args[1];
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.38428>; else goto <D.38429>;
            <D.38428>:
            iftmp.205 = 732;
            goto <D.38430>;
            <D.38429>:
            iftmp.205 = 362;
            <D.38430>:
            D.38424->opcode = iftmp.205;
            D.38424 = args[1];
            D.38424->flags = 0;
            D.38424 = args[1];
            D.38424->type = 0;
            D.38424 = args[1];
            D.38424->dreg = -1;
            D.38424 = args[1];
            D.38424 = args[1];
            D.38424 = args[1];
            D.38424->sreg3 = -1;
            D.38431 = D.38424->sreg3;
            D.38424->sreg2 = D.38431;
            D.38432 = D.38424->sreg2;
            D.38424->sreg1 = D.38432;
            D.38424 = args[1];
            D.32979 = cfg->ip;
            D.38424->cil_code = D.32979;
            D.38424 = args[1];
            klass.170 = klass;
            D.38424->data.op[0].p = klass.170;
            D.38424 = args[1];
            D.38424->data.op[1].src = 11B;
            D.38424 = args[1];
            D.38424->type = 3;
            D.38424 = args[1];
            D.38433 = alloc_dreg (cfg, 3);
            D.38434 = (int) D.38433;
            D.38424->dreg = D.38434;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.38435>; else goto <D.38436>;
            <D.38435>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.38424 = args[1];
            D.33008->next = D.38424;
            D.38424 = args[1];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.38424->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.38424 = args[1];
            bblock.125->last_ins = D.38424;
            goto <D.38437>;
            <D.38436>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.38424 = args[1];
            bblock.125->last_ins = D.38424;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.38437>:
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.38438>; else goto <D.38439>;
            <D.38438>:
            D.32755 = cfg->mempool;
            D.38440 = mono_mempool_alloc (D.32755, 56);
            args[2] = D.38440;
            D.38441 = args[2];
            D.38441 = args[2];
            D.38441->data.op[1].const_val = 0;
            D.38442 = D.38441->data.op[1].const_val;
            D.38441->data.op[0].const_val = D.38442;
            D.38441 = args[2];
            D.38441 = args[2];
            D.38441->prev = 0B;
            D.38443 = D.38441->prev;
            D.38441->next = D.38443;
            D.38441 = args[2];
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.38445>; else goto <D.38446>;
            <D.38445>:
            iftmp.206 = 732;
            goto <D.38447>;
            <D.38446>:
            iftmp.206 = 362;
            <D.38447>:
            D.38441->opcode = iftmp.206;
            D.38441 = args[2];
            D.38441->flags = 0;
            D.38441 = args[2];
            D.38441->type = 0;
            D.38441 = args[2];
            D.38441->dreg = -1;
            D.38441 = args[2];
            D.38441 = args[2];
            D.38441 = args[2];
            D.38441->sreg3 = -1;
            D.38448 = D.38441->sreg3;
            D.38441->sreg2 = D.38448;
            D.38449 = D.38441->sreg2;
            D.38441->sreg1 = D.38449;
            D.38441 = args[2];
            D.32979 = cfg->ip;
            D.38441->cil_code = D.32979;
            D.38441 = args[2];
            D.38441->data.op[0].p = 0B;
            D.38441 = args[2];
            D.38441->data.op[1].src = 43B;
            D.38441 = args[2];
            D.38441->type = 3;
            D.38441 = args[2];
            D.38450 = alloc_dreg (cfg, 3);
            D.38451 = (int) D.38450;
            D.38441->dreg = D.38451;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.38452>; else goto <D.38453>;
            <D.38452>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.38441 = args[2];
            D.33008->next = D.38441;
            D.38441 = args[2];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.38441->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.38441 = args[2];
            bblock.125->last_ins = D.38441;
            goto <D.38454>;
            <D.38453>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.38441 = args[2];
            bblock.125->last_ins = D.38441;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.38454>:
            goto <D.38455>;
            <D.38439>:
            D.32755 = cfg->mempool;
            D.38456 = mono_mempool_alloc (D.32755, 56);
            args[2] = D.38456;
            D.38441 = args[2];
            D.38441 = args[2];
            D.38441->data.op[1].const_val = 0;
            D.38442 = D.38441->data.op[1].const_val;
            D.38441->data.op[0].const_val = D.38442;
            D.38441 = args[2];
            D.38441 = args[2];
            D.38441->prev = 0B;
            D.38443 = D.38441->prev;
            D.38441->next = D.38443;
            D.38441 = args[2];
            D.38441->opcode = 362;
            D.38441 = args[2];
            D.38441->flags = 0;
            D.38441 = args[2];
            D.38441->type = 0;
            D.38441 = args[2];
            D.38441->dreg = -1;
            D.38441 = args[2];
            D.38441 = args[2];
            D.38441 = args[2];
            D.38441->sreg3 = -1;
            D.38448 = D.38441->sreg3;
            D.38441->sreg2 = D.38448;
            D.38449 = D.38441->sreg2;
            D.38441->sreg1 = D.38449;
            D.38441 = args[2];
            D.32979 = cfg->ip;
            D.38441->cil_code = D.32979;
            D.38441 = args[2];
            D.32780 = cfg->domain;
            D.38457 = mono_domain_alloc0 (D.32780, 4);
            D.38441->data.op[0].p = D.38457;
            D.38441 = args[2];
            D.38441->type = 3;
            D.38441 = args[2];
            D.38458 = alloc_dreg (cfg, 3);
            D.38459 = (int) D.38458;
            D.38441->dreg = D.38459;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.38460>; else goto <D.38461>;
            <D.38460>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.38441 = args[2];
            D.33008->next = D.38441;
            D.38441 = args[2];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.38441->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.38441 = args[2];
            bblock.125->last_ins = D.38441;
            goto <D.38462>;
            <D.38461>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.38441 = args[2];
            bblock.125->last_ins = D.38441;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.38462>:
            <D.38455>:
            sp.207 = sp;
            sp = sp.207 + 4;
            D.38464 = mono_emit_method_call (cfg, mono_castclass, &args, 0B);
            *sp.207 = D.38464;
            ip = ip + 5;
            inline_costs = inline_costs + 2;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      goto <D.38419>;
      <D.38418>:
      if (context_used == 0) goto <D.38468>; else goto <D.38465>;
      <D.38468>:
      klass.170 = klass;
      D.38273 = BIT_FIELD_REF <*klass.170, 8, 176>;
      D.38274 = D.38273 & 64;
      if (D.38274 != 0) goto <D.38466>; else goto <D.38469>;
      <D.38469>:
      klass.170 = klass;
      D.38276 = klass.170->flags;
      D.38277 = D.38276 & 32;
      if (D.38277 != 0) goto <D.38466>; else goto <D.38465>;
      <D.38466>:
      {
        struct MonoMethod * mono_castclass;
        struct MonoInst * iargs[1];
        int costs;

        try
          {
            klass.170 = klass;
            mono_castclass = mono_marshal_get_castclass (klass.170);
            D.33750 = *sp;
            iargs[0] = D.33750;
            D.38470 = mono_method_signature (mono_castclass);
            D.32923 = cfg->real_offset;
            costs = inline_method (cfg, mono_castclass, D.38470, &iargs, ip, D.32923, dont_inline, 1);
            D.33309 = cfg->exception_type;
            if (D.33309 != 0) goto exception_exit; else goto <D.38471>;
            <D.38471>:
            D.38472 = costs <= 0;
            D.38473 = (long int) D.38472;
            D.38474 = __builtin_expect (D.38473, 0);
            if (D.38474 != 0) goto <D.38475>; else goto <D.38476>;
            <D.38475>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9658, "costs > 0");
            <D.38476>:
            ip = ip + 5;
            D.32923 = cfg->real_offset;
            D.35630 = D.32923 + 5;
            cfg->real_offset = D.35630;
            bblock.125 = cfg->cbb;
            bblock = bblock.125;
            sp.208 = sp;
            sp = sp.208 + 4;
            D.38478 = iargs[0];
            *sp.208 = D.38478;
            inline_costs = inline_costs + costs;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.38467>;
      <D.38465>:
      klass.170 = klass;
      D.33750 = *sp;
      ins = handle_castclass (cfg, klass.170, D.33750, context_used);
      D.33309 = cfg->exception_type;
      if (D.33309 != 0) goto exception_exit; else goto <D.38479>;
      <D.38479>:
      bblock.125 = cfg->cbb;
      bblock = bblock.125;
      sp.209 = sp;
      sp = sp.209 + 4;
      *sp.209 = ins;
      ip = ip + 5;
      <D.38467>:
      <D.38419>:
      goto <D.29893>;
      <D.38417>:
      klass.170 = klass;
      D.38481 = mono_class_is_nullable (klass.170);
      if (D.38481 != 0) goto <D.38482>; else goto <D.38483>;
      <D.38482>:
      D.33750 = *sp;
      klass.170 = klass;
      ins = handle_unbox_nullable (cfg, D.33750, klass.170, context_used);
      sp.210 = sp;
      sp = sp.210 + 4;
      *sp.210 = ins;
      ip = ip + 5;
      goto <D.29893>;
      <D.38483>:
      klass.170 = klass;
      ins = handle_unbox (cfg, klass.170, sp, context_used);
      *sp = ins;
      ip = ip + 5;
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      klass.170 = klass;
      D.37564 = &klass.170->byval_arg;
      D.38485 = mono_type_to_load_membase (cfg, D.37564);
      D.38486 = (short unsigned int) D.38485;
      ins->opcode = D.38486;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      ins->dreg = 0;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      ins->data.op[0].const_val = 0;
      ins->type = 1;
      klass.170 = klass;
      D.37564 = &klass.170->byval_arg;
      type_to_eval_stack_type (cfg, D.37564, ins);
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.38487 = alloc_dreg (cfg, D.33502);
      D.38488 = (int) D.38487;
      ins->dreg = D.38488;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.38489>; else goto <D.38490>;
      <D.38489>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.38491>;
      <D.38490>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.38491>:
      sp.211 = sp;
      sp = sp.211 + 4;
      *sp.211 = ins;
      inline_costs = inline_costs + 2;
      goto <D.29893>;
      <D.30306>:
      {
        struct MonoInst * val;

        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        if (D.33526 <= 3) goto <D.38493>; else goto <D.38494>;
        <D.38493>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.38495>; else goto <D.38496>;
        <D.38495>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.38497>; else goto <D.38498>;
        <D.38497>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38498>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38496>:
        D.38499 = mini_get_debug_options ();
        D.38500 = D.38499->break_on_unverified;
        if (D.38500 != 0) goto <D.38501>; else goto unverified;
        <D.38501>:
        raise (5);
        <D.38494>:
        sp = sp + 4294967292;
        val = *sp;
        D.34195 = ip + 5;
        if (D.34195 > end) goto <D.38502>; else goto <D.38503>;
        <D.38502>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.38504>; else goto <D.38505>;
        <D.38504>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.38506>; else goto <D.38507>;
        <D.38506>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38507>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38505>:
        D.38508 = mini_get_debug_options ();
        D.38509 = D.38508->break_on_unverified;
        if (D.38509 != 0) goto <D.38510>; else goto unverified;
        <D.38510>:
        raise (5);
        <D.38503>:
        D.34214 = ip + 1;
        token = mono_read32 (D.34214);
        klass.212 = mini_get_class (method, token, generic_context);
        klass = klass.212;
        klass.170 = klass;
        if (klass.170 == 0B) goto <D.38512>; else goto <D.38514>;
        <D.38514>:
        klass.170 = klass;
        D.37490 = klass.170->exception_type;
        if (D.37490 != 0) goto <D.38512>; else goto <D.38513>;
        <D.38512>:
        klass.170 = klass;
        cfg->exception_ptr = klass.170;
        D.38515 = mini_get_debug_options ();
        D.38516 = D.38515->break_on_unverified;
        if (D.38516 != 0) goto <D.38517>; else goto load_error;
        <D.38517>:
        raise (5);
        <D.38513>:
        klass.170 = klass;
        mono_save_token_info (cfg, image, token, klass.170);
        klass.170 = klass;
        context_used = mini_class_check_context_used (cfg, klass.170);
        klass.170 = klass;
        D.38518 = generic_class_is_reference_type (cfg, klass.170);
        if (D.38518 != 0) goto <D.38519>; else goto <D.38520>;
        <D.38519>:
        sp.213 = sp;
        sp = sp.213 + 4;
        *sp.213 = val;
        ip = ip + 5;
        goto <D.29893>;
        <D.38520>:
        D.38522 = mono_defaults.void_class;
        klass.170 = klass;
        if (D.38522 == klass.170) goto <D.38523>; else goto <D.38524>;
        <D.38523>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.38525>; else goto <D.38526>;
        <D.38525>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.38527>; else goto <D.38528>;
        <D.38527>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38528>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38526>:
        D.38529 = mini_get_debug_options ();
        D.38530 = D.38529->break_on_unverified;
        if (D.38530 != 0) goto <D.38531>; else goto unverified;
        <D.38531>:
        raise (5);
        <D.38524>:
        klass.170 = klass;
        D.37564 = &klass.170->byval_arg;
        D.33750 = *sp;
        D.38532 = target_type_is_incompatible (cfg, D.37564, D.33750);
        if (D.38532 != 0) goto <D.38533>; else goto <D.38534>;
        <D.38533>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.38535>; else goto <D.38536>;
        <D.38535>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.38537>; else goto <D.38538>;
        <D.38537>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38538>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38536>:
        D.38539 = mini_get_debug_options ();
        D.38540 = D.38539->break_on_unverified;
        if (D.38540 != 0) goto <D.38541>; else goto unverified;
        <D.38541>:
        raise (5);
        <D.38534>:
        klass.170 = klass;
        D.38544 = mono_class_is_nullable (klass.170);
        if (D.38544 == 0) goto <D.38545>; else goto <D.38546>;
        <D.38545>:
        D.34195 = ip + 5;
        if (D.34195 < end) goto <D.38547>; else goto <D.38548>;
        <D.38547>:
        bblock.76 = bblock;
        D.35683 = ip + 5;
        D.38549 = ip_in_bb (cfg, bblock.76, D.35683);
        if (D.38549 != 0) goto <D.38550>; else goto <D.38551>;
        <D.38550>:
        D.34195 = ip + 5;
        D.38552 = *D.34195;
        D.38553 = D.38552 == 58;
        D.38554 = D.38552 == 45;
        D.38555 = D.38553 | D.38554;
        if (D.38555 != 0) goto <D.38542>; else goto <D.38556>;
        <D.38556>:
        D.34195 = ip + 5;
        D.35642 = *D.34195;
        if (D.35642 == 57) goto <D.38542>; else goto <D.38557>;
        <D.38557>:
        D.34195 = ip + 5;
        D.35642 = *D.34195;
        if (D.35642 == 44) goto <D.38542>; else goto <D.38543>;
        <D.38542>:
        {
          gboolean is_true;
          int dreg;
          struct MonoBasicBlock * true_bb;
          struct MonoBasicBlock * false_bb;

          D.34195 = ip + 5;
          D.38558 = *D.34195;
          D.38559 = D.38558 == 58;
          D.38560 = D.38558 == 45;
          D.38561 = D.38559 | D.38560;
          is_true = (gboolean) D.38561;
          ip = ip + 5;
          D.32836 = cfg->verbose_level;
          if (D.32836 > 3) goto <D.38562>; else goto <D.38563>;
          <D.38562>:
          bblock.76 = bblock;
          D.33630 = bblock.76->block_num;
          sp.83 = (int) sp;
          stack_start.84 = (int) stack_start;
          D.33526 = sp.83 - stack_start.84;
          D.33527 = D.33526 /[ex] 4;
          D.38564 = mono_disasm_code_one (0B, method, ip, 0B);
          printf ("converting (in B%d: stack: %d) %s", D.33630, D.33527, D.38564);
          printf ("<box+brtrue opt>\n");
          <D.38563>:
          D.33632 = *ip;
          D.33633 = (int) D.33632;
          switch (D.33633) <default: <D.30317>, case 44: <D.30313>, case 45: <D.30312>, case 57: <D.30316>, case 58: <D.30315>>
          <D.30312>:
          <D.30313>:
          D.33761 = ip + 2;
          if (D.33761 > end) goto <D.38565>; else goto <D.38566>;
          <D.38565>:
          D.32904 = cfg->gsharedvt;
          if (D.32904 != 0) goto <D.38567>; else goto <D.38568>;
          <D.38567>:
          D.32836 = cfg->verbose_level;
          if (D.32836 > 2) goto <D.38569>; else goto <D.38570>;
          <D.38569>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.38570>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.38568>:
          D.38571 = mini_get_debug_options ();
          D.38572 = D.38571->break_on_unverified;
          if (D.38572 != 0) goto <D.38573>; else goto unverified;
          <D.38573>:
          raise (5);
          <D.38566>:
          ip = ip + 1;
          D.33632 = *ip;
          D.36386 = (signed char) D.33632;
          D.36387 = (sizetype) D.36386;
          D.36388 = D.36387 + 1;
          target = ip + D.36388;
          ip = ip + 1;
          goto <D.30314>;
          <D.30315>:
          <D.30316>:
          D.34195 = ip + 5;
          if (D.34195 > end) goto <D.38574>; else goto <D.38575>;
          <D.38574>:
          D.32904 = cfg->gsharedvt;
          if (D.32904 != 0) goto <D.38576>; else goto <D.38577>;
          <D.38576>:
          D.32836 = cfg->verbose_level;
          if (D.32836 > 2) goto <D.38578>; else goto <D.38579>;
          <D.38578>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.38579>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.38577>:
          D.38580 = mini_get_debug_options ();
          D.38581 = D.38580->break_on_unverified;
          if (D.38581 != 0) goto <D.38582>; else goto unverified;
          <D.38582>:
          raise (5);
          <D.38575>:
          ip = ip + 1;
          D.38583 = mono_read32 (ip);
          D.38584 = D.38583 + 4;
          target = ip + D.38584;
          ip = ip + 4;
          goto <D.30314>;
          <D.30317>:
          monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 9757);
          <D.30314>:
          D.32887 = cfg->cil_offset_to_bb;
          target.149 = (int) target;
          D.32891 = cfg->cil_start;
          D.32892 = (int) D.32891;
          D.36390 = target.149 - D.32892;
          D.36391 = (unsigned int) D.36390;
          D.36392 = D.36391 * 4;
          D.36393 = D.32887 + D.36392;
          true_bb = *D.36393;
          if (true_bb == 0B) goto <D.38585>; else goto <D.38586>;
          <D.38585>:
          if (target >= end) goto <D.38587>; else goto <D.38589>;
          <D.38589>:
          D.32903 = header->code;
          if (D.32903 > target) goto <D.38587>; else goto <D.38588>;
          <D.38587>:
          D.32904 = cfg->gsharedvt;
          if (D.32904 != 0) goto <D.38590>; else goto <D.38591>;
          <D.38590>:
          D.32836 = cfg->verbose_level;
          if (D.32836 > 2) goto <D.38592>; else goto <D.38593>;
          <D.38592>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.38593>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.38591>:
          D.38594 = mini_get_debug_options ();
          D.38595 = D.38594->break_on_unverified;
          if (D.38595 != 0) goto <D.38596>; else goto unverified;
          <D.38596>:
          raise (5);
          <D.38588>:
          D.32755 = cfg->mempool;
          true_bb = mono_mempool_alloc0 (D.32755, 172);
          D.32864 = cfg->num_bblocks;
          D.38597 = D.32864;
          D.38598 = D.38597 + 1;
          cfg->num_bblocks = D.38598;
          D.38599 = (int) D.38597;
          true_bb->block_num = D.38599;
          true_bb->cil_code = target;
          D.38600 = true_bb->cil_code;
          if (D.38600 != 0B) goto <D.38601>; else goto <D.38602>;
          <D.38601>:
          D.32887 = cfg->cil_offset_to_bb;
          D.38600 = true_bb->cil_code;
          D.38603 = (int) D.38600;
          D.32891 = cfg->cil_start;
          D.32892 = (int) D.32891;
          D.38604 = D.38603 - D.32892;
          D.38605 = (unsigned int) D.38604;
          D.38606 = D.38605 * 4;
          D.38607 = D.32887 + D.38606;
          *D.38607 = true_bb;
          <D.38602>:
          D.32923 = cfg->real_offset;
          true_bb->real_offset = D.32923;
          <D.38586>:
          D.32887 = cfg->cil_offset_to_bb;
          ip.81 = (int) ip;
          D.32891 = cfg->cil_start;
          D.32892 = (int) D.32891;
          D.33463 = ip.81 - D.32892;
          D.33464 = (unsigned int) D.33463;
          D.33465 = D.33464 * 4;
          D.33466 = D.32887 + D.33465;
          false_bb = *D.33466;
          if (false_bb == 0B) goto <D.38608>; else goto <D.38609>;
          <D.38608>:
          if (ip >= end) goto <D.38610>; else goto <D.38612>;
          <D.38612>:
          D.32903 = header->code;
          if (D.32903 > ip) goto <D.38610>; else goto <D.38611>;
          <D.38610>:
          D.32904 = cfg->gsharedvt;
          if (D.32904 != 0) goto <D.38613>; else goto <D.38614>;
          <D.38613>:
          D.32836 = cfg->verbose_level;
          if (D.32836 > 2) goto <D.38615>; else goto <D.38616>;
          <D.38615>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.38616>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.38614>:
          D.38617 = mini_get_debug_options ();
          D.38618 = D.38617->break_on_unverified;
          if (D.38618 != 0) goto <D.38619>; else goto unverified;
          <D.38619>:
          raise (5);
          <D.38611>:
          D.32755 = cfg->mempool;
          false_bb = mono_mempool_alloc0 (D.32755, 172);
          D.32864 = cfg->num_bblocks;
          D.38620 = D.32864;
          D.38621 = D.38620 + 1;
          cfg->num_bblocks = D.38621;
          D.38622 = (int) D.38620;
          false_bb->block_num = D.38622;
          false_bb->cil_code = ip;
          D.38623 = false_bb->cil_code;
          if (D.38623 != 0B) goto <D.38624>; else goto <D.38625>;
          <D.38624>:
          D.32887 = cfg->cil_offset_to_bb;
          D.38623 = false_bb->cil_code;
          D.38626 = (int) D.38623;
          D.32891 = cfg->cil_start;
          D.32892 = (int) D.32891;
          D.38627 = D.38626 - D.32892;
          D.38628 = (unsigned int) D.38627;
          D.38629 = D.38628 * 4;
          D.38630 = D.32887 + D.38629;
          *D.38630 = false_bb;
          <D.38625>:
          D.32923 = cfg->real_offset;
          false_bb->real_offset = D.32923;
          <D.38609>:
          bblock.125 = cfg->cbb;
          mono_link_bblock (cfg, bblock.125, true_bb);
          bblock.125 = cfg->cbb;
          mono_link_bblock (cfg, bblock.125, false_bb);
          if (sp != stack_start) goto <D.38631>; else goto <D.38632>;
          <D.38631>:
          sp.83 = (int) sp;
          stack_start.84 = (int) stack_start;
          D.33526 = sp.83 - stack_start.84;
          D.33527 = D.33526 /[ex] 4;
          handle_stack_args (cfg, stack_start, D.33527);
          sp = stack_start;
          D.33528 = BIT_FIELD_REF <*cfg, 8, 3400>;
          D.33529 = D.33528 & 32;
          if (D.33529 != 0) goto <D.38633>; else goto <D.38634>;
          <D.38633>:
          D.32904 = cfg->gsharedvt;
          if (D.32904 != 0) goto <D.38635>; else goto <D.38636>;
          <D.38635>:
          D.32836 = cfg->verbose_level;
          if (D.32836 > 2) goto <D.38637>; else goto <D.38638>;
          <D.38637>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.38638>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.38636>:
          D.38639 = mini_get_debug_options ();
          D.38640 = D.38639->break_on_unverified;
          if (D.38640 != 0) goto <D.38641>; else goto unverified;
          <D.38641>:
          raise (5);
          <D.38634>:
          <D.38632>:
          if (0 != 0) goto <D.38642>; else goto <D.38643>;
          <D.38642>:
          D.38644 = alloc_ireg (cfg);
          dreg = (int) D.38644;
          {
            struct MonoInst * inst;

            D.32755 = cfg->mempool;
            inst = mono_mempool_alloc (D.32755, 56);
            inst->data.op[1].const_val = 0;
            D.38645 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38645;
            inst->prev = 0B;
            D.38646 = inst->prev;
            inst->next = D.38646;
            inst->opcode = 362;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38647 = inst->sreg3;
            inst->sreg2 = D.38647;
            D.38648 = inst->sreg2;
            inst->sreg1 = D.38648;
            D.32979 = cfg->ip;
            inst->cil_code = D.32979;
            inst->dreg = dreg;
            inst->data.op[0].const_val = 0;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.38649>; else goto <D.38650>;
            <D.38649>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = inst;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            inst->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            goto <D.38651>;
            <D.38650>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.38651>:
          }
          {
            struct MonoInst * inst;

            D.32755 = cfg->mempool;
            inst = mono_mempool_alloc (D.32755, 56);
            inst->data.op[1].const_val = 0;
            D.38652 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38652;
            inst->prev = 0B;
            D.38653 = inst->prev;
            inst->next = D.38653;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38654 = inst->sreg3;
            inst->sreg2 = D.38654;
            D.38655 = inst->sreg2;
            inst->sreg1 = D.38655;
            D.32979 = cfg->ip;
            inst->cil_code = D.32979;
            inst->dreg = -1;
            inst->sreg1 = dreg;
            D.38656 = is_true == 0;
            D.38657 = (int) D.38656;
            inst->data.op[1].const_val = D.38657;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.38658>; else goto <D.38659>;
            <D.38658>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = inst;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            inst->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            goto <D.38660>;
            <D.38659>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.38660>:
          }
          {
            struct MonoInst * ins;

            D.32755 = cfg->mempool;
            ins = mono_mempool_alloc (D.32755, 56);
            ins->data.op[1].const_val = 0;
            D.38661 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.38661;
            ins->prev = 0B;
            D.38662 = ins->prev;
            ins->next = D.38662;
            ins->opcode = 648;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.38663 = ins->sreg3;
            ins->sreg2 = D.38663;
            D.38664 = ins->sreg2;
            ins->sreg1 = D.38664;
            D.32979 = cfg->ip;
            ins->cil_code = D.32979;
            D.32755 = cfg->mempool;
            D.38665 = mono_mempool_alloc (D.32755, 8);
            ins->data.op[1].many_blocks = D.38665;
            D.38666 = ins->data.op[1].many_blocks;
            *D.38666 = true_bb;
            D.38666 = ins->data.op[1].many_blocks;
            D.38667 = D.38666 + 4;
            *D.38667 = false_bb;
            bblock.125 = cfg->cbb;
            mono_link_bblock (cfg, bblock.125, true_bb);
            bblock.125 = cfg->cbb;
            mono_link_bblock (cfg, bblock.125, false_bb);
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.38668>; else goto <D.38669>;
            <D.38668>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = ins;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            ins->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            goto <D.38670>;
            <D.38669>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.38670>:
          }
          goto <D.38671>;
          <D.38643>:
          D.32755 = cfg->mempool;
          ins = mono_mempool_alloc (D.32755, 56);
          ins->data.op[1].const_val = 0;
          D.32975 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.32975;
          ins->prev = 0B;
          D.32976 = ins->prev;
          ins->next = D.32976;
          ins->opcode = 442;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.32977 = ins->sreg3;
          ins->sreg2 = D.32977;
          D.32978 = ins->sreg2;
          ins->sreg1 = D.32978;
          D.32979 = cfg->ip;
          ins->cil_code = D.32979;
          if (is_true != 0) goto <D.38673>; else goto <D.38674>;
          <D.38673>:
          iftmp.214 = true_bb;
          goto <D.38675>;
          <D.38674>:
          iftmp.214 = false_bb;
          <D.38675>:
          ins->data.op[0].target_block = iftmp.214;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.38676>; else goto <D.38677>;
          <D.38676>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = ins;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          ins->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          goto <D.38678>;
          <D.38677>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.38678>:
          <D.38671>:
          start_new_bblock = 1;
          goto <D.29893>;
        }
        <D.38543>:
        <D.38551>:
        <D.38548>:
        <D.38546>:
        sp.215 = sp;
        sp = sp.215 + 4;
        klass.170 = klass;
        D.38680 = handle_box (cfg, val, klass.170, context_used, &bblock);
        *sp.215 = D.38680;
        D.33309 = cfg->exception_type;
        if (D.33309 != 0) goto exception_exit; else goto <D.38681>;
        <D.38681>:
        ip = ip + 5;
        inline_costs = inline_costs + 1;
        goto <D.29893>;
      }
      <D.30321>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.38682>; else goto <D.38683>;
      <D.38682>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.38684>; else goto <D.38685>;
      <D.38684>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.38686>; else goto <D.38687>;
      <D.38686>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38687>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38685>:
      D.38688 = mini_get_debug_options ();
      D.38689 = D.38688->break_on_unverified;
      if (D.38689 != 0) goto <D.38690>; else goto unverified;
      <D.38690>:
      raise (5);
      <D.38683>:
      sp = sp + 4294967292;
      D.34195 = ip + 5;
      if (D.34195 > end) goto <D.38691>; else goto <D.38692>;
      <D.38691>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.38693>; else goto <D.38694>;
      <D.38693>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.38695>; else goto <D.38696>;
      <D.38695>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38696>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38694>:
      D.38697 = mini_get_debug_options ();
      D.38698 = D.38697->break_on_unverified;
      if (D.38698 != 0) goto <D.38699>; else goto unverified;
      <D.38699>:
      raise (5);
      <D.38692>:
      D.34214 = ip + 1;
      token = mono_read32 (D.34214);
      klass.216 = mini_get_class (method, token, generic_context);
      klass = klass.216;
      klass.170 = klass;
      if (klass.170 == 0B) goto <D.38701>; else goto <D.38703>;
      <D.38703>:
      klass.170 = klass;
      D.37490 = klass.170->exception_type;
      if (D.37490 != 0) goto <D.38701>; else goto <D.38702>;
      <D.38701>:
      klass.170 = klass;
      cfg->exception_ptr = klass.170;
      D.38704 = mini_get_debug_options ();
      D.38705 = D.38704->break_on_unverified;
      if (D.38705 != 0) goto <D.38706>; else goto load_error;
      <D.38706>:
      raise (5);
      <D.38702>:
      klass.170 = klass;
      mono_save_token_info (cfg, image, token, klass.170);
      klass.170 = klass;
      context_used = mini_class_check_context_used (cfg, klass.170);
      klass.170 = klass;
      D.38707 = mono_class_is_nullable (klass.170);
      if (D.38707 != 0) goto <D.38708>; else goto <D.38709>;
      <D.38708>:
      {
        struct MonoInst * val;

        D.33750 = *sp;
        klass.170 = klass;
        val = handle_unbox_nullable (cfg, D.33750, klass.170, context_used);
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 314;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        D.38711 = val->dreg;
        D.38712 = (unsigned int) D.38711;
        D.33862 = cfg->vreg_to_inst_len;
        if (D.38712 < D.33862) goto <D.38713>; else goto <D.38714>;
        <D.38713>:
        D.33865 = cfg->vreg_to_inst;
        D.38711 = val->dreg;
        D.38715 = (unsigned int) D.38711;
        D.38716 = D.38715 * 4;
        D.38717 = D.33865 + D.38716;
        iftmp.217 = *D.38717;
        goto <D.38718>;
        <D.38714>:
        iftmp.217 = 0B;
        <D.38718>:
        ins->data.op[0].p = iftmp.217;
        D.38711 = val->dreg;
        D.38712 = (unsigned int) D.38711;
        D.33862 = cfg->vreg_to_inst_len;
        if (D.38712 < D.33862) goto <D.38720>; else goto <D.38721>;
        <D.38720>:
        D.33865 = cfg->vreg_to_inst;
        D.38711 = val->dreg;
        D.38715 = (unsigned int) D.38711;
        D.38716 = D.38715 * 4;
        D.38717 = D.33865 + D.38716;
        iftmp.218 = *D.38717;
        goto <D.38722>;
        <D.38721>:
        iftmp.218 = 0B;
        <D.38722>:
        D.38711 = val->dreg;
        D.38712 = (unsigned int) D.38711;
        D.33862 = cfg->vreg_to_inst_len;
        if (D.38712 < D.33862) goto <D.38724>; else goto <D.38725>;
        <D.38724>:
        D.33865 = cfg->vreg_to_inst;
        D.38711 = val->dreg;
        D.38715 = (unsigned int) D.38711;
        D.38716 = D.38715 * 4;
        D.38717 = D.33865 + D.38716;
        iftmp.219 = *D.38717;
        goto <D.38726>;
        <D.38725>:
        iftmp.219 = 0B;
        <D.38726>:
        D.38727 = iftmp.219->flags;
        D.38728 = D.38727 | 16;
        iftmp.218->flags = D.38728;
        ins->type = 5;
        D.38711 = val->dreg;
        D.38712 = (unsigned int) D.38711;
        D.33862 = cfg->vreg_to_inst_len;
        if (D.38712 < D.33862) goto <D.38730>; else goto <D.38731>;
        <D.38730>:
        D.33865 = cfg->vreg_to_inst;
        D.38711 = val->dreg;
        D.38715 = (unsigned int) D.38711;
        D.38716 = D.38715 * 4;
        D.38717 = D.33865 + D.38716;
        iftmp.220 = *D.38717;
        goto <D.38732>;
        <D.38731>:
        iftmp.220 = 0B;
        <D.38732>:
        D.38733 = iftmp.220->klass;
        ins->klass = D.38733;
        D.38734 = alloc_dreg (cfg, 5);
        D.38735 = (int) D.38734;
        ins->dreg = D.38735;
        cfg->has_indirection = 1;
        D.32904 = cfg->gsharedvt;
        D.33836 = D.32904 != 0;
        D.33837 = (long int) D.33836;
        D.33838 = __builtin_expect (D.33837, 0);
        if (D.33838 != 0) goto <D.38736>; else goto <D.38737>;
        <D.38736>:
        D.38711 = val->dreg;
        D.38712 = (unsigned int) D.38711;
        D.33862 = cfg->vreg_to_inst_len;
        if (D.38712 < D.33862) goto <D.38739>; else goto <D.38740>;
        <D.38739>:
        D.33865 = cfg->vreg_to_inst;
        D.38711 = val->dreg;
        D.38715 = (unsigned int) D.38711;
        D.38716 = D.38715 * 4;
        D.38717 = D.33865 + D.38716;
        iftmp.221 = *D.38717;
        goto <D.38741>;
        <D.38740>:
        iftmp.221 = 0B;
        <D.38741>:
        D.38742 = iftmp.221->data.op[1].vtype;
        D.38743 = mini_is_gsharedvt_variable_type (cfg, D.38742);
        if (D.38743 != 0) goto <D.38744>; else goto <D.38745>;
        <D.38744>:
        handle_gsharedvt_ldaddr (cfg);
        <D.38745>:
        <D.38737>:
        D.38747 = mono_arch_is_soft_float ();
        if (D.38747 != 0) goto <D.38748>; else goto <D.38749>;
        <D.38748>:
        D.38711 = val->dreg;
        D.38712 = (unsigned int) D.38711;
        D.33862 = cfg->vreg_to_inst_len;
        if (D.38712 < D.33862) goto <D.38751>; else goto <D.38752>;
        <D.38751>:
        D.33865 = cfg->vreg_to_inst;
        D.38711 = val->dreg;
        D.38715 = (unsigned int) D.38711;
        D.38716 = D.38715 * 4;
        D.38717 = D.33865 + D.38716;
        iftmp.223 = *D.38717;
        goto <D.38753>;
        <D.38752>:
        iftmp.223 = 0B;
        <D.38753>:
        D.38754 = iftmp.223->type;
        D.38755 = D.38754 == 2;
        D.38756 = D.38754 == 4;
        D.38757 = D.38755 | D.38756;
        D.38758 = (int) D.38757;
        iftmp.222 = (_Bool) D.38758;
        goto <D.38759>;
        <D.38749>:
        D.38711 = val->dreg;
        D.38712 = (unsigned int) D.38711;
        D.33862 = cfg->vreg_to_inst_len;
        if (D.38712 < D.33862) goto <D.38761>; else goto <D.38762>;
        <D.38761>:
        D.33865 = cfg->vreg_to_inst;
        D.38711 = val->dreg;
        D.38715 = (unsigned int) D.38711;
        D.38716 = D.38715 * 4;
        D.38717 = D.33865 + D.38716;
        iftmp.224 = *D.38717;
        goto <D.38763>;
        <D.38762>:
        iftmp.224 = 0B;
        <D.38763>:
        D.38764 = iftmp.224->type;
        iftmp.222 = D.38764 == 2;
        <D.38759>:
        if (iftmp.222 != 0) goto <D.38765>; else goto <D.38766>;
        <D.38765>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.38711 = val->dreg;
          D.38712 = (unsigned int) D.38711;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.38712 < D.33862) goto <D.38769>; else goto <D.38770>;
          <D.38769>:
          D.33865 = cfg->vreg_to_inst;
          D.38711 = val->dreg;
          D.38715 = (unsigned int) D.38711;
          D.38716 = D.38715 * 4;
          D.38717 = D.33865 + D.38716;
          iftmp.226 = *D.38717;
          goto <D.38771>;
          <D.38770>:
          iftmp.226 = 0B;
          <D.38771>:
          D.38772 = iftmp.226->dreg;
          D.38773 = D.38772 + 1;
          D.38774 = (unsigned int) D.38773;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.38774 < D.33862) goto <D.38775>; else goto <D.38776>;
          <D.38775>:
          D.33865 = cfg->vreg_to_inst;
          D.38711 = val->dreg;
          D.38712 = (unsigned int) D.38711;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.38712 < D.33862) goto <D.38778>; else goto <D.38779>;
          <D.38778>:
          D.33865 = cfg->vreg_to_inst;
          D.38711 = val->dreg;
          D.38715 = (unsigned int) D.38711;
          D.38716 = D.38715 * 4;
          D.38717 = D.33865 + D.38716;
          iftmp.227 = *D.38717;
          goto <D.38780>;
          <D.38779>:
          iftmp.227 = 0B;
          <D.38780>:
          D.38781 = iftmp.227->dreg;
          D.38782 = (sizetype) D.38781;
          D.38783 = D.38782 + 1;
          D.38784 = D.38783 * 4;
          D.38785 = D.33865 + D.38784;
          iftmp.225 = *D.38785;
          goto <D.38786>;
          <D.38776>:
          iftmp.225 = 0B;
          <D.38786>:
          var1 = iftmp.225;
          D.38711 = val->dreg;
          D.38712 = (unsigned int) D.38711;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.38712 < D.33862) goto <D.38789>; else goto <D.38790>;
          <D.38789>:
          D.33865 = cfg->vreg_to_inst;
          D.38711 = val->dreg;
          D.38715 = (unsigned int) D.38711;
          D.38716 = D.38715 * 4;
          D.38717 = D.33865 + D.38716;
          iftmp.229 = *D.38717;
          goto <D.38791>;
          <D.38790>:
          iftmp.229 = 0B;
          <D.38791>:
          D.38792 = iftmp.229->dreg;
          D.38793 = D.38792 + 2;
          D.38794 = (unsigned int) D.38793;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.38794 < D.33862) goto <D.38795>; else goto <D.38796>;
          <D.38795>:
          D.33865 = cfg->vreg_to_inst;
          D.38711 = val->dreg;
          D.38712 = (unsigned int) D.38711;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.38712 < D.33862) goto <D.38798>; else goto <D.38799>;
          <D.38798>:
          D.33865 = cfg->vreg_to_inst;
          D.38711 = val->dreg;
          D.38715 = (unsigned int) D.38711;
          D.38716 = D.38715 * 4;
          D.38717 = D.33865 + D.38716;
          iftmp.230 = *D.38717;
          goto <D.38800>;
          <D.38799>:
          iftmp.230 = 0B;
          <D.38800>:
          D.38801 = iftmp.230->dreg;
          D.38802 = (sizetype) D.38801;
          D.38803 = D.38802 + 2;
          D.38804 = D.38803 * 4;
          D.38805 = D.33865 + D.38804;
          iftmp.228 = *D.38805;
          goto <D.38806>;
          <D.38796>:
          iftmp.228 = 0B;
          <D.38806>:
          var2 = iftmp.228;
          D.38807 = var1 == 0B;
          D.38808 = (long int) D.38807;
          D.38809 = __builtin_expect (D.38808, 0);
          if (D.38809 != 0) goto <D.38810>; else goto <D.38811>;
          <D.38810>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9818, "var1");
          <D.38811>:
          D.38812 = var2 == 0B;
          D.38813 = (long int) D.38812;
          D.38814 = __builtin_expect (D.38813, 0);
          if (D.38814 != 0) goto <D.38815>; else goto <D.38816>;
          <D.38815>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9818, "var2");
          <D.38816>:
          D.38817 = var1->flags;
          D.38818 = D.38817 | 16;
          var1->flags = D.38818;
          D.38819 = var2->flags;
          D.38820 = D.38819 | 16;
          var2->flags = D.38820;
        }
        <D.38766>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.38821>; else goto <D.38822>;
        <D.38821>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.38823>;
        <D.38822>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.38823>:
        sp.231 = sp;
        sp = sp.231 + 4;
        *sp.231 = ins;
      }
      goto <D.38825>;
      <D.38709>:
      klass.170 = klass;
      ins = handle_unbox (cfg, klass.170, sp, context_used);
      sp.232 = sp;
      sp = sp.232 + 4;
      *sp.232 = ins;
      <D.38825>:
      ip = ip + 5;
      inline_costs = inline_costs + 2;
      goto <D.29893>;
      <D.30325>:
      <D.30326>:
      <D.30327>:
      <D.30328>:
      <D.30329>:
      <D.30330>:
      {
        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.33632 = *ip;
        op = (int) D.33632;
        op.233 = (unsigned int) op;
        D.38828 = op.233 + 4294967173;
        D.38829 = D.38828 <= 2;
        is_instance = (gboolean) D.38829;
        if (is_instance != 0) goto <D.38830>; else goto <D.38831>;
        <D.38830>:
        if (op == 125) goto <D.38832>; else goto <D.38833>;
        <D.38832>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        if (D.33526 <= 7) goto <D.38834>; else goto <D.38835>;
        <D.38834>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.38836>; else goto <D.38837>;
        <D.38836>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.38838>; else goto <D.38839>;
        <D.38838>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38839>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38837>:
        D.38840 = mini_get_debug_options ();
        D.38841 = D.38840->break_on_unverified;
        if (D.38841 != 0) goto <D.38842>; else goto unverified;
        <D.38842>:
        raise (5);
        <D.38835>:
        sp = sp + 4294967288;
        store_val = MEM[(struct MonoInst * *)sp + 4B];
        goto <D.38843>;
        <D.38833>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        if (D.33526 <= 3) goto <D.38844>; else goto <D.38845>;
        <D.38844>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.38846>; else goto <D.38847>;
        <D.38846>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.38848>; else goto <D.38849>;
        <D.38848>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38849>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38847>:
        D.38850 = mini_get_debug_options ();
        D.38851 = D.38850->break_on_unverified;
        if (D.38851 != 0) goto <D.38852>; else goto unverified;
        <D.38852>:
        raise (5);
        <D.38845>:
        sp = sp + 4294967292;
        <D.38843>:
        D.33750 = *sp;
        D.38853 = D.33750->type;
        D.38854 = D.38853 + 255;
        D.38855 = D.38854 <= 1;
        D.38856 = D.38853 == 4;
        D.38857 = D.38855 | D.38856;
        if (D.38857 != 0) goto <D.38858>; else goto <D.38859>;
        <D.38858>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.38860>; else goto <D.38861>;
        <D.38860>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.38862>; else goto <D.38863>;
        <D.38862>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38863>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38861>:
        D.38864 = mini_get_debug_options ();
        D.38865 = D.38864->break_on_unverified;
        if (D.38865 != 0) goto <D.38866>; else goto unverified;
        <D.38866>:
        raise (5);
        <D.38859>:
        D.33632 = *ip;
        if (D.33632 != 123) goto <D.38867>; else goto <D.38868>;
        <D.38867>:
        D.33750 = *sp;
        D.35492 = D.33750->type;
        if (D.35492 == 7) goto <D.38869>; else goto <D.38870>;
        <D.38869>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.38871>; else goto <D.38872>;
        <D.38871>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.38873>; else goto <D.38874>;
        <D.38873>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38874>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38872>:
        D.38875 = mini_get_debug_options ();
        D.38876 = D.38875->break_on_unverified;
        if (D.38876 != 0) goto <D.38877>; else goto unverified;
        <D.38877>:
        raise (5);
        <D.38870>:
        <D.38868>:
        goto <D.38878>;
        <D.38831>:
        if (op == 128) goto <D.38879>; else goto <D.38880>;
        <D.38879>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        if (D.33526 <= 3) goto <D.38881>; else goto <D.38882>;
        <D.38881>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.38883>; else goto <D.38884>;
        <D.38883>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.38885>; else goto <D.38886>;
        <D.38885>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38886>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38884>:
        D.38887 = mini_get_debug_options ();
        D.38888 = D.38887->break_on_unverified;
        if (D.38888 != 0) goto <D.38889>; else goto unverified;
        <D.38889>:
        raise (5);
        <D.38882>:
        sp = sp + 4294967292;
        store_val = *sp;
        <D.38880>:
        <D.38878>:
        D.34195 = ip + 5;
        if (D.34195 > end) goto <D.38890>; else goto <D.38891>;
        <D.38890>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.38892>; else goto <D.38893>;
        <D.38892>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.38894>; else goto <D.38895>;
        <D.38894>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38895>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38893>:
        D.38896 = mini_get_debug_options ();
        D.38897 = D.38896->break_on_unverified;
        if (D.38897 != 0) goto <D.38898>; else goto unverified;
        <D.38898>:
        raise (5);
        <D.38891>:
        D.34214 = ip + 1;
        token = mono_read32 (D.34214);
        D.32698 = BIT_FIELD_REF <*method, 8, 160>;
        D.32699 = D.32698 & 124;
        if (D.32699 != 0) goto <D.38899>; else goto <D.38900>;
        <D.38899>:
        field = mono_method_get_wrapper_data (method, token);
        klass.234 = field->parent;
        klass = klass.234;
        goto <D.38902>;
        <D.38900>:
        field = mono_field_from_token (image, token, &klass, generic_context);
        <D.38902>:
        if (field == 0B) goto <D.38903>; else goto <D.38904>;
        <D.38903>:
        D.38905 = mini_get_debug_options ();
        D.38906 = D.38905->break_on_unverified;
        if (D.38906 != 0) goto <D.38907>; else goto load_error;
        <D.38907>:
        raise (5);
        <D.38904>:
        if (dont_verify == 0) goto <D.38908>; else goto <D.38909>;
        <D.38908>:
        D.33528 = BIT_FIELD_REF <*cfg, 8, 3400>;
        D.34635 = D.33528 & 64;
        if (D.34635 == 0) goto <D.38910>; else goto <D.38911>;
        <D.38910>:
        D.38912 = mono_method_can_access_field (method, field);
        if (D.38912 == 0) goto <D.38913>; else goto <D.38914>;
        <D.38913>:
        {
          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.38915 = monoeg_g_strdup_printf ("Field `%s\' is inaccessible from method `%s\'\n", field_fname, method_fname);
          cfg->exception_message = D.38915;
          monoeg_g_free (method_fname);
          monoeg_g_free (field_fname);
          goto exception_exit;
        }
        <D.38914>:
        <D.38911>:
        <D.38909>:
        klass.170 = klass;
        mono_class_init (klass.170);
        if (is_instance != 0) goto <D.38916>; else goto <D.38917>;
        <D.38916>:
        D.33632 = *ip;
        if (D.33632 != 124) goto <D.38918>; else goto <D.38919>;
        <D.38918>:
        D.38920 = is_magic_tls_access (field);
        if (D.38920 != 0) goto <D.38921>; else goto <D.38922>;
        <D.38921>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.38923>; else goto <D.38924>;
        <D.38923>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.38925>; else goto <D.38926>;
        <D.38925>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38926>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38924>:
        D.38927 = mini_get_debug_options ();
        D.38928 = D.38927->break_on_unverified;
        if (D.38928 != 0) goto <D.38929>; else goto unverified;
        <D.38929>:
        raise (5);
        <D.38922>:
        <D.38919>:
        <D.38917>:
        if (is_instance == 0) goto <D.38930>; else goto <D.38931>;
        <D.38930>:
        D.38932 = mono_security_get_mode ();
        if (D.38932 == 1) goto <D.38933>; else goto <D.38934>;
        <D.38933>:
        bblock.76 = bblock;
        ensure_method_is_allowed_to_access_field (cfg, method, field, bblock.76, ip);
        <D.38934>:
        <D.38931>:
        if (is_instance != 0) goto <D.38935>; else goto <D.38936>;
        <D.38935>:
        D.38937 = field->type;
        D.38938 = D.38937->attrs;
        D.38939 = (int) D.38938;
        D.38940 = D.38939 & 16;
        if (D.38940 != 0) goto <D.38941>; else goto <D.38942>;
        <D.38941>:
        switch (op) <default: <D.30347>, case 123: <D.30343>, case 124: <D.30346>, case 125: <D.30345>>
        <D.30343>:
        op = 126;
        goto <D.30344>;
        <D.30345>:
        op = 128;
        goto <D.30344>;
        <D.30346>:
        op = 127;
        goto <D.30344>;
        <D.30347>:
        monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 9915);
        <D.30344>:
        is_instance = 0;
        <D.38942>:
        <D.38936>:
        klass.170 = klass;
        context_used = mini_class_check_context_used (cfg, klass.170);
        klass.170 = klass;
        D.38944 = BIT_FIELD_REF <*klass.170, 8, 160>;
        D.38945 = D.38944 & 8;
        if (D.38945 != 0) goto <D.38946>; else goto <D.38947>;
        <D.38946>:
        D.38948 = field->offset;
        D.38949 = (unsigned int) D.38948;
        iftmp.235 = D.38949 + 4294967288;
        goto <D.38950>;
        <D.38947>:
        D.38948 = field->offset;
        iftmp.235 = (unsigned int) D.38948;
        <D.38950>:
        foffset = iftmp.235;
        if (op == 125) goto <D.38951>; else goto <D.38952>;
        <D.38951>:
        D.38937 = field->type;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        D.38953 = target_type_is_incompatible (cfg, D.38937, D.34876);
        if (D.38953 != 0) goto <D.38954>; else goto <D.38955>;
        <D.38954>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.38956>; else goto <D.38957>;
        <D.38956>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.38958>; else goto <D.38959>;
        <D.38958>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38959>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38957>:
        D.38960 = mini_get_debug_options ();
        D.38961 = D.38960->break_on_unverified;
        if (D.38961 != 0) goto <D.38962>; else goto unverified;
        <D.38962>:
        raise (5);
        <D.38955>:
        klass.170 = klass;
        D.38273 = BIT_FIELD_REF <*klass.170, 8, 176>;
        D.38274 = D.38273 & 64;
        if (D.38274 != 0) goto <D.38967>; else goto <D.38963>;
        <D.38967>:
        D.32726 = cfg->method;
        D.38968 = mono_method_signature (D.32726);
        D.38969 = BIT_FIELD_REF <*D.38968, 8, 80>;
        D.38970 = D.38969 & 64;
        if (D.38970 == 0) goto <D.38964>; else goto <D.38971>;
        <D.38971>:
        D.33750 = *sp;
        D.35496 = D.33750->opcode;
        if (D.35496 != 424) goto <D.38964>; else goto <D.38972>;
        <D.38972>:
        D.33750 = *sp;
        D.38973 = D.33750->sreg1;
        D.33358 = cfg->args;
        D.33359 = *D.33358;
        D.33373 = D.33359->dreg;
        if (D.38973 != D.33373) goto <D.38964>; else goto <D.38963>;
        <D.38963>:
        klass.170 = klass;
        D.38273 = BIT_FIELD_REF <*klass.170, 8, 176>;
        D.38974 = D.38273 & 128;
        if (D.38974 != 0) goto <D.38964>; else goto <D.38975>;
        <D.38975>:
        D.38976 = mono_defaults.marshalbyrefobject_class;
        klass.170 = klass;
        if (D.38976 == klass.170) goto <D.38964>; else goto <D.38965>;
        <D.38964>:
        {
          struct MonoMethod * stfld_wrapper;
          struct MonoInst * iargs[5];

          try
            {
              D.38937 = field->type;
              stfld_wrapper = mono_marshal_get_stfld_wrapper (D.38937);
              D.32904 = cfg->gsharedvt;
              if (D.32904 != 0) goto <D.38977>; else goto <D.38978>;
              <D.38977>:
              D.32693 = method->klass;
              D.34423 = D.32693->name_space;
              D.32693 = method->klass;
              D.34424 = D.32693->name;
              D.34425 = method->name;
              D.34426 = method->signature;
              D.34427 = D.34426->param_count;
              D.34428 = (int) D.34427;
              D.38979 = mono_opcode_name (op);
              D.38980 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.34423, D.34424, D.34425, D.34428, D.38979, "method-to-ir.c", 9933);
              cfg->exception_message = D.38980;
              D.32836 = cfg->verbose_level;
              if (D.32836 > 1) goto <D.38981>; else goto <D.38982>;
              <D.38981>:
              D.34433 = cfg->exception_message;
              printf ("%s\n", D.34433);
              <D.38982>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.38978>:
              D.33750 = *sp;
              iargs[0] = D.33750;
              D.32755 = cfg->mempool;
              D.38983 = mono_mempool_alloc (D.32755, 56);
              iargs[1] = D.38983;
              D.38984 = iargs[1];
              D.38984 = iargs[1];
              D.38984->data.op[1].const_val = 0;
              D.38985 = D.38984->data.op[1].const_val;
              D.38984->data.op[0].const_val = D.38985;
              D.38984 = iargs[1];
              D.38984 = iargs[1];
              D.38984->prev = 0B;
              D.38986 = D.38984->prev;
              D.38984->next = D.38986;
              D.38984 = iargs[1];
              D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.33151 = D.33150 & 64;
              if (D.33151 != 0) goto <D.38988>; else goto <D.38989>;
              <D.38988>:
              iftmp.236 = 732;
              goto <D.38990>;
              <D.38989>:
              iftmp.236 = 362;
              <D.38990>:
              D.38984->opcode = iftmp.236;
              D.38984 = iargs[1];
              D.38984->flags = 0;
              D.38984 = iargs[1];
              D.38984->type = 0;
              D.38984 = iargs[1];
              D.38984->dreg = -1;
              D.38984 = iargs[1];
              D.38984 = iargs[1];
              D.38984 = iargs[1];
              D.38984->sreg3 = -1;
              D.38991 = D.38984->sreg3;
              D.38984->sreg2 = D.38991;
              D.38992 = D.38984->sreg2;
              D.38984->sreg1 = D.38992;
              D.38984 = iargs[1];
              D.32979 = cfg->ip;
              D.38984->cil_code = D.32979;
              D.38984 = iargs[1];
              klass.170 = klass;
              D.38984->data.op[0].p = klass.170;
              D.38984 = iargs[1];
              D.38984->data.op[1].src = 11B;
              D.38984 = iargs[1];
              D.38984->type = 3;
              D.38984 = iargs[1];
              D.38993 = alloc_dreg (cfg, 3);
              D.38994 = (int) D.38993;
              D.38984->dreg = D.38994;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.38995>; else goto <D.38996>;
              <D.38995>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.38984 = iargs[1];
              D.33008->next = D.38984;
              D.38984 = iargs[1];
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.38984->prev = D.33008;
              bblock.125 = cfg->cbb;
              D.38984 = iargs[1];
              bblock.125->last_ins = D.38984;
              goto <D.38997>;
              <D.38996>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              D.38984 = iargs[1];
              bblock.125->last_ins = D.38984;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.38997>:
              D.32755 = cfg->mempool;
              D.38998 = mono_mempool_alloc (D.32755, 56);
              iargs[2] = D.38998;
              D.38999 = iargs[2];
              D.38999 = iargs[2];
              D.38999->data.op[1].const_val = 0;
              D.39000 = D.38999->data.op[1].const_val;
              D.38999->data.op[0].const_val = D.39000;
              D.38999 = iargs[2];
              D.38999 = iargs[2];
              D.38999->prev = 0B;
              D.39001 = D.38999->prev;
              D.38999->next = D.39001;
              D.38999 = iargs[2];
              D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.33151 = D.33150 & 64;
              if (D.33151 != 0) goto <D.39003>; else goto <D.39004>;
              <D.39003>:
              iftmp.237 = 732;
              goto <D.39005>;
              <D.39004>:
              iftmp.237 = 362;
              <D.39005>:
              D.38999->opcode = iftmp.237;
              D.38999 = iargs[2];
              D.38999->flags = 0;
              D.38999 = iargs[2];
              D.38999->type = 0;
              D.38999 = iargs[2];
              D.38999->dreg = -1;
              D.38999 = iargs[2];
              D.38999 = iargs[2];
              D.38999 = iargs[2];
              D.38999->sreg3 = -1;
              D.39006 = D.38999->sreg3;
              D.38999->sreg2 = D.39006;
              D.39007 = D.38999->sreg2;
              D.38999->sreg1 = D.39007;
              D.38999 = iargs[2];
              D.32979 = cfg->ip;
              D.38999->cil_code = D.32979;
              D.38999 = iargs[2];
              D.38999->data.op[0].p = field;
              D.38999 = iargs[2];
              D.38999->data.op[1].src = 13B;
              D.38999 = iargs[2];
              D.38999->type = 3;
              D.38999 = iargs[2];
              D.39008 = alloc_dreg (cfg, 3);
              D.39009 = (int) D.39008;
              D.38999->dreg = D.39009;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.39010>; else goto <D.39011>;
              <D.39010>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.38999 = iargs[2];
              D.33008->next = D.38999;
              D.38999 = iargs[2];
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.38999->prev = D.33008;
              bblock.125 = cfg->cbb;
              D.38999 = iargs[2];
              bblock.125->last_ins = D.38999;
              goto <D.39012>;
              <D.39011>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              D.38999 = iargs[2];
              bblock.125->last_ins = D.38999;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.39012>:
              D.32755 = cfg->mempool;
              D.39013 = mono_mempool_alloc (D.32755, 56);
              iargs[3] = D.39013;
              D.39014 = iargs[3];
              D.39014 = iargs[3];
              D.39014->data.op[1].const_val = 0;
              D.39015 = D.39014->data.op[1].const_val;
              D.39014->data.op[0].const_val = D.39015;
              D.39014 = iargs[3];
              D.39014 = iargs[3];
              D.39014->prev = 0B;
              D.39016 = D.39014->prev;
              D.39014->next = D.39016;
              D.39014 = iargs[3];
              D.39014->opcode = 362;
              D.39014 = iargs[3];
              D.39014->flags = 0;
              D.39014 = iargs[3];
              D.39014->type = 0;
              D.39014 = iargs[3];
              D.39014->dreg = -1;
              D.39014 = iargs[3];
              D.39014 = iargs[3];
              D.39014 = iargs[3];
              D.39014->sreg3 = -1;
              D.39017 = D.39014->sreg3;
              D.39014->sreg2 = D.39017;
              D.39018 = D.39014->sreg2;
              D.39014->sreg1 = D.39018;
              D.39014 = iargs[3];
              D.32979 = cfg->ip;
              D.39014->cil_code = D.32979;
              D.39014 = iargs[3];
              klass.170 = klass;
              D.38944 = BIT_FIELD_REF <*klass.170, 8, 160>;
              D.38945 = D.38944 & 8;
              if (D.38945 != 0) goto <D.39020>; else goto <D.39021>;
              <D.39020>:
              D.38948 = field->offset;
              D.38949 = (unsigned int) D.38948;
              D.39022 = D.38949 + 4294967288;
              iftmp.238 = (mgreg_t) D.39022;
              goto <D.39023>;
              <D.39021>:
              iftmp.238 = field->offset;
              <D.39023>:
              D.39014->data.op[0].const_val = iftmp.238;
              D.39014 = iargs[3];
              D.39014->type = 1;
              D.39014 = iargs[3];
              D.39024 = alloc_dreg (cfg, 1);
              D.39025 = (int) D.39024;
              D.39014->dreg = D.39025;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.39026>; else goto <D.39027>;
              <D.39026>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.39014 = iargs[3];
              D.33008->next = D.39014;
              D.39014 = iargs[3];
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.39014->prev = D.33008;
              bblock.125 = cfg->cbb;
              D.39014 = iargs[3];
              bblock.125->last_ins = D.39014;
              goto <D.39028>;
              <D.39027>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              D.39014 = iargs[3];
              bblock.125->last_ins = D.39014;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.39028>:
              D.37948 = MEM[(struct MonoInst * *)sp + 4B];
              iargs[4] = D.37948;
              D.33148 = cfg->opt;
              D.35603 = D.33148 & 4;
              if (D.35603 != 0) goto <D.39029>; else goto <D.39032>;
              <D.39032>:
              D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.33151 = D.33150 & 64;
              if (D.33151 != 0) goto <D.39029>; else goto <D.39030>;
              <D.39029>:
              D.39033 = mono_method_signature (stfld_wrapper);
              D.32923 = cfg->real_offset;
              costs = inline_method (cfg, stfld_wrapper, D.39033, &iargs, ip, D.32923, dont_inline, 1);
              D.33309 = cfg->exception_type;
              if (D.33309 != 0) goto exception_exit; else goto <D.39034>;
              <D.39034>:
              D.39035 = costs <= 0;
              D.39036 = (long int) D.39035;
              D.39037 = __builtin_expect (D.39036, 0);
              if (D.39037 != 0) goto <D.39038>; else goto <D.39039>;
              <D.39038>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9946, "costs > 0");
              <D.39039>:
              D.32923 = cfg->real_offset;
              D.35630 = D.32923 + 5;
              cfg->real_offset = D.35630;
              bblock.125 = cfg->cbb;
              bblock = bblock.125;
              inline_costs = inline_costs + costs;
              goto <D.39031>;
              <D.39030>:
              mono_emit_method_call (cfg, stfld_wrapper, &iargs, 0B);
              <D.39031>:
            }
          finally
            {
              iargs = {CLOBBER};
            }
        }
        goto <D.38966>;
        <D.38965>:
        {
          struct MonoInst * store;

          D.32743 = BIT_FIELD_REF <*cfg, 8, 3424>;
          D.33386 = D.32743 & 64;
          if (D.33386 != 0) goto <D.39040>; else goto <D.39041>;
          <D.39040>:
          {
            struct MonoInst * inst;

            D.32755 = cfg->mempool;
            inst = mono_mempool_alloc (D.32755, 56);
            inst->data.op[1].const_val = 0;
            D.39042 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.39042;
            inst->prev = 0B;
            D.39043 = inst->prev;
            inst->next = D.39043;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.39044 = inst->sreg3;
            inst->sreg2 = D.39044;
            D.39045 = inst->sreg2;
            inst->sreg1 = D.39045;
            D.32979 = cfg->ip;
            inst->cil_code = D.32979;
            inst->dreg = -1;
            D.33750 = *sp;
            D.33943 = D.33750->dreg;
            inst->sreg1 = D.33943;
            inst->data.op[1].const_val = 0;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39046>; else goto <D.39047>;
            <D.39046>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = inst;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            inst->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            goto <D.39048>;
            <D.39047>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39048>:
          }
          {
            struct MonoInst * inst;

            D.32755 = cfg->mempool;
            inst = mono_mempool_alloc (D.32755, 56);
            inst->data.op[1].const_val = 0;
            D.39049 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.39049;
            inst->prev = 0B;
            D.39050 = inst->prev;
            inst->next = D.39050;
            inst->opcode = 451;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.39051 = inst->sreg3;
            inst->sreg2 = D.39051;
            D.39052 = inst->sreg2;
            inst->sreg1 = D.39052;
            D.32979 = cfg->ip;
            inst->cil_code = D.32979;
            inst->data.op[1].p = "NullReferenceException";
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39053>; else goto <D.39054>;
            <D.39053>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = inst;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            inst->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            goto <D.39055>;
            <D.39054>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39055>:
          }
          goto <D.39056>;
          <D.39041>:
          <D.39056>:
          klass.170 = klass;
          D.39057 = mini_is_gsharedvt_klass (cfg, klass.170);
          if (D.39057 != 0) goto <D.39058>; else goto <D.39059>;
          <D.39058>:
          {
            struct MonoInst * offset_ins;

            klass.170 = klass;
            context_used = mini_class_check_context_used (cfg, klass.170);
            offset_ins = emit_get_gsharedvt_info (cfg, field, 15);
            D.39060 = alloc_ireg_mp (cfg);
            dreg = (int) D.39060;
            D.32755 = cfg->mempool;
            ins = mono_mempool_alloc (D.32755, 56);
            ins->data.op[1].const_val = 0;
            D.32975 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.32975;
            ins->prev = 0B;
            D.32976 = ins->prev;
            ins->next = D.32976;
            ins->opcode = 565;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.32977 = ins->sreg3;
            ins->sreg2 = D.32977;
            D.32978 = ins->sreg2;
            ins->sreg1 = D.32978;
            D.32979 = cfg->ip;
            ins->cil_code = D.32979;
            ins->dreg = dreg;
            D.33750 = *sp;
            D.33943 = D.33750->dreg;
            ins->sreg1 = D.33943;
            D.39061 = offset_ins->dreg;
            ins->sreg2 = D.39061;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39062>; else goto <D.39063>;
            <D.39062>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = ins;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            ins->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            goto <D.39064>;
            <D.39063>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39064>:
            D.32755 = cfg->mempool;
            store = mono_mempool_alloc (D.32755, 56);
            store->data.op[1].const_val = 0;
            D.39065 = store->data.op[1].const_val;
            store->data.op[0].const_val = D.39065;
            store->prev = 0B;
            D.39066 = store->prev;
            store->next = D.39066;
            D.38937 = field->type;
            D.39067 = mono_type_to_store_membase (cfg, D.38937);
            D.39068 = (short unsigned int) D.39067;
            store->opcode = D.39068;
            store->flags = 0;
            store->type = 0;
            store->dreg = -1;
            store->sreg3 = -1;
            D.39069 = store->sreg3;
            store->sreg2 = D.39069;
            D.39070 = store->sreg2;
            store->sreg1 = D.39070;
            D.32979 = cfg->ip;
            store->cil_code = D.32979;
            D.34875 = sp + 4;
            D.34876 = *D.34875;
            D.34877 = D.34876->dreg;
            store->sreg1 = D.34877;
            store->dreg = dreg;
            store->data.op[0].const_val = 0;
            D.38937 = field->type;
            type_to_eval_stack_type (cfg, D.38937, store);
            D.38937 = field->type;
            D.39071 = mono_class_from_mono_type (D.38937);
            store->klass = D.39071;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39072>; else goto <D.39073>;
            <D.39072>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = store;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            store->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = store;
            goto <D.39074>;
            <D.39073>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = store;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39074>:
          }
          goto <D.39075>;
          <D.39059>:
          D.32755 = cfg->mempool;
          store = mono_mempool_alloc (D.32755, 56);
          store->data.op[1].const_val = 0;
          D.39065 = store->data.op[1].const_val;
          store->data.op[0].const_val = D.39065;
          store->prev = 0B;
          D.39066 = store->prev;
          store->next = D.39066;
          D.38937 = field->type;
          D.39076 = mono_type_to_store_membase (cfg, D.38937);
          D.39077 = (short unsigned int) D.39076;
          store->opcode = D.39077;
          store->flags = 0;
          store->type = 0;
          store->dreg = -1;
          store->sreg3 = -1;
          D.39069 = store->sreg3;
          store->sreg2 = D.39069;
          D.39070 = store->sreg2;
          store->sreg1 = D.39070;
          D.32979 = cfg->ip;
          store->cil_code = D.32979;
          D.34875 = sp + 4;
          D.34876 = *D.34875;
          D.34877 = D.34876->dreg;
          store->sreg1 = D.34877;
          D.33750 = *sp;
          D.33943 = D.33750->dreg;
          store->dreg = D.33943;
          foffset.239 = (int) foffset;
          store->data.op[0].const_val = foffset.239;
          D.38937 = field->type;
          type_to_eval_stack_type (cfg, D.38937, store);
          D.38937 = field->type;
          D.39079 = mono_class_from_mono_type (D.38937);
          store->klass = D.39079;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.39080>; else goto <D.39081>;
          <D.39080>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = store;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          store->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = store;
          goto <D.39082>;
          <D.39081>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = store;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.39082>:
          <D.39075>:
          D.33750 = *sp;
          D.35496 = D.33750->opcode;
          if (D.35496 != 314) goto <D.39083>; else goto <D.39084>;
          <D.39083>:
          D.39085 = store->flags;
          D.39086 = D.39085 | 32;
          store->flags = D.39086;
          <D.39084>:
          D.35961 = BIT_FIELD_REF <*cfg, 8, 3416>;
          D.35962 = D.35961 & 16;
          if (D.35962 != 0) goto <D.39089>; else goto <D.39090>;
          <D.39089>:
          D.38937 = field->type;
          D.39091 = mini_type_to_stind (cfg, D.38937);
          if (D.39091 == 81) goto <D.39092>; else goto <D.39093>;
          <D.39092>:
          D.34875 = sp + 4;
          D.34876 = *D.34875;
          D.37146 = D.34876->opcode;
          if (D.37146 != 362) goto <D.39087>; else goto <D.39094>;
          <D.39094>:
          D.34875 = sp + 4;
          D.34876 = *D.34875;
          D.37171 = D.34876->data.op[0].const_val;
          if (D.37171 != 0) goto <D.39087>; else goto <D.39088>;
          <D.39087>:
          {
            struct MonoInst * ptr;
            int dreg;

            D.39095 = alloc_ireg_mp (cfg);
            dreg = (int) D.39095;
            D.32755 = cfg->mempool;
            ptr = mono_mempool_alloc (D.32755, 56);
            ptr->data.op[1].const_val = 0;
            D.39096 = ptr->data.op[1].const_val;
            ptr->data.op[0].const_val = D.39096;
            ptr->prev = 0B;
            D.39097 = ptr->prev;
            ptr->next = D.39097;
            ptr->opcode = 625;
            ptr->flags = 0;
            ptr->type = 0;
            ptr->dreg = -1;
            ptr->sreg3 = -1;
            D.39098 = ptr->sreg3;
            ptr->sreg2 = D.39098;
            D.39099 = ptr->sreg2;
            ptr->sreg1 = D.39099;
            D.32979 = cfg->ip;
            ptr->cil_code = D.32979;
            ptr->dreg = dreg;
            D.33750 = *sp;
            D.33943 = D.33750->dreg;
            ptr->sreg1 = D.33943;
            foffset.239 = (int) foffset;
            ptr->data.op[1].const_val = foffset.239;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39100>; else goto <D.39101>;
            <D.39100>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = ptr;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            ptr->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ptr;
            goto <D.39102>;
            <D.39101>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ptr;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39102>:
            D.34875 = sp + 4;
            D.34876 = *D.34875;
            emit_write_barrier (cfg, ptr, D.34876);
          }
          <D.39088>:
          <D.39093>:
          <D.39090>:
          D.39085 = store->flags;
          D.37112 = (unsigned char) ins_flag;
          D.39103 = D.39085 | D.37112;
          store->flags = D.39103;
        }
        <D.38966>:
        ins_flag = 0;
        ip = ip + 5;
        goto <D.29893>;
        <D.38952>:
        if (is_instance != 0) goto <D.39108>; else goto <D.39104>;
        <D.39108>:
        klass.170 = klass;
        D.38273 = BIT_FIELD_REF <*klass.170, 8, 176>;
        D.38274 = D.38273 & 64;
        if (D.38274 != 0) goto <D.39109>; else goto <D.39105>;
        <D.39109>:
        D.32726 = cfg->method;
        D.39110 = mono_method_signature (D.32726);
        D.39111 = BIT_FIELD_REF <*D.39110, 8, 80>;
        D.39112 = D.39111 & 64;
        if (D.39112 == 0) goto <D.39106>; else goto <D.39113>;
        <D.39113>:
        D.33750 = *sp;
        D.35496 = D.33750->opcode;
        if (D.35496 != 424) goto <D.39106>; else goto <D.39114>;
        <D.39114>:
        D.33750 = *sp;
        D.38973 = D.33750->sreg1;
        D.33358 = cfg->args;
        D.33359 = *D.33358;
        D.33373 = D.33359->dreg;
        if (D.38973 != D.33373) goto <D.39106>; else goto <D.39105>;
        <D.39105>:
        klass.170 = klass;
        D.38273 = BIT_FIELD_REF <*klass.170, 8, 176>;
        D.38974 = D.38273 & 128;
        if (D.38974 != 0) goto <D.39106>; else goto <D.39115>;
        <D.39115>:
        D.38976 = mono_defaults.marshalbyrefobject_class;
        klass.170 = klass;
        if (D.38976 == klass.170) goto <D.39106>; else goto <D.39104>;
        <D.39106>:
        {
          struct MonoMethod * wrapper;
          struct MonoInst * iargs[4];

          try
            {
              if (op == 124) goto <D.39117>; else goto <D.39118>;
              <D.39117>:
              D.38937 = field->type;
              iftmp.240 = mono_marshal_get_ldflda_wrapper (D.38937);
              goto <D.39119>;
              <D.39118>:
              D.38937 = field->type;
              iftmp.240 = mono_marshal_get_ldfld_wrapper (D.38937);
              <D.39119>:
              wrapper = iftmp.240;
              D.32904 = cfg->gsharedvt;
              if (D.32904 != 0) goto <D.39120>; else goto <D.39121>;
              <D.39120>:
              D.32693 = method->klass;
              D.34423 = D.32693->name_space;
              D.32693 = method->klass;
              D.34424 = D.32693->name;
              D.34425 = method->name;
              D.34426 = method->signature;
              D.34427 = D.34426->param_count;
              D.34428 = (int) D.34427;
              D.39122 = mono_opcode_name (op);
              D.39123 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.34423, D.34424, D.34425, D.34428, D.39122, "method-to-ir.c", 10000);
              cfg->exception_message = D.39123;
              D.32836 = cfg->verbose_level;
              if (D.32836 > 1) goto <D.39124>; else goto <D.39125>;
              <D.39124>:
              D.34433 = cfg->exception_message;
              printf ("%s\n", D.34433);
              <D.39125>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.39121>:
              D.33750 = *sp;
              iargs[0] = D.33750;
              D.32755 = cfg->mempool;
              D.39126 = mono_mempool_alloc (D.32755, 56);
              iargs[1] = D.39126;
              D.39127 = iargs[1];
              D.39127 = iargs[1];
              D.39127->data.op[1].const_val = 0;
              D.39128 = D.39127->data.op[1].const_val;
              D.39127->data.op[0].const_val = D.39128;
              D.39127 = iargs[1];
              D.39127 = iargs[1];
              D.39127->prev = 0B;
              D.39129 = D.39127->prev;
              D.39127->next = D.39129;
              D.39127 = iargs[1];
              D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.33151 = D.33150 & 64;
              if (D.33151 != 0) goto <D.39131>; else goto <D.39132>;
              <D.39131>:
              iftmp.241 = 732;
              goto <D.39133>;
              <D.39132>:
              iftmp.241 = 362;
              <D.39133>:
              D.39127->opcode = iftmp.241;
              D.39127 = iargs[1];
              D.39127->flags = 0;
              D.39127 = iargs[1];
              D.39127->type = 0;
              D.39127 = iargs[1];
              D.39127->dreg = -1;
              D.39127 = iargs[1];
              D.39127 = iargs[1];
              D.39127 = iargs[1];
              D.39127->sreg3 = -1;
              D.39134 = D.39127->sreg3;
              D.39127->sreg2 = D.39134;
              D.39135 = D.39127->sreg2;
              D.39127->sreg1 = D.39135;
              D.39127 = iargs[1];
              D.32979 = cfg->ip;
              D.39127->cil_code = D.32979;
              D.39127 = iargs[1];
              klass.170 = klass;
              D.39127->data.op[0].p = klass.170;
              D.39127 = iargs[1];
              D.39127->data.op[1].src = 11B;
              D.39127 = iargs[1];
              D.39127->type = 3;
              D.39127 = iargs[1];
              D.39136 = alloc_dreg (cfg, 3);
              D.39137 = (int) D.39136;
              D.39127->dreg = D.39137;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.39138>; else goto <D.39139>;
              <D.39138>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.39127 = iargs[1];
              D.33008->next = D.39127;
              D.39127 = iargs[1];
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.39127->prev = D.33008;
              bblock.125 = cfg->cbb;
              D.39127 = iargs[1];
              bblock.125->last_ins = D.39127;
              goto <D.39140>;
              <D.39139>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              D.39127 = iargs[1];
              bblock.125->last_ins = D.39127;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.39140>:
              D.32755 = cfg->mempool;
              D.39141 = mono_mempool_alloc (D.32755, 56);
              iargs[2] = D.39141;
              D.39142 = iargs[2];
              D.39142 = iargs[2];
              D.39142->data.op[1].const_val = 0;
              D.39143 = D.39142->data.op[1].const_val;
              D.39142->data.op[0].const_val = D.39143;
              D.39142 = iargs[2];
              D.39142 = iargs[2];
              D.39142->prev = 0B;
              D.39144 = D.39142->prev;
              D.39142->next = D.39144;
              D.39142 = iargs[2];
              D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.33151 = D.33150 & 64;
              if (D.33151 != 0) goto <D.39146>; else goto <D.39147>;
              <D.39146>:
              iftmp.242 = 732;
              goto <D.39148>;
              <D.39147>:
              iftmp.242 = 362;
              <D.39148>:
              D.39142->opcode = iftmp.242;
              D.39142 = iargs[2];
              D.39142->flags = 0;
              D.39142 = iargs[2];
              D.39142->type = 0;
              D.39142 = iargs[2];
              D.39142->dreg = -1;
              D.39142 = iargs[2];
              D.39142 = iargs[2];
              D.39142 = iargs[2];
              D.39142->sreg3 = -1;
              D.39149 = D.39142->sreg3;
              D.39142->sreg2 = D.39149;
              D.39150 = D.39142->sreg2;
              D.39142->sreg1 = D.39150;
              D.39142 = iargs[2];
              D.32979 = cfg->ip;
              D.39142->cil_code = D.32979;
              D.39142 = iargs[2];
              D.39142->data.op[0].p = field;
              D.39142 = iargs[2];
              D.39142->data.op[1].src = 13B;
              D.39142 = iargs[2];
              D.39142->type = 3;
              D.39142 = iargs[2];
              D.39151 = alloc_dreg (cfg, 3);
              D.39152 = (int) D.39151;
              D.39142->dreg = D.39152;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.39153>; else goto <D.39154>;
              <D.39153>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.39142 = iargs[2];
              D.33008->next = D.39142;
              D.39142 = iargs[2];
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.39142->prev = D.33008;
              bblock.125 = cfg->cbb;
              D.39142 = iargs[2];
              bblock.125->last_ins = D.39142;
              goto <D.39155>;
              <D.39154>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              D.39142 = iargs[2];
              bblock.125->last_ins = D.39142;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.39155>:
              D.32755 = cfg->mempool;
              D.39156 = mono_mempool_alloc (D.32755, 56);
              iargs[3] = D.39156;
              D.39157 = iargs[3];
              D.39157 = iargs[3];
              D.39157->data.op[1].const_val = 0;
              D.39158 = D.39157->data.op[1].const_val;
              D.39157->data.op[0].const_val = D.39158;
              D.39157 = iargs[3];
              D.39157 = iargs[3];
              D.39157->prev = 0B;
              D.39159 = D.39157->prev;
              D.39157->next = D.39159;
              D.39157 = iargs[3];
              D.39157->opcode = 362;
              D.39157 = iargs[3];
              D.39157->flags = 0;
              D.39157 = iargs[3];
              D.39157->type = 0;
              D.39157 = iargs[3];
              D.39157->dreg = -1;
              D.39157 = iargs[3];
              D.39157 = iargs[3];
              D.39157 = iargs[3];
              D.39157->sreg3 = -1;
              D.39160 = D.39157->sreg3;
              D.39157->sreg2 = D.39160;
              D.39161 = D.39157->sreg2;
              D.39157->sreg1 = D.39161;
              D.39157 = iargs[3];
              D.32979 = cfg->ip;
              D.39157->cil_code = D.32979;
              D.39157 = iargs[3];
              klass.170 = klass;
              D.38944 = BIT_FIELD_REF <*klass.170, 8, 160>;
              D.38945 = D.38944 & 8;
              if (D.38945 != 0) goto <D.39163>; else goto <D.39164>;
              <D.39163>:
              D.38948 = field->offset;
              D.38949 = (unsigned int) D.38948;
              D.39022 = D.38949 + 4294967288;
              iftmp.243 = (mgreg_t) D.39022;
              goto <D.39165>;
              <D.39164>:
              iftmp.243 = field->offset;
              <D.39165>:
              D.39157->data.op[0].const_val = iftmp.243;
              D.39157 = iargs[3];
              D.39157->type = 1;
              D.39157 = iargs[3];
              D.39166 = alloc_dreg (cfg, 1);
              D.39167 = (int) D.39166;
              D.39157->dreg = D.39167;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.39168>; else goto <D.39169>;
              <D.39168>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.39157 = iargs[3];
              D.33008->next = D.39157;
              D.39157 = iargs[3];
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.39157->prev = D.33008;
              bblock.125 = cfg->cbb;
              D.39157 = iargs[3];
              bblock.125->last_ins = D.39157;
              goto <D.39170>;
              <D.39169>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              D.39157 = iargs[3];
              bblock.125->last_ins = D.39157;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.39170>:
              D.33148 = cfg->opt;
              D.35603 = D.33148 & 4;
              if (D.35603 != 0) goto <D.39171>; else goto <D.39174>;
              <D.39174>:
              D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.33151 = D.33150 & 64;
              if (D.33151 != 0) goto <D.39171>; else goto <D.39172>;
              <D.39171>:
              D.39175 = mono_method_signature (wrapper);
              D.32923 = cfg->real_offset;
              costs = inline_method (cfg, wrapper, D.39175, &iargs, ip, D.32923, dont_inline, 1);
              D.33309 = cfg->exception_type;
              if (D.33309 != 0) goto exception_exit; else goto <D.39176>;
              <D.39176>:
              bblock.125 = cfg->cbb;
              bblock = bblock.125;
              D.39035 = costs <= 0;
              D.39036 = (long int) D.39035;
              D.39037 = __builtin_expect (D.39036, 0);
              if (D.39037 != 0) goto <D.39177>; else goto <D.39178>;
              <D.39177>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10011, "costs > 0");
              <D.39178>:
              D.32923 = cfg->real_offset;
              D.35630 = D.32923 + 5;
              cfg->real_offset = D.35630;
              sp.244 = sp;
              sp = sp.244 + 4;
              D.39180 = iargs[0];
              *sp.244 = D.39180;
              inline_costs = inline_costs + costs;
              goto <D.39173>;
              <D.39172>:
              ins = mono_emit_method_call (cfg, wrapper, &iargs, 0B);
              sp.245 = sp;
              sp = sp.245 + 4;
              *sp.245 = ins;
              <D.39173>:
            }
          finally
            {
              iargs = {CLOBBER};
            }
        }
        goto <D.39107>;
        <D.39104>:
        if (is_instance != 0) goto <D.39182>; else goto <D.39183>;
        <D.39182>:
        D.33750 = *sp;
        D.35492 = D.33750->type;
        if (D.35492 == 7) goto <D.39184>; else goto <D.39185>;
        <D.39184>:
        {
          struct MonoInst * var;

          D.33750 = *sp;
          D.33943 = D.33750->dreg;
          D.39187 = (unsigned int) D.33943;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.39187 < D.33862) goto <D.39188>; else goto <D.39189>;
          <D.39188>:
          D.33865 = cfg->vreg_to_inst;
          D.33750 = *sp;
          D.33943 = D.33750->dreg;
          D.39190 = (unsigned int) D.33943;
          D.39191 = D.39190 * 4;
          D.39192 = D.33865 + D.39191;
          iftmp.246 = *D.39192;
          goto <D.39193>;
          <D.39189>:
          iftmp.246 = 0B;
          <D.39193>:
          var = iftmp.246;
          if (var == 0B) goto <D.39194>; else goto <D.39195>;
          <D.39194>:
          klass.170 = klass;
          D.37564 = &klass.170->byval_arg;
          D.33750 = *sp;
          D.33943 = D.33750->dreg;
          var = mono_compile_create_var_for_vreg (cfg, D.37564, 329, D.33943);
          goto <D.39196>;
          <D.39195>:
          D.39197 = var->klass;
          klass.170 = klass;
          D.39198 = D.39197 != klass.170;
          D.39199 = (long int) D.39198;
          D.39200 = __builtin_expect (D.39199, 0);
          if (D.39200 != 0) goto <D.39201>; else goto <D.39202>;
          <D.39201>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10034, "var->klass == klass");
          <D.39202>:
          <D.39196>:
          D.32755 = cfg->mempool;
          ins = mono_mempool_alloc (D.32755, 56);
          ins->data.op[1].const_val = 0;
          D.32975 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.32975;
          ins->prev = 0B;
          D.32976 = ins->prev;
          ins->next = D.32976;
          ins->opcode = 314;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.32977 = ins->sreg3;
          ins->sreg2 = D.32977;
          D.32978 = ins->sreg2;
          ins->sreg1 = D.32978;
          D.32979 = cfg->ip;
          ins->cil_code = D.32979;
          ins->data.op[0].p = var;
          D.39203 = var->flags;
          D.39204 = D.39203 | 16;
          var->flags = D.39204;
          ins->type = 5;
          D.39197 = var->klass;
          ins->klass = D.39197;
          D.39205 = alloc_dreg (cfg, 5);
          D.39206 = (int) D.39205;
          ins->dreg = D.39206;
          cfg->has_indirection = 1;
          D.32904 = cfg->gsharedvt;
          D.33836 = D.32904 != 0;
          D.33837 = (long int) D.33836;
          D.33838 = __builtin_expect (D.33837, 0);
          if (D.33838 != 0) goto <D.39207>; else goto <D.39208>;
          <D.39207>:
          D.39209 = var->data.op[1].vtype;
          D.39210 = mini_is_gsharedvt_variable_type (cfg, D.39209);
          if (D.39210 != 0) goto <D.39211>; else goto <D.39212>;
          <D.39211>:
          handle_gsharedvt_ldaddr (cfg);
          <D.39212>:
          <D.39208>:
          D.39214 = mono_arch_is_soft_float ();
          if (D.39214 != 0) goto <D.39215>; else goto <D.39216>;
          <D.39215>:
          D.39217 = var->type;
          D.39218 = D.39217 == 2;
          D.39219 = D.39217 == 4;
          D.39220 = D.39218 | D.39219;
          D.39221 = (int) D.39220;
          iftmp.247 = (_Bool) D.39221;
          goto <D.39222>;
          <D.39216>:
          D.39223 = var->type;
          iftmp.247 = D.39223 == 2;
          <D.39222>:
          if (iftmp.247 != 0) goto <D.39224>; else goto <D.39225>;
          <D.39224>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.39227 = var->dreg;
            D.39228 = D.39227 + 1;
            D.39229 = (unsigned int) D.39228;
            D.33862 = cfg->vreg_to_inst_len;
            if (D.39229 < D.33862) goto <D.39230>; else goto <D.39231>;
            <D.39230>:
            D.33865 = cfg->vreg_to_inst;
            D.39227 = var->dreg;
            D.39232 = (sizetype) D.39227;
            D.39233 = D.39232 + 1;
            D.39234 = D.39233 * 4;
            D.39235 = D.33865 + D.39234;
            iftmp.248 = *D.39235;
            goto <D.39236>;
            <D.39231>:
            iftmp.248 = 0B;
            <D.39236>:
            var1 = iftmp.248;
            D.39227 = var->dreg;
            D.39238 = D.39227 + 2;
            D.39239 = (unsigned int) D.39238;
            D.33862 = cfg->vreg_to_inst_len;
            if (D.39239 < D.33862) goto <D.39240>; else goto <D.39241>;
            <D.39240>:
            D.33865 = cfg->vreg_to_inst;
            D.39227 = var->dreg;
            D.39232 = (sizetype) D.39227;
            D.39242 = D.39232 + 2;
            D.39243 = D.39242 * 4;
            D.39244 = D.33865 + D.39243;
            iftmp.249 = *D.39244;
            goto <D.39245>;
            <D.39241>:
            iftmp.249 = 0B;
            <D.39245>:
            var2 = iftmp.249;
            D.39246 = var1 == 0B;
            D.39247 = (long int) D.39246;
            D.39248 = __builtin_expect (D.39247, 0);
            if (D.39248 != 0) goto <D.39249>; else goto <D.39250>;
            <D.39249>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10036, "var1");
            <D.39250>:
            D.39251 = var2 == 0B;
            D.39252 = (long int) D.39251;
            D.39253 = __builtin_expect (D.39252, 0);
            if (D.39253 != 0) goto <D.39254>; else goto <D.39255>;
            <D.39254>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10036, "var2");
            <D.39255>:
            D.39256 = var1->flags;
            D.39257 = D.39256 | 16;
            var1->flags = D.39257;
            D.39258 = var2->flags;
            D.39259 = D.39258 | 16;
            var2->flags = D.39259;
          }
          <D.39225>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.39260>; else goto <D.39261>;
          <D.39260>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = ins;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          ins->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          goto <D.39262>;
          <D.39261>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.39262>:
          *sp = ins;
        }
        <D.39185>:
        if (op == 124) goto <D.39263>; else goto <D.39264>;
        <D.39263>:
        D.39265 = is_magic_tls_access (field);
        if (D.39265 != 0) goto <D.39266>; else goto <D.39267>;
        <D.39266>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.39268>; else goto <D.39269>;
        <D.39268>:
        D.32693 = method->klass;
        D.34423 = D.32693->name_space;
        D.32693 = method->klass;
        D.34424 = D.32693->name;
        D.34425 = method->name;
        D.34426 = method->signature;
        D.34427 = D.34426->param_count;
        D.34428 = (int) D.34427;
        D.33632 = *ip;
        D.33633 = (int) D.33632;
        D.39270 = mono_opcode_name (D.33633);
        D.39271 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.34423, D.34424, D.34425, D.34428, D.39270, "method-to-ir.c", 10042);
        cfg->exception_message = D.39271;
        D.32836 = cfg->verbose_level;
        if (D.32836 > 1) goto <D.39272>; else goto <D.39273>;
        <D.39272>:
        D.34433 = cfg->exception_message;
        printf ("%s\n", D.34433);
        <D.39273>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39269>:
        ins = *sp;
        sp.250 = sp;
        sp = sp.250 + 4;
        D.39275 = create_magic_tls_access (cfg, field, &cached_tls_addr, ins);
        *sp.250 = D.39275;
        goto <D.39276>;
        <D.39267>:
        D.33750 = *sp;
        D.35492 = D.33750->type;
        if (D.35492 == 6) goto <D.39277>; else goto <D.39278>;
        <D.39277>:
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.39279 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.39279;
          inst->prev = 0B;
          D.39280 = inst->prev;
          inst->next = D.39280;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.39281 = inst->sreg3;
          inst->sreg2 = D.39281;
          D.39282 = inst->sreg2;
          inst->sreg1 = D.39282;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          inst->dreg = -1;
          D.33750 = *sp;
          D.33943 = D.33750->dreg;
          inst->sreg1 = D.33943;
          inst->data.op[1].const_val = 0;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.39283>; else goto <D.39284>;
          <D.39283>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.39285>;
          <D.39284>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.39285>:
        }
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.39286 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.39286;
          inst->prev = 0B;
          D.39287 = inst->prev;
          inst->next = D.39287;
          inst->opcode = 451;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.39288 = inst->sreg3;
          inst->sreg2 = D.39288;
          D.39289 = inst->sreg2;
          inst->sreg1 = D.39289;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          inst->data.op[1].p = "NullReferenceException";
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.39290>; else goto <D.39291>;
          <D.39290>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.39292>;
          <D.39291>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.39292>:
        }
        <D.39278>:
        D.39293 = alloc_ireg_mp (cfg);
        dreg = (int) D.39293;
        klass.170 = klass;
        D.39294 = mini_is_gsharedvt_klass (cfg, klass.170);
        if (D.39294 != 0) goto <D.39295>; else goto <D.39296>;
        <D.39295>:
        {
          struct MonoInst * offset_ins;

          offset_ins = emit_get_gsharedvt_info (cfg, field, 15);
          D.32755 = cfg->mempool;
          ins = mono_mempool_alloc (D.32755, 56);
          ins->data.op[1].const_val = 0;
          D.32975 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.32975;
          ins->prev = 0B;
          D.32976 = ins->prev;
          ins->next = D.32976;
          ins->opcode = 565;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.32977 = ins->sreg3;
          ins->sreg2 = D.32977;
          D.32978 = ins->sreg2;
          ins->sreg1 = D.32978;
          D.32979 = cfg->ip;
          ins->cil_code = D.32979;
          ins->dreg = dreg;
          D.33750 = *sp;
          D.33943 = D.33750->dreg;
          ins->sreg1 = D.33943;
          D.39297 = offset_ins->dreg;
          ins->sreg2 = D.39297;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.39298>; else goto <D.39299>;
          <D.39298>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = ins;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          ins->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          goto <D.39300>;
          <D.39299>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.39300>:
        }
        goto <D.39301>;
        <D.39296>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 625;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        ins->dreg = dreg;
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        ins->sreg1 = D.33943;
        foffset.239 = (int) foffset;
        ins->data.op[1].const_val = foffset.239;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.39302>; else goto <D.39303>;
        <D.39302>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.39304>;
        <D.39303>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.39304>:
        <D.39301>:
        D.38937 = field->type;
        D.39305 = mono_class_from_mono_type (D.38937);
        ins->klass = D.39305;
        ins->type = 5;
        sp.251 = sp;
        sp = sp.251 + 4;
        *sp.251 = ins;
        <D.39276>:
        goto <D.39307>;
        <D.39264>:
        {
          struct MonoInst * load;

          D.32743 = BIT_FIELD_REF <*cfg, 8, 3424>;
          D.33386 = D.32743 & 64;
          if (D.33386 != 0) goto <D.39308>; else goto <D.39309>;
          <D.39308>:
          {
            struct MonoInst * inst;

            D.32755 = cfg->mempool;
            inst = mono_mempool_alloc (D.32755, 56);
            inst->data.op[1].const_val = 0;
            D.39310 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.39310;
            inst->prev = 0B;
            D.39311 = inst->prev;
            inst->next = D.39311;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.39312 = inst->sreg3;
            inst->sreg2 = D.39312;
            D.39313 = inst->sreg2;
            inst->sreg1 = D.39313;
            D.32979 = cfg->ip;
            inst->cil_code = D.32979;
            inst->dreg = -1;
            D.33750 = *sp;
            D.33943 = D.33750->dreg;
            inst->sreg1 = D.33943;
            inst->data.op[1].const_val = 0;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39314>; else goto <D.39315>;
            <D.39314>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = inst;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            inst->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            goto <D.39316>;
            <D.39315>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39316>:
          }
          {
            struct MonoInst * inst;

            D.32755 = cfg->mempool;
            inst = mono_mempool_alloc (D.32755, 56);
            inst->data.op[1].const_val = 0;
            D.39317 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.39317;
            inst->prev = 0B;
            D.39318 = inst->prev;
            inst->next = D.39318;
            inst->opcode = 451;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.39319 = inst->sreg3;
            inst->sreg2 = D.39319;
            D.39320 = inst->sreg2;
            inst->sreg1 = D.39320;
            D.32979 = cfg->ip;
            inst->cil_code = D.32979;
            inst->data.op[1].p = "NullReferenceException";
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39321>; else goto <D.39322>;
            <D.39321>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = inst;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            inst->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            goto <D.39323>;
            <D.39322>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39323>:
          }
          goto <D.39324>;
          <D.39309>:
          <D.39324>:
          klass.170 = klass;
          D.39325 = mini_is_gsharedvt_klass (cfg, klass.170);
          if (D.39325 != 0) goto <D.39326>; else goto <D.39327>;
          <D.39326>:
          {
            struct MonoInst * offset_ins;

            offset_ins = emit_get_gsharedvt_info (cfg, field, 15);
            D.39328 = alloc_ireg_mp (cfg);
            dreg = (int) D.39328;
            D.32755 = cfg->mempool;
            ins = mono_mempool_alloc (D.32755, 56);
            ins->data.op[1].const_val = 0;
            D.32975 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.32975;
            ins->prev = 0B;
            D.32976 = ins->prev;
            ins->next = D.32976;
            ins->opcode = 565;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.32977 = ins->sreg3;
            ins->sreg2 = D.32977;
            D.32978 = ins->sreg2;
            ins->sreg1 = D.32978;
            D.32979 = cfg->ip;
            ins->cil_code = D.32979;
            ins->dreg = dreg;
            D.33750 = *sp;
            D.33943 = D.33750->dreg;
            ins->sreg1 = D.33943;
            D.39329 = offset_ins->dreg;
            ins->sreg2 = D.39329;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39330>; else goto <D.39331>;
            <D.39330>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = ins;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            ins->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            goto <D.39332>;
            <D.39331>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39332>:
            D.32755 = cfg->mempool;
            load = mono_mempool_alloc (D.32755, 56);
            load->data.op[1].const_val = 0;
            D.39333 = load->data.op[1].const_val;
            load->data.op[0].const_val = D.39333;
            load->prev = 0B;
            D.39334 = load->prev;
            load->next = D.39334;
            D.38937 = field->type;
            D.39335 = mono_type_to_load_membase (cfg, D.38937);
            D.39336 = (short unsigned int) D.39335;
            load->opcode = D.39336;
            load->flags = 0;
            load->type = 0;
            load->dreg = -1;
            load->sreg3 = -1;
            D.39337 = load->sreg3;
            load->sreg2 = D.39337;
            D.39338 = load->sreg2;
            load->sreg1 = D.39338;
            D.32979 = cfg->ip;
            load->cil_code = D.32979;
            load->dreg = 0;
            load->sreg1 = dreg;
            load->data.op[0].const_val = 0;
            load->type = 1;
            D.38937 = field->type;
            type_to_eval_stack_type (cfg, D.38937, load);
            D.39339 = load->type;
            D.39340 = (<unnamed type>) D.39339;
            D.39341 = alloc_dreg (cfg, D.39340);
            D.39342 = (int) D.39341;
            load->dreg = D.39342;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39343>; else goto <D.39344>;
            <D.39343>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = load;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            load->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = load;
            goto <D.39345>;
            <D.39344>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = load;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39345>:
          }
          goto <D.39346>;
          <D.39327>:
          D.32755 = cfg->mempool;
          load = mono_mempool_alloc (D.32755, 56);
          load->data.op[1].const_val = 0;
          D.39333 = load->data.op[1].const_val;
          load->data.op[0].const_val = D.39333;
          load->prev = 0B;
          D.39334 = load->prev;
          load->next = D.39334;
          D.38937 = field->type;
          D.39347 = mono_type_to_load_membase (cfg, D.38937);
          D.39348 = (short unsigned int) D.39347;
          load->opcode = D.39348;
          load->flags = 0;
          load->type = 0;
          load->dreg = -1;
          load->sreg3 = -1;
          D.39337 = load->sreg3;
          load->sreg2 = D.39337;
          D.39338 = load->sreg2;
          load->sreg1 = D.39338;
          D.32979 = cfg->ip;
          load->cil_code = D.32979;
          load->dreg = 0;
          D.33750 = *sp;
          D.33943 = D.33750->dreg;
          load->sreg1 = D.33943;
          foffset.239 = (int) foffset;
          load->data.op[0].const_val = foffset.239;
          load->type = 1;
          D.38937 = field->type;
          type_to_eval_stack_type (cfg, D.38937, load);
          D.39339 = load->type;
          D.39340 = (<unnamed type>) D.39339;
          D.39349 = alloc_dreg (cfg, D.39340);
          D.39350 = (int) D.39349;
          load->dreg = D.39350;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.39351>; else goto <D.39352>;
          <D.39351>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = load;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          load->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = load;
          goto <D.39353>;
          <D.39352>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = load;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.39353>:
          <D.39346>:
          D.39354 = load->flags;
          D.37112 = (unsigned char) ins_flag;
          D.39355 = D.39354 | D.37112;
          load->flags = D.39355;
          D.33750 = *sp;
          D.35496 = D.33750->opcode;
          if (D.35496 != 314) goto <D.39356>; else goto <D.39357>;
          <D.39356>:
          D.39354 = load->flags;
          D.39358 = D.39354 | 32;
          load->flags = D.39358;
          <D.39357>:
          sp.252 = sp;
          sp = sp.252 + 4;
          *sp.252 = load;
        }
        <D.39307>:
        <D.39183>:
        <D.39107>:
        if (is_instance != 0) goto <D.39360>; else goto <D.39361>;
        <D.39360>:
        ins_flag = 0;
        ip = ip + 5;
        goto <D.29893>;
        <D.39361>:
        klass.170 = klass;
        context_used = mini_class_check_context_used (cfg, klass.170);
        ftype = mono_field_get_type (field);
        D.39362 = ftype->attrs;
        D.39363 = (int) D.39362;
        D.39364 = D.39363 & 64;
        if (D.39364 != 0) goto <D.39365>; else goto <D.39366>;
        <D.39365>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.39367>; else goto <D.39368>;
        <D.39367>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.39369>; else goto <D.39370>;
        <D.39369>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39370>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39368>:
        D.39371 = mini_get_debug_options ();
        D.39372 = D.39371->break_on_unverified;
        if (D.39372 != 0) goto <D.39373>; else goto unverified;
        <D.39373>:
        raise (5);
        <D.39366>:
        if (context_used == 0) goto <D.39374>; else goto <D.39375>;
        <D.39374>:
        D.33148 = cfg->opt;
        D.33149 = D.33148 & 512;
        if (D.33149 == 0) goto <D.39376>; else goto <D.39377>;
        <D.39376>:
        D.32780 = cfg->domain;
        klass.170 = klass;
        mono_class_vtable (D.32780, klass.170);
        klass.170 = klass;
        if (klass.170 == 0B) goto <D.39378>; else goto <D.39380>;
        <D.39380>:
        klass.170 = klass;
        D.37490 = klass.170->exception_type;
        if (D.37490 != 0) goto <D.39378>; else goto <D.39379>;
        <D.39378>:
        klass.170 = klass;
        cfg->exception_ptr = klass.170;
        D.39381 = mini_get_debug_options ();
        D.39382 = D.39381->break_on_unverified;
        if (D.39382 != 0) goto <D.39383>; else goto load_error;
        <D.39383>:
        raise (5);
        <D.39379>:
        <D.39377>:
        <D.39375>:
        {
          int ret;

          D.32780 = cfg->domain;
          D.39384 = &D.32780->lock.mutex;
          ret = pthread_mutex_lock (D.39384);
          if (ret != 0) goto <D.39385>; else goto <D.39386>;
          <D.39385>:
          monoeg_g_log (0B, 16, "Bad call to mono_mutex_lock result %d", ret);
          <D.39386>:
          D.39387 = ret != 0;
          D.39388 = (long int) D.39387;
          D.39389 = __builtin_expect (D.39388, 0);
          if (D.39389 != 0) goto <D.39390>; else goto <D.39391>;
          <D.39390>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10119, "ret == 0");
          <D.39391>:
        }
        D.32780 = cfg->domain;
        D.39392 = D.32780->special_static_fields;
        if (D.39392 != 0B) goto <D.39393>; else goto <D.39394>;
        <D.39393>:
        D.32780 = cfg->domain;
        D.39392 = D.32780->special_static_fields;
        addr = monoeg_g_hash_table_lookup (D.39392, field);
        <D.39394>:
        {
          int ret;

          D.32780 = cfg->domain;
          D.39384 = &D.32780->lock.mutex;
          ret = pthread_mutex_unlock (D.39384);
          if (ret != 0) goto <D.39395>; else goto <D.39396>;
          <D.39395>:
          monoeg_g_log (0B, 16, "Bad call to mono_mutex_unlock result %d", ret);
          <D.39396>:
          D.39397 = ret != 0;
          D.39398 = (long int) D.39397;
          D.39399 = __builtin_expect (D.39398, 0);
          if (D.39399 != 0) goto <D.39400>; else goto <D.39401>;
          <D.39400>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10122, "ret == 0");
          <D.39401>:
        }
        is_special_static = mono_class_field_is_special_static (field);
        D.39402 = is_special_static != 0;
        addr.253 = (signed int) addr;
        D.39404 = addr.253 >= 0;
        D.39405 = D.39402 & D.39404;
        if (D.39405 != 0) goto <D.39406>; else goto <D.39407>;
        <D.39406>:
        thread_ins = mono_get_thread_intrinsic (cfg);
        goto <D.39408>;
        <D.39407>:
        thread_ins = 0B;
        <D.39408>:
        D.39402 = is_special_static != 0;
        addr.253 = (signed int) addr;
        D.39404 = addr.253 >= 0;
        D.39405 = D.39402 & D.39404;
        if (D.39405 != 0) goto <D.39411>; else goto <D.39409>;
        <D.39411>:
        if (thread_ins != 0B) goto <D.39412>; else goto <D.39409>;
        <D.39412>:
        D.33148 = cfg->opt;
        D.33149 = D.33148 & 512;
        if (D.33149 == 0) goto <D.39413>; else goto <D.39409>;
        <D.39413>:
        if (context_used == 0) goto <D.39414>; else goto <D.39409>;
        <D.39414>:
        {
          guint32 offset;
          int idx;
          int static_data_reg;
          int array_reg;
          int dreg;

          D.32904 = cfg->gsharedvt;
          if (D.32904 != 0) goto <D.39415>; else goto <D.39416>;
          <D.39415>:
          D.32693 = method->klass;
          D.34423 = D.32693->name_space;
          D.32693 = method->klass;
          D.34424 = D.32693->name;
          D.34425 = method->name;
          D.34426 = method->signature;
          D.34427 = D.34426->param_count;
          D.34428 = (int) D.34427;
          D.39417 = mono_opcode_name (op);
          D.39418 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.34423, D.34424, D.34425, D.34428, D.39417, "method-to-ir.c", 10141);
          cfg->exception_message = D.39418;
          D.32836 = cfg->verbose_level;
          if (D.32836 > 1) goto <D.39419>; else goto <D.39420>;
          <D.39419>:
          D.34433 = cfg->exception_message;
          printf ("%s\n", D.34433);
          <D.39420>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.39416>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.39421>; else goto <D.39422>;
          <D.39421>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = thread_ins;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          thread_ins->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = thread_ins;
          goto <D.39423>;
          <D.39422>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = thread_ins;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.39423>:
          D.39424 = alloc_ireg (cfg);
          static_data_reg = (int) D.39424;
          {
            struct MonoInst * inst;

            D.32755 = cfg->mempool;
            inst = mono_mempool_alloc (D.32755, 56);
            inst->data.op[1].const_val = 0;
            D.39425 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.39425;
            inst->prev = 0B;
            D.39426 = inst->prev;
            inst->next = D.39426;
            inst->opcode = 388;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.39427 = inst->sreg3;
            inst->sreg2 = D.39427;
            D.39428 = inst->sreg2;
            inst->sreg1 = D.39428;
            D.32979 = cfg->ip;
            inst->cil_code = D.32979;
            inst->dreg = static_data_reg;
            D.39429 = thread_ins->dreg;
            inst->sreg1 = D.39429;
            inst->data.op[0].const_val = 56;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39430>; else goto <D.39431>;
            <D.39430>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = inst;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            inst->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            goto <D.39432>;
            <D.39431>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39432>:
          }
          D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.33151 = D.33150 & 64;
          if (D.33151 != 0) goto <D.39433>; else goto <D.39434>;
          <D.39433>:
          {
            int offset_reg;
            int offset2_reg;
            int idx_reg;

            D.32755 = cfg->mempool;
            ins = mono_mempool_alloc (D.32755, 56);
            ins->data.op[1].const_val = 0;
            D.32975 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.32975;
            ins->prev = 0B;
            D.32976 = ins->prev;
            ins->next = D.32976;
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.39436>; else goto <D.39437>;
            <D.39436>:
            iftmp.254 = 732;
            goto <D.39438>;
            <D.39437>:
            iftmp.254 = 362;
            <D.39438>:
            ins->opcode = iftmp.254;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.32977 = ins->sreg3;
            ins->sreg2 = D.32977;
            D.32978 = ins->sreg2;
            ins->sreg1 = D.32978;
            D.32979 = cfg->ip;
            ins->cil_code = D.32979;
            ins->data.op[0].p = field;
            ins->data.op[1].src = 16B;
            ins->type = 3;
            D.39439 = alloc_dreg (cfg, 3);
            D.39440 = (int) D.39439;
            ins->dreg = D.39440;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39441>; else goto <D.39442>;
            <D.39441>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = ins;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            ins->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            goto <D.39443>;
            <D.39442>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39443>:
            offset_reg = ins->dreg;
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.39444 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.39444;
              inst->prev = 0B;
              D.39445 = inst->prev;
              inst->next = D.39445;
              inst->opcode = 632;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.39446 = inst->sreg3;
              inst->sreg2 = D.39446;
              D.39447 = inst->sreg2;
              inst->sreg1 = D.39447;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = offset_reg;
              inst->sreg1 = offset_reg;
              inst->data.op[1].const_val = 2147483647;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.39448>; else goto <D.39449>;
              <D.39448>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.39450>;
              <D.39449>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.39450>:
            }
            D.39451 = alloc_ireg (cfg);
            idx_reg = (int) D.39451;
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.39452 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.39452;
              inst->prev = 0B;
              D.39453 = inst->prev;
              inst->next = D.39453;
              inst->opcode = 636;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.39454 = inst->sreg3;
              inst->sreg2 = D.39454;
              D.39455 = inst->sreg2;
              inst->sreg1 = D.39455;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = idx_reg;
              inst->sreg1 = offset_reg;
              inst->data.op[1].const_val = 24;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.39456>; else goto <D.39457>;
              <D.39456>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.39458>;
              <D.39457>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.39458>:
            }
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.39459 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.39459;
              inst->prev = 0B;
              D.39460 = inst->prev;
              inst->next = D.39460;
              inst->opcode = 626;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.39461 = inst->sreg3;
              inst->sreg2 = D.39461;
              D.39462 = inst->sreg2;
              inst->sreg1 = D.39462;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = idx_reg;
              inst->sreg1 = idx_reg;
              inst->data.op[1].const_val = 1;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.39463>; else goto <D.39464>;
              <D.39463>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.39465>;
              <D.39464>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.39465>:
            }
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.39466 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.39466;
              inst->prev = 0B;
              D.39467 = inst->prev;
              inst->next = D.39467;
              inst->opcode = 635;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.39468 = inst->sreg3;
              inst->sreg2 = D.39468;
              D.39469 = inst->sreg2;
              inst->sreg1 = D.39469;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = idx_reg;
              inst->sreg1 = idx_reg;
              inst->data.op[1].const_val = 2;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.39470>; else goto <D.39471>;
              <D.39470>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.39472>;
              <D.39471>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.39472>:
            }
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.39473 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.39473;
              inst->prev = 0B;
              D.39474 = inst->prev;
              inst->next = D.39474;
              inst->opcode = 565;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.39475 = inst->sreg3;
              inst->sreg2 = D.39475;
              D.39476 = inst->sreg2;
              inst->sreg1 = D.39476;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = static_data_reg;
              inst->sreg1 = static_data_reg;
              inst->sreg2 = idx_reg;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.39477>; else goto <D.39478>;
              <D.39477>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.39479>;
              <D.39478>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.39479>:
            }
            D.39480 = alloc_ireg (cfg);
            array_reg = (int) D.39480;
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.39481 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.39481;
              inst->prev = 0B;
              D.39482 = inst->prev;
              inst->next = D.39482;
              inst->opcode = 388;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.39483 = inst->sreg3;
              inst->sreg2 = D.39483;
              D.39484 = inst->sreg2;
              inst->sreg1 = D.39484;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = array_reg;
              inst->sreg1 = static_data_reg;
              inst->data.op[0].const_val = 0;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.39485>; else goto <D.39486>;
              <D.39485>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.39487>;
              <D.39486>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.39487>:
            }
            D.39488 = alloc_ireg (cfg);
            offset2_reg = (int) D.39488;
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.39489 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.39489;
              inst->prev = 0B;
              D.39490 = inst->prev;
              inst->next = D.39490;
              inst->opcode = 632;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.39491 = inst->sreg3;
              inst->sreg2 = D.39491;
              D.39492 = inst->sreg2;
              inst->sreg1 = D.39492;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = offset2_reg;
              inst->sreg1 = offset_reg;
              inst->data.op[1].const_val = 16777215;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.39493>; else goto <D.39494>;
              <D.39493>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.39495>;
              <D.39494>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.39495>:
            }
            D.39496 = alloc_ireg (cfg);
            dreg = (int) D.39496;
            D.32755 = cfg->mempool;
            ins = mono_mempool_alloc (D.32755, 56);
            ins->data.op[1].const_val = 0;
            D.32975 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.32975;
            ins->prev = 0B;
            D.32976 = ins->prev;
            ins->next = D.32976;
            ins->opcode = 565;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.32977 = ins->sreg3;
            ins->sreg2 = D.32977;
            D.32978 = ins->sreg2;
            ins->sreg1 = D.32978;
            D.32979 = cfg->ip;
            ins->cil_code = D.32979;
            ins->dreg = dreg;
            ins->sreg1 = array_reg;
            ins->sreg2 = offset2_reg;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39497>; else goto <D.39498>;
            <D.39497>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = ins;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            ins->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            goto <D.39499>;
            <D.39498>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39499>:
          }
          goto <D.39500>;
          <D.39434>:
          addr.255 = (unsigned int) addr;
          offset = addr.255 & 2147483647;
          D.39502 = offset >> 24;
          D.39503 = D.39502 + 4294967295;
          idx = (int) D.39503;
          D.39504 = alloc_ireg (cfg);
          array_reg = (int) D.39504;
          {
            struct MonoInst * inst;

            D.32755 = cfg->mempool;
            inst = mono_mempool_alloc (D.32755, 56);
            inst->data.op[1].const_val = 0;
            D.39505 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.39505;
            inst->prev = 0B;
            D.39506 = inst->prev;
            inst->next = D.39506;
            inst->opcode = 388;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.39507 = inst->sreg3;
            inst->sreg2 = D.39507;
            D.39508 = inst->sreg2;
            inst->sreg1 = D.39508;
            D.32979 = cfg->ip;
            inst->cil_code = D.32979;
            inst->dreg = array_reg;
            inst->sreg1 = static_data_reg;
            idx.256 = (unsigned int) idx;
            D.39510 = idx.256 * 4;
            D.39511 = (int) D.39510;
            inst->data.op[0].const_val = D.39511;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39512>; else goto <D.39513>;
            <D.39512>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = inst;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            inst->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            goto <D.39514>;
            <D.39513>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39514>:
          }
          D.39515 = alloc_ireg (cfg);
          dreg = (int) D.39515;
          D.32755 = cfg->mempool;
          ins = mono_mempool_alloc (D.32755, 56);
          ins->data.op[1].const_val = 0;
          D.32975 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.32975;
          ins->prev = 0B;
          D.32976 = ins->prev;
          ins->next = D.32976;
          ins->opcode = 429;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.32977 = ins->sreg3;
          ins->sreg2 = D.32977;
          D.32978 = ins->sreg2;
          ins->sreg1 = D.32978;
          D.32979 = cfg->ip;
          ins->cil_code = D.32979;
          ins->dreg = dreg;
          ins->sreg1 = array_reg;
          offset.257 = (int) offset;
          D.39517 = offset.257 & 16777215;
          ins->data.op[1].const_val = D.39517;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.39518>; else goto <D.39519>;
          <D.39518>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = ins;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          ins->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          goto <D.39520>;
          <D.39519>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.39520>:
          <D.39500>:
        }
        goto <D.39410>;
        <D.39409>:
        D.33148 = cfg->opt;
        D.33149 = D.33148 & 512;
        if (D.33149 != 0) goto <D.39521>; else goto <D.39525>;
        <D.39525>:
        D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.33151 = D.33150 & 64;
        if (D.33151 != 0) goto <D.39526>; else goto <D.39522>;
        <D.39526>:
        if (is_special_static != 0) goto <D.39521>; else goto <D.39522>;
        <D.39522>:
        D.35784 = context_used != 0;
        D.39402 = is_special_static != 0;
        D.39527 = D.35784 & D.39402;
        if (D.39527 != 0) goto <D.39521>; else goto <D.39523>;
        <D.39521>:
        {
          struct MonoInst * iargs[2];

          try
            {
              klass.234 = field->parent;
              D.39528 = klass.234 == 0B;
              D.39529 = (long int) D.39528;
              D.39530 = __builtin_expect (D.39529, 0);
              if (D.39530 != 0) goto <D.39531>; else goto <D.39532>;
              <D.39531>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10182, "field->parent");
              <D.39532>:
              D.33148 = cfg->opt;
              D.33149 = D.33148 & 512;
              if (D.33149 != 0) goto <D.39533>; else goto <D.39536>;
              <D.39536>:
              D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.33151 = D.33150 & 64;
              if (D.33151 != 0) goto <D.39533>; else goto <D.39534>;
              <D.39533>:
              {
                struct MonoInst * __domain_var;

                __domain_var = mono_get_domainvar (cfg);
                D.32755 = cfg->mempool;
                D.39537 = mono_mempool_alloc (D.32755, 56);
                iargs[0] = D.39537;
                D.39538 = iargs[0];
                D.39538 = iargs[0];
                D.39538->data.op[1].const_val = 0;
                D.39539 = D.39538->data.op[1].const_val;
                D.39538->data.op[0].const_val = D.39539;
                D.39538 = iargs[0];
                D.39538 = iargs[0];
                D.39538->prev = 0B;
                D.39540 = D.39538->prev;
                D.39538->next = D.39540;
                D.39538 = iargs[0];
                D.39538->opcode = 424;
                D.39538 = iargs[0];
                D.39538->flags = 0;
                D.39538 = iargs[0];
                D.39538->type = 0;
                D.39538 = iargs[0];
                D.39538->dreg = -1;
                D.39538 = iargs[0];
                D.39538 = iargs[0];
                D.39538 = iargs[0];
                D.39538->sreg3 = -1;
                D.39541 = D.39538->sreg3;
                D.39538->sreg2 = D.39541;
                D.39542 = D.39538->sreg2;
                D.39538->sreg1 = D.39542;
                D.39538 = iargs[0];
                D.32979 = cfg->ip;
                D.39538->cil_code = D.32979;
                D.39538 = iargs[0];
                D.33491 = cfg->varinfo;
                D.39543 = __domain_var->data.op[0].const_val;
                D.39544 = (unsigned int) D.39543;
                D.39545 = D.39544 * 4;
                D.39546 = D.33491 + D.39545;
                D.39547 = *D.39546;
                D.39548 = D.39547->data.op[1].vtype;
                D.39549 = mono_type_to_regmove (cfg, D.39548);
                D.39550 = (short unsigned int) D.39549;
                D.39538->opcode = D.39550;
                D.33491 = cfg->varinfo;
                D.39543 = __domain_var->data.op[0].const_val;
                D.39544 = (unsigned int) D.39543;
                D.39545 = D.39544 * 4;
                D.39546 = D.33491 + D.39545;
                D.39547 = *D.39546;
                D.39548 = D.39547->data.op[1].vtype;
                D.39538 = iargs[0];
                type_to_eval_stack_type (cfg, D.39548, D.39538);
                D.39538 = iargs[0];
                D.33491 = cfg->varinfo;
                D.39543 = __domain_var->data.op[0].const_val;
                D.39544 = (unsigned int) D.39543;
                D.39545 = D.39544 * 4;
                D.39546 = D.33491 + D.39545;
                D.39547 = *D.39546;
                D.39551 = D.39547->klass;
                D.39538->klass = D.39551;
                D.39538 = iargs[0];
                D.33491 = cfg->varinfo;
                D.39543 = __domain_var->data.op[0].const_val;
                D.39544 = (unsigned int) D.39543;
                D.39545 = D.39544 * 4;
                D.39546 = D.33491 + D.39545;
                D.39547 = *D.39546;
                D.39552 = D.39547->dreg;
                D.39538->sreg1 = D.39552;
                D.39538 = iargs[0];
                D.39538 = iargs[0];
                D.39553 = D.39538->type;
                D.39554 = (<unnamed type>) D.39553;
                D.39555 = alloc_dreg (cfg, D.39554);
                D.39556 = (int) D.39555;
                D.39538->dreg = D.39556;
                D.39538 = iargs[0];
                D.39557 = D.39538->opcode;
                if (D.39557 == 427) goto <D.39558>; else goto <D.39559>;
                <D.39558>:
                D.39538 = iargs[0];
                D.33491 = cfg->varinfo;
                D.39543 = __domain_var->data.op[0].const_val;
                D.39544 = (unsigned int) D.39543;
                D.39545 = D.39544 * 4;
                D.39546 = D.33491 + D.39545;
                D.39547 = *D.39546;
                D.39548 = D.39547->data.op[1].vtype;
                D.39560 = mono_class_from_mono_type (D.39548);
                D.39538->klass = D.39560;
                <D.39559>:
              }
              goto <D.39535>;
              <D.39534>:
              D.32755 = cfg->mempool;
              D.39561 = mono_mempool_alloc (D.32755, 56);
              iargs[0] = D.39561;
              D.39538 = iargs[0];
              D.39538 = iargs[0];
              D.39538->data.op[1].const_val = 0;
              D.39539 = D.39538->data.op[1].const_val;
              D.39538->data.op[0].const_val = D.39539;
              D.39538 = iargs[0];
              D.39538 = iargs[0];
              D.39538->prev = 0B;
              D.39540 = D.39538->prev;
              D.39538->next = D.39540;
              D.39538 = iargs[0];
              D.39538->opcode = 362;
              D.39538 = iargs[0];
              D.39538->flags = 0;
              D.39538 = iargs[0];
              D.39538->type = 0;
              D.39538 = iargs[0];
              D.39538->dreg = -1;
              D.39538 = iargs[0];
              D.39538 = iargs[0];
              D.39538 = iargs[0];
              D.39538->sreg3 = -1;
              D.39541 = D.39538->sreg3;
              D.39538->sreg2 = D.39541;
              D.39542 = D.39538->sreg2;
              D.39538->sreg1 = D.39542;
              D.39538 = iargs[0];
              D.32979 = cfg->ip;
              D.39538->cil_code = D.32979;
              D.39538 = iargs[0];
              D.32780 = cfg->domain;
              D.39538->data.op[0].p = D.32780;
              D.39538 = iargs[0];
              D.39538->type = 3;
              D.39538 = iargs[0];
              D.39562 = alloc_dreg (cfg, 3);
              D.39563 = (int) D.39562;
              D.39538->dreg = D.39563;
              <D.39535>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.39564>; else goto <D.39565>;
              <D.39564>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.39538 = iargs[0];
              D.33008->next = D.39538;
              D.39538 = iargs[0];
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.39538->prev = D.33008;
              bblock.125 = cfg->cbb;
              D.39538 = iargs[0];
              bblock.125->last_ins = D.39538;
              goto <D.39566>;
              <D.39565>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              D.39538 = iargs[0];
              bblock.125->last_ins = D.39538;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.39566>:
              if (context_used != 0) goto <D.39567>; else goto <D.39568>;
              <D.39567>:
              D.39569 = emit_get_rgctx_field (cfg, context_used, field, 7);
              iargs[1] = D.39569;
              goto <D.39570>;
              <D.39568>:
              D.32755 = cfg->mempool;
              D.39571 = mono_mempool_alloc (D.32755, 56);
              iargs[1] = D.39571;
              D.39572 = iargs[1];
              D.39572 = iargs[1];
              D.39572->data.op[1].const_val = 0;
              D.39573 = D.39572->data.op[1].const_val;
              D.39572->data.op[0].const_val = D.39573;
              D.39572 = iargs[1];
              D.39572 = iargs[1];
              D.39572->prev = 0B;
              D.39574 = D.39572->prev;
              D.39572->next = D.39574;
              D.39572 = iargs[1];
              D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.33151 = D.33150 & 64;
              if (D.33151 != 0) goto <D.39576>; else goto <D.39577>;
              <D.39576>:
              iftmp.258 = 732;
              goto <D.39578>;
              <D.39577>:
              iftmp.258 = 362;
              <D.39578>:
              D.39572->opcode = iftmp.258;
              D.39572 = iargs[1];
              D.39572->flags = 0;
              D.39572 = iargs[1];
              D.39572->type = 0;
              D.39572 = iargs[1];
              D.39572->dreg = -1;
              D.39572 = iargs[1];
              D.39572 = iargs[1];
              D.39572 = iargs[1];
              D.39572->sreg3 = -1;
              D.39579 = D.39572->sreg3;
              D.39572->sreg2 = D.39579;
              D.39580 = D.39572->sreg2;
              D.39572->sreg1 = D.39580;
              D.39572 = iargs[1];
              D.32979 = cfg->ip;
              D.39572->cil_code = D.32979;
              D.39572 = iargs[1];
              D.39572->data.op[0].p = field;
              D.39572 = iargs[1];
              D.39572->data.op[1].src = 13B;
              D.39572 = iargs[1];
              D.39572->type = 3;
              D.39572 = iargs[1];
              D.39581 = alloc_dreg (cfg, 3);
              D.39582 = (int) D.39581;
              D.39572->dreg = D.39582;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.39583>; else goto <D.39584>;
              <D.39583>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.39572 = iargs[1];
              D.33008->next = D.39572;
              D.39572 = iargs[1];
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.39572->prev = D.33008;
              bblock.125 = cfg->cbb;
              D.39572 = iargs[1];
              bblock.125->last_ins = D.39572;
              goto <D.39585>;
              <D.39584>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              D.39572 = iargs[1];
              bblock.125->last_ins = D.39572;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.39585>:
              <D.39570>:
              ins = mono_emit_jit_icall (cfg, mono_class_static_field_address, &iargs);
            }
          finally
            {
              iargs = {CLOBBER};
            }
        }
        goto <D.39524>;
        <D.39523>:
        if (context_used != 0) goto <D.39586>; else goto <D.39587>;
        <D.39586>:
        {
          struct MonoInst * static_data;

          klass.170 = klass;
          D.39588 = mono_class_needs_cctor_run (klass.170, method);
          if (D.39588 != 0) goto <D.39589>; else goto <D.39590>;
          <D.39589>:
          klass.170 = klass;
          emit_generic_class_init (cfg, klass.170);
          <D.39590>:
          klass.170 = klass;
          static_data = emit_get_rgctx_klass (cfg, context_used, klass.170, 0);
          klass.170 = klass;
          D.39591 = mini_is_gsharedvt_klass (cfg, klass.170);
          if (D.39591 != 0) goto <D.39592>; else goto <D.39593>;
          <D.39592>:
          {
            struct MonoInst * offset_ins;

            offset_ins = emit_get_rgctx_field (cfg, context_used, field, 15);
            D.39594 = alloc_ireg_mp (cfg);
            dreg = (int) D.39594;
            D.32755 = cfg->mempool;
            ins = mono_mempool_alloc (D.32755, 56);
            ins->data.op[1].const_val = 0;
            D.32975 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.32975;
            ins->prev = 0B;
            D.32976 = ins->prev;
            ins->next = D.32976;
            ins->opcode = 565;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.32977 = ins->sreg3;
            ins->sreg2 = D.32977;
            D.32978 = ins->sreg2;
            ins->sreg1 = D.32978;
            D.32979 = cfg->ip;
            ins->cil_code = D.32979;
            ins->dreg = dreg;
            D.39595 = static_data->dreg;
            ins->sreg1 = D.39595;
            D.39596 = offset_ins->dreg;
            ins->sreg2 = D.39596;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39597>; else goto <D.39598>;
            <D.39597>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = ins;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            ins->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            goto <D.39599>;
            <D.39598>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39599>:
          }
          goto <D.39600>;
          <D.39593>:
          D.38948 = field->offset;
          if (D.38948 == 0) goto <D.39601>; else goto <D.39602>;
          <D.39601>:
          ins = static_data;
          goto <D.39603>;
          <D.39602>:
          {
            int addr_reg;

            D.39604 = mono_alloc_preg (cfg);
            addr_reg = (int) D.39604;
            D.32755 = cfg->mempool;
            ins = mono_mempool_alloc (D.32755, 56);
            ins->data.op[1].const_val = 0;
            D.32975 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.32975;
            ins->prev = 0B;
            D.32976 = ins->prev;
            ins->next = D.32976;
            ins->opcode = 625;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.32977 = ins->sreg3;
            ins->sreg2 = D.32977;
            D.32978 = ins->sreg2;
            ins->sreg1 = D.32978;
            D.32979 = cfg->ip;
            ins->cil_code = D.32979;
            ins->dreg = addr_reg;
            D.39595 = static_data->dreg;
            ins->sreg1 = D.39595;
            D.38948 = field->offset;
            ins->data.op[1].const_val = D.38948;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39605>; else goto <D.39606>;
            <D.39605>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = ins;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            ins->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            goto <D.39607>;
            <D.39606>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39607>:
          }
          <D.39603>:
          <D.39600>:
        }
        goto <D.39608>;
        <D.39587>:
        D.33148 = cfg->opt;
        D.33149 = D.33148 & 512;
        if (D.33149 != 0) goto <D.39609>; else goto <D.39612>;
        <D.39612>:
        D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.33151 = D.33150 & 64;
        if (D.33151 != 0) goto <D.39613>; else goto <D.39610>;
        <D.39613>:
        if (addr != 0B) goto <D.39609>; else goto <D.39610>;
        <D.39609>:
        {
          struct MonoInst * iargs[2];

          try
            {
              klass.234 = field->parent;
              D.39528 = klass.234 == 0B;
              D.39529 = (long int) D.39528;
              D.39530 = __builtin_expect (D.39529, 0);
              if (D.39530 != 0) goto <D.39614>; else goto <D.39615>;
              <D.39614>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10226, "field->parent");
              <D.39615>:
              D.33148 = cfg->opt;
              D.33149 = D.33148 & 512;
              if (D.33149 != 0) goto <D.39616>; else goto <D.39619>;
              <D.39619>:
              D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.33151 = D.33150 & 64;
              if (D.33151 != 0) goto <D.39616>; else goto <D.39617>;
              <D.39616>:
              {
                struct MonoInst * __domain_var;

                __domain_var = mono_get_domainvar (cfg);
                D.32755 = cfg->mempool;
                D.39620 = mono_mempool_alloc (D.32755, 56);
                iargs[0] = D.39620;
                D.39621 = iargs[0];
                D.39621 = iargs[0];
                D.39621->data.op[1].const_val = 0;
                D.39622 = D.39621->data.op[1].const_val;
                D.39621->data.op[0].const_val = D.39622;
                D.39621 = iargs[0];
                D.39621 = iargs[0];
                D.39621->prev = 0B;
                D.39623 = D.39621->prev;
                D.39621->next = D.39623;
                D.39621 = iargs[0];
                D.39621->opcode = 424;
                D.39621 = iargs[0];
                D.39621->flags = 0;
                D.39621 = iargs[0];
                D.39621->type = 0;
                D.39621 = iargs[0];
                D.39621->dreg = -1;
                D.39621 = iargs[0];
                D.39621 = iargs[0];
                D.39621 = iargs[0];
                D.39621->sreg3 = -1;
                D.39624 = D.39621->sreg3;
                D.39621->sreg2 = D.39624;
                D.39625 = D.39621->sreg2;
                D.39621->sreg1 = D.39625;
                D.39621 = iargs[0];
                D.32979 = cfg->ip;
                D.39621->cil_code = D.32979;
                D.39621 = iargs[0];
                D.33491 = cfg->varinfo;
                D.39626 = __domain_var->data.op[0].const_val;
                D.39627 = (unsigned int) D.39626;
                D.39628 = D.39627 * 4;
                D.39629 = D.33491 + D.39628;
                D.39630 = *D.39629;
                D.39631 = D.39630->data.op[1].vtype;
                D.39632 = mono_type_to_regmove (cfg, D.39631);
                D.39633 = (short unsigned int) D.39632;
                D.39621->opcode = D.39633;
                D.33491 = cfg->varinfo;
                D.39626 = __domain_var->data.op[0].const_val;
                D.39627 = (unsigned int) D.39626;
                D.39628 = D.39627 * 4;
                D.39629 = D.33491 + D.39628;
                D.39630 = *D.39629;
                D.39631 = D.39630->data.op[1].vtype;
                D.39621 = iargs[0];
                type_to_eval_stack_type (cfg, D.39631, D.39621);
                D.39621 = iargs[0];
                D.33491 = cfg->varinfo;
                D.39626 = __domain_var->data.op[0].const_val;
                D.39627 = (unsigned int) D.39626;
                D.39628 = D.39627 * 4;
                D.39629 = D.33491 + D.39628;
                D.39630 = *D.39629;
                D.39634 = D.39630->klass;
                D.39621->klass = D.39634;
                D.39621 = iargs[0];
                D.33491 = cfg->varinfo;
                D.39626 = __domain_var->data.op[0].const_val;
                D.39627 = (unsigned int) D.39626;
                D.39628 = D.39627 * 4;
                D.39629 = D.33491 + D.39628;
                D.39630 = *D.39629;
                D.39635 = D.39630->dreg;
                D.39621->sreg1 = D.39635;
                D.39621 = iargs[0];
                D.39621 = iargs[0];
                D.39636 = D.39621->type;
                D.39637 = (<unnamed type>) D.39636;
                D.39638 = alloc_dreg (cfg, D.39637);
                D.39639 = (int) D.39638;
                D.39621->dreg = D.39639;
                D.39621 = iargs[0];
                D.39640 = D.39621->opcode;
                if (D.39640 == 427) goto <D.39641>; else goto <D.39642>;
                <D.39641>:
                D.39621 = iargs[0];
                D.33491 = cfg->varinfo;
                D.39626 = __domain_var->data.op[0].const_val;
                D.39627 = (unsigned int) D.39626;
                D.39628 = D.39627 * 4;
                D.39629 = D.33491 + D.39628;
                D.39630 = *D.39629;
                D.39631 = D.39630->data.op[1].vtype;
                D.39643 = mono_class_from_mono_type (D.39631);
                D.39621->klass = D.39643;
                <D.39642>:
              }
              goto <D.39618>;
              <D.39617>:
              D.32755 = cfg->mempool;
              D.39644 = mono_mempool_alloc (D.32755, 56);
              iargs[0] = D.39644;
              D.39621 = iargs[0];
              D.39621 = iargs[0];
              D.39621->data.op[1].const_val = 0;
              D.39622 = D.39621->data.op[1].const_val;
              D.39621->data.op[0].const_val = D.39622;
              D.39621 = iargs[0];
              D.39621 = iargs[0];
              D.39621->prev = 0B;
              D.39623 = D.39621->prev;
              D.39621->next = D.39623;
              D.39621 = iargs[0];
              D.39621->opcode = 362;
              D.39621 = iargs[0];
              D.39621->flags = 0;
              D.39621 = iargs[0];
              D.39621->type = 0;
              D.39621 = iargs[0];
              D.39621->dreg = -1;
              D.39621 = iargs[0];
              D.39621 = iargs[0];
              D.39621 = iargs[0];
              D.39621->sreg3 = -1;
              D.39624 = D.39621->sreg3;
              D.39621->sreg2 = D.39624;
              D.39625 = D.39621->sreg2;
              D.39621->sreg1 = D.39625;
              D.39621 = iargs[0];
              D.32979 = cfg->ip;
              D.39621->cil_code = D.32979;
              D.39621 = iargs[0];
              D.32780 = cfg->domain;
              D.39621->data.op[0].p = D.32780;
              D.39621 = iargs[0];
              D.39621->type = 3;
              D.39621 = iargs[0];
              D.39645 = alloc_dreg (cfg, 3);
              D.39646 = (int) D.39645;
              D.39621->dreg = D.39646;
              <D.39618>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.39647>; else goto <D.39648>;
              <D.39647>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.39621 = iargs[0];
              D.33008->next = D.39621;
              D.39621 = iargs[0];
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.39621->prev = D.33008;
              bblock.125 = cfg->cbb;
              D.39621 = iargs[0];
              bblock.125->last_ins = D.39621;
              goto <D.39649>;
              <D.39648>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              D.39621 = iargs[0];
              bblock.125->last_ins = D.39621;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.39649>:
              D.32755 = cfg->mempool;
              D.39650 = mono_mempool_alloc (D.32755, 56);
              iargs[1] = D.39650;
              D.39651 = iargs[1];
              D.39651 = iargs[1];
              D.39651->data.op[1].const_val = 0;
              D.39652 = D.39651->data.op[1].const_val;
              D.39651->data.op[0].const_val = D.39652;
              D.39651 = iargs[1];
              D.39651 = iargs[1];
              D.39651->prev = 0B;
              D.39653 = D.39651->prev;
              D.39651->next = D.39653;
              D.39651 = iargs[1];
              D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.33151 = D.33150 & 64;
              if (D.33151 != 0) goto <D.39655>; else goto <D.39656>;
              <D.39655>:
              iftmp.259 = 732;
              goto <D.39657>;
              <D.39656>:
              iftmp.259 = 362;
              <D.39657>:
              D.39651->opcode = iftmp.259;
              D.39651 = iargs[1];
              D.39651->flags = 0;
              D.39651 = iargs[1];
              D.39651->type = 0;
              D.39651 = iargs[1];
              D.39651->dreg = -1;
              D.39651 = iargs[1];
              D.39651 = iargs[1];
              D.39651 = iargs[1];
              D.39651->sreg3 = -1;
              D.39658 = D.39651->sreg3;
              D.39651->sreg2 = D.39658;
              D.39659 = D.39651->sreg2;
              D.39651->sreg1 = D.39659;
              D.39651 = iargs[1];
              D.32979 = cfg->ip;
              D.39651->cil_code = D.32979;
              D.39651 = iargs[1];
              D.39651->data.op[0].p = field;
              D.39651 = iargs[1];
              D.39651->data.op[1].src = 13B;
              D.39651 = iargs[1];
              D.39651->type = 3;
              D.39651 = iargs[1];
              D.39660 = alloc_dreg (cfg, 3);
              D.39661 = (int) D.39660;
              D.39651->dreg = D.39661;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.39662>; else goto <D.39663>;
              <D.39662>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.39651 = iargs[1];
              D.33008->next = D.39651;
              D.39651 = iargs[1];
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.39651->prev = D.33008;
              bblock.125 = cfg->cbb;
              D.39651 = iargs[1];
              bblock.125->last_ins = D.39651;
              goto <D.39664>;
              <D.39663>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              D.39651 = iargs[1];
              bblock.125->last_ins = D.39651;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.39664>:
              ins = mono_emit_jit_icall (cfg, mono_class_static_field_address, &iargs);
            }
          finally
            {
              iargs = {CLOBBER};
            }
        }
        goto <D.39611>;
        <D.39610>:
        {
          struct MonoVTable * vtable;

          vtable = 0B;
          D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.33151 = D.33150 & 64;
          if (D.33151 == 0) goto <D.39665>; else goto <D.39666>;
          <D.39665>:
          D.32780 = cfg->domain;
          klass.170 = klass;
          vtable = mono_class_vtable (D.32780, klass.170);
          <D.39666>:
          klass.170 = klass;
          if (klass.170 == 0B) goto <D.39667>; else goto <D.39669>;
          <D.39669>:
          klass.170 = klass;
          D.37490 = klass.170->exception_type;
          if (D.37490 != 0) goto <D.39667>; else goto <D.39668>;
          <D.39667>:
          klass.170 = klass;
          cfg->exception_ptr = klass.170;
          D.39670 = mini_get_debug_options ();
          D.39671 = D.39670->break_on_unverified;
          if (D.39671 != 0) goto <D.39672>; else goto load_error;
          <D.39672>:
          raise (5);
          <D.39668>:
          if (addr == 0B) goto <D.39673>; else goto <D.39674>;
          <D.39673>:
          klass.170 = klass;
          D.39675 = mini_field_access_needs_cctor_run (cfg, method, klass.170, vtable);
          if (D.39675 != 0) goto <D.39676>; else goto <D.39677>;
          <D.39676>:
          klass.170 = klass;
          D.39678 = monoeg_g_slist_find (class_inits, klass.170);
          if (D.39678 == 0B) goto <D.39679>; else goto <D.39680>;
          <D.39679>:
          klass.170 = klass;
          helper_sig_class_init_trampoline.189 = helper_sig_class_init_trampoline;
          mono_emit_abs_call (cfg, 15, klass.170, helper_sig_class_init_trampoline.189, 0B);
          D.32836 = cfg->verbose_level;
          if (D.32836 > 2) goto <D.39681>; else goto <D.39682>;
          <D.39681>:
          klass.170 = klass;
          D.39683 = klass.170->name_space;
          klass.170 = klass;
          D.39684 = klass.170->name;
          D.39685 = mono_field_get_name (field);
          printf ("class %s.%s needs init call for %s\n", D.39683, D.39684, D.39685);
          <D.39682>:
          klass.170 = klass;
          class_inits = monoeg_g_slist_prepend (class_inits, klass.170);
          <D.39680>:
          goto <D.39686>;
          <D.39677>:
          D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.39687 = D.33150 & 16;
          if (D.39687 != 0) goto <D.39688>; else goto <D.39689>;
          <D.39688>:
          {
            struct MonoException * ex;

            D.39690 = vtable == 0B;
            D.39691 = (long int) D.39690;
            D.39692 = __builtin_expect (D.39691, 0);
            if (D.39692 != 0) goto <D.39693>; else goto <D.39694>;
            <D.39693>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10251, "vtable");
            <D.39694>:
            D.39695 = BIT_FIELD_REF <*vtable, 8, 184>;
            D.39696 = D.39695 & 2;
            if (D.39696 == 0) goto <D.39697>; else goto <D.39698>;
            <D.39697>:
            D.32726 = cfg->method;
            if (D.32726 != method) goto <D.39699>; else goto <D.39700>;
            <D.39699>:
            D.32698 = BIT_FIELD_REF <*method, 8, 160>;
            D.32699 = D.32698 & 124;
            if (D.32699 == 0) goto <D.39701>; else goto <D.39702>;
            <D.39701>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 1) goto <D.39703>; else goto <D.39704>;
            <D.39703>:
            printf ("inline failed: %s\n", "class init");
            <D.39704>:
            goto inline_failure;
            <D.39702>:
            <D.39700>:
            <D.39698>:
            ex = mono_runtime_class_init_full (vtable, 0);
            if (ex != 0B) goto <D.39705>; else goto <D.39706>;
            <D.39705>:
            set_exception_object (cfg, ex);
            goto exception_exit;
            <D.39706>:
          }
          <D.39689>:
          <D.39686>:
          D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.33151 = D.33150 & 64;
          if (D.33151 != 0) goto <D.39707>; else goto <D.39708>;
          <D.39707>:
          D.32755 = cfg->mempool;
          ins = mono_mempool_alloc (D.32755, 56);
          ins->data.op[1].const_val = 0;
          D.32975 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.32975;
          ins->prev = 0B;
          D.32976 = ins->prev;
          ins->next = D.32976;
          D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.33151 = D.33150 & 64;
          if (D.33151 != 0) goto <D.39710>; else goto <D.39711>;
          <D.39710>:
          iftmp.260 = 732;
          goto <D.39712>;
          <D.39711>:
          iftmp.260 = 362;
          <D.39712>:
          ins->opcode = iftmp.260;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.32977 = ins->sreg3;
          ins->sreg2 = D.32977;
          D.32978 = ins->sreg2;
          ins->sreg1 = D.32978;
          D.32979 = cfg->ip;
          ins->cil_code = D.32979;
          ins->data.op[0].p = field;
          ins->data.op[1].src = 16B;
          ins->type = 3;
          D.39713 = alloc_dreg (cfg, 3);
          D.39714 = (int) D.39713;
          ins->dreg = D.39714;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.39715>; else goto <D.39716>;
          <D.39715>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = ins;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          ins->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          goto <D.39717>;
          <D.39716>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.39717>:
          goto <D.39718>;
          <D.39708>:
          D.39690 = vtable == 0B;
          D.39691 = (long int) D.39690;
          D.39692 = __builtin_expect (D.39691, 0);
          if (D.39692 != 0) goto <D.39719>; else goto <D.39720>;
          <D.39719>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10264, "vtable");
          <D.39720>:
          D.39721 = mono_vtable_get_static_field_data (vtable);
          D.38948 = field->offset;
          D.39722 = (sizetype) D.38948;
          addr = D.39721 + D.39722;
          D.39723 = addr == 0B;
          D.39724 = (long int) D.39723;
          D.39725 = __builtin_expect (D.39724, 0);
          if (D.39725 != 0) goto <D.39726>; else goto <D.39727>;
          <D.39726>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10266, "addr");
          <D.39727>:
          D.32755 = cfg->mempool;
          ins = mono_mempool_alloc (D.32755, 56);
          ins->data.op[1].const_val = 0;
          D.32975 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.32975;
          ins->prev = 0B;
          D.32976 = ins->prev;
          ins->next = D.32976;
          ins->opcode = 362;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.32977 = ins->sreg3;
          ins->sreg2 = D.32977;
          D.32978 = ins->sreg2;
          ins->sreg1 = D.32978;
          D.32979 = cfg->ip;
          ins->cil_code = D.32979;
          ins->data.op[0].p = addr;
          ins->type = 3;
          D.39728 = alloc_dreg (cfg, 3);
          D.39729 = (int) D.39728;
          ins->dreg = D.39729;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.39730>; else goto <D.39731>;
          <D.39730>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = ins;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          ins->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          goto <D.39732>;
          <D.39731>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.39732>:
          <D.39718>:
          goto <D.39733>;
          <D.39674>:
          {
            struct MonoInst * iargs[1];

            try
              {
                D.32755 = cfg->mempool;
                D.39734 = mono_mempool_alloc (D.32755, 56);
                iargs[0] = D.39734;
                D.39735 = iargs[0];
                D.39735 = iargs[0];
                D.39735->data.op[1].const_val = 0;
                D.39736 = D.39735->data.op[1].const_val;
                D.39735->data.op[0].const_val = D.39736;
                D.39735 = iargs[0];
                D.39735 = iargs[0];
                D.39735->prev = 0B;
                D.39737 = D.39735->prev;
                D.39735->next = D.39737;
                D.39735 = iargs[0];
                D.39735->opcode = 362;
                D.39735 = iargs[0];
                D.39735->flags = 0;
                D.39735 = iargs[0];
                D.39735->type = 0;
                D.39735 = iargs[0];
                D.39735->dreg = -1;
                D.39735 = iargs[0];
                D.39735 = iargs[0];
                D.39735 = iargs[0];
                D.39735->sreg3 = -1;
                D.39738 = D.39735->sreg3;
                D.39735->sreg2 = D.39738;
                D.39739 = D.39735->sreg2;
                D.39735->sreg1 = D.39739;
                D.39735 = iargs[0];
                D.32979 = cfg->ip;
                D.39735->cil_code = D.32979;
                D.39735 = iargs[0];
                addr.261 = (int) addr;
                D.39735->data.op[0].const_val = addr.261;
                D.39735 = iargs[0];
                D.39735->type = 1;
                D.39735 = iargs[0];
                D.39741 = alloc_dreg (cfg, 1);
                D.39742 = (int) D.39741;
                D.39735->dreg = D.39742;
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                if (D.33008 != 0B) goto <D.39743>; else goto <D.39744>;
                <D.39743>:
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                D.39735 = iargs[0];
                D.33008->next = D.39735;
                D.39735 = iargs[0];
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                D.39735->prev = D.33008;
                bblock.125 = cfg->cbb;
                D.39735 = iargs[0];
                bblock.125->last_ins = D.39735;
                goto <D.39745>;
                <D.39744>:
                bblock.125 = cfg->cbb;
                bblock.125 = cfg->cbb;
                D.39735 = iargs[0];
                bblock.125->last_ins = D.39735;
                D.33008 = bblock.125->last_ins;
                bblock.125->code = D.33008;
                <D.39745>:
                ins = mono_emit_jit_icall (cfg, mono_get_special_static_data, &iargs);
              }
            finally
              {
                iargs = {CLOBBER};
              }
          }
          <D.39733>:
        }
        <D.39611>:
        <D.39608>:
        <D.39524>:
        <D.39410>:
        if (op == 127) goto <D.39746>; else goto <D.39747>;
        <D.39746>:
        D.39748 = mono_class_from_mono_type (ftype);
        ins->klass = D.39748;
        ins->type = 3;
        sp.262 = sp;
        sp = sp.262 + 4;
        *sp.262 = ins;
        goto <D.39750>;
        <D.39747>:
        if (op == 128) goto <D.39751>; else goto <D.39752>;
        <D.39751>:
        {
          struct MonoInst * store;

          D.32755 = cfg->mempool;
          store = mono_mempool_alloc (D.32755, 56);
          store->data.op[1].const_val = 0;
          D.39753 = store->data.op[1].const_val;
          store->data.op[0].const_val = D.39753;
          store->prev = 0B;
          D.39754 = store->prev;
          store->next = D.39754;
          D.39755 = mono_type_to_store_membase (cfg, ftype);
          D.39756 = (short unsigned int) D.39755;
          store->opcode = D.39756;
          store->flags = 0;
          store->type = 0;
          store->dreg = -1;
          store->sreg3 = -1;
          D.39757 = store->sreg3;
          store->sreg2 = D.39757;
          D.39758 = store->sreg2;
          store->sreg1 = D.39758;
          D.32979 = cfg->ip;
          store->cil_code = D.32979;
          D.39759 = store_val->dreg;
          store->sreg1 = D.39759;
          D.33170 = ins->dreg;
          store->dreg = D.33170;
          store->data.op[0].const_val = 0;
          type_to_eval_stack_type (cfg, ftype, store);
          D.39760 = mono_class_from_mono_type (ftype);
          store->klass = D.39760;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.39761>; else goto <D.39762>;
          <D.39761>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = store;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          store->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = store;
          goto <D.39763>;
          <D.39762>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = store;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.39763>:
          D.39764 = store->flags;
          D.37112 = (unsigned char) ins_flag;
          D.39765 = D.39764 | D.37112;
          store->flags = D.39765;
        }
        goto <D.39766>;
        <D.39752>:
        {
          gboolean is_const;
          struct MonoVTable * vtable;
          void * addr;

          is_const = 0;
          vtable = 0B;
          addr = 0B;
          if (context_used == 0) goto <D.39767>; else goto <D.39768>;
          <D.39767>:
          D.32780 = cfg->domain;
          klass.170 = klass;
          vtable = mono_class_vtable (D.32780, klass.170);
          klass.170 = klass;
          if (klass.170 == 0B) goto <D.39769>; else goto <D.39771>;
          <D.39771>:
          klass.170 = klass;
          D.37490 = klass.170->exception_type;
          if (D.37490 != 0) goto <D.39769>; else goto <D.39770>;
          <D.39769>:
          klass.170 = klass;
          cfg->exception_ptr = klass.170;
          D.39772 = mini_get_debug_options ();
          D.39773 = D.39772->break_on_unverified;
          if (D.39773 != 0) goto <D.39774>; else goto load_error;
          <D.39774>:
          raise (5);
          <D.39770>:
          <D.39768>:
          D.39362 = ftype->attrs;
          D.39363 = (int) D.39362;
          D.39777 = D.39363 & 32;
          if (D.39777 != 0) goto <D.39778>; else goto <D.39779>;
          <D.39778>:
          addr = mono_aot_readonly_field_override (field);
          if (addr != 0B) goto <D.39775>; else goto <D.39780>;
          <D.39780>:
          if (context_used == 0) goto <D.39781>; else goto <D.39776>;
          <D.39781>:
          D.33148 = cfg->opt;
          D.33149 = D.33148 & 512;
          if (D.33149 == 0) goto <D.39782>; else goto <D.39776>;
          <D.39782>:
          D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.33151 = D.33150 & 64;
          if (D.33151 == 0) goto <D.39783>; else goto <D.39776>;
          <D.39783>:
          D.39784 = BIT_FIELD_REF <*vtable, 8, 184>;
          D.39785 = D.39784 & 2;
          if (D.39785 != 0) goto <D.39775>; else goto <D.39776>;
          <D.39775>:
          {
            int ro_type;

            D.39786 = ftype->type;
            ro_type = (int) D.39786;
            if (addr == 0B) goto <D.39787>; else goto <D.39788>;
            <D.39787>:
            D.39789 = mono_vtable_get_static_field_data (vtable);
            D.38948 = field->offset;
            D.39722 = (sizetype) D.38948;
            addr = D.39789 + D.39722;
            <D.39788>:
            if (ro_type == 17) goto <D.39790>; else goto <D.39791>;
            <D.39790>:
            D.39792 = ftype->data.klass;
            D.39793 = BIT_FIELD_REF <*D.39792, 8, 160>;
            D.39794 = D.39793 & 16;
            if (D.39794 != 0) goto <D.39795>; else goto <D.39796>;
            <D.39795>:
            D.39792 = ftype->data.klass;
            D.39797 = mono_class_enum_basetype (D.39792);
            D.39798 = D.39797->type;
            ro_type = (int) D.39798;
            <D.39796>:
            <D.39791>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.39799>; else goto <D.39800>;
            <D.39799>:
            D.32693 = method->klass;
            D.34423 = D.32693->name_space;
            D.32693 = method->klass;
            D.34424 = D.32693->name;
            D.34425 = method->name;
            D.34426 = method->signature;
            D.34427 = D.34426->param_count;
            D.34428 = (int) D.34427;
            D.39801 = mono_opcode_name (op);
            D.39802 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.34423, D.34424, D.34425, D.34428, D.39801, "method-to-ir.c", 10305);
            cfg->exception_message = D.39802;
            D.32836 = cfg->verbose_level;
            if (D.32836 > 1) goto <D.39803>; else goto <D.39804>;
            <D.39803>:
            D.34433 = cfg->exception_message;
            printf ("%s\n", D.34433);
            <D.39804>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.39800>:
            is_const = 1;
            switch (ro_type) <default: <D.30425>, case 2: <D.30402>, case 3: <D.30406>, case 4: <D.30405>, case 5: <D.30403>, case 6: <D.30408>, case 7: <D.30407>, case 8: <D.30409>, case 9: <D.30410>, case 10: <D.30420>, case 11: <D.30421>, case 12: <D.30422>, case 13: <D.30423>, case 14: <D.30415>, case 15: <D.30413>, case 17: <D.30424>, case 18: <D.30417>, case 20: <D.30419>, case 24: <D.30411>, case 25: <D.30412>, case 27: <D.30414>, case 28: <D.30416>, case 29: <D.30418>>
            <D.30402>:
            <D.30403>:
            D.32755 = cfg->mempool;
            D.39805 = mono_mempool_alloc (D.32755, 56);
            *sp = D.39805;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->data.op[1].const_val = 0;
            D.35486 = D.33750->data.op[1].const_val;
            D.33750->data.op[0].const_val = D.35486;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->prev = 0B;
            D.35487 = D.33750->prev;
            D.33750->next = D.35487;
            D.33750 = *sp;
            D.33750->opcode = 362;
            D.33750 = *sp;
            D.33750->flags = 0;
            D.33750 = *sp;
            D.33750->type = 0;
            D.33750 = *sp;
            D.33750->dreg = -1;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->sreg3 = -1;
            D.35488 = D.33750->sreg3;
            D.33750->sreg2 = D.35488;
            D.35489 = D.33750->sreg2;
            D.33750->sreg1 = D.35489;
            D.33750 = *sp;
            D.32979 = cfg->ip;
            D.33750->cil_code = D.32979;
            D.33750 = *sp;
            D.39806 = MEM[(guint8 *)addr];
            D.39807 = (int) D.39806;
            D.33750->data.op[0].const_val = D.39807;
            D.33750 = *sp;
            D.33750->type = 1;
            D.33750 = *sp;
            D.39808 = alloc_dreg (cfg, 1);
            D.39809 = (int) D.39808;
            D.33750->dreg = D.39809;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39810>; else goto <D.39811>;
            <D.39810>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750 = *sp;
            D.33008->next = D.33750;
            D.33750 = *sp;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            goto <D.39812>;
            <D.39811>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39812>:
            sp = sp + 4;
            goto <D.30404>;
            <D.30405>:
            D.32755 = cfg->mempool;
            D.39813 = mono_mempool_alloc (D.32755, 56);
            *sp = D.39813;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->data.op[1].const_val = 0;
            D.35486 = D.33750->data.op[1].const_val;
            D.33750->data.op[0].const_val = D.35486;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->prev = 0B;
            D.35487 = D.33750->prev;
            D.33750->next = D.35487;
            D.33750 = *sp;
            D.33750->opcode = 362;
            D.33750 = *sp;
            D.33750->flags = 0;
            D.33750 = *sp;
            D.33750->type = 0;
            D.33750 = *sp;
            D.33750->dreg = -1;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->sreg3 = -1;
            D.35488 = D.33750->sreg3;
            D.33750->sreg2 = D.35488;
            D.35489 = D.33750->sreg2;
            D.33750->sreg1 = D.35489;
            D.33750 = *sp;
            D.32979 = cfg->ip;
            D.33750->cil_code = D.32979;
            D.33750 = *sp;
            D.39814 = MEM[(gint8 *)addr];
            D.39815 = (int) D.39814;
            D.33750->data.op[0].const_val = D.39815;
            D.33750 = *sp;
            D.33750->type = 1;
            D.33750 = *sp;
            D.39816 = alloc_dreg (cfg, 1);
            D.39817 = (int) D.39816;
            D.33750->dreg = D.39817;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39818>; else goto <D.39819>;
            <D.39818>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750 = *sp;
            D.33008->next = D.33750;
            D.33750 = *sp;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            goto <D.39820>;
            <D.39819>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39820>:
            sp = sp + 4;
            goto <D.30404>;
            <D.30406>:
            <D.30407>:
            D.32755 = cfg->mempool;
            D.39821 = mono_mempool_alloc (D.32755, 56);
            *sp = D.39821;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->data.op[1].const_val = 0;
            D.35486 = D.33750->data.op[1].const_val;
            D.33750->data.op[0].const_val = D.35486;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->prev = 0B;
            D.35487 = D.33750->prev;
            D.33750->next = D.35487;
            D.33750 = *sp;
            D.33750->opcode = 362;
            D.33750 = *sp;
            D.33750->flags = 0;
            D.33750 = *sp;
            D.33750->type = 0;
            D.33750 = *sp;
            D.33750->dreg = -1;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->sreg3 = -1;
            D.35488 = D.33750->sreg3;
            D.33750->sreg2 = D.35488;
            D.35489 = D.33750->sreg2;
            D.33750->sreg1 = D.35489;
            D.33750 = *sp;
            D.32979 = cfg->ip;
            D.33750->cil_code = D.32979;
            D.33750 = *sp;
            D.39822 = MEM[(guint16 *)addr];
            D.39823 = (int) D.39822;
            D.33750->data.op[0].const_val = D.39823;
            D.33750 = *sp;
            D.33750->type = 1;
            D.33750 = *sp;
            D.39824 = alloc_dreg (cfg, 1);
            D.39825 = (int) D.39824;
            D.33750->dreg = D.39825;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39826>; else goto <D.39827>;
            <D.39826>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750 = *sp;
            D.33008->next = D.33750;
            D.33750 = *sp;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            goto <D.39828>;
            <D.39827>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39828>:
            sp = sp + 4;
            goto <D.30404>;
            <D.30408>:
            D.32755 = cfg->mempool;
            D.39829 = mono_mempool_alloc (D.32755, 56);
            *sp = D.39829;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->data.op[1].const_val = 0;
            D.35486 = D.33750->data.op[1].const_val;
            D.33750->data.op[0].const_val = D.35486;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->prev = 0B;
            D.35487 = D.33750->prev;
            D.33750->next = D.35487;
            D.33750 = *sp;
            D.33750->opcode = 362;
            D.33750 = *sp;
            D.33750->flags = 0;
            D.33750 = *sp;
            D.33750->type = 0;
            D.33750 = *sp;
            D.33750->dreg = -1;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->sreg3 = -1;
            D.35488 = D.33750->sreg3;
            D.33750->sreg2 = D.35488;
            D.35489 = D.33750->sreg2;
            D.33750->sreg1 = D.35489;
            D.33750 = *sp;
            D.32979 = cfg->ip;
            D.33750->cil_code = D.32979;
            D.33750 = *sp;
            D.39830 = MEM[(gint16 *)addr];
            D.39831 = (int) D.39830;
            D.33750->data.op[0].const_val = D.39831;
            D.33750 = *sp;
            D.33750->type = 1;
            D.33750 = *sp;
            D.39832 = alloc_dreg (cfg, 1);
            D.39833 = (int) D.39832;
            D.33750->dreg = D.39833;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39834>; else goto <D.39835>;
            <D.39834>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750 = *sp;
            D.33008->next = D.33750;
            D.33750 = *sp;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            goto <D.39836>;
            <D.39835>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39836>:
            sp = sp + 4;
            goto <D.30404>;
            <D.30409>:
            D.32755 = cfg->mempool;
            D.39837 = mono_mempool_alloc (D.32755, 56);
            *sp = D.39837;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->data.op[1].const_val = 0;
            D.35486 = D.33750->data.op[1].const_val;
            D.33750->data.op[0].const_val = D.35486;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->prev = 0B;
            D.35487 = D.33750->prev;
            D.33750->next = D.35487;
            D.33750 = *sp;
            D.33750->opcode = 362;
            D.33750 = *sp;
            D.33750->flags = 0;
            D.33750 = *sp;
            D.33750->type = 0;
            D.33750 = *sp;
            D.33750->dreg = -1;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->sreg3 = -1;
            D.35488 = D.33750->sreg3;
            D.33750->sreg2 = D.35488;
            D.35489 = D.33750->sreg2;
            D.33750->sreg1 = D.35489;
            D.33750 = *sp;
            D.32979 = cfg->ip;
            D.33750->cil_code = D.32979;
            D.33750 = *sp;
            D.39838 = MEM[(gint32 *)addr];
            D.33750->data.op[0].const_val = D.39838;
            D.33750 = *sp;
            D.33750->type = 1;
            D.33750 = *sp;
            D.39839 = alloc_dreg (cfg, 1);
            D.39840 = (int) D.39839;
            D.33750->dreg = D.39840;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39841>; else goto <D.39842>;
            <D.39841>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750 = *sp;
            D.33008->next = D.33750;
            D.33750 = *sp;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            goto <D.39843>;
            <D.39842>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39843>:
            sp = sp + 4;
            goto <D.30404>;
            <D.30410>:
            D.32755 = cfg->mempool;
            D.39844 = mono_mempool_alloc (D.32755, 56);
            *sp = D.39844;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->data.op[1].const_val = 0;
            D.35486 = D.33750->data.op[1].const_val;
            D.33750->data.op[0].const_val = D.35486;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->prev = 0B;
            D.35487 = D.33750->prev;
            D.33750->next = D.35487;
            D.33750 = *sp;
            D.33750->opcode = 362;
            D.33750 = *sp;
            D.33750->flags = 0;
            D.33750 = *sp;
            D.33750->type = 0;
            D.33750 = *sp;
            D.33750->dreg = -1;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->sreg3 = -1;
            D.35488 = D.33750->sreg3;
            D.33750->sreg2 = D.35488;
            D.35489 = D.33750->sreg2;
            D.33750->sreg1 = D.35489;
            D.33750 = *sp;
            D.32979 = cfg->ip;
            D.33750->cil_code = D.32979;
            D.33750 = *sp;
            D.39845 = MEM[(guint32 *)addr];
            D.39846 = (int) D.39845;
            D.33750->data.op[0].const_val = D.39846;
            D.33750 = *sp;
            D.33750->type = 1;
            D.33750 = *sp;
            D.39847 = alloc_dreg (cfg, 1);
            D.39848 = (int) D.39847;
            D.33750->dreg = D.39848;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39849>; else goto <D.39850>;
            <D.39849>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750 = *sp;
            D.33008->next = D.33750;
            D.33750 = *sp;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            goto <D.39851>;
            <D.39850>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39851>:
            sp = sp + 4;
            goto <D.30404>;
            <D.30411>:
            <D.30412>:
            <D.30413>:
            <D.30414>:
            D.32755 = cfg->mempool;
            D.39852 = mono_mempool_alloc (D.32755, 56);
            *sp = D.39852;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->data.op[1].const_val = 0;
            D.35486 = D.33750->data.op[1].const_val;
            D.33750->data.op[0].const_val = D.35486;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->prev = 0B;
            D.35487 = D.33750->prev;
            D.33750->next = D.35487;
            D.33750 = *sp;
            D.33750->opcode = 362;
            D.33750 = *sp;
            D.33750->flags = 0;
            D.33750 = *sp;
            D.33750->type = 0;
            D.33750 = *sp;
            D.33750->dreg = -1;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->sreg3 = -1;
            D.35488 = D.33750->sreg3;
            D.33750->sreg2 = D.35488;
            D.35489 = D.33750->sreg2;
            D.33750->sreg1 = D.35489;
            D.33750 = *sp;
            D.32979 = cfg->ip;
            D.33750->cil_code = D.32979;
            D.33750 = *sp;
            D.39853 = MEM[(void * *)addr];
            D.33750->data.op[0].p = D.39853;
            D.33750 = *sp;
            D.33750->type = 3;
            D.33750 = *sp;
            D.39854 = alloc_dreg (cfg, 3);
            D.39855 = (int) D.39854;
            D.33750->dreg = D.39855;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39856>; else goto <D.39857>;
            <D.39856>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750 = *sp;
            D.33008->next = D.33750;
            D.33750 = *sp;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            goto <D.39858>;
            <D.39857>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39858>:
            D.38937 = field->type;
            D.33750 = *sp;
            type_to_eval_stack_type (cfg, D.38937, D.33750);
            sp = sp + 4;
            goto <D.30404>;
            <D.30415>:
            <D.30416>:
            <D.30417>:
            <D.30418>:
            <D.30419>:
            D.39859 = mono_gc_is_moving ();
            if (D.39859 == 0) goto <D.39860>; else goto <D.39861>;
            <D.39860>:
            D.32755 = cfg->mempool;
            D.39862 = mono_mempool_alloc (D.32755, 56);
            *sp = D.39862;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->data.op[1].const_val = 0;
            D.35486 = D.33750->data.op[1].const_val;
            D.33750->data.op[0].const_val = D.35486;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->prev = 0B;
            D.35487 = D.33750->prev;
            D.33750->next = D.35487;
            D.33750 = *sp;
            D.33750->opcode = 362;
            D.33750 = *sp;
            D.33750->flags = 0;
            D.33750 = *sp;
            D.33750->type = 0;
            D.33750 = *sp;
            D.33750->dreg = -1;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->sreg3 = -1;
            D.35488 = D.33750->sreg3;
            D.33750->sreg2 = D.35488;
            D.35489 = D.33750->sreg2;
            D.33750->sreg1 = D.35489;
            D.33750 = *sp;
            D.32979 = cfg->ip;
            D.33750->cil_code = D.32979;
            D.33750 = *sp;
            D.39853 = MEM[(void * *)addr];
            D.33750->data.op[0].p = D.39853;
            D.33750 = *sp;
            D.33750->type = 3;
            D.33750 = *sp;
            D.39863 = alloc_dreg (cfg, 3);
            D.39864 = (int) D.39863;
            D.33750->dreg = D.39864;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39865>; else goto <D.39866>;
            <D.39865>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750 = *sp;
            D.33008->next = D.33750;
            D.33750 = *sp;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            goto <D.39867>;
            <D.39866>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39867>:
            D.38937 = field->type;
            D.33750 = *sp;
            type_to_eval_stack_type (cfg, D.38937, D.33750);
            sp = sp + 4;
            goto <D.39868>;
            <D.39861>:
            is_const = 0;
            <D.39868>:
            goto <D.30404>;
            <D.30420>:
            <D.30421>:
            D.32755 = cfg->mempool;
            D.39869 = mono_mempool_alloc (D.32755, 56);
            *sp = D.39869;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->data.op[1].const_val = 0;
            D.35486 = D.33750->data.op[1].const_val;
            D.33750->data.op[0].const_val = D.35486;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->prev = 0B;
            D.35487 = D.33750->prev;
            D.33750->next = D.35487;
            D.33750 = *sp;
            D.33750->opcode = 363;
            D.33750 = *sp;
            D.33750->flags = 0;
            D.33750 = *sp;
            D.33750->type = 0;
            D.33750 = *sp;
            D.33750->dreg = -1;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750 = *sp;
            D.33750->sreg3 = -1;
            D.35488 = D.33750->sreg3;
            D.33750->sreg2 = D.35488;
            D.35489 = D.33750->sreg2;
            D.33750->sreg1 = D.35489;
            D.33750 = *sp;
            D.32979 = cfg->ip;
            D.33750->cil_code = D.32979;
            D.33750 = *sp;
            D.39870 = alloc_lreg (cfg);
            D.39871 = (int) D.39870;
            D.33750->dreg = D.39871;
            D.33750 = *sp;
            D.33750->type = 2;
            D.33750 = *sp;
            D.39872 = MEM[(gint64 *)addr];
            D.33750->data.i8const = D.39872;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39873>; else goto <D.39874>;
            <D.39873>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750 = *sp;
            D.33008->next = D.33750;
            D.33750 = *sp;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33750->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            goto <D.39875>;
            <D.39874>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.33750 = *sp;
            bblock.125->last_ins = D.33750;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39875>:
            sp = sp + 4;
            goto <D.30404>;
            <D.30422>:
            <D.30423>:
            <D.30424>:
            <D.30425>:
            is_const = 0;
            goto <D.30404>;
            <D.30404>:
          }
          <D.39776>:
          <D.39779>:
          if (is_const == 0) goto <D.39876>; else goto <D.39877>;
          <D.39876>:
          {
            struct MonoInst * load;

            sp.83 = (int) sp;
            stack_start.84 = (int) stack_start;
            D.33526 = sp.83 - stack_start.84;
            D.33527 = D.33526 /[ex] 4;
            D.33440 = header->max_stack;
            D.33441 = (int) D.33440;
            if (D.33527 >= D.33441) goto <D.39878>; else goto <D.39879>;
            <D.39878>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.39880>; else goto <D.39881>;
            <D.39880>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.39882>; else goto <D.39883>;
            <D.39882>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.39883>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.39881>:
            D.39884 = mini_get_debug_options ();
            D.39885 = D.39884->break_on_unverified;
            if (D.39885 != 0) goto <D.39886>; else goto unverified;
            <D.39886>:
            raise (5);
            <D.39879>:
            D.32755 = cfg->mempool;
            load = mono_mempool_alloc (D.32755, 56);
            load->data.op[1].const_val = 0;
            D.39887 = load->data.op[1].const_val;
            load->data.op[0].const_val = D.39887;
            load->prev = 0B;
            D.39888 = load->prev;
            load->next = D.39888;
            D.38937 = field->type;
            D.39889 = mono_type_to_load_membase (cfg, D.38937);
            D.39890 = (short unsigned int) D.39889;
            load->opcode = D.39890;
            load->flags = 0;
            load->type = 0;
            load->dreg = -1;
            load->sreg3 = -1;
            D.39891 = load->sreg3;
            load->sreg2 = D.39891;
            D.39892 = load->sreg2;
            load->sreg1 = D.39892;
            D.32979 = cfg->ip;
            load->cil_code = D.32979;
            load->dreg = 0;
            D.33170 = ins->dreg;
            load->sreg1 = D.33170;
            load->data.op[0].const_val = 0;
            load->type = 1;
            D.38937 = field->type;
            type_to_eval_stack_type (cfg, D.38937, load);
            D.39893 = load->type;
            D.39894 = (<unnamed type>) D.39893;
            D.39895 = alloc_dreg (cfg, D.39894);
            D.39896 = (int) D.39895;
            load->dreg = D.39896;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39897>; else goto <D.39898>;
            <D.39897>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = load;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            load->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = load;
            goto <D.39899>;
            <D.39898>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = load;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39899>:
            D.39900 = load->flags;
            D.37112 = (unsigned char) ins_flag;
            D.39901 = D.39900 | D.37112;
            load->flags = D.39901;
            ins_flag = 0;
            sp.263 = sp;
            sp = sp.263 + 4;
            *sp.263 = load;
          }
          <D.39877>:
        }
        <D.39766>:
        <D.39750>:
        ins_flag = 0;
        ip = ip + 5;
        goto <D.29893>;
      }
      <D.30427>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 7) goto <D.39903>; else goto <D.39904>;
      <D.39903>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.39905>; else goto <D.39906>;
      <D.39905>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.39907>; else goto <D.39908>;
      <D.39907>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39908>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39906>:
      D.39909 = mini_get_debug_options ();
      D.39910 = D.39909->break_on_unverified;
      if (D.39910 != 0) goto <D.39911>; else goto unverified;
      <D.39911>:
      raise (5);
      <D.39904>:
      sp = sp + 4294967288;
      D.34195 = ip + 5;
      if (D.34195 > end) goto <D.39912>; else goto <D.39913>;
      <D.39912>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.39914>; else goto <D.39915>;
      <D.39914>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.39916>; else goto <D.39917>;
      <D.39916>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39917>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39915>:
      D.39918 = mini_get_debug_options ();
      D.39919 = D.39918->break_on_unverified;
      if (D.39919 != 0) goto <D.39920>; else goto unverified;
      <D.39920>:
      raise (5);
      <D.39913>:
      D.34214 = ip + 1;
      token = mono_read32 (D.34214);
      klass.264 = mini_get_class (method, token, generic_context);
      klass = klass.264;
      klass.170 = klass;
      if (klass.170 == 0B) goto <D.39922>; else goto <D.39924>;
      <D.39924>:
      klass.170 = klass;
      D.37490 = klass.170->exception_type;
      if (D.37490 != 0) goto <D.39922>; else goto <D.39923>;
      <D.39922>:
      klass.170 = klass;
      cfg->exception_ptr = klass.170;
      D.39925 = mini_get_debug_options ();
      D.39926 = D.39925->break_on_unverified;
      if (D.39926 != 0) goto <D.39927>; else goto load_error;
      <D.39927>:
      raise (5);
      <D.39923>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      klass.170 = klass;
      D.37564 = &klass.170->byval_arg;
      D.39928 = mono_type_to_store_membase (cfg, D.37564);
      D.39929 = (short unsigned int) D.39928;
      ins->opcode = D.39929;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      D.34877 = D.34876->dreg;
      ins->sreg1 = D.34877;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->dreg = D.33943;
      ins->data.op[0].const_val = 0;
      klass.170 = klass;
      D.37564 = &klass.170->byval_arg;
      type_to_eval_stack_type (cfg, D.37564, ins);
      klass.170 = klass;
      D.37564 = &klass.170->byval_arg;
      D.39930 = mono_class_from_mono_type (D.37564);
      ins->klass = D.39930;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.39931>; else goto <D.39932>;
      <D.39931>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.39933>;
      <D.39932>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.39933>:
      D.35961 = BIT_FIELD_REF <*cfg, 8, 3416>;
      D.35962 = D.35961 & 16;
      if (D.35962 != 0) goto <D.39934>; else goto <D.39935>;
      <D.39934>:
      D.32726 = cfg->method;
      D.34668 = BIT_FIELD_REF <*D.32726, 8, 160>;
      D.34669 = D.34668 & 124;
      if (D.34669 != 96) goto <D.39936>; else goto <D.39937>;
      <D.39936>:
      klass.170 = klass;
      D.39938 = generic_class_is_reference_type (cfg, klass.170);
      if (D.39938 != 0) goto <D.39939>; else goto <D.39940>;
      <D.39939>:
      D.33750 = *sp;
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      emit_write_barrier (cfg, D.33750, D.34876);
      <D.39940>:
      <D.39937>:
      <D.39935>:
      ins_flag = 0;
      ip = ip + 5;
      inline_costs = inline_costs + 1;
      goto <D.29893>;
      <D.30428>:
      {
        struct MonoInst * len_ins;
        const char * data_ptr;
        int data_size;
        guint32 field_token;

        try
          {
            data_size = 0;
            sp.83 = (int) sp;
            stack_start.84 = (int) stack_start;
            D.33526 = sp.83 - stack_start.84;
            if (D.33526 <= 3) goto <D.39941>; else goto <D.39942>;
            <D.39941>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.39943>; else goto <D.39944>;
            <D.39943>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.39945>; else goto <D.39946>;
            <D.39945>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.39946>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.39944>:
            D.39947 = mini_get_debug_options ();
            D.39948 = D.39947->break_on_unverified;
            if (D.39948 != 0) goto <D.39949>; else goto unverified;
            <D.39949>:
            raise (5);
            <D.39942>:
            sp = sp + 4294967292;
            D.34195 = ip + 5;
            if (D.34195 > end) goto <D.39950>; else goto <D.39951>;
            <D.39950>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.39952>; else goto <D.39953>;
            <D.39952>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.39954>; else goto <D.39955>;
            <D.39954>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.39955>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.39953>:
            D.39956 = mini_get_debug_options ();
            D.39957 = D.39956->break_on_unverified;
            if (D.39957 != 0) goto <D.39958>; else goto unverified;
            <D.39958>:
            raise (5);
            <D.39951>:
            D.34214 = ip + 1;
            token = mono_read32 (D.34214);
            klass.265 = mini_get_class (method, token, generic_context);
            klass = klass.265;
            klass.170 = klass;
            if (klass.170 == 0B) goto <D.39960>; else goto <D.39962>;
            <D.39962>:
            klass.170 = klass;
            D.37490 = klass.170->exception_type;
            if (D.37490 != 0) goto <D.39960>; else goto <D.39961>;
            <D.39960>:
            klass.170 = klass;
            cfg->exception_ptr = klass.170;
            D.39963 = mini_get_debug_options ();
            D.39964 = D.39963->break_on_unverified;
            if (D.39964 != 0) goto <D.39965>; else goto load_error;
            <D.39965>:
            raise (5);
            <D.39961>:
            klass.170 = klass;
            context_used = mini_class_check_context_used (cfg, klass.170);
            D.33750 = *sp;
            D.35492 = D.33750->type;
            if (D.35492 == 2) goto <D.39966>; else goto <D.39967>;
            <D.39966>:
            D.32755 = cfg->mempool;
            ins = mono_mempool_alloc (D.32755, 56);
            ins->data.op[1].const_val = 0;
            D.32975 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.32975;
            ins->prev = 0B;
            D.32976 = ins->prev;
            ins->next = D.32976;
            ins->opcode = 528;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.32977 = ins->sreg3;
            ins->sreg2 = D.32977;
            D.32978 = ins->sreg2;
            ins->sreg1 = D.32978;
            D.32979 = cfg->ip;
            ins->cil_code = D.32979;
            D.33750 = *sp;
            D.33943 = D.33750->dreg;
            ins->sreg1 = D.33943;
            ins->type = 1;
            D.39968 = alloc_ireg (cfg);
            D.39969 = (int) D.39968;
            ins->dreg = D.39969;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.39970>; else goto <D.39971>;
            <D.39970>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = ins;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            ins->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            goto <D.39972>;
            <D.39971>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.39972>:
            D.39973 = mono_decompose_opcode (cfg, ins);
            *sp = D.39973;
            <D.39967>:
            if (context_used != 0) goto <D.39974>; else goto <D.39975>;
            <D.39974>:
            {
              struct MonoInst * args[3];
              struct MonoClass * array_class;
              struct MonoMethod * managed_alloc;

              try
                {
                  klass.170 = klass;
                  array_class = mono_array_class_get (klass.170, 1);
                  managed_alloc = mono_gc_get_managed_array_allocator (array_class);
                  D.39976 = emit_get_rgctx_klass (cfg, context_used, array_class, 2);
                  args[0] = D.39976;
                  D.33750 = *sp;
                  args[1] = D.33750;
                  if (managed_alloc != 0B) goto <D.39977>; else goto <D.39978>;
                  <D.39977>:
                  ins = mono_emit_method_call (cfg, managed_alloc, &args, 0B);
                  goto <D.39979>;
                  <D.39978>:
                  ins = mono_emit_jit_icall (cfg, mono_array_new_specific, &args);
                  <D.39979>:
                }
              finally
                {
                  args = {CLOBBER};
                }
            }
            goto <D.39980>;
            <D.39975>:
            D.33148 = cfg->opt;
            D.33149 = D.33148 & 512;
            if (D.33149 != 0) goto <D.39981>; else goto <D.39982>;
            <D.39981>:
            {
              struct MonoInst * iargs[3];

              try
                {
                  D.33148 = cfg->opt;
                  D.33149 = D.33148 & 512;
                  if (D.33149 != 0) goto <D.39983>; else goto <D.39986>;
                  <D.39986>:
                  D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
                  D.33151 = D.33150 & 64;
                  if (D.33151 != 0) goto <D.39983>; else goto <D.39984>;
                  <D.39983>:
                  {
                    struct MonoInst * __domain_var;

                    __domain_var = mono_get_domainvar (cfg);
                    D.32755 = cfg->mempool;
                    D.39987 = mono_mempool_alloc (D.32755, 56);
                    iargs[0] = D.39987;
                    D.39988 = iargs[0];
                    D.39988 = iargs[0];
                    D.39988->data.op[1].const_val = 0;
                    D.39989 = D.39988->data.op[1].const_val;
                    D.39988->data.op[0].const_val = D.39989;
                    D.39988 = iargs[0];
                    D.39988 = iargs[0];
                    D.39988->prev = 0B;
                    D.39990 = D.39988->prev;
                    D.39988->next = D.39990;
                    D.39988 = iargs[0];
                    D.39988->opcode = 424;
                    D.39988 = iargs[0];
                    D.39988->flags = 0;
                    D.39988 = iargs[0];
                    D.39988->type = 0;
                    D.39988 = iargs[0];
                    D.39988->dreg = -1;
                    D.39988 = iargs[0];
                    D.39988 = iargs[0];
                    D.39988 = iargs[0];
                    D.39988->sreg3 = -1;
                    D.39991 = D.39988->sreg3;
                    D.39988->sreg2 = D.39991;
                    D.39992 = D.39988->sreg2;
                    D.39988->sreg1 = D.39992;
                    D.39988 = iargs[0];
                    D.32979 = cfg->ip;
                    D.39988->cil_code = D.32979;
                    D.39988 = iargs[0];
                    D.33491 = cfg->varinfo;
                    D.39993 = __domain_var->data.op[0].const_val;
                    D.39994 = (unsigned int) D.39993;
                    D.39995 = D.39994 * 4;
                    D.39996 = D.33491 + D.39995;
                    D.39997 = *D.39996;
                    D.39998 = D.39997->data.op[1].vtype;
                    D.39999 = mono_type_to_regmove (cfg, D.39998);
                    D.40000 = (short unsigned int) D.39999;
                    D.39988->opcode = D.40000;
                    D.33491 = cfg->varinfo;
                    D.39993 = __domain_var->data.op[0].const_val;
                    D.39994 = (unsigned int) D.39993;
                    D.39995 = D.39994 * 4;
                    D.39996 = D.33491 + D.39995;
                    D.39997 = *D.39996;
                    D.39998 = D.39997->data.op[1].vtype;
                    D.39988 = iargs[0];
                    type_to_eval_stack_type (cfg, D.39998, D.39988);
                    D.39988 = iargs[0];
                    D.33491 = cfg->varinfo;
                    D.39993 = __domain_var->data.op[0].const_val;
                    D.39994 = (unsigned int) D.39993;
                    D.39995 = D.39994 * 4;
                    D.39996 = D.33491 + D.39995;
                    D.39997 = *D.39996;
                    D.40001 = D.39997->klass;
                    D.39988->klass = D.40001;
                    D.39988 = iargs[0];
                    D.33491 = cfg->varinfo;
                    D.39993 = __domain_var->data.op[0].const_val;
                    D.39994 = (unsigned int) D.39993;
                    D.39995 = D.39994 * 4;
                    D.39996 = D.33491 + D.39995;
                    D.39997 = *D.39996;
                    D.40002 = D.39997->dreg;
                    D.39988->sreg1 = D.40002;
                    D.39988 = iargs[0];
                    D.39988 = iargs[0];
                    D.40003 = D.39988->type;
                    D.40004 = (<unnamed type>) D.40003;
                    D.40005 = alloc_dreg (cfg, D.40004);
                    D.40006 = (int) D.40005;
                    D.39988->dreg = D.40006;
                    D.39988 = iargs[0];
                    D.40007 = D.39988->opcode;
                    if (D.40007 == 427) goto <D.40008>; else goto <D.40009>;
                    <D.40008>:
                    D.39988 = iargs[0];
                    D.33491 = cfg->varinfo;
                    D.39993 = __domain_var->data.op[0].const_val;
                    D.39994 = (unsigned int) D.39993;
                    D.39995 = D.39994 * 4;
                    D.39996 = D.33491 + D.39995;
                    D.39997 = *D.39996;
                    D.39998 = D.39997->data.op[1].vtype;
                    D.40010 = mono_class_from_mono_type (D.39998);
                    D.39988->klass = D.40010;
                    <D.40009>:
                  }
                  goto <D.39985>;
                  <D.39984>:
                  D.32755 = cfg->mempool;
                  D.40011 = mono_mempool_alloc (D.32755, 56);
                  iargs[0] = D.40011;
                  D.39988 = iargs[0];
                  D.39988 = iargs[0];
                  D.39988->data.op[1].const_val = 0;
                  D.39989 = D.39988->data.op[1].const_val;
                  D.39988->data.op[0].const_val = D.39989;
                  D.39988 = iargs[0];
                  D.39988 = iargs[0];
                  D.39988->prev = 0B;
                  D.39990 = D.39988->prev;
                  D.39988->next = D.39990;
                  D.39988 = iargs[0];
                  D.39988->opcode = 362;
                  D.39988 = iargs[0];
                  D.39988->flags = 0;
                  D.39988 = iargs[0];
                  D.39988->type = 0;
                  D.39988 = iargs[0];
                  D.39988->dreg = -1;
                  D.39988 = iargs[0];
                  D.39988 = iargs[0];
                  D.39988 = iargs[0];
                  D.39988->sreg3 = -1;
                  D.39991 = D.39988->sreg3;
                  D.39988->sreg2 = D.39991;
                  D.39992 = D.39988->sreg2;
                  D.39988->sreg1 = D.39992;
                  D.39988 = iargs[0];
                  D.32979 = cfg->ip;
                  D.39988->cil_code = D.32979;
                  D.39988 = iargs[0];
                  D.32780 = cfg->domain;
                  D.39988->data.op[0].p = D.32780;
                  D.39988 = iargs[0];
                  D.39988->type = 3;
                  D.39988 = iargs[0];
                  D.40012 = alloc_dreg (cfg, 3);
                  D.40013 = (int) D.40012;
                  D.39988->dreg = D.40013;
                  <D.39985>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.40014>; else goto <D.40015>;
                  <D.40014>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.39988 = iargs[0];
                  D.33008->next = D.39988;
                  D.39988 = iargs[0];
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.39988->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  D.39988 = iargs[0];
                  bblock.125->last_ins = D.39988;
                  goto <D.40016>;
                  <D.40015>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  D.39988 = iargs[0];
                  bblock.125->last_ins = D.39988;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.40016>:
                  D.32755 = cfg->mempool;
                  D.40017 = mono_mempool_alloc (D.32755, 56);
                  iargs[1] = D.40017;
                  D.40018 = iargs[1];
                  D.40018 = iargs[1];
                  D.40018->data.op[1].const_val = 0;
                  D.40019 = D.40018->data.op[1].const_val;
                  D.40018->data.op[0].const_val = D.40019;
                  D.40018 = iargs[1];
                  D.40018 = iargs[1];
                  D.40018->prev = 0B;
                  D.40020 = D.40018->prev;
                  D.40018->next = D.40020;
                  D.40018 = iargs[1];
                  D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
                  D.33151 = D.33150 & 64;
                  if (D.33151 != 0) goto <D.40022>; else goto <D.40023>;
                  <D.40022>:
                  iftmp.266 = 732;
                  goto <D.40024>;
                  <D.40023>:
                  iftmp.266 = 362;
                  <D.40024>:
                  D.40018->opcode = iftmp.266;
                  D.40018 = iargs[1];
                  D.40018->flags = 0;
                  D.40018 = iargs[1];
                  D.40018->type = 0;
                  D.40018 = iargs[1];
                  D.40018->dreg = -1;
                  D.40018 = iargs[1];
                  D.40018 = iargs[1];
                  D.40018 = iargs[1];
                  D.40018->sreg3 = -1;
                  D.40025 = D.40018->sreg3;
                  D.40018->sreg2 = D.40025;
                  D.40026 = D.40018->sreg2;
                  D.40018->sreg1 = D.40026;
                  D.40018 = iargs[1];
                  D.32979 = cfg->ip;
                  D.40018->cil_code = D.32979;
                  D.40018 = iargs[1];
                  klass.170 = klass;
                  D.40018->data.op[0].p = klass.170;
                  D.40018 = iargs[1];
                  D.40018->data.op[1].src = 11B;
                  D.40018 = iargs[1];
                  D.40018->type = 3;
                  D.40018 = iargs[1];
                  D.40027 = alloc_dreg (cfg, 3);
                  D.40028 = (int) D.40027;
                  D.40018->dreg = D.40028;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.40029>; else goto <D.40030>;
                  <D.40029>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.40018 = iargs[1];
                  D.33008->next = D.40018;
                  D.40018 = iargs[1];
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.40018->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  D.40018 = iargs[1];
                  bblock.125->last_ins = D.40018;
                  goto <D.40031>;
                  <D.40030>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  D.40018 = iargs[1];
                  bblock.125->last_ins = D.40018;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.40031>:
                  D.33750 = *sp;
                  iargs[2] = D.33750;
                  ins = mono_emit_jit_icall (cfg, mono_array_new, &iargs);
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            goto <D.40032>;
            <D.39982>:
            {
              struct MonoClass * array_type;

              klass.170 = klass;
              array_type = mono_array_class_get (klass.170, 1);
              D.32780 = cfg->domain;
              mono_class_vtable (D.32780, array_type);
              if (array_type == 0B) goto <D.40033>; else goto <D.40035>;
              <D.40035>:
              D.40036 = array_type->exception_type;
              if (D.40036 != 0) goto <D.40033>; else goto <D.40034>;
              <D.40033>:
              cfg->exception_ptr = array_type;
              D.40037 = mini_get_debug_options ();
              D.40038 = D.40037->break_on_unverified;
              if (D.40038 != 0) goto <D.40039>; else goto load_error;
              <D.40039>:
              raise (5);
              <D.40034>:
              D.32755 = cfg->mempool;
              ins = mono_mempool_alloc (D.32755, 56);
              ins->data.op[1].const_val = 0;
              D.32975 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.32975;
              ins->prev = 0B;
              D.32976 = ins->prev;
              ins->next = D.32976;
              ins->opcode = 782;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.32977 = ins->sreg3;
              ins->sreg2 = D.32977;
              D.32978 = ins->sreg2;
              ins->sreg1 = D.32978;
              D.32979 = cfg->ip;
              ins->cil_code = D.32979;
              D.40040 = alloc_ireg_ref (cfg);
              D.40041 = (int) D.40040;
              ins->dreg = D.40041;
              D.33750 = *sp;
              D.33943 = D.33750->dreg;
              ins->sreg1 = D.33943;
              klass.170 = klass;
              ins->data.op[1].klass = klass.170;
              ins->type = 6;
              ins->klass = array_type;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.40042>; else goto <D.40043>;
              <D.40042>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = ins;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              ins->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              goto <D.40044>;
              <D.40043>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.40044>:
              D.33186 = cfg->flags;
              D.40045 = D.33186 | 256;
              cfg->flags = D.40045;
              bblock.125 = cfg->cbb;
              bblock.125->has_array_access = 1;
              mono_get_got_var (cfg);
            }
            <D.40032>:
            <D.39980>:
            len_ins = *sp;
            ip = ip + 5;
            sp.267 = sp;
            sp = sp.267 + 4;
            *sp.267 = ins;
            inline_costs = inline_costs + 1;
            D.33148 = cfg->opt;
            D.35152 = D.33148 & 2048;
            if (D.35152 != 0) goto <D.40047>; else goto <D.40048>;
            <D.40047>:
            D.37547 = ip + 6;
            if (D.37547 < end) goto <D.40049>; else goto <D.40050>;
            <D.40049>:
            bblock.76 = bblock;
            D.40051 = ip + 6;
            D.40052 = ip_in_bb (cfg, bblock.76, D.40051);
            if (D.40052 != 0) goto <D.40053>; else goto <D.40054>;
            <D.40053>:
            D.40055 = len_ins->opcode;
            if (D.40055 == 362) goto <D.40056>; else goto <D.40057>;
            <D.40056>:
            D.34700 = cfg->compile_aot;
            D.34701 = (int) D.34700;
            klass.170 = klass;
            D.40058 = len_ins->data.op[0].const_val;
            D.40059 = (unsigned int) D.40058;
            data_ptr = initialize_array_data (method, D.34701, ip, klass.170, D.40059, &data_size, &field_token);
            if (data_ptr != 0B) goto <D.40060>; else goto <D.40061>;
            <D.40060>:
            {
              struct MonoMethod * memcpy_method;
              struct MonoInst * iargs[3];
              int add_reg;

              try
                {
                  memcpy_method = get_memcpy_method ();
                  D.40062 = alloc_ireg_mp (cfg);
                  add_reg = (int) D.40062;
                  D.32755 = cfg->mempool;
                  D.40063 = mono_mempool_alloc (D.32755, 56);
                  iargs[0] = D.40063;
                  D.40064 = iargs[0];
                  D.40064 = iargs[0];
                  D.40064->data.op[1].const_val = 0;
                  D.40065 = D.40064->data.op[1].const_val;
                  D.40064->data.op[0].const_val = D.40065;
                  D.40064 = iargs[0];
                  D.40064 = iargs[0];
                  D.40064->prev = 0B;
                  D.40066 = D.40064->prev;
                  D.40064->next = D.40066;
                  D.40064 = iargs[0];
                  D.40064->opcode = 625;
                  D.40064 = iargs[0];
                  D.40064->flags = 0;
                  D.40064 = iargs[0];
                  D.40064->type = 0;
                  D.40064 = iargs[0];
                  D.40064->dreg = -1;
                  D.40064 = iargs[0];
                  D.40064 = iargs[0];
                  D.40064 = iargs[0];
                  D.40064->sreg3 = -1;
                  D.40067 = D.40064->sreg3;
                  D.40064->sreg2 = D.40067;
                  D.40068 = D.40064->sreg2;
                  D.40064->sreg1 = D.40068;
                  D.40064 = iargs[0];
                  D.32979 = cfg->ip;
                  D.40064->cil_code = D.32979;
                  D.40064 = iargs[0];
                  D.40064->dreg = add_reg;
                  D.40064 = iargs[0];
                  D.33170 = ins->dreg;
                  D.40064->sreg1 = D.33170;
                  D.40064 = iargs[0];
                  D.40064->data.op[1].const_val = 16;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.40069>; else goto <D.40070>;
                  <D.40069>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.40064 = iargs[0];
                  D.33008->next = D.40064;
                  D.40064 = iargs[0];
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.40064->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  D.40064 = iargs[0];
                  bblock.125->last_ins = D.40064;
                  goto <D.40071>;
                  <D.40070>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  D.40064 = iargs[0];
                  bblock.125->last_ins = D.40064;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.40071>:
                  D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
                  D.33151 = D.33150 & 64;
                  if (D.33151 != 0) goto <D.40072>; else goto <D.40073>;
                  <D.40072>:
                  D.32755 = cfg->mempool;
                  D.40074 = mono_mempool_alloc (D.32755, 56);
                  iargs[1] = D.40074;
                  D.40075 = iargs[1];
                  D.40075 = iargs[1];
                  D.40075->data.op[1].const_val = 0;
                  D.40076 = D.40075->data.op[1].const_val;
                  D.40075->data.op[0].const_val = D.40076;
                  D.40075 = iargs[1];
                  D.40075 = iargs[1];
                  D.40075->prev = 0B;
                  D.40077 = D.40075->prev;
                  D.40075->next = D.40077;
                  D.40075 = iargs[1];
                  D.40075->opcode = 732;
                  D.40075 = iargs[1];
                  D.40075->flags = 0;
                  D.40075 = iargs[1];
                  D.40075->type = 0;
                  D.40075 = iargs[1];
                  D.40075->dreg = -1;
                  D.40075 = iargs[1];
                  D.40075 = iargs[1];
                  D.40075 = iargs[1];
                  D.40075->sreg3 = -1;
                  D.40078 = D.40075->sreg3;
                  D.40075->sreg2 = D.40078;
                  D.40079 = D.40075->sreg2;
                  D.40075->sreg1 = D.40079;
                  D.40075 = iargs[1];
                  D.32979 = cfg->ip;
                  D.40075->cil_code = D.32979;
                  D.40075 = iargs[1];
                  D.32755 = cfg->mempool;
                  D.32693 = method->klass;
                  D.32694 = D.32693->image;
                  field_token.268 = field_token;
                  D.40081 = mono_jump_info_token_new2 (D.32755, D.32694, field_token.268, 0B);
                  D.40075->data.op[0].p = D.40081;
                  D.40075 = iargs[1];
                  D.40075->data.op[1].p = 29B;
                  D.40075 = iargs[1];
                  D.40075->type = 3;
                  D.40075 = iargs[1];
                  D.40075->klass = 0B;
                  D.40075 = iargs[1];
                  D.40082 = alloc_dreg (cfg, 3);
                  D.40083 = (int) D.40082;
                  D.40075->dreg = D.40083;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.40084>; else goto <D.40085>;
                  <D.40084>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.40075 = iargs[1];
                  D.33008->next = D.40075;
                  D.40075 = iargs[1];
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.40075->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  D.40075 = iargs[1];
                  bblock.125->last_ins = D.40075;
                  goto <D.40086>;
                  <D.40085>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  D.40075 = iargs[1];
                  bblock.125->last_ins = D.40075;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.40086>:
                  goto <D.40087>;
                  <D.40073>:
                  D.32755 = cfg->mempool;
                  D.40088 = mono_mempool_alloc (D.32755, 56);
                  iargs[1] = D.40088;
                  D.40075 = iargs[1];
                  D.40075 = iargs[1];
                  D.40075->data.op[1].const_val = 0;
                  D.40076 = D.40075->data.op[1].const_val;
                  D.40075->data.op[0].const_val = D.40076;
                  D.40075 = iargs[1];
                  D.40075 = iargs[1];
                  D.40075->prev = 0B;
                  D.40077 = D.40075->prev;
                  D.40075->next = D.40077;
                  D.40075 = iargs[1];
                  D.40075->opcode = 362;
                  D.40075 = iargs[1];
                  D.40075->flags = 0;
                  D.40075 = iargs[1];
                  D.40075->type = 0;
                  D.40075 = iargs[1];
                  D.40075->dreg = -1;
                  D.40075 = iargs[1];
                  D.40075 = iargs[1];
                  D.40075 = iargs[1];
                  D.40075->sreg3 = -1;
                  D.40078 = D.40075->sreg3;
                  D.40075->sreg2 = D.40078;
                  D.40079 = D.40075->sreg2;
                  D.40075->sreg1 = D.40079;
                  D.40075 = iargs[1];
                  D.32979 = cfg->ip;
                  D.40075->cil_code = D.32979;
                  D.40075 = iargs[1];
                  D.40075->data.op[0].p = data_ptr;
                  D.40075 = iargs[1];
                  D.40075->type = 3;
                  D.40075 = iargs[1];
                  D.40089 = alloc_dreg (cfg, 3);
                  D.40090 = (int) D.40089;
                  D.40075->dreg = D.40090;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.40091>; else goto <D.40092>;
                  <D.40091>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.40075 = iargs[1];
                  D.33008->next = D.40075;
                  D.40075 = iargs[1];
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.40075->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  D.40075 = iargs[1];
                  bblock.125->last_ins = D.40075;
                  goto <D.40093>;
                  <D.40092>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  D.40075 = iargs[1];
                  bblock.125->last_ins = D.40075;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.40093>:
                  <D.40087>:
                  D.32755 = cfg->mempool;
                  D.40094 = mono_mempool_alloc (D.32755, 56);
                  iargs[2] = D.40094;
                  D.40095 = iargs[2];
                  D.40095 = iargs[2];
                  D.40095->data.op[1].const_val = 0;
                  D.40096 = D.40095->data.op[1].const_val;
                  D.40095->data.op[0].const_val = D.40096;
                  D.40095 = iargs[2];
                  D.40095 = iargs[2];
                  D.40095->prev = 0B;
                  D.40097 = D.40095->prev;
                  D.40095->next = D.40097;
                  D.40095 = iargs[2];
                  D.40095->opcode = 362;
                  D.40095 = iargs[2];
                  D.40095->flags = 0;
                  D.40095 = iargs[2];
                  D.40095->type = 0;
                  D.40095 = iargs[2];
                  D.40095->dreg = -1;
                  D.40095 = iargs[2];
                  D.40095 = iargs[2];
                  D.40095 = iargs[2];
                  D.40095->sreg3 = -1;
                  D.40098 = D.40095->sreg3;
                  D.40095->sreg2 = D.40098;
                  D.40099 = D.40095->sreg2;
                  D.40095->sreg1 = D.40099;
                  D.40095 = iargs[2];
                  D.32979 = cfg->ip;
                  D.40095->cil_code = D.32979;
                  D.40095 = iargs[2];
                  data_size.269 = data_size;
                  D.40095->data.op[0].const_val = data_size.269;
                  D.40095 = iargs[2];
                  D.40095->type = 1;
                  D.40095 = iargs[2];
                  D.40101 = alloc_dreg (cfg, 1);
                  D.40102 = (int) D.40101;
                  D.40095->dreg = D.40102;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.40103>; else goto <D.40104>;
                  <D.40103>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.40095 = iargs[2];
                  D.33008->next = D.40095;
                  D.40095 = iargs[2];
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.40095->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  D.40095 = iargs[2];
                  bblock.125->last_ins = D.40095;
                  goto <D.40105>;
                  <D.40104>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  D.40095 = iargs[2];
                  bblock.125->last_ins = D.40095;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.40105>:
                  mono_emit_method_call (cfg, memcpy_method, &iargs, 0B);
                  ip = ip + 11;
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            <D.40061>:
            <D.40057>:
            <D.40054>:
            <D.40050>:
            <D.40048>:
            goto <D.29893>;
          }
        finally
          {
            data_size = {CLOBBER};
            field_token = {CLOBBER};
          }
      }
      <D.30442>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.40106>; else goto <D.40107>;
      <D.40106>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.40108>; else goto <D.40109>;
      <D.40108>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.40110>; else goto <D.40111>;
      <D.40110>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40111>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40109>:
      D.40112 = mini_get_debug_options ();
      D.40113 = D.40112->break_on_unverified;
      if (D.40113 != 0) goto <D.40114>; else goto unverified;
      <D.40114>:
      raise (5);
      <D.40107>:
      sp = sp + 4294967292;
      D.33750 = *sp;
      D.35492 = D.33750->type;
      if (D.35492 != 6) goto <D.40115>; else goto <D.40116>;
      <D.40115>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.40117>; else goto <D.40118>;
      <D.40117>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.40119>; else goto <D.40120>;
      <D.40119>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40120>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40118>:
      D.40121 = mini_get_debug_options ();
      D.40122 = D.40121->break_on_unverified;
      if (D.40122 != 0) goto <D.40123>; else goto unverified;
      <D.40123>:
      raise (5);
      <D.40116>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 783;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.40124 = alloc_preg (cfg);
      D.40125 = (int) D.40124;
      ins->dreg = D.40125;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      ins->type = 1;
      D.33600 = ins->flags;
      D.40126 = D.33600 | 32;
      ins->flags = D.40126;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.40127>; else goto <D.40128>;
      <D.40127>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.40129>;
      <D.40128>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.40129>:
      D.33186 = cfg->flags;
      D.40045 = D.33186 | 256;
      cfg->flags = D.40045;
      bblock.125 = cfg->cbb;
      bblock.125->has_array_access = 1;
      ip = ip + 1;
      sp.270 = sp;
      sp = sp.270 + 4;
      *sp.270 = ins;
      goto <D.29893>;
      <D.30443>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 7) goto <D.40131>; else goto <D.40132>;
      <D.40131>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.40133>; else goto <D.40134>;
      <D.40133>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.40135>; else goto <D.40136>;
      <D.40135>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40136>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40134>:
      D.40137 = mini_get_debug_options ();
      D.40138 = D.40137->break_on_unverified;
      if (D.40138 != 0) goto <D.40139>; else goto unverified;
      <D.40139>:
      raise (5);
      <D.40132>:
      sp = sp + 4294967288;
      D.34195 = ip + 5;
      if (D.34195 > end) goto <D.40140>; else goto <D.40141>;
      <D.40140>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.40142>; else goto <D.40143>;
      <D.40142>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.40144>; else goto <D.40145>;
      <D.40144>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40145>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40143>:
      D.40146 = mini_get_debug_options ();
      D.40147 = D.40146->break_on_unverified;
      if (D.40147 != 0) goto <D.40148>; else goto unverified;
      <D.40148>:
      raise (5);
      <D.40141>:
      D.33750 = *sp;
      D.35492 = D.33750->type;
      if (D.35492 != 6) goto <D.40149>; else goto <D.40150>;
      <D.40149>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.40151>; else goto <D.40152>;
      <D.40151>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.40153>; else goto <D.40154>;
      <D.40153>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40154>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40152>:
      D.40155 = mini_get_debug_options ();
      D.40156 = D.40155->break_on_unverified;
      if (D.40156 != 0) goto <D.40157>; else goto unverified;
      <D.40157>:
      raise (5);
      <D.40150>:
      D.33186 = cfg->flags;
      D.40158 = D.33186 | 4;
      cfg->flags = D.40158;
      D.34214 = ip + 1;
      D.40159 = mono_read32 (D.34214);
      klass.271 = mini_get_class (method, D.40159, generic_context);
      klass = klass.271;
      klass.170 = klass;
      if (klass.170 == 0B) goto <D.40161>; else goto <D.40163>;
      <D.40163>:
      klass.170 = klass;
      D.37490 = klass.170->exception_type;
      if (D.37490 != 0) goto <D.40161>; else goto <D.40162>;
      <D.40161>:
      klass.170 = klass;
      cfg->exception_ptr = klass.170;
      D.40164 = mini_get_debug_options ();
      D.40165 = D.40164->break_on_unverified;
      if (D.40165 != 0) goto <D.40166>; else goto load_error;
      <D.40166>:
      raise (5);
      <D.40162>:
      klass.170 = klass;
      D.38944 = BIT_FIELD_REF <*klass.170, 8, 160>;
      D.38945 = D.38944 & 8;
      if (D.38945 == 0) goto <D.40167>; else goto <D.40168>;
      <D.40167>:
      D.32698 = BIT_FIELD_REF <*method, 8, 160>;
      D.32699 = D.32698 & 124;
      if (D.32699 == 0) goto <D.40169>; else goto <D.40170>;
      <D.40169>:
      if (readonly == 0) goto <D.40171>; else goto <D.40172>;
      <D.40171>:
      {
        struct MonoClass * array_class;

        klass.170 = klass;
        array_class = mono_array_class_get (klass.170, 1);
        D.33750 = *sp;
        mini_emit_check_array_type (cfg, D.33750, array_class);
        if (array_class == 0B) goto <D.40173>; else goto <D.40175>;
        <D.40175>:
        D.40176 = array_class->exception_type;
        if (D.40176 != 0) goto <D.40173>; else goto <D.40174>;
        <D.40173>:
        cfg->exception_ptr = array_class;
        D.40177 = mini_get_debug_options ();
        D.40178 = D.40177->break_on_unverified;
        if (D.40178 != 0) goto <D.40179>; else goto load_error;
        <D.40179>:
        raise (5);
        <D.40174>:
      }
      <D.40172>:
      <D.40170>:
      <D.40168>:
      readonly = 0;
      klass.170 = klass;
      D.33750 = *sp;
      D.34875 = sp + 4;
      D.34876 = *D.34875;
      ins = mini_emit_ldelema_1_ins (cfg, klass.170, D.33750, D.34876, 1);
      sp.272 = sp;
      sp = sp.272 + 4;
      *sp.272 = ins;
      ip = ip + 5;
      goto <D.29893>;
      <D.30445>:
      <D.30446>:
      <D.30447>:
      <D.30448>:
      <D.30449>:
      <D.30450>:
      <D.30451>:
      <D.30452>:
      <D.30453>:
      <D.30454>:
      <D.30455>:
      <D.30456>:
      {
        struct MonoInst * addr;

        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        if (D.33526 <= 7) goto <D.40181>; else goto <D.40182>;
        <D.40181>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.40183>; else goto <D.40184>;
        <D.40183>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.40185>; else goto <D.40186>;
        <D.40185>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40186>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40184>:
        D.40187 = mini_get_debug_options ();
        D.40188 = D.40187->break_on_unverified;
        if (D.40188 != 0) goto <D.40189>; else goto unverified;
        <D.40189>:
        raise (5);
        <D.40182>:
        sp = sp + 4294967288;
        D.33632 = *ip;
        if (D.33632 == 163) goto <D.40190>; else goto <D.40191>;
        <D.40190>:
        D.34195 = ip + 5;
        if (D.34195 > end) goto <D.40192>; else goto <D.40193>;
        <D.40192>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.40194>; else goto <D.40195>;
        <D.40194>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.40196>; else goto <D.40197>;
        <D.40196>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40197>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40195>:
        D.40198 = mini_get_debug_options ();
        D.40199 = D.40198->break_on_unverified;
        if (D.40199 != 0) goto <D.40200>; else goto unverified;
        <D.40200>:
        raise (5);
        <D.40193>:
        D.34214 = ip + 1;
        token = mono_read32 (D.34214);
        klass.273 = mini_get_class (method, token, generic_context);
        klass = klass.273;
        klass.170 = klass;
        if (klass.170 == 0B) goto <D.40202>; else goto <D.40204>;
        <D.40204>:
        klass.170 = klass;
        D.37490 = klass.170->exception_type;
        if (D.37490 != 0) goto <D.40202>; else goto <D.40203>;
        <D.40202>:
        klass.170 = klass;
        cfg->exception_ptr = klass.170;
        D.40205 = mini_get_debug_options ();
        D.40206 = D.40205->break_on_unverified;
        if (D.40206 != 0) goto <D.40207>; else goto load_error;
        <D.40207>:
        raise (5);
        <D.40203>:
        klass.170 = klass;
        mono_class_init (klass.170);
        goto <D.40208>;
        <D.40191>:
        D.33632 = *ip;
        D.33633 = (int) D.33632;
        klass.274 = array_access_to_klass (D.33633);
        klass = klass.274;
        <D.40208>:
        D.33750 = *sp;
        D.35492 = D.33750->type;
        if (D.35492 != 6) goto <D.40210>; else goto <D.40211>;
        <D.40210>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.40212>; else goto <D.40213>;
        <D.40212>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.40214>; else goto <D.40215>;
        <D.40214>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40215>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40213>:
        D.40216 = mini_get_debug_options ();
        D.40217 = D.40216->break_on_unverified;
        if (D.40217 != 0) goto <D.40218>; else goto unverified;
        <D.40218>:
        raise (5);
        <D.40211>:
        D.33186 = cfg->flags;
        D.40158 = D.33186 | 4;
        cfg->flags = D.40158;
        klass.170 = klass;
        D.40219 = mini_is_gsharedvt_variable_klass (cfg, klass.170);
        if (D.40219 != 0) goto <D.40220>; else goto <D.40221>;
        <D.40220>:
        klass.170 = klass;
        D.33750 = *sp;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        addr = mini_emit_ldelema_1_ins (cfg, klass.170, D.33750, D.34876, 1);
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        klass.170 = klass;
        D.37564 = &klass.170->byval_arg;
        D.40222 = mono_type_to_load_membase (cfg, D.37564);
        D.40223 = (short unsigned int) D.40222;
        ins->opcode = D.40223;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        ins->dreg = 0;
        D.40224 = addr->dreg;
        ins->sreg1 = D.40224;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        klass.170 = klass;
        D.37564 = &klass.170->byval_arg;
        type_to_eval_stack_type (cfg, D.37564, ins);
        D.33501 = ins->type;
        D.33502 = (<unnamed type>) D.33501;
        D.40225 = alloc_dreg (cfg, D.33502);
        D.40226 = (int) D.40225;
        ins->dreg = D.40226;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.40227>; else goto <D.40228>;
        <D.40227>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.40229>;
        <D.40228>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.40229>:
        ins->opcode = 399;
        goto <D.40230>;
        <D.40221>:
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        D.37146 = D.34876->opcode;
        if (D.37146 == 362) goto <D.40231>; else goto <D.40232>;
        <D.40231>:
        {
          int array_reg;
          int index_reg;
          int offset;

          D.33750 = *sp;
          array_reg = D.33750->dreg;
          D.34875 = sp + 4;
          D.34876 = *D.34875;
          index_reg = D.34876->dreg;
          klass.170 = klass;
          D.40233 = mono_class_array_element_size (klass.170);
          D.34875 = sp + 4;
          D.34876 = *D.34875;
          D.37171 = D.34876->data.op[0].const_val;
          D.40234 = D.40233 * D.37171;
          D.40235 = (unsigned int) D.40234;
          D.40236 = D.40235 + 16;
          offset = (int) D.40236;
          D.33148 = cfg->opt;
          D.40237 = D.33148 & 134217728;
          if (D.40237 == 0) goto <D.40238>; else goto <D.40239>;
          <D.40238>:
          D.33148 = cfg->opt;
          D.40240 = D.33148 & 262144;
          if (D.40240 == 0) goto <D.40241>; else goto <D.40242>;
          <D.40241>:
          D.32743 = BIT_FIELD_REF <*cfg, 8, 3424>;
          D.33386 = D.32743 & 64;
          if (D.33386 != 0) goto <D.40243>; else goto <D.40244>;
          <D.40243>:
          {
            struct MonoInst * inst;

            D.32755 = cfg->mempool;
            inst = mono_mempool_alloc (D.32755, 56);
            inst->data.op[1].const_val = 0;
            D.40245 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.40245;
            inst->prev = 0B;
            D.40246 = inst->prev;
            inst->next = D.40246;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.40247 = inst->sreg3;
            inst->sreg2 = D.40247;
            D.40248 = inst->sreg2;
            inst->sreg1 = D.40248;
            D.32979 = cfg->ip;
            inst->cil_code = D.32979;
            inst->dreg = -1;
            inst->sreg1 = array_reg;
            inst->data.op[1].const_val = 0;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.40249>; else goto <D.40250>;
            <D.40249>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = inst;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            inst->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            goto <D.40251>;
            <D.40250>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.40251>:
          }
          {
            struct MonoInst * inst;

            D.32755 = cfg->mempool;
            inst = mono_mempool_alloc (D.32755, 56);
            inst->data.op[1].const_val = 0;
            D.40252 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.40252;
            inst->prev = 0B;
            D.40253 = inst->prev;
            inst->next = D.40253;
            inst->opcode = 451;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.40254 = inst->sreg3;
            inst->sreg2 = D.40254;
            D.40255 = inst->sreg2;
            inst->sreg1 = D.40255;
            D.32979 = cfg->ip;
            inst->cil_code = D.32979;
            inst->data.op[1].p = "NullReferenceException";
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.40256>; else goto <D.40257>;
            <D.40256>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = inst;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            inst->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            goto <D.40258>;
            <D.40257>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.40258>:
          }
          goto <D.40259>;
          <D.40244>:
          <D.40259>:
          if (0 != 0) goto <D.40260>; else goto <D.40261>;
          <D.40260>:
          {
            int _length_reg;

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

              __ins_flags = 32;
              D.40265 = __ins_flags & 32;
              if (D.40265 != 0) goto <D.40266>; else goto <D.40267>;
              <D.40266>:
              D.32743 = BIT_FIELD_REF <*cfg, 8, 3424>;
              D.33386 = D.32743 & 64;
              if (D.33386 != 0) goto <D.40268>; else goto <D.40269>;
              <D.40268>:
              {
                struct MonoInst * inst;

                D.32755 = cfg->mempool;
                inst = mono_mempool_alloc (D.32755, 56);
                inst->data.op[1].const_val = 0;
                D.40270 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.40270;
                inst->prev = 0B;
                D.40271 = inst->prev;
                inst->next = D.40271;
                inst->opcode = 323;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.40272 = inst->sreg3;
                inst->sreg2 = D.40272;
                D.40273 = inst->sreg2;
                inst->sreg1 = D.40273;
                D.32979 = cfg->ip;
                inst->cil_code = D.32979;
                inst->dreg = -1;
                inst->sreg1 = array_reg;
                inst->data.op[1].const_val = 0;
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                if (D.33008 != 0B) goto <D.40274>; else goto <D.40275>;
                <D.40274>:
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                D.33008->next = inst;
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                inst->prev = D.33008;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                goto <D.40276>;
                <D.40275>:
                bblock.125 = cfg->cbb;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                D.33008 = bblock.125->last_ins;
                bblock.125->code = D.33008;
                <D.40276>:
              }
              {
                struct MonoInst * inst;

                D.32755 = cfg->mempool;
                inst = mono_mempool_alloc (D.32755, 56);
                inst->data.op[1].const_val = 0;
                D.40277 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.40277;
                inst->prev = 0B;
                D.40278 = inst->prev;
                inst->next = D.40278;
                inst->opcode = 451;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.40279 = inst->sreg3;
                inst->sreg2 = D.40279;
                D.40280 = inst->sreg2;
                inst->sreg1 = D.40280;
                D.32979 = cfg->ip;
                inst->cil_code = D.32979;
                inst->data.op[1].p = "NullReferenceException";
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                if (D.33008 != 0B) goto <D.40281>; else goto <D.40282>;
                <D.40281>:
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                D.33008->next = inst;
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                inst->prev = D.33008;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                goto <D.40283>;
                <D.40282>:
                bblock.125 = cfg->cbb;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                D.33008 = bblock.125->last_ins;
                bblock.125->code = D.33008;
                <D.40283>:
              }
              goto <D.40284>;
              <D.40269>:
              <D.40284>:
              <D.40267>:
              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.40285 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.40285;
              inst->prev = 0B;
              D.40286 = inst->prev;
              inst->next = D.40286;
              inst->opcode = 393;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.40287 = inst->sreg3;
              inst->sreg2 = D.40287;
              D.40288 = inst->sreg2;
              inst->sreg1 = D.40288;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = _length_reg;
              inst->sreg1 = array_reg;
              inst->data.op[0].const_val = 12;
              inst->type = 1;
              D.40289 = (unsigned char) __ins_flags;
              inst->flags = D.40289;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.40290>; else goto <D.40291>;
              <D.40290>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.40292>;
              <D.40291>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.40292>:
            }
            goto <D.40293>;
            <D.40264>:
            {
              struct MonoInst * inst;
              int __ins_flags;

              __ins_flags = 64;
              D.40294 = __ins_flags & 32;
              if (D.40294 != 0) goto <D.40295>; else goto <D.40296>;
              <D.40295>:
              D.32743 = BIT_FIELD_REF <*cfg, 8, 3424>;
              D.33386 = D.32743 & 64;
              if (D.33386 != 0) goto <D.40297>; else goto <D.40298>;
              <D.40297>:
              {
                struct MonoInst * inst;

                D.32755 = cfg->mempool;
                inst = mono_mempool_alloc (D.32755, 56);
                inst->data.op[1].const_val = 0;
                D.40299 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.40299;
                inst->prev = 0B;
                D.40300 = inst->prev;
                inst->next = D.40300;
                inst->opcode = 323;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.40301 = inst->sreg3;
                inst->sreg2 = D.40301;
                D.40302 = inst->sreg2;
                inst->sreg1 = D.40302;
                D.32979 = cfg->ip;
                inst->cil_code = D.32979;
                inst->dreg = -1;
                inst->sreg1 = array_reg;
                inst->data.op[1].const_val = 0;
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                if (D.33008 != 0B) goto <D.40303>; else goto <D.40304>;
                <D.40303>:
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                D.33008->next = inst;
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                inst->prev = D.33008;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                goto <D.40305>;
                <D.40304>:
                bblock.125 = cfg->cbb;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                D.33008 = bblock.125->last_ins;
                bblock.125->code = D.33008;
                <D.40305>:
              }
              {
                struct MonoInst * inst;

                D.32755 = cfg->mempool;
                inst = mono_mempool_alloc (D.32755, 56);
                inst->data.op[1].const_val = 0;
                D.40306 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.40306;
                inst->prev = 0B;
                D.40307 = inst->prev;
                inst->next = D.40307;
                inst->opcode = 451;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.40308 = inst->sreg3;
                inst->sreg2 = D.40308;
                D.40309 = inst->sreg2;
                inst->sreg1 = D.40309;
                D.32979 = cfg->ip;
                inst->cil_code = D.32979;
                inst->data.op[1].p = "NullReferenceException";
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                if (D.33008 != 0B) goto <D.40310>; else goto <D.40311>;
                <D.40310>:
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                D.33008->next = inst;
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                inst->prev = D.33008;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                goto <D.40312>;
                <D.40311>:
                bblock.125 = cfg->cbb;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                D.33008 = bblock.125->last_ins;
                bblock.125->code = D.33008;
                <D.40312>:
              }
              goto <D.40313>;
              <D.40298>:
              <D.40313>:
              <D.40296>:
              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.40314 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.40314;
              inst->prev = 0B;
              D.40315 = inst->prev;
              inst->next = D.40315;
              inst->opcode = 393;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.40316 = inst->sreg3;
              inst->sreg2 = D.40316;
              D.40317 = inst->sreg2;
              inst->sreg1 = D.40317;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = _length_reg;
              inst->sreg1 = array_reg;
              inst->data.op[0].const_val = 12;
              inst->type = 1;
              D.40318 = (unsigned char) __ins_flags;
              inst->flags = D.40318;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.40319>; else goto <D.40320>;
              <D.40319>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.40321>;
              <D.40320>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.40321>:
            }
            <D.40293>:
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.40322 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.40322;
              inst->prev = 0B;
              D.40323 = inst->prev;
              inst->next = D.40323;
              inst->opcode = 322;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.40324 = inst->sreg3;
              inst->sreg2 = D.40324;
              D.40325 = inst->sreg2;
              inst->sreg1 = D.40325;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = -1;
              inst->sreg1 = _length_reg;
              inst->sreg2 = index_reg;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.40326>; else goto <D.40327>;
              <D.40326>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.40328>;
              <D.40327>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.40328>:
            }
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.40329 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.40329;
              inst->prev = 0B;
              D.40330 = inst->prev;
              inst->next = D.40330;
              inst->opcode = 459;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.40331 = inst->sreg3;
              inst->sreg2 = D.40331;
              D.40332 = inst->sreg2;
              inst->sreg1 = D.40332;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->data.op[1].p = "IndexOutOfRangeException";
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.40333>; else goto <D.40334>;
              <D.40333>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.40335>;
              <D.40334>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.40335>:
            }
          }
          goto <D.40336>;
          <D.40261>:
          {
            int _length_reg;

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

              __ins_flags = 32;
              D.40340 = __ins_flags & 32;
              if (D.40340 != 0) goto <D.40341>; else goto <D.40342>;
              <D.40341>:
              D.32743 = BIT_FIELD_REF <*cfg, 8, 3424>;
              D.33386 = D.32743 & 64;
              if (D.33386 != 0) goto <D.40343>; else goto <D.40344>;
              <D.40343>:
              {
                struct MonoInst * inst;

                D.32755 = cfg->mempool;
                inst = mono_mempool_alloc (D.32755, 56);
                inst->data.op[1].const_val = 0;
                D.40345 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.40345;
                inst->prev = 0B;
                D.40346 = inst->prev;
                inst->next = D.40346;
                inst->opcode = 323;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.40347 = inst->sreg3;
                inst->sreg2 = D.40347;
                D.40348 = inst->sreg2;
                inst->sreg1 = D.40348;
                D.32979 = cfg->ip;
                inst->cil_code = D.32979;
                inst->dreg = -1;
                inst->sreg1 = array_reg;
                inst->data.op[1].const_val = 0;
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                if (D.33008 != 0B) goto <D.40349>; else goto <D.40350>;
                <D.40349>:
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                D.33008->next = inst;
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                inst->prev = D.33008;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                goto <D.40351>;
                <D.40350>:
                bblock.125 = cfg->cbb;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                D.33008 = bblock.125->last_ins;
                bblock.125->code = D.33008;
                <D.40351>:
              }
              {
                struct MonoInst * inst;

                D.32755 = cfg->mempool;
                inst = mono_mempool_alloc (D.32755, 56);
                inst->data.op[1].const_val = 0;
                D.40352 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.40352;
                inst->prev = 0B;
                D.40353 = inst->prev;
                inst->next = D.40353;
                inst->opcode = 451;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.40354 = inst->sreg3;
                inst->sreg2 = D.40354;
                D.40355 = inst->sreg2;
                inst->sreg1 = D.40355;
                D.32979 = cfg->ip;
                inst->cil_code = D.32979;
                inst->data.op[1].p = "NullReferenceException";
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                if (D.33008 != 0B) goto <D.40356>; else goto <D.40357>;
                <D.40356>:
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                D.33008->next = inst;
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                inst->prev = D.33008;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                goto <D.40358>;
                <D.40357>:
                bblock.125 = cfg->cbb;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                D.33008 = bblock.125->last_ins;
                bblock.125->code = D.33008;
                <D.40358>:
              }
              goto <D.40359>;
              <D.40344>:
              <D.40359>:
              <D.40342>:
              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.40360 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.40360;
              inst->prev = 0B;
              D.40361 = inst->prev;
              inst->next = D.40361;
              inst->opcode = 393;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.40362 = inst->sreg3;
              inst->sreg2 = D.40362;
              D.40363 = inst->sreg2;
              inst->sreg1 = D.40363;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = _length_reg;
              inst->sreg1 = array_reg;
              inst->data.op[0].const_val = 12;
              inst->type = 1;
              D.40364 = (unsigned char) __ins_flags;
              inst->flags = D.40364;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.40365>; else goto <D.40366>;
              <D.40365>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.40367>;
              <D.40366>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.40367>:
            }
            goto <D.40368>;
            <D.40339>:
            {
              struct MonoInst * inst;
              int __ins_flags;

              __ins_flags = 64;
              D.40369 = __ins_flags & 32;
              if (D.40369 != 0) goto <D.40370>; else goto <D.40371>;
              <D.40370>:
              D.32743 = BIT_FIELD_REF <*cfg, 8, 3424>;
              D.33386 = D.32743 & 64;
              if (D.33386 != 0) goto <D.40372>; else goto <D.40373>;
              <D.40372>:
              {
                struct MonoInst * inst;

                D.32755 = cfg->mempool;
                inst = mono_mempool_alloc (D.32755, 56);
                inst->data.op[1].const_val = 0;
                D.40374 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.40374;
                inst->prev = 0B;
                D.40375 = inst->prev;
                inst->next = D.40375;
                inst->opcode = 323;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.40376 = inst->sreg3;
                inst->sreg2 = D.40376;
                D.40377 = inst->sreg2;
                inst->sreg1 = D.40377;
                D.32979 = cfg->ip;
                inst->cil_code = D.32979;
                inst->dreg = -1;
                inst->sreg1 = array_reg;
                inst->data.op[1].const_val = 0;
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                if (D.33008 != 0B) goto <D.40378>; else goto <D.40379>;
                <D.40378>:
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                D.33008->next = inst;
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                inst->prev = D.33008;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                goto <D.40380>;
                <D.40379>:
                bblock.125 = cfg->cbb;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                D.33008 = bblock.125->last_ins;
                bblock.125->code = D.33008;
                <D.40380>:
              }
              {
                struct MonoInst * inst;

                D.32755 = cfg->mempool;
                inst = mono_mempool_alloc (D.32755, 56);
                inst->data.op[1].const_val = 0;
                D.40381 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.40381;
                inst->prev = 0B;
                D.40382 = inst->prev;
                inst->next = D.40382;
                inst->opcode = 451;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.40383 = inst->sreg3;
                inst->sreg2 = D.40383;
                D.40384 = inst->sreg2;
                inst->sreg1 = D.40384;
                D.32979 = cfg->ip;
                inst->cil_code = D.32979;
                inst->data.op[1].p = "NullReferenceException";
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                if (D.33008 != 0B) goto <D.40385>; else goto <D.40386>;
                <D.40385>:
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                D.33008->next = inst;
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                inst->prev = D.33008;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                goto <D.40387>;
                <D.40386>:
                bblock.125 = cfg->cbb;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                D.33008 = bblock.125->last_ins;
                bblock.125->code = D.33008;
                <D.40387>:
              }
              goto <D.40388>;
              <D.40373>:
              <D.40388>:
              <D.40371>:
              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.40389 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.40389;
              inst->prev = 0B;
              D.40390 = inst->prev;
              inst->next = D.40390;
              inst->opcode = 393;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.40391 = inst->sreg3;
              inst->sreg2 = D.40391;
              D.40392 = inst->sreg2;
              inst->sreg1 = D.40392;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = _length_reg;
              inst->sreg1 = array_reg;
              inst->data.op[0].const_val = 12;
              inst->type = 1;
              D.40393 = (unsigned char) __ins_flags;
              inst->flags = D.40393;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.40394>; else goto <D.40395>;
              <D.40394>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.40396>;
              <D.40395>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.40396>:
            }
            <D.40368>:
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.40397 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.40397;
              inst->prev = 0B;
              D.40398 = inst->prev;
              inst->next = D.40398;
              inst->opcode = 322;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.40399 = inst->sreg3;
              inst->sreg2 = D.40399;
              D.40400 = inst->sreg2;
              inst->sreg1 = D.40400;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = -1;
              inst->sreg1 = _length_reg;
              inst->sreg2 = index_reg;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.40401>; else goto <D.40402>;
              <D.40401>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.40403>;
              <D.40402>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.40403>:
            }
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.40404 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.40404;
              inst->prev = 0B;
              D.40405 = inst->prev;
              inst->next = D.40405;
              inst->opcode = 459;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.40406 = inst->sreg3;
              inst->sreg2 = D.40406;
              D.40407 = inst->sreg2;
              inst->sreg1 = D.40407;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->data.op[1].p = "IndexOutOfRangeException";
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.40408>; else goto <D.40409>;
              <D.40408>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.40410>;
              <D.40409>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.40410>:
            }
          }
          <D.40336>:
          goto <D.40411>;
          <D.40242>:
          {
            struct MonoInst * ins;

            D.32755 = cfg->mempool;
            ins = mono_mempool_alloc (D.32755, 56);
            ins->data.op[1].const_val = 0;
            D.40412 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.40412;
            ins->prev = 0B;
            D.40413 = ins->prev;
            ins->next = D.40413;
            ins->opcode = 784;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.40414 = ins->sreg3;
            ins->sreg2 = D.40414;
            D.40415 = ins->sreg2;
            ins->sreg1 = D.40415;
            D.32979 = cfg->ip;
            ins->cil_code = D.32979;
            ins->sreg1 = array_reg;
            ins->sreg2 = index_reg;
            ins->data.op[1].const_val = 12;
            D.40416 = ins->flags;
            D.40417 = D.40416 | 32;
            ins->flags = D.40417;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.40418>; else goto <D.40419>;
            <D.40418>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = ins;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            ins->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            goto <D.40420>;
            <D.40419>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.40420>:
            D.33186 = cfg->flags;
            D.40045 = D.33186 | 256;
            cfg->flags = D.40045;
            bblock.125 = cfg->cbb;
            bblock.125->has_array_access = 1;
          }
          <D.40411>:
          <D.40239>:
          D.32755 = cfg->mempool;
          ins = mono_mempool_alloc (D.32755, 56);
          ins->data.op[1].const_val = 0;
          D.32975 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.32975;
          ins->prev = 0B;
          D.32976 = ins->prev;
          ins->next = D.32976;
          klass.170 = klass;
          D.37564 = &klass.170->byval_arg;
          D.40421 = mono_type_to_load_membase (cfg, D.37564);
          D.40422 = (short unsigned int) D.40421;
          ins->opcode = D.40422;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.32977 = ins->sreg3;
          ins->sreg2 = D.32977;
          D.32978 = ins->sreg2;
          ins->sreg1 = D.32978;
          D.32979 = cfg->ip;
          ins->cil_code = D.32979;
          ins->dreg = 0;
          ins->sreg1 = array_reg;
          ins->data.op[0].const_val = offset;
          ins->type = 1;
          klass.170 = klass;
          D.37564 = &klass.170->byval_arg;
          type_to_eval_stack_type (cfg, D.37564, ins);
          D.33501 = ins->type;
          D.33502 = (<unnamed type>) D.33501;
          D.40423 = alloc_dreg (cfg, D.33502);
          D.40424 = (int) D.40423;
          ins->dreg = D.40424;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.40425>; else goto <D.40426>;
          <D.40425>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = ins;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          ins->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          goto <D.40427>;
          <D.40426>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = ins;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.40427>:
        }
        goto <D.40428>;
        <D.40232>:
        klass.170 = klass;
        D.33750 = *sp;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        addr = mini_emit_ldelema_1_ins (cfg, klass.170, D.33750, D.34876, 1);
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        klass.170 = klass;
        D.37564 = &klass.170->byval_arg;
        D.40429 = mono_type_to_load_membase (cfg, D.37564);
        D.40430 = (short unsigned int) D.40429;
        ins->opcode = D.40430;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        ins->dreg = 0;
        D.40224 = addr->dreg;
        ins->sreg1 = D.40224;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        klass.170 = klass;
        D.37564 = &klass.170->byval_arg;
        type_to_eval_stack_type (cfg, D.37564, ins);
        D.33501 = ins->type;
        D.33502 = (<unnamed type>) D.33501;
        D.40431 = alloc_dreg (cfg, D.33502);
        D.40432 = (int) D.40431;
        ins->dreg = D.40432;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.40433>; else goto <D.40434>;
        <D.40433>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.40435>;
        <D.40434>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.40435>:
        <D.40428>:
        <D.40230>:
        sp.275 = sp;
        sp = sp.275 + 4;
        *sp.275 = ins;
        D.33632 = *ip;
        if (D.33632 == 163) goto <D.40437>; else goto <D.40438>;
        <D.40437>:
        ip = ip + 5;
        goto <D.40439>;
        <D.40438>:
        ip = ip + 1;
        <D.40439>:
        goto <D.29893>;
      }
      <D.30486>:
      <D.30487>:
      <D.30488>:
      <D.30489>:
      <D.30490>:
      <D.30491>:
      <D.30492>:
      <D.30493>:
      <D.30494>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 11) goto <D.40440>; else goto <D.40441>;
      <D.40440>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.40442>; else goto <D.40443>;
      <D.40442>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.40444>; else goto <D.40445>;
      <D.40444>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40445>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40443>:
      D.40446 = mini_get_debug_options ();
      D.40447 = D.40446->break_on_unverified;
      if (D.40447 != 0) goto <D.40448>; else goto unverified;
      <D.40448>:
      raise (5);
      <D.40441>:
      sp = sp + 4294967284;
      D.33186 = cfg->flags;
      D.40158 = D.33186 | 4;
      cfg->flags = D.40158;
      D.33632 = *ip;
      if (D.33632 == 164) goto <D.40449>; else goto <D.40450>;
      <D.40449>:
      D.34195 = ip + 5;
      if (D.34195 > end) goto <D.40451>; else goto <D.40452>;
      <D.40451>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.40453>; else goto <D.40454>;
      <D.40453>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.40455>; else goto <D.40456>;
      <D.40455>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40456>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40454>:
      D.40457 = mini_get_debug_options ();
      D.40458 = D.40457->break_on_unverified;
      if (D.40458 != 0) goto <D.40459>; else goto unverified;
      <D.40459>:
      raise (5);
      <D.40452>:
      D.34214 = ip + 1;
      token = mono_read32 (D.34214);
      klass.276 = mini_get_class (method, token, generic_context);
      klass = klass.276;
      klass.170 = klass;
      if (klass.170 == 0B) goto <D.40461>; else goto <D.40463>;
      <D.40463>:
      klass.170 = klass;
      D.37490 = klass.170->exception_type;
      if (D.37490 != 0) goto <D.40461>; else goto <D.40462>;
      <D.40461>:
      klass.170 = klass;
      cfg->exception_ptr = klass.170;
      D.40464 = mini_get_debug_options ();
      D.40465 = D.40464->break_on_unverified;
      if (D.40465 != 0) goto <D.40466>; else goto load_error;
      <D.40466>:
      raise (5);
      <D.40462>:
      klass.170 = klass;
      mono_class_init (klass.170);
      goto <D.40467>;
      <D.40450>:
      D.33632 = *ip;
      D.33633 = (int) D.33632;
      klass.277 = array_access_to_klass (D.33633);
      klass = klass.277;
      <D.40467>:
      D.33750 = *sp;
      D.35492 = D.33750->type;
      if (D.35492 != 6) goto <D.40469>; else goto <D.40470>;
      <D.40469>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.40471>; else goto <D.40472>;
      <D.40471>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.40473>; else goto <D.40474>;
      <D.40473>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40474>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40472>:
      D.40475 = mini_get_debug_options ();
      D.40476 = D.40475->break_on_unverified;
      if (D.40476 != 0) goto <D.40477>; else goto unverified;
      <D.40477>:
      raise (5);
      <D.40470>:
      klass.170 = klass;
      emit_array_store (cfg, klass.170, sp, 1);
      D.33632 = *ip;
      if (D.33632 == 164) goto <D.40478>; else goto <D.40479>;
      <D.40478>:
      ip = ip + 5;
      goto <D.40480>;
      <D.40479>:
      ip = ip + 1;
      <D.40480>:
      inline_costs = inline_costs + 1;
      goto <D.29893>;
      <D.30495>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.40481>; else goto <D.40482>;
      <D.40481>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.40483>; else goto <D.40484>;
      <D.40483>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.40485>; else goto <D.40486>;
      <D.40485>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40486>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40484>:
      D.40487 = mini_get_debug_options ();
      D.40488 = D.40487->break_on_unverified;
      if (D.40488 != 0) goto <D.40489>; else goto unverified;
      <D.40489>:
      raise (5);
      <D.40482>:
      sp = sp + 4294967292;
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 728;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      D.40490 = alloc_freg (cfg);
      D.40491 = (int) D.40490;
      ins->dreg = D.40491;
      ins->type = 4;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      if (D.33093 != 0B) goto <D.40492>; else goto <D.40493>;
      <D.40492>:
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      D.33093->next = ins;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      ins->prev = D.33093;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      goto <D.40494>;
      <D.40493>:
      bblock.76 = bblock;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      D.33093 = bblock.76->last_ins;
      bblock.76->code = D.33093;
      <D.40494>:
      sp.278 = sp;
      sp = sp.278 + 4;
      D.40496 = mono_decompose_opcode (cfg, ins);
      *sp.278 = D.40496;
      ip = ip + 1;
      goto <D.29893>;
      <D.30496>:
      {
        struct MonoInst * src_var;
        struct MonoInst * src;
        int klass_reg;
        int dreg;

        D.40497 = alloc_preg (cfg);
        klass_reg = (int) D.40497;
        D.40498 = alloc_preg (cfg);
        dreg = (int) D.40498;
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.40499>; else goto <D.40500>;
        <D.40499>:
        D.32693 = method->klass;
        D.34423 = D.32693->name_space;
        D.32693 = method->klass;
        D.34424 = D.32693->name;
        D.34425 = method->name;
        D.34426 = method->signature;
        D.34427 = D.34426->param_count;
        D.34428 = (int) D.34427;
        D.33632 = *ip;
        D.33633 = (int) D.33632;
        D.40501 = mono_opcode_name (D.33633);
        D.40502 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.34423, D.34424, D.34425, D.34428, D.40501, "method-to-ir.c", 10668);
        cfg->exception_message = D.40502;
        D.32836 = cfg->verbose_level;
        if (D.32836 > 1) goto <D.40503>; else goto <D.40504>;
        <D.40503>:
        D.34433 = cfg->exception_message;
        printf ("%s\n", D.34433);
        <D.40504>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40500>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        if (D.33526 <= 3) goto <D.40505>; else goto <D.40506>;
        <D.40505>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.40507>; else goto <D.40508>;
        <D.40507>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.40509>; else goto <D.40510>;
        <D.40509>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40510>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40508>:
        D.40511 = mini_get_debug_options ();
        D.40512 = D.40511->break_on_unverified;
        if (D.40512 != 0) goto <D.40513>; else goto unverified;
        <D.40513>:
        raise (5);
        <D.40506>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        D.33632 = *ip;
        D.36443 = (short unsigned int) D.33632;
        ins->opcode = D.36443;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        sp = sp + 4294967292;
        D.34195 = ip + 5;
        if (D.34195 > end) goto <D.40514>; else goto <D.40515>;
        <D.40514>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.40516>; else goto <D.40517>;
        <D.40516>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.40518>; else goto <D.40519>;
        <D.40518>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40519>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40517>:
        D.40520 = mini_get_debug_options ();
        D.40521 = D.40520->break_on_unverified;
        if (D.40521 != 0) goto <D.40522>; else goto unverified;
        <D.40522>:
        raise (5);
        <D.40515>:
        D.34214 = ip + 1;
        D.40523 = mono_read32 (D.34214);
        klass.279 = mono_class_get_full (image, D.40523, generic_context);
        klass = klass.279;
        klass.170 = klass;
        if (klass.170 == 0B) goto <D.40525>; else goto <D.40527>;
        <D.40527>:
        klass.170 = klass;
        D.37490 = klass.170->exception_type;
        if (D.37490 != 0) goto <D.40525>; else goto <D.40526>;
        <D.40525>:
        klass.170 = klass;
        cfg->exception_ptr = klass.170;
        D.40528 = mini_get_debug_options ();
        D.40529 = D.40528->break_on_unverified;
        if (D.40529 != 0) goto <D.40530>; else goto load_error;
        <D.40530>:
        raise (5);
        <D.40526>:
        klass.170 = klass;
        mono_class_init (klass.170);
        klass.170 = klass;
        context_used = mini_class_check_context_used (cfg, klass.170);
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        D.39187 = (unsigned int) D.33943;
        D.33862 = cfg->vreg_to_inst_len;
        if (D.39187 < D.33862) goto <D.40532>; else goto <D.40533>;
        <D.40532>:
        D.33865 = cfg->vreg_to_inst;
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        D.39190 = (unsigned int) D.33943;
        D.39191 = D.39190 * 4;
        D.39192 = D.33865 + D.39191;
        iftmp.280 = *D.39192;
        goto <D.40534>;
        <D.40533>:
        iftmp.280 = 0B;
        <D.40534>:
        src_var = iftmp.280;
        if (src_var == 0B) goto <D.40535>; else goto <D.40536>;
        <D.40535>:
        D.40537 = mono_defaults.typed_reference_class;
        D.40538 = &D.40537->byval_arg;
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        src_var = mono_compile_create_var_for_vreg (cfg, D.40538, 329, D.33943);
        <D.40536>:
        D.32755 = cfg->mempool;
        src = mono_mempool_alloc (D.32755, 56);
        src->data.op[1].const_val = 0;
        D.40539 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.40539;
        src->prev = 0B;
        D.40540 = src->prev;
        src->next = D.40540;
        src->opcode = 314;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.40541 = src->sreg3;
        src->sreg2 = D.40541;
        D.40542 = src->sreg2;
        src->sreg1 = D.40542;
        D.32979 = cfg->ip;
        src->cil_code = D.32979;
        src->data.op[0].p = src_var;
        D.40543 = src_var->flags;
        D.40544 = D.40543 | 16;
        src_var->flags = D.40544;
        src->type = 5;
        D.40545 = src_var->klass;
        src->klass = D.40545;
        D.40546 = alloc_dreg (cfg, 5);
        D.40547 = (int) D.40546;
        src->dreg = D.40547;
        cfg->has_indirection = 1;
        D.32904 = cfg->gsharedvt;
        D.33836 = D.32904 != 0;
        D.33837 = (long int) D.33836;
        D.33838 = __builtin_expect (D.33837, 0);
        if (D.33838 != 0) goto <D.40548>; else goto <D.40549>;
        <D.40548>:
        D.40550 = src_var->data.op[1].vtype;
        D.40551 = mini_is_gsharedvt_variable_type (cfg, D.40550);
        if (D.40551 != 0) goto <D.40552>; else goto <D.40553>;
        <D.40552>:
        handle_gsharedvt_ldaddr (cfg);
        <D.40553>:
        <D.40549>:
        D.40555 = mono_arch_is_soft_float ();
        if (D.40555 != 0) goto <D.40556>; else goto <D.40557>;
        <D.40556>:
        D.40558 = src_var->type;
        D.40559 = D.40558 == 2;
        D.40560 = D.40558 == 4;
        D.40561 = D.40559 | D.40560;
        D.40562 = (int) D.40561;
        iftmp.281 = (_Bool) D.40562;
        goto <D.40563>;
        <D.40557>:
        D.40564 = src_var->type;
        iftmp.281 = D.40564 == 2;
        <D.40563>:
        if (iftmp.281 != 0) goto <D.40565>; else goto <D.40566>;
        <D.40565>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.40568 = src_var->dreg;
          D.40569 = D.40568 + 1;
          D.40570 = (unsigned int) D.40569;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.40570 < D.33862) goto <D.40571>; else goto <D.40572>;
          <D.40571>:
          D.33865 = cfg->vreg_to_inst;
          D.40568 = src_var->dreg;
          D.40573 = (sizetype) D.40568;
          D.40574 = D.40573 + 1;
          D.40575 = D.40574 * 4;
          D.40576 = D.33865 + D.40575;
          iftmp.282 = *D.40576;
          goto <D.40577>;
          <D.40572>:
          iftmp.282 = 0B;
          <D.40577>:
          var1 = iftmp.282;
          D.40568 = src_var->dreg;
          D.40579 = D.40568 + 2;
          D.40580 = (unsigned int) D.40579;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.40580 < D.33862) goto <D.40581>; else goto <D.40582>;
          <D.40581>:
          D.33865 = cfg->vreg_to_inst;
          D.40568 = src_var->dreg;
          D.40573 = (sizetype) D.40568;
          D.40583 = D.40573 + 2;
          D.40584 = D.40583 * 4;
          D.40585 = D.33865 + D.40584;
          iftmp.283 = *D.40585;
          goto <D.40586>;
          <D.40582>:
          iftmp.283 = 0B;
          <D.40586>:
          var2 = iftmp.283;
          D.40587 = var1 == 0B;
          D.40588 = (long int) D.40587;
          D.40589 = __builtin_expect (D.40588, 0);
          if (D.40589 != 0) goto <D.40590>; else goto <D.40591>;
          <D.40590>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10684, "var1");
          <D.40591>:
          D.40592 = var2 == 0B;
          D.40593 = (long int) D.40592;
          D.40594 = __builtin_expect (D.40593, 0);
          if (D.40594 != 0) goto <D.40595>; else goto <D.40596>;
          <D.40595>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10684, "var2");
          <D.40596>:
          D.40597 = var1->flags;
          D.40598 = D.40597 | 16;
          var1->flags = D.40598;
          D.40599 = var2->flags;
          D.40600 = D.40599 | 16;
          var2->flags = D.40600;
        }
        <D.40566>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.40601>; else goto <D.40602>;
        <D.40601>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = src;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        src->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = src;
        goto <D.40603>;
        <D.40602>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = src;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.40603>:
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.40604 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.40604;
          inst->prev = 0B;
          D.40605 = inst->prev;
          inst->next = D.40605;
          inst->opcode = 388;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.40606 = inst->sreg3;
          inst->sreg2 = D.40606;
          D.40607 = inst->sreg2;
          inst->sreg1 = D.40607;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          inst->dreg = klass_reg;
          D.40608 = src->dreg;
          inst->sreg1 = D.40608;
          inst->data.op[0].const_val = 8;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.40609>; else goto <D.40610>;
          <D.40609>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.40611>;
          <D.40610>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.40611>:
        }
        if (context_used != 0) goto <D.40612>; else goto <D.40613>;
        <D.40612>:
        {
          struct MonoInst * klass_ins;

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

            D.32755 = cfg->mempool;
            inst = mono_mempool_alloc (D.32755, 56);
            inst->data.op[1].const_val = 0;
            D.40614 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.40614;
            inst->prev = 0B;
            D.40615 = inst->prev;
            inst->next = D.40615;
            inst->opcode = 322;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.40616 = inst->sreg3;
            inst->sreg2 = D.40616;
            D.40617 = inst->sreg2;
            inst->sreg1 = D.40617;
            D.32979 = cfg->ip;
            inst->cil_code = D.32979;
            inst->dreg = -1;
            inst->sreg1 = klass_reg;
            D.40618 = klass_ins->dreg;
            inst->sreg2 = D.40618;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.40619>; else goto <D.40620>;
            <D.40619>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = inst;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            inst->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            goto <D.40621>;
            <D.40620>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.40621>:
          }
          {
            struct MonoInst * inst;

            D.32755 = cfg->mempool;
            inst = mono_mempool_alloc (D.32755, 56);
            inst->data.op[1].const_val = 0;
            D.40622 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.40622;
            inst->prev = 0B;
            D.40623 = inst->prev;
            inst->next = D.40623;
            inst->opcode = 456;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.40624 = inst->sreg3;
            inst->sreg2 = D.40624;
            D.40625 = inst->sreg2;
            inst->sreg1 = D.40625;
            D.32979 = cfg->ip;
            inst->cil_code = D.32979;
            inst->data.op[1].p = "InvalidCastException";
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.40626>; else goto <D.40627>;
            <D.40626>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = inst;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            inst->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            goto <D.40628>;
            <D.40627>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.40628>:
          }
        }
        goto <D.40629>;
        <D.40613>:
        klass.170 = klass;
        mini_emit_class_check (cfg, klass_reg, klass.170);
        <D.40629>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 388;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        ins->dreg = dreg;
        D.40608 = src->dreg;
        ins->sreg1 = D.40608;
        ins->data.op[0].const_val = 4;
        ins->type = 1;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.40630>; else goto <D.40631>;
        <D.40630>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.40632>;
        <D.40631>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.40632>:
        ins->type = 5;
        sp.284 = sp;
        sp = sp.284 + 4;
        *sp.284 = ins;
        ip = ip + 5;
        goto <D.29893>;
      }
      <D.30507>:
      {
        struct MonoInst * loc;
        struct MonoInst * addr;

        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.40634>; else goto <D.40635>;
        <D.40634>:
        D.32693 = method->klass;
        D.34423 = D.32693->name_space;
        D.32693 = method->klass;
        D.34424 = D.32693->name;
        D.34425 = method->name;
        D.34426 = method->signature;
        D.34427 = D.34426->param_count;
        D.34428 = (int) D.34427;
        D.33632 = *ip;
        D.33633 = (int) D.33632;
        D.40636 = mono_opcode_name (D.33633);
        D.40637 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.34423, D.34424, D.34425, D.34428, D.40636, "method-to-ir.c", 10708);
        cfg->exception_message = D.40637;
        D.32836 = cfg->verbose_level;
        if (D.32836 > 1) goto <D.40638>; else goto <D.40639>;
        <D.40638>:
        D.34433 = cfg->exception_message;
        printf ("%s\n", D.34433);
        <D.40639>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40635>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        if (D.33526 <= 3) goto <D.40640>; else goto <D.40641>;
        <D.40640>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.40642>; else goto <D.40643>;
        <D.40642>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.40644>; else goto <D.40645>;
        <D.40644>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40645>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40643>:
        D.40646 = mini_get_debug_options ();
        D.40647 = D.40646->break_on_unverified;
        if (D.40647 != 0) goto <D.40648>; else goto unverified;
        <D.40648>:
        raise (5);
        <D.40641>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        D.33632 = *ip;
        D.36443 = (short unsigned int) D.33632;
        ins->opcode = D.36443;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        sp = sp + 4294967292;
        D.34195 = ip + 5;
        if (D.34195 > end) goto <D.40649>; else goto <D.40650>;
        <D.40649>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.40651>; else goto <D.40652>;
        <D.40651>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.40653>; else goto <D.40654>;
        <D.40653>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40654>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40652>:
        D.40655 = mini_get_debug_options ();
        D.40656 = D.40655->break_on_unverified;
        if (D.40656 != 0) goto <D.40657>; else goto unverified;
        <D.40657>:
        raise (5);
        <D.40650>:
        D.34214 = ip + 1;
        D.40658 = mono_read32 (D.34214);
        klass.285 = mono_class_get_full (image, D.40658, generic_context);
        klass = klass.285;
        klass.170 = klass;
        if (klass.170 == 0B) goto <D.40660>; else goto <D.40662>;
        <D.40662>:
        klass.170 = klass;
        D.37490 = klass.170->exception_type;
        if (D.37490 != 0) goto <D.40660>; else goto <D.40661>;
        <D.40660>:
        klass.170 = klass;
        cfg->exception_ptr = klass.170;
        D.40663 = mini_get_debug_options ();
        D.40664 = D.40663->break_on_unverified;
        if (D.40664 != 0) goto <D.40665>; else goto load_error;
        <D.40665>:
        raise (5);
        <D.40661>:
        klass.170 = klass;
        mono_class_init (klass.170);
        klass.170 = klass;
        context_used = mini_class_check_context_used (cfg, klass.170);
        D.40537 = mono_defaults.typed_reference_class;
        D.40538 = &D.40537->byval_arg;
        loc = mono_compile_create_var (cfg, D.40538, 329);
        D.32755 = cfg->mempool;
        addr = mono_mempool_alloc (D.32755, 56);
        addr->data.op[1].const_val = 0;
        D.40666 = addr->data.op[1].const_val;
        addr->data.op[0].const_val = D.40666;
        addr->prev = 0B;
        D.40667 = addr->prev;
        addr->next = D.40667;
        addr->opcode = 314;
        addr->flags = 0;
        addr->type = 0;
        addr->dreg = -1;
        addr->sreg3 = -1;
        D.40668 = addr->sreg3;
        addr->sreg2 = D.40668;
        D.40669 = addr->sreg2;
        addr->sreg1 = D.40669;
        D.32979 = cfg->ip;
        addr->cil_code = D.32979;
        D.33491 = cfg->varinfo;
        D.40670 = loc->data.op[0].const_val;
        D.40671 = (unsigned int) D.40670;
        D.40672 = D.40671 * 4;
        D.40673 = D.33491 + D.40672;
        D.40674 = *D.40673;
        addr->data.op[0].p = D.40674;
        D.33491 = cfg->varinfo;
        D.40670 = loc->data.op[0].const_val;
        D.40671 = (unsigned int) D.40670;
        D.40672 = D.40671 * 4;
        D.40673 = D.33491 + D.40672;
        D.40674 = *D.40673;
        D.33491 = cfg->varinfo;
        D.40670 = loc->data.op[0].const_val;
        D.40671 = (unsigned int) D.40670;
        D.40672 = D.40671 * 4;
        D.40673 = D.33491 + D.40672;
        D.40674 = *D.40673;
        D.40675 = D.40674->flags;
        D.40676 = D.40675 | 16;
        D.40674->flags = D.40676;
        addr->type = 5;
        D.33491 = cfg->varinfo;
        D.40670 = loc->data.op[0].const_val;
        D.40671 = (unsigned int) D.40670;
        D.40672 = D.40671 * 4;
        D.40673 = D.33491 + D.40672;
        D.40674 = *D.40673;
        D.40677 = D.40674->klass;
        addr->klass = D.40677;
        D.40678 = alloc_dreg (cfg, 5);
        D.40679 = (int) D.40678;
        addr->dreg = D.40679;
        cfg->has_indirection = 1;
        D.32904 = cfg->gsharedvt;
        D.33836 = D.32904 != 0;
        D.33837 = (long int) D.33836;
        D.33838 = __builtin_expect (D.33837, 0);
        if (D.33838 != 0) goto <D.40680>; else goto <D.40681>;
        <D.40680>:
        D.33491 = cfg->varinfo;
        D.40670 = loc->data.op[0].const_val;
        D.40671 = (unsigned int) D.40670;
        D.40672 = D.40671 * 4;
        D.40673 = D.33491 + D.40672;
        D.40674 = *D.40673;
        D.40682 = D.40674->data.op[1].vtype;
        D.40683 = mini_is_gsharedvt_variable_type (cfg, D.40682);
        if (D.40683 != 0) goto <D.40684>; else goto <D.40685>;
        <D.40684>:
        handle_gsharedvt_ldaddr (cfg);
        <D.40685>:
        <D.40681>:
        D.40687 = mono_arch_is_soft_float ();
        if (D.40687 != 0) goto <D.40688>; else goto <D.40689>;
        <D.40688>:
        D.33491 = cfg->varinfo;
        D.40670 = loc->data.op[0].const_val;
        D.40671 = (unsigned int) D.40670;
        D.40672 = D.40671 * 4;
        D.40673 = D.33491 + D.40672;
        D.40674 = *D.40673;
        D.40690 = D.40674->type;
        D.40691 = D.40690 == 2;
        D.40692 = D.40690 == 4;
        D.40693 = D.40691 | D.40692;
        D.40694 = (int) D.40693;
        iftmp.286 = (_Bool) D.40694;
        goto <D.40695>;
        <D.40689>:
        D.33491 = cfg->varinfo;
        D.40670 = loc->data.op[0].const_val;
        D.40671 = (unsigned int) D.40670;
        D.40672 = D.40671 * 4;
        D.40673 = D.33491 + D.40672;
        D.40674 = *D.40673;
        D.40696 = D.40674->type;
        iftmp.286 = D.40696 == 2;
        <D.40695>:
        if (iftmp.286 != 0) goto <D.40697>; else goto <D.40698>;
        <D.40697>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.33491 = cfg->varinfo;
          D.40670 = loc->data.op[0].const_val;
          D.40671 = (unsigned int) D.40670;
          D.40672 = D.40671 * 4;
          D.40673 = D.33491 + D.40672;
          D.40674 = *D.40673;
          D.40700 = D.40674->dreg;
          D.40701 = D.40700 + 1;
          D.40702 = (unsigned int) D.40701;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.40702 < D.33862) goto <D.40703>; else goto <D.40704>;
          <D.40703>:
          D.33865 = cfg->vreg_to_inst;
          D.33491 = cfg->varinfo;
          D.40670 = loc->data.op[0].const_val;
          D.40671 = (unsigned int) D.40670;
          D.40672 = D.40671 * 4;
          D.40673 = D.33491 + D.40672;
          D.40674 = *D.40673;
          D.40700 = D.40674->dreg;
          D.40705 = (sizetype) D.40700;
          D.40706 = D.40705 + 1;
          D.40707 = D.40706 * 4;
          D.40708 = D.33865 + D.40707;
          iftmp.287 = *D.40708;
          goto <D.40709>;
          <D.40704>:
          iftmp.287 = 0B;
          <D.40709>:
          var1 = iftmp.287;
          D.33491 = cfg->varinfo;
          D.40670 = loc->data.op[0].const_val;
          D.40671 = (unsigned int) D.40670;
          D.40672 = D.40671 * 4;
          D.40673 = D.33491 + D.40672;
          D.40674 = *D.40673;
          D.40700 = D.40674->dreg;
          D.40711 = D.40700 + 2;
          D.40712 = (unsigned int) D.40711;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.40712 < D.33862) goto <D.40713>; else goto <D.40714>;
          <D.40713>:
          D.33865 = cfg->vreg_to_inst;
          D.33491 = cfg->varinfo;
          D.40670 = loc->data.op[0].const_val;
          D.40671 = (unsigned int) D.40670;
          D.40672 = D.40671 * 4;
          D.40673 = D.33491 + D.40672;
          D.40674 = *D.40673;
          D.40700 = D.40674->dreg;
          D.40705 = (sizetype) D.40700;
          D.40715 = D.40705 + 2;
          D.40716 = D.40715 * 4;
          D.40717 = D.33865 + D.40716;
          iftmp.288 = *D.40717;
          goto <D.40718>;
          <D.40714>:
          iftmp.288 = 0B;
          <D.40718>:
          var2 = iftmp.288;
          D.40719 = var1 == 0B;
          D.40720 = (long int) D.40719;
          D.40721 = __builtin_expect (D.40720, 0);
          if (D.40721 != 0) goto <D.40722>; else goto <D.40723>;
          <D.40722>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10721, "var1");
          <D.40723>:
          D.40724 = var2 == 0B;
          D.40725 = (long int) D.40724;
          D.40726 = __builtin_expect (D.40725, 0);
          if (D.40726 != 0) goto <D.40727>; else goto <D.40728>;
          <D.40727>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10721, "var2");
          <D.40728>:
          D.40729 = var1->flags;
          D.40730 = D.40729 | 16;
          var1->flags = D.40730;
          D.40731 = var2->flags;
          D.40732 = D.40731 | 16;
          var2->flags = D.40732;
        }
        <D.40698>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.40733>; else goto <D.40734>;
        <D.40733>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = addr;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        addr->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = addr;
        goto <D.40735>;
        <D.40734>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = addr;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.40735>:
        if (context_used != 0) goto <D.40736>; else goto <D.40737>;
        <D.40736>:
        {
          struct MonoInst * const_ins;
          int type_reg;

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

            D.32755 = cfg->mempool;
            inst = mono_mempool_alloc (D.32755, 56);
            inst->data.op[1].const_val = 0;
            D.40739 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.40739;
            inst->prev = 0B;
            D.40740 = inst->prev;
            inst->next = D.40740;
            inst->opcode = 377;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.40741 = inst->sreg3;
            inst->sreg2 = D.40741;
            D.40742 = inst->sreg2;
            inst->sreg1 = D.40742;
            D.32979 = cfg->ip;
            inst->cil_code = D.32979;
            D.40743 = const_ins->dreg;
            inst->sreg1 = D.40743;
            D.40744 = addr->dreg;
            inst->dreg = D.40744;
            inst->data.op[0].const_val = 8;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.40745>; else goto <D.40746>;
            <D.40745>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = inst;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            inst->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            goto <D.40747>;
            <D.40746>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.40747>:
          }
          {
            struct MonoInst * inst;

            D.32755 = cfg->mempool;
            inst = mono_mempool_alloc (D.32755, 56);
            inst->data.op[1].const_val = 0;
            D.40748 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.40748;
            inst->prev = 0B;
            D.40749 = inst->prev;
            inst->next = D.40749;
            inst->opcode = 429;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.40750 = inst->sreg3;
            inst->sreg2 = D.40750;
            D.40751 = inst->sreg2;
            inst->sreg1 = D.40751;
            D.32979 = cfg->ip;
            inst->cil_code = D.32979;
            inst->dreg = type_reg;
            D.40743 = const_ins->dreg;
            inst->sreg1 = D.40743;
            inst->data.op[1].const_val = 128;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.40752>; else goto <D.40753>;
            <D.40752>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = inst;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            inst->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            goto <D.40754>;
            <D.40753>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.40754>:
          }
          {
            struct MonoInst * inst;

            D.32755 = cfg->mempool;
            inst = mono_mempool_alloc (D.32755, 56);
            inst->data.op[1].const_val = 0;
            D.40755 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.40755;
            inst->prev = 0B;
            D.40756 = inst->prev;
            inst->next = D.40756;
            inst->opcode = 377;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.40757 = inst->sreg3;
            inst->sreg2 = D.40757;
            D.40758 = inst->sreg2;
            inst->sreg1 = D.40758;
            D.32979 = cfg->ip;
            inst->cil_code = D.32979;
            inst->sreg1 = type_reg;
            D.40744 = addr->dreg;
            inst->dreg = D.40744;
            inst->data.op[0].const_val = 0;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.40759>; else goto <D.40760>;
            <D.40759>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = inst;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            inst->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            goto <D.40761>;
            <D.40760>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.40761>:
          }
        }
        goto <D.40762>;
        <D.40737>:
        D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.33151 = D.33150 & 64;
        if (D.33151 != 0) goto <D.40763>; else goto <D.40764>;
        <D.40763>:
        {
          int const_reg;
          int type_reg;

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

            D.32755 = cfg->mempool;
            inst = mono_mempool_alloc (D.32755, 56);
            inst->data.op[1].const_val = 0;
            D.40767 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.40767;
            inst->prev = 0B;
            D.40768 = inst->prev;
            inst->next = D.40768;
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.40770>; else goto <D.40771>;
            <D.40770>:
            iftmp.289 = 732;
            goto <D.40772>;
            <D.40771>:
            iftmp.289 = 362;
            <D.40772>:
            inst->opcode = iftmp.289;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.40773 = inst->sreg3;
            inst->sreg2 = D.40773;
            D.40774 = inst->sreg2;
            inst->sreg1 = D.40774;
            D.32979 = cfg->ip;
            inst->cil_code = D.32979;
            inst->dreg = const_reg;
            klass.170 = klass;
            inst->data.op[0].p = klass.170;
            inst->data.op[1].const_val = 11;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.40775>; else goto <D.40776>;
            <D.40775>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = inst;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            inst->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            goto <D.40777>;
            <D.40776>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.40777>:
          }
          {
            struct MonoInst * inst;

            D.32755 = cfg->mempool;
            inst = mono_mempool_alloc (D.32755, 56);
            inst->data.op[1].const_val = 0;
            D.40778 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.40778;
            inst->prev = 0B;
            D.40779 = inst->prev;
            inst->next = D.40779;
            inst->opcode = 377;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.40780 = inst->sreg3;
            inst->sreg2 = D.40780;
            D.40781 = inst->sreg2;
            inst->sreg1 = D.40781;
            D.32979 = cfg->ip;
            inst->cil_code = D.32979;
            inst->sreg1 = const_reg;
            D.40744 = addr->dreg;
            inst->dreg = D.40744;
            inst->data.op[0].const_val = 8;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.40782>; else goto <D.40783>;
            <D.40782>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = inst;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            inst->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            goto <D.40784>;
            <D.40783>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.40784>:
          }
          {
            struct MonoInst * inst;

            D.32755 = cfg->mempool;
            inst = mono_mempool_alloc (D.32755, 56);
            inst->data.op[1].const_val = 0;
            D.40785 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.40785;
            inst->prev = 0B;
            D.40786 = inst->prev;
            inst->next = D.40786;
            inst->opcode = 429;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.40787 = inst->sreg3;
            inst->sreg2 = D.40787;
            D.40788 = inst->sreg2;
            inst->sreg1 = D.40788;
            D.32979 = cfg->ip;
            inst->cil_code = D.32979;
            inst->dreg = type_reg;
            inst->sreg1 = const_reg;
            inst->data.op[1].const_val = 128;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.40789>; else goto <D.40790>;
            <D.40789>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = inst;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            inst->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            goto <D.40791>;
            <D.40790>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.40791>:
          }
          {
            struct MonoInst * inst;

            D.32755 = cfg->mempool;
            inst = mono_mempool_alloc (D.32755, 56);
            inst->data.op[1].const_val = 0;
            D.40792 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.40792;
            inst->prev = 0B;
            D.40793 = inst->prev;
            inst->next = D.40793;
            inst->opcode = 377;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.40794 = inst->sreg3;
            inst->sreg2 = D.40794;
            D.40795 = inst->sreg2;
            inst->sreg1 = D.40795;
            D.32979 = cfg->ip;
            inst->cil_code = D.32979;
            inst->sreg1 = type_reg;
            D.40744 = addr->dreg;
            inst->dreg = D.40744;
            inst->data.op[0].const_val = 0;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.40796>; else goto <D.40797>;
            <D.40796>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = inst;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            inst->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            goto <D.40798>;
            <D.40797>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = inst;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.40798>:
          }
        }
        goto <D.40799>;
        <D.40764>:
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.40800 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.40800;
          inst->prev = 0B;
          D.40801 = inst->prev;
          inst->next = D.40801;
          inst->opcode = 384;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.40802 = inst->sreg3;
          inst->sreg2 = D.40802;
          D.40803 = inst->sreg2;
          inst->sreg1 = D.40803;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          D.40744 = addr->dreg;
          inst->dreg = D.40744;
          inst->data.op[0].const_val = 0;
          klass.170 = klass;
          D.37564 = &klass.170->byval_arg;
          D.40804 = (int) D.37564;
          inst->data.op[1].const_val = D.40804;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.40805>; else goto <D.40806>;
          <D.40805>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.40807>;
          <D.40806>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.40807>:
        }
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.40808 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.40808;
          inst->prev = 0B;
          D.40809 = inst->prev;
          inst->next = D.40809;
          inst->opcode = 384;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.40810 = inst->sreg3;
          inst->sreg2 = D.40810;
          D.40811 = inst->sreg2;
          inst->sreg1 = D.40811;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          D.40744 = addr->dreg;
          inst->dreg = D.40744;
          inst->data.op[0].const_val = 8;
          klass.170 = klass;
          klass.290 = (int) klass.170;
          inst->data.op[1].const_val = klass.290;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.40813>; else goto <D.40814>;
          <D.40813>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.40815>;
          <D.40814>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.40815>:
        }
        <D.40799>:
        <D.40762>:
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.40816 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.40816;
          inst->prev = 0B;
          D.40817 = inst->prev;
          inst->next = D.40817;
          inst->opcode = 377;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.40818 = inst->sreg3;
          inst->sreg2 = D.40818;
          D.40819 = inst->sreg2;
          inst->sreg1 = D.40819;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          D.33750 = *sp;
          D.33943 = D.33750->dreg;
          inst->sreg1 = D.33943;
          D.40744 = addr->dreg;
          inst->dreg = D.40744;
          inst->data.op[0].const_val = 4;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.40820>; else goto <D.40821>;
          <D.40820>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.40822>;
          <D.40821>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.40822>:
        }
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 424;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        D.33491 = cfg->varinfo;
        D.40670 = loc->data.op[0].const_val;
        D.40671 = (unsigned int) D.40670;
        D.40672 = D.40671 * 4;
        D.40673 = D.33491 + D.40672;
        D.40674 = *D.40673;
        D.40682 = D.40674->data.op[1].vtype;
        D.40823 = mono_type_to_regmove (cfg, D.40682);
        D.40824 = (short unsigned int) D.40823;
        ins->opcode = D.40824;
        D.33491 = cfg->varinfo;
        D.40670 = loc->data.op[0].const_val;
        D.40671 = (unsigned int) D.40670;
        D.40672 = D.40671 * 4;
        D.40673 = D.33491 + D.40672;
        D.40674 = *D.40673;
        D.40682 = D.40674->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.40682, ins);
        D.33491 = cfg->varinfo;
        D.40670 = loc->data.op[0].const_val;
        D.40671 = (unsigned int) D.40670;
        D.40672 = D.40671 * 4;
        D.40673 = D.33491 + D.40672;
        D.40674 = *D.40673;
        D.40677 = D.40674->klass;
        ins->klass = D.40677;
        D.33491 = cfg->varinfo;
        D.40670 = loc->data.op[0].const_val;
        D.40671 = (unsigned int) D.40670;
        D.40672 = D.40671 * 4;
        D.40673 = D.33491 + D.40672;
        D.40674 = *D.40673;
        D.40700 = D.40674->dreg;
        ins->sreg1 = D.40700;
        D.33501 = ins->type;
        D.33502 = (<unnamed type>) D.33501;
        D.40825 = alloc_dreg (cfg, D.33502);
        D.40826 = (int) D.40825;
        ins->dreg = D.40826;
        D.33505 = ins->opcode;
        if (D.33505 == 427) goto <D.40827>; else goto <D.40828>;
        <D.40827>:
        D.33491 = cfg->varinfo;
        D.40670 = loc->data.op[0].const_val;
        D.40671 = (unsigned int) D.40670;
        D.40672 = D.40671 * 4;
        D.40673 = D.33491 + D.40672;
        D.40674 = *D.40673;
        D.40682 = D.40674->data.op[1].vtype;
        D.40829 = mono_class_from_mono_type (D.40682);
        ins->klass = D.40829;
        <D.40828>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.40830>; else goto <D.40831>;
        <D.40830>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.40832>;
        <D.40831>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.40832>:
        ins->type = 7;
        D.40537 = mono_defaults.typed_reference_class;
        ins->klass = D.40537;
        sp.291 = sp;
        sp = sp.291 + 4;
        *sp.291 = ins;
        ip = ip + 5;
        goto <D.29893>;
      }
      <D.30526>:
      {
        void * handle;
        struct MonoClass * handle_class;

        try
          {
            sp.83 = (int) sp;
            stack_start.84 = (int) stack_start;
            D.33526 = sp.83 - stack_start.84;
            D.33527 = D.33526 /[ex] 4;
            D.33440 = header->max_stack;
            D.33441 = (int) D.33440;
            if (D.33527 >= D.33441) goto <D.40834>; else goto <D.40835>;
            <D.40834>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.40836>; else goto <D.40837>;
            <D.40836>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.40838>; else goto <D.40839>;
            <D.40838>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.40839>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.40837>:
            D.40840 = mini_get_debug_options ();
            D.40841 = D.40840->break_on_unverified;
            if (D.40841 != 0) goto <D.40842>; else goto unverified;
            <D.40842>:
            raise (5);
            <D.40835>:
            D.34195 = ip + 5;
            if (D.34195 > end) goto <D.40843>; else goto <D.40844>;
            <D.40843>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.40845>; else goto <D.40846>;
            <D.40845>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.40847>; else goto <D.40848>;
            <D.40847>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.40848>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.40846>:
            D.40849 = mini_get_debug_options ();
            D.40850 = D.40849->break_on_unverified;
            if (D.40850 != 0) goto <D.40851>; else goto unverified;
            <D.40851>:
            raise (5);
            <D.40844>:
            D.34214 = ip + 1;
            D.40852 = mono_read32 (D.34214);
            n = (int) D.40852;
            D.32698 = BIT_FIELD_REF <*method, 8, 160>;
            D.40853 = D.32698 & 124;
            D.40854 = D.40853 == 68;
            D.40855 = D.40853 == 64;
            D.40856 = D.40854 | D.40855;
            if (D.40856 != 0) goto <D.40857>; else goto <D.40858>;
            <D.40857>:
            n.175 = (unsigned int) n;
            handle = mono_method_get_wrapper_data (method, n.175);
            D.40859 = n + 1;
            D.40860 = (unsigned int) D.40859;
            handle_class.292 = mono_method_get_wrapper_data (method, D.40860);
            handle_class = handle_class.292;
            D.40862 = mono_defaults.typehandle_class;
            handle_class.293 = handle_class;
            if (D.40862 == handle_class.293) goto <D.40864>; else goto <D.40865>;
            <D.40864>:
            handle = &MEM[(struct MonoClass *)handle].byval_arg;
            <D.40865>:
            goto <D.40866>;
            <D.40858>:
            n.178 = (unsigned int) n;
            handle = mono_ldtoken (image, n.178, &handle_class, generic_context);
            <D.40866>:
            if (handle == 0B) goto <D.40867>; else goto <D.40868>;
            <D.40867>:
            D.40869 = mini_get_debug_options ();
            D.40870 = D.40869->break_on_unverified;
            if (D.40870 != 0) goto <D.40871>; else goto load_error;
            <D.40871>:
            raise (5);
            <D.40868>:
            handle_class.293 = handle_class;
            mono_class_init (handle_class.293);
            D.32791 = cfg->generic_sharing_context;
            if (D.32791 != 0B) goto <D.40872>; else goto <D.40873>;
            <D.40872>:
            D.40874 = n >> 24;
            D.40875 = (unsigned int) D.40874;
            D.40876 = D.40875 + 4294967295;
            if (D.40876 <= 1) goto <D.40877>; else goto <D.40878>;
            <D.40877>:
            context_used = 0;
            goto <D.40879>;
            <D.40878>:
            D.40862 = mono_defaults.typehandle_class;
            handle_class.293 = handle_class;
            if (D.40862 == handle_class.293) goto <D.40880>; else goto <D.40881>;
            <D.40880>:
            D.40882 = mono_type_get_type (handle);
            if (D.40882 == 18) goto <D.40883>; else goto <D.40884>;
            <D.40883>:
            context_used = 0;
            goto <D.40885>;
            <D.40884>:
            D.40886 = mono_class_from_mono_type (handle);
            context_used = mini_class_check_context_used (cfg, D.40886);
            <D.40885>:
            goto <D.40887>;
            <D.40881>:
            D.40888 = mono_defaults.fieldhandle_class;
            handle_class.293 = handle_class;
            if (D.40888 == handle_class.293) goto <D.40889>; else goto <D.40890>;
            <D.40889>:
            D.40891 = MEM[(struct MonoClassField *)handle].parent;
            context_used = mini_class_check_context_used (cfg, D.40891);
            goto <D.40892>;
            <D.40890>:
            D.40893 = mono_defaults.methodhandle_class;
            handle_class.293 = handle_class;
            if (D.40893 == handle_class.293) goto <D.40894>; else goto <D.40895>;
            <D.40894>:
            context_used = mini_method_check_context_used (cfg, handle);
            goto <D.40896>;
            <D.40895>:
            monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 10795);
            <D.40896>:
            <D.40892>:
            <D.40887>:
            <D.40879>:
            <D.40873>:
            D.33148 = cfg->opt;
            D.33149 = D.33148 & 512;
            if (D.33149 != 0) goto <D.40899>; else goto <D.40897>;
            <D.40899>:
            D.32698 = BIT_FIELD_REF <*method, 8, 160>;
            D.32699 = D.32698 & 124;
            if (D.32699 != 68) goto <D.40900>; else goto <D.40897>;
            <D.40900>:
            D.32698 = BIT_FIELD_REF <*method, 8, 160>;
            D.32699 = D.32698 & 124;
            if (D.32699 != 64) goto <D.40901>; else goto <D.40897>;
            <D.40901>:
            {
              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.293 = handle_class;
                  D.40902 = &handle_class.293->byval_arg;
                  vtvar = mono_compile_create_var (cfg, D.40902, 329);
                  D.32755 = cfg->mempool;
                  D.40903 = mono_mempool_alloc (D.32755, 56);
                  iargs[0] = D.40903;
                  D.40904 = iargs[0];
                  D.40904 = iargs[0];
                  D.40904->data.op[1].const_val = 0;
                  D.40905 = D.40904->data.op[1].const_val;
                  D.40904->data.op[0].const_val = D.40905;
                  D.40904 = iargs[0];
                  D.40904 = iargs[0];
                  D.40904->prev = 0B;
                  D.40906 = D.40904->prev;
                  D.40904->next = D.40906;
                  D.40904 = iargs[0];
                  D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
                  D.33151 = D.33150 & 64;
                  if (D.33151 != 0) goto <D.40908>; else goto <D.40909>;
                  <D.40908>:
                  iftmp.294 = 732;
                  goto <D.40910>;
                  <D.40909>:
                  iftmp.294 = 362;
                  <D.40910>:
                  D.40904->opcode = iftmp.294;
                  D.40904 = iargs[0];
                  D.40904->flags = 0;
                  D.40904 = iargs[0];
                  D.40904->type = 0;
                  D.40904 = iargs[0];
                  D.40904->dreg = -1;
                  D.40904 = iargs[0];
                  D.40904 = iargs[0];
                  D.40904 = iargs[0];
                  D.40904->sreg3 = -1;
                  D.40911 = D.40904->sreg3;
                  D.40904->sreg2 = D.40911;
                  D.40912 = D.40904->sreg2;
                  D.40904->sreg1 = D.40912;
                  D.40904 = iargs[0];
                  D.32979 = cfg->ip;
                  D.40904->cil_code = D.32979;
                  D.40904 = iargs[0];
                  D.40904->data.op[0].p = image;
                  D.40904 = iargs[0];
                  D.40904->data.op[1].src = 12B;
                  D.40904 = iargs[0];
                  D.40904->type = 3;
                  D.40904 = iargs[0];
                  D.40913 = alloc_dreg (cfg, 3);
                  D.40914 = (int) D.40913;
                  D.40904->dreg = D.40914;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.40915>; else goto <D.40916>;
                  <D.40915>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.40904 = iargs[0];
                  D.33008->next = D.40904;
                  D.40904 = iargs[0];
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.40904->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  D.40904 = iargs[0];
                  bblock.125->last_ins = D.40904;
                  goto <D.40917>;
                  <D.40916>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  D.40904 = iargs[0];
                  bblock.125->last_ins = D.40904;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.40917>:
                  D.32755 = cfg->mempool;
                  D.40918 = mono_mempool_alloc (D.32755, 56);
                  iargs[1] = D.40918;
                  D.40919 = iargs[1];
                  D.40919 = iargs[1];
                  D.40919->data.op[1].const_val = 0;
                  D.40920 = D.40919->data.op[1].const_val;
                  D.40919->data.op[0].const_val = D.40920;
                  D.40919 = iargs[1];
                  D.40919 = iargs[1];
                  D.40919->prev = 0B;
                  D.40921 = D.40919->prev;
                  D.40919->next = D.40921;
                  D.40919 = iargs[1];
                  D.40919->opcode = 362;
                  D.40919 = iargs[1];
                  D.40919->flags = 0;
                  D.40919 = iargs[1];
                  D.40919->type = 0;
                  D.40919 = iargs[1];
                  D.40919->dreg = -1;
                  D.40919 = iargs[1];
                  D.40919 = iargs[1];
                  D.40919 = iargs[1];
                  D.40919->sreg3 = -1;
                  D.40922 = D.40919->sreg3;
                  D.40919->sreg2 = D.40922;
                  D.40923 = D.40919->sreg2;
                  D.40919->sreg1 = D.40923;
                  D.40919 = iargs[1];
                  D.32979 = cfg->ip;
                  D.40919->cil_code = D.32979;
                  D.40919 = iargs[1];
                  D.40919->data.op[0].const_val = n;
                  D.40919 = iargs[1];
                  D.40919->type = 1;
                  D.40919 = iargs[1];
                  D.40924 = alloc_dreg (cfg, 1);
                  D.40925 = (int) D.40924;
                  D.40919->dreg = D.40925;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.40926>; else goto <D.40927>;
                  <D.40926>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.40919 = iargs[1];
                  D.33008->next = D.40919;
                  D.40919 = iargs[1];
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.40919->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  D.40919 = iargs[1];
                  bblock.125->last_ins = D.40919;
                  goto <D.40928>;
                  <D.40927>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  D.40919 = iargs[1];
                  bblock.125->last_ins = D.40919;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.40928>:
                  if (method_context_used != 0) goto <D.40929>; else goto <D.40930>;
                  <D.40929>:
                  D.40931 = emit_get_rgctx_method (cfg, method_context_used, method, 5);
                  iargs[2] = D.40931;
                  ins = mono_emit_jit_icall (cfg, mono_ldtoken_wrapper_generic_shared, &iargs);
                  goto <D.40932>;
                  <D.40930>:
                  D.32755 = cfg->mempool;
                  D.40933 = mono_mempool_alloc (D.32755, 56);
                  iargs[2] = D.40933;
                  D.40934 = iargs[2];
                  D.40934 = iargs[2];
                  D.40934->data.op[1].const_val = 0;
                  D.40935 = D.40934->data.op[1].const_val;
                  D.40934->data.op[0].const_val = D.40935;
                  D.40934 = iargs[2];
                  D.40934 = iargs[2];
                  D.40934->prev = 0B;
                  D.40936 = D.40934->prev;
                  D.40934->next = D.40936;
                  D.40934 = iargs[2];
                  D.40934->opcode = 362;
                  D.40934 = iargs[2];
                  D.40934->flags = 0;
                  D.40934 = iargs[2];
                  D.40934->type = 0;
                  D.40934 = iargs[2];
                  D.40934->dreg = -1;
                  D.40934 = iargs[2];
                  D.40934 = iargs[2];
                  D.40934 = iargs[2];
                  D.40934->sreg3 = -1;
                  D.40937 = D.40934->sreg3;
                  D.40934->sreg2 = D.40937;
                  D.40938 = D.40934->sreg2;
                  D.40934->sreg1 = D.40938;
                  D.40934 = iargs[2];
                  D.32979 = cfg->ip;
                  D.40934->cil_code = D.32979;
                  D.40934 = iargs[2];
                  D.40934->data.op[0].p = generic_context;
                  D.40934 = iargs[2];
                  D.40934->type = 3;
                  D.40934 = iargs[2];
                  D.40939 = alloc_dreg (cfg, 3);
                  D.40940 = (int) D.40939;
                  D.40934->dreg = D.40940;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.40941>; else goto <D.40942>;
                  <D.40941>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.40934 = iargs[2];
                  D.33008->next = D.40934;
                  D.40934 = iargs[2];
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.40934->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  D.40934 = iargs[2];
                  bblock.125->last_ins = D.40934;
                  goto <D.40943>;
                  <D.40942>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  D.40934 = iargs[2];
                  bblock.125->last_ins = D.40934;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.40943>:
                  ins = mono_emit_jit_icall (cfg, mono_ldtoken_wrapper, &iargs);
                  <D.40932>:
                  D.32755 = cfg->mempool;
                  addr = mono_mempool_alloc (D.32755, 56);
                  addr->data.op[1].const_val = 0;
                  D.40944 = addr->data.op[1].const_val;
                  addr->data.op[0].const_val = D.40944;
                  addr->prev = 0B;
                  D.40945 = addr->prev;
                  addr->next = D.40945;
                  addr->opcode = 314;
                  addr->flags = 0;
                  addr->type = 0;
                  addr->dreg = -1;
                  addr->sreg3 = -1;
                  D.40946 = addr->sreg3;
                  addr->sreg2 = D.40946;
                  D.40947 = addr->sreg2;
                  addr->sreg1 = D.40947;
                  D.32979 = cfg->ip;
                  addr->cil_code = D.32979;
                  D.33491 = cfg->varinfo;
                  D.40948 = vtvar->data.op[0].const_val;
                  D.40949 = (unsigned int) D.40948;
                  D.40950 = D.40949 * 4;
                  D.40951 = D.33491 + D.40950;
                  D.40952 = *D.40951;
                  addr->data.op[0].p = D.40952;
                  D.33491 = cfg->varinfo;
                  D.40948 = vtvar->data.op[0].const_val;
                  D.40949 = (unsigned int) D.40948;
                  D.40950 = D.40949 * 4;
                  D.40951 = D.33491 + D.40950;
                  D.40952 = *D.40951;
                  D.33491 = cfg->varinfo;
                  D.40948 = vtvar->data.op[0].const_val;
                  D.40949 = (unsigned int) D.40948;
                  D.40950 = D.40949 * 4;
                  D.40951 = D.33491 + D.40950;
                  D.40952 = *D.40951;
                  D.40953 = D.40952->flags;
                  D.40954 = D.40953 | 16;
                  D.40952->flags = D.40954;
                  addr->type = 5;
                  D.33491 = cfg->varinfo;
                  D.40948 = vtvar->data.op[0].const_val;
                  D.40949 = (unsigned int) D.40948;
                  D.40950 = D.40949 * 4;
                  D.40951 = D.33491 + D.40950;
                  D.40952 = *D.40951;
                  D.40955 = D.40952->klass;
                  addr->klass = D.40955;
                  D.40956 = alloc_dreg (cfg, 5);
                  D.40957 = (int) D.40956;
                  addr->dreg = D.40957;
                  cfg->has_indirection = 1;
                  D.32904 = cfg->gsharedvt;
                  D.33836 = D.32904 != 0;
                  D.33837 = (long int) D.33836;
                  D.33838 = __builtin_expect (D.33837, 0);
                  if (D.33838 != 0) goto <D.40958>; else goto <D.40959>;
                  <D.40958>:
                  D.33491 = cfg->varinfo;
                  D.40948 = vtvar->data.op[0].const_val;
                  D.40949 = (unsigned int) D.40948;
                  D.40950 = D.40949 * 4;
                  D.40951 = D.33491 + D.40950;
                  D.40952 = *D.40951;
                  D.40960 = D.40952->data.op[1].vtype;
                  D.40961 = mini_is_gsharedvt_variable_type (cfg, D.40960);
                  if (D.40961 != 0) goto <D.40962>; else goto <D.40963>;
                  <D.40962>:
                  handle_gsharedvt_ldaddr (cfg);
                  <D.40963>:
                  <D.40959>:
                  D.40965 = mono_arch_is_soft_float ();
                  if (D.40965 != 0) goto <D.40966>; else goto <D.40967>;
                  <D.40966>:
                  D.33491 = cfg->varinfo;
                  D.40948 = vtvar->data.op[0].const_val;
                  D.40949 = (unsigned int) D.40948;
                  D.40950 = D.40949 * 4;
                  D.40951 = D.33491 + D.40950;
                  D.40952 = *D.40951;
                  D.40968 = D.40952->type;
                  D.40969 = D.40968 == 2;
                  D.40970 = D.40968 == 4;
                  D.40971 = D.40969 | D.40970;
                  D.40972 = (int) D.40971;
                  iftmp.295 = (_Bool) D.40972;
                  goto <D.40973>;
                  <D.40967>:
                  D.33491 = cfg->varinfo;
                  D.40948 = vtvar->data.op[0].const_val;
                  D.40949 = (unsigned int) D.40948;
                  D.40950 = D.40949 * 4;
                  D.40951 = D.33491 + D.40950;
                  D.40952 = *D.40951;
                  D.40974 = D.40952->type;
                  iftmp.295 = D.40974 == 2;
                  <D.40973>:
                  if (iftmp.295 != 0) goto <D.40975>; else goto <D.40976>;
                  <D.40975>:
                  {
                    struct MonoInst * var1;
                    struct MonoInst * var2;

                    D.33491 = cfg->varinfo;
                    D.40948 = vtvar->data.op[0].const_val;
                    D.40949 = (unsigned int) D.40948;
                    D.40950 = D.40949 * 4;
                    D.40951 = D.33491 + D.40950;
                    D.40952 = *D.40951;
                    D.40978 = D.40952->dreg;
                    D.40979 = D.40978 + 1;
                    D.40980 = (unsigned int) D.40979;
                    D.33862 = cfg->vreg_to_inst_len;
                    if (D.40980 < D.33862) goto <D.40981>; else goto <D.40982>;
                    <D.40981>:
                    D.33865 = cfg->vreg_to_inst;
                    D.33491 = cfg->varinfo;
                    D.40948 = vtvar->data.op[0].const_val;
                    D.40949 = (unsigned int) D.40948;
                    D.40950 = D.40949 * 4;
                    D.40951 = D.33491 + D.40950;
                    D.40952 = *D.40951;
                    D.40978 = D.40952->dreg;
                    D.40983 = (sizetype) D.40978;
                    D.40984 = D.40983 + 1;
                    D.40985 = D.40984 * 4;
                    D.40986 = D.33865 + D.40985;
                    iftmp.296 = *D.40986;
                    goto <D.40987>;
                    <D.40982>:
                    iftmp.296 = 0B;
                    <D.40987>:
                    var1 = iftmp.296;
                    D.33491 = cfg->varinfo;
                    D.40948 = vtvar->data.op[0].const_val;
                    D.40949 = (unsigned int) D.40948;
                    D.40950 = D.40949 * 4;
                    D.40951 = D.33491 + D.40950;
                    D.40952 = *D.40951;
                    D.40978 = D.40952->dreg;
                    D.40989 = D.40978 + 2;
                    D.40990 = (unsigned int) D.40989;
                    D.33862 = cfg->vreg_to_inst_len;
                    if (D.40990 < D.33862) goto <D.40991>; else goto <D.40992>;
                    <D.40991>:
                    D.33865 = cfg->vreg_to_inst;
                    D.33491 = cfg->varinfo;
                    D.40948 = vtvar->data.op[0].const_val;
                    D.40949 = (unsigned int) D.40948;
                    D.40950 = D.40949 * 4;
                    D.40951 = D.33491 + D.40950;
                    D.40952 = *D.40951;
                    D.40978 = D.40952->dreg;
                    D.40983 = (sizetype) D.40978;
                    D.40993 = D.40983 + 2;
                    D.40994 = D.40993 * 4;
                    D.40995 = D.33865 + D.40994;
                    iftmp.297 = *D.40995;
                    goto <D.40996>;
                    <D.40992>:
                    iftmp.297 = 0B;
                    <D.40996>:
                    var2 = iftmp.297;
                    D.40997 = var1 == 0B;
                    D.40998 = (long int) D.40997;
                    D.40999 = __builtin_expect (D.40998, 0);
                    if (D.40999 != 0) goto <D.41000>; else goto <D.41001>;
                    <D.41000>:
                    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10818, "var1");
                    <D.41001>:
                    D.41002 = var2 == 0B;
                    D.41003 = (long int) D.41002;
                    D.41004 = __builtin_expect (D.41003, 0);
                    if (D.41004 != 0) goto <D.41005>; else goto <D.41006>;
                    <D.41005>:
                    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10818, "var2");
                    <D.41006>:
                    D.41007 = var1->flags;
                    D.41008 = D.41007 | 16;
                    var1->flags = D.41008;
                    D.41009 = var2->flags;
                    D.41010 = D.41009 | 16;
                    var2->flags = D.41010;
                  }
                  <D.40976>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.41011>; else goto <D.41012>;
                  <D.41011>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.33008->next = addr;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  addr->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  bblock.125->last_ins = addr;
                  goto <D.41013>;
                  <D.41012>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  bblock.125->last_ins = addr;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.41013>:
                  {
                    struct MonoInst * inst;

                    D.32755 = cfg->mempool;
                    inst = mono_mempool_alloc (D.32755, 56);
                    inst->data.op[1].const_val = 0;
                    D.41014 = inst->data.op[1].const_val;
                    inst->data.op[0].const_val = D.41014;
                    inst->prev = 0B;
                    D.41015 = inst->prev;
                    inst->next = D.41015;
                    inst->opcode = 374;
                    inst->flags = 0;
                    inst->type = 0;
                    inst->dreg = -1;
                    inst->sreg3 = -1;
                    D.41016 = inst->sreg3;
                    inst->sreg2 = D.41016;
                    D.41017 = inst->sreg2;
                    inst->sreg1 = D.41017;
                    D.32979 = cfg->ip;
                    inst->cil_code = D.32979;
                    D.33170 = ins->dreg;
                    inst->sreg1 = D.33170;
                    D.41018 = addr->dreg;
                    inst->dreg = D.41018;
                    inst->data.op[0].const_val = 0;
                    bblock.125 = cfg->cbb;
                    D.33008 = bblock.125->last_ins;
                    if (D.33008 != 0B) goto <D.41019>; else goto <D.41020>;
                    <D.41019>:
                    bblock.125 = cfg->cbb;
                    D.33008 = bblock.125->last_ins;
                    D.33008->next = inst;
                    bblock.125 = cfg->cbb;
                    D.33008 = bblock.125->last_ins;
                    inst->prev = D.33008;
                    bblock.125 = cfg->cbb;
                    bblock.125->last_ins = inst;
                    goto <D.41021>;
                    <D.41020>:
                    bblock.125 = cfg->cbb;
                    bblock.125 = cfg->cbb;
                    bblock.125->last_ins = inst;
                    D.33008 = bblock.125->last_ins;
                    bblock.125->code = D.33008;
                    <D.41021>:
                  }
                  D.32755 = cfg->mempool;
                  ins = mono_mempool_alloc (D.32755, 56);
                  ins->data.op[1].const_val = 0;
                  D.32975 = ins->data.op[1].const_val;
                  ins->data.op[0].const_val = D.32975;
                  ins->prev = 0B;
                  D.32976 = ins->prev;
                  ins->next = D.32976;
                  ins->opcode = 424;
                  ins->flags = 0;
                  ins->type = 0;
                  ins->dreg = -1;
                  ins->sreg3 = -1;
                  D.32977 = ins->sreg3;
                  ins->sreg2 = D.32977;
                  D.32978 = ins->sreg2;
                  ins->sreg1 = D.32978;
                  D.32979 = cfg->ip;
                  ins->cil_code = D.32979;
                  D.33491 = cfg->varinfo;
                  D.40948 = vtvar->data.op[0].const_val;
                  D.40949 = (unsigned int) D.40948;
                  D.40950 = D.40949 * 4;
                  D.40951 = D.33491 + D.40950;
                  D.40952 = *D.40951;
                  D.40960 = D.40952->data.op[1].vtype;
                  D.41022 = mono_type_to_regmove (cfg, D.40960);
                  D.41023 = (short unsigned int) D.41022;
                  ins->opcode = D.41023;
                  D.33491 = cfg->varinfo;
                  D.40948 = vtvar->data.op[0].const_val;
                  D.40949 = (unsigned int) D.40948;
                  D.40950 = D.40949 * 4;
                  D.40951 = D.33491 + D.40950;
                  D.40952 = *D.40951;
                  D.40960 = D.40952->data.op[1].vtype;
                  type_to_eval_stack_type (cfg, D.40960, ins);
                  D.33491 = cfg->varinfo;
                  D.40948 = vtvar->data.op[0].const_val;
                  D.40949 = (unsigned int) D.40948;
                  D.40950 = D.40949 * 4;
                  D.40951 = D.33491 + D.40950;
                  D.40952 = *D.40951;
                  D.40955 = D.40952->klass;
                  ins->klass = D.40955;
                  D.33491 = cfg->varinfo;
                  D.40948 = vtvar->data.op[0].const_val;
                  D.40949 = (unsigned int) D.40948;
                  D.40950 = D.40949 * 4;
                  D.40951 = D.33491 + D.40950;
                  D.40952 = *D.40951;
                  D.40978 = D.40952->dreg;
                  ins->sreg1 = D.40978;
                  D.33501 = ins->type;
                  D.33502 = (<unnamed type>) D.33501;
                  D.41024 = alloc_dreg (cfg, D.33502);
                  D.41025 = (int) D.41024;
                  ins->dreg = D.41025;
                  D.33505 = ins->opcode;
                  if (D.33505 == 427) goto <D.41026>; else goto <D.41027>;
                  <D.41026>:
                  D.33491 = cfg->varinfo;
                  D.40948 = vtvar->data.op[0].const_val;
                  D.40949 = (unsigned int) D.40948;
                  D.40950 = D.40949 * 4;
                  D.40951 = D.33491 + D.40950;
                  D.40952 = *D.40951;
                  D.40960 = D.40952->data.op[1].vtype;
                  D.41028 = mono_class_from_mono_type (D.40960);
                  ins->klass = D.41028;
                  <D.41027>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.41029>; else goto <D.41030>;
                  <D.41029>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.33008->next = ins;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  ins->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  bblock.125->last_ins = ins;
                  goto <D.41031>;
                  <D.41030>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  bblock.125->last_ins = ins;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.41031>:
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            goto <D.40898>;
            <D.40897>:
            D.34195 = ip + 5;
            if (D.34195 < end) goto <D.41034>; else goto <D.41032>;
            <D.41034>:
            bblock.76 = bblock;
            D.35683 = ip + 5;
            D.41035 = ip_in_bb (cfg, bblock.76, D.35683);
            if (D.41035 != 0) goto <D.41036>; else goto <D.41032>;
            <D.41036>:
            D.34195 = ip + 5;
            D.41037 = *D.34195;
            D.41038 = D.41037 == 40;
            D.41039 = D.41037 == 111;
            D.41040 = D.41038 | D.41039;
            if (D.41040 != 0) goto <D.41041>; else goto <D.41032>;
            <D.41041>:
            D.37582 = ip + 6;
            D.41042 = mono_read32 (D.37582);
            cmethod = mini_get_method (cfg, method, D.41042, 0B, generic_context);
            if (cmethod != 0B) goto <D.41043>; else goto <D.41032>;
            <D.41043>:
            D.34618 = cmethod->klass;
            D.41044 = mono_defaults.systemtype_class;
            if (D.34618 == D.41044) goto <D.41045>; else goto <D.41032>;
            <D.41045>:
            {
              size_t __s1_len;
              size_t __s2_len;

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

                __s2 = cmethod->name;
                D.41049 = "GetTypeFromHandle";
                D.41050 = MEM[(const unsigned char *)D.41049];
                D.41051 = (int) D.41050;
                D.41052 = *__s2;
                D.41053 = (int) D.41052;
                __result = D.41051 - D.41053;
                {
                  D.41054 = __s2_len != 0;
                  D.41055 = __result == 0;
                  D.41056 = D.41054 & D.41055;
                  if (D.41056 != 0) goto <D.41057>; else goto <D.41058>;
                  <D.41057>:
                  D.41059 = &MEM[(void *)"GetTypeFromHandle" + 1B];
                  D.41060 = *D.41059;
                  D.41061 = (int) D.41060;
                  D.41062 = __s2 + 1;
                  D.41063 = *D.41062;
                  D.41064 = (int) D.41063;
                  __result = D.41061 - D.41064;
                  D.41065 = __s2_len > 1;
                  D.41055 = __result == 0;
                  D.41066 = D.41065 & D.41055;
                  if (D.41066 != 0) goto <D.41067>; else goto <D.41068>;
                  <D.41067>:
                  D.41069 = &MEM[(void *)"GetTypeFromHandle" + 2B];
                  D.41070 = *D.41069;
                  D.41071 = (int) D.41070;
                  D.41072 = __s2 + 2;
                  D.41073 = *D.41072;
                  D.41074 = (int) D.41073;
                  __result = D.41071 - D.41074;
                  D.41075 = __s2_len > 2;
                  D.41055 = __result == 0;
                  D.41076 = D.41075 & D.41055;
                  if (D.41076 != 0) goto <D.41077>; else goto <D.41078>;
                  <D.41077>:
                  D.41079 = &MEM[(void *)"GetTypeFromHandle" + 3B];
                  D.41080 = *D.41079;
                  D.41081 = (int) D.41080;
                  D.41082 = __s2 + 3;
                  D.41083 = *D.41082;
                  D.41084 = (int) D.41083;
                  __result = D.41081 - D.41084;
                  <D.41078>:
                  <D.41068>:
                  <D.41058>:
                }
                D.30543 = __result;
              }
              iftmp.298 = -D.30543;
              goto <D.41085>;
              <D.41048>:
              D.35147 = cmethod->name;
              iftmp.298 = __builtin_strcmp (D.35147, "GetTypeFromHandle");
              <D.41085>:
              D.30544 = iftmp.298;
            }
            if (D.30544 == 0) goto <D.41086>; else goto <D.41032>;
            <D.41086>:
            {
              struct MonoClass * tclass;

              tclass = mono_class_from_mono_type (handle);
              mono_class_init (tclass);
              if (context_used != 0) goto <D.41087>; else goto <D.41088>;
              <D.41087>:
              ins = emit_get_rgctx_klass (cfg, context_used, tclass, 4);
              goto <D.41089>;
              <D.41088>:
              D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.33151 = D.33150 & 64;
              if (D.33151 != 0) goto <D.41090>; else goto <D.41091>;
              <D.41090>:
              D.32698 = BIT_FIELD_REF <*method, 8, 160>;
              D.32699 = D.32698 & 124;
              if (D.32699 != 0) goto <D.41092>; else goto <D.41093>;
              <D.41092>:
              D.41096 = tclass->image;
              D.41097 = tclass->type_token;
              D.41098 = mono_class_get (D.41096, D.41097);
              if (D.41098 == tclass) goto <D.41099>; else goto <D.41094>;
              <D.41099>:
              if (generic_context == 0B) goto <D.41100>; else goto <D.41094>;
              <D.41100>:
              D.32755 = cfg->mempool;
              ins = mono_mempool_alloc (D.32755, 56);
              ins->data.op[1].const_val = 0;
              D.32975 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.32975;
              ins->prev = 0B;
              D.32976 = ins->prev;
              ins->next = D.32976;
              ins->opcode = 732;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.32977 = ins->sreg3;
              ins->sreg2 = D.32977;
              D.32978 = ins->sreg2;
              ins->sreg1 = D.32978;
              D.32979 = cfg->ip;
              ins->cil_code = D.32979;
              D.32755 = cfg->mempool;
              D.41096 = tclass->image;
              D.41097 = tclass->type_token;
              D.41101 = mono_jump_info_token_new2 (D.32755, D.41096, D.41097, generic_context);
              ins->data.op[0].p = D.41101;
              ins->data.op[1].p = 19B;
              ins->type = 6;
              D.41102 = mono_defaults.monotype_class;
              ins->klass = D.41102;
              D.41103 = alloc_dreg (cfg, 6);
              D.41104 = (int) D.41103;
              ins->dreg = D.41104;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.41105>; else goto <D.41106>;
              <D.41105>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = ins;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              ins->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              goto <D.41107>;
              <D.41106>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.41107>:
              goto <D.41095>;
              <D.41094>:
              D.32836 = cfg->verbose_level;
              if (D.32836 > 1) goto <D.41108>; else goto <D.41109>;
              <D.41108>:
              printf ("AOT disabled: %s:%d\n", "method-to-ir.c", 10842);
              <D.41109>:
              cfg->disable_aot = 1;
              D.32755 = cfg->mempool;
              ins = mono_mempool_alloc (D.32755, 56);
              ins->data.op[1].const_val = 0;
              D.32975 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.32975;
              ins->prev = 0B;
              D.32976 = ins->prev;
              ins->next = D.32976;
              ins->opcode = 362;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.32977 = ins->sreg3;
              ins->sreg2 = D.32977;
              D.32978 = ins->sreg2;
              ins->sreg1 = D.32978;
              D.32979 = cfg->ip;
              ins->cil_code = D.32979;
              ins->data.op[0].p = 0B;
              ins->type = 3;
              D.41110 = alloc_dreg (cfg, 3);
              D.41111 = (int) D.41110;
              ins->dreg = D.41111;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.41112>; else goto <D.41113>;
              <D.41112>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = ins;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              ins->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              goto <D.41114>;
              <D.41113>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.41114>:
              <D.41095>:
              goto <D.41115>;
              <D.41093>:
              D.32755 = cfg->mempool;
              ins = mono_mempool_alloc (D.32755, 56);
              ins->data.op[1].const_val = 0;
              D.32975 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.32975;
              ins->prev = 0B;
              D.32976 = ins->prev;
              ins->next = D.32976;
              ins->opcode = 732;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.32977 = ins->sreg3;
              ins->sreg2 = D.32977;
              D.32978 = ins->sreg2;
              ins->sreg1 = D.32978;
              D.32979 = cfg->ip;
              ins->cil_code = D.32979;
              D.32755 = cfg->mempool;
              n.175 = (unsigned int) n;
              D.41116 = mono_jump_info_token_new2 (D.32755, image, n.175, generic_context);
              ins->data.op[0].p = D.41116;
              ins->data.op[1].p = 19B;
              ins->type = 6;
              D.41102 = mono_defaults.monotype_class;
              ins->klass = D.41102;
              D.41117 = alloc_dreg (cfg, 6);
              D.41118 = (int) D.41117;
              ins->dreg = D.41118;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.41119>; else goto <D.41120>;
              <D.41119>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = ins;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              ins->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              goto <D.41121>;
              <D.41120>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.41121>:
              <D.41115>:
              goto <D.41122>;
              <D.41091>:
              D.32755 = cfg->mempool;
              ins = mono_mempool_alloc (D.32755, 56);
              ins->data.op[1].const_val = 0;
              D.32975 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.32975;
              ins->prev = 0B;
              D.32976 = ins->prev;
              ins->next = D.32976;
              ins->opcode = 362;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.32977 = ins->sreg3;
              ins->sreg2 = D.32977;
              D.32978 = ins->sreg2;
              ins->sreg1 = D.32978;
              D.32979 = cfg->ip;
              ins->cil_code = D.32979;
              D.32780 = cfg->domain;
              D.41123 = mono_type_get_object (D.32780, handle);
              ins->data.op[0].p = D.41123;
              ins->type = 3;
              D.41124 = alloc_dreg (cfg, 3);
              D.41125 = (int) D.41124;
              ins->dreg = D.41125;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.41126>; else goto <D.41127>;
              <D.41126>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = ins;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              ins->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              goto <D.41128>;
              <D.41127>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.41128>:
              <D.41122>:
              <D.41089>:
              ins->type = 6;
              D.34618 = cmethod->klass;
              ins->klass = D.34618;
              ip = ip + 5;
            }
            goto <D.41033>;
            <D.41032>:
            {
              struct MonoInst * addr;
              struct MonoInst * vtvar;

              handle_class.293 = handle_class;
              D.40902 = &handle_class.293->byval_arg;
              vtvar = mono_compile_create_var (cfg, D.40902, 329);
              if (context_used != 0) goto <D.41129>; else goto <D.41130>;
              <D.41129>:
              D.40862 = mono_defaults.typehandle_class;
              handle_class.293 = handle_class;
              if (D.40862 == handle_class.293) goto <D.41131>; else goto <D.41132>;
              <D.41131>:
              D.41133 = mono_class_from_mono_type (handle);
              ins = emit_get_rgctx_klass (cfg, context_used, D.41133, 3);
              goto <D.41134>;
              <D.41132>:
              D.40893 = mono_defaults.methodhandle_class;
              handle_class.293 = handle_class;
              if (D.40893 == handle_class.293) goto <D.41135>; else goto <D.41136>;
              <D.41135>:
              ins = emit_get_rgctx_method (cfg, context_used, handle, 5);
              goto <D.41137>;
              <D.41136>:
              D.40888 = mono_defaults.fieldhandle_class;
              handle_class.293 = handle_class;
              if (D.40888 == handle_class.293) goto <D.41138>; else goto <D.41139>;
              <D.41138>:
              ins = emit_get_rgctx_field (cfg, context_used, handle, 7);
              goto <D.41140>;
              <D.41139>:
              monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 10871);
              <D.41140>:
              <D.41137>:
              <D.41134>:
              goto <D.41141>;
              <D.41130>:
              D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.33151 = D.33150 & 64;
              if (D.33151 != 0) goto <D.41142>; else goto <D.41143>;
              <D.41142>:
              D.32755 = cfg->mempool;
              ins = mono_mempool_alloc (D.32755, 56);
              ins->data.op[1].const_val = 0;
              D.32975 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.32975;
              ins->prev = 0B;
              D.32976 = ins->prev;
              ins->next = D.32976;
              ins->opcode = 732;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.32977 = ins->sreg3;
              ins->sreg2 = D.32977;
              D.32978 = ins->sreg2;
              ins->sreg1 = D.32978;
              D.32979 = cfg->ip;
              ins->cil_code = D.32979;
              D.32755 = cfg->mempool;
              n.175 = (unsigned int) n;
              D.41144 = mono_jump_info_token_new2 (D.32755, image, n.175, generic_context);
              ins->data.op[0].p = D.41144;
              ins->data.op[1].p = 18B;
              ins->type = 3;
              ins->klass = 0B;
              D.41145 = alloc_dreg (cfg, 3);
              D.41146 = (int) D.41145;
              ins->dreg = D.41146;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.41147>; else goto <D.41148>;
              <D.41147>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = ins;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              ins->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              goto <D.41149>;
              <D.41148>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.41149>:
              goto <D.41150>;
              <D.41143>:
              D.32755 = cfg->mempool;
              ins = mono_mempool_alloc (D.32755, 56);
              ins->data.op[1].const_val = 0;
              D.32975 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.32975;
              ins->prev = 0B;
              D.32976 = ins->prev;
              ins->next = D.32976;
              ins->opcode = 362;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.32977 = ins->sreg3;
              ins->sreg2 = D.32977;
              D.32978 = ins->sreg2;
              ins->sreg1 = D.32978;
              D.32979 = cfg->ip;
              ins->cil_code = D.32979;
              ins->data.op[0].p = handle;
              ins->type = 3;
              D.41151 = alloc_dreg (cfg, 3);
              D.41152 = (int) D.41151;
              ins->dreg = D.41152;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.41153>; else goto <D.41154>;
              <D.41153>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = ins;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              ins->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              goto <D.41155>;
              <D.41154>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.41155>:
              <D.41150>:
              <D.41141>:
              D.32755 = cfg->mempool;
              addr = mono_mempool_alloc (D.32755, 56);
              addr->data.op[1].const_val = 0;
              D.41156 = addr->data.op[1].const_val;
              addr->data.op[0].const_val = D.41156;
              addr->prev = 0B;
              D.41157 = addr->prev;
              addr->next = D.41157;
              addr->opcode = 314;
              addr->flags = 0;
              addr->type = 0;
              addr->dreg = -1;
              addr->sreg3 = -1;
              D.41158 = addr->sreg3;
              addr->sreg2 = D.41158;
              D.41159 = addr->sreg2;
              addr->sreg1 = D.41159;
              D.32979 = cfg->ip;
              addr->cil_code = D.32979;
              D.33491 = cfg->varinfo;
              D.41160 = vtvar->data.op[0].const_val;
              D.41161 = (unsigned int) D.41160;
              D.41162 = D.41161 * 4;
              D.41163 = D.33491 + D.41162;
              D.41164 = *D.41163;
              addr->data.op[0].p = D.41164;
              D.33491 = cfg->varinfo;
              D.41160 = vtvar->data.op[0].const_val;
              D.41161 = (unsigned int) D.41160;
              D.41162 = D.41161 * 4;
              D.41163 = D.33491 + D.41162;
              D.41164 = *D.41163;
              D.33491 = cfg->varinfo;
              D.41160 = vtvar->data.op[0].const_val;
              D.41161 = (unsigned int) D.41160;
              D.41162 = D.41161 * 4;
              D.41163 = D.33491 + D.41162;
              D.41164 = *D.41163;
              D.41165 = D.41164->flags;
              D.41166 = D.41165 | 16;
              D.41164->flags = D.41166;
              addr->type = 5;
              D.33491 = cfg->varinfo;
              D.41160 = vtvar->data.op[0].const_val;
              D.41161 = (unsigned int) D.41160;
              D.41162 = D.41161 * 4;
              D.41163 = D.33491 + D.41162;
              D.41164 = *D.41163;
              D.41167 = D.41164->klass;
              addr->klass = D.41167;
              D.41168 = alloc_dreg (cfg, 5);
              D.41169 = (int) D.41168;
              addr->dreg = D.41169;
              cfg->has_indirection = 1;
              D.32904 = cfg->gsharedvt;
              D.33836 = D.32904 != 0;
              D.33837 = (long int) D.33836;
              D.33838 = __builtin_expect (D.33837, 0);
              if (D.33838 != 0) goto <D.41170>; else goto <D.41171>;
              <D.41170>:
              D.33491 = cfg->varinfo;
              D.41160 = vtvar->data.op[0].const_val;
              D.41161 = (unsigned int) D.41160;
              D.41162 = D.41161 * 4;
              D.41163 = D.33491 + D.41162;
              D.41164 = *D.41163;
              D.41172 = D.41164->data.op[1].vtype;
              D.41173 = mini_is_gsharedvt_variable_type (cfg, D.41172);
              if (D.41173 != 0) goto <D.41174>; else goto <D.41175>;
              <D.41174>:
              handle_gsharedvt_ldaddr (cfg);
              <D.41175>:
              <D.41171>:
              D.41177 = mono_arch_is_soft_float ();
              if (D.41177 != 0) goto <D.41178>; else goto <D.41179>;
              <D.41178>:
              D.33491 = cfg->varinfo;
              D.41160 = vtvar->data.op[0].const_val;
              D.41161 = (unsigned int) D.41160;
              D.41162 = D.41161 * 4;
              D.41163 = D.33491 + D.41162;
              D.41164 = *D.41163;
              D.41180 = D.41164->type;
              D.41181 = D.41180 == 2;
              D.41182 = D.41180 == 4;
              D.41183 = D.41181 | D.41182;
              D.41184 = (int) D.41183;
              iftmp.299 = (_Bool) D.41184;
              goto <D.41185>;
              <D.41179>:
              D.33491 = cfg->varinfo;
              D.41160 = vtvar->data.op[0].const_val;
              D.41161 = (unsigned int) D.41160;
              D.41162 = D.41161 * 4;
              D.41163 = D.33491 + D.41162;
              D.41164 = *D.41163;
              D.41186 = D.41164->type;
              iftmp.299 = D.41186 == 2;
              <D.41185>:
              if (iftmp.299 != 0) goto <D.41187>; else goto <D.41188>;
              <D.41187>:
              {
                struct MonoInst * var1;
                struct MonoInst * var2;

                D.33491 = cfg->varinfo;
                D.41160 = vtvar->data.op[0].const_val;
                D.41161 = (unsigned int) D.41160;
                D.41162 = D.41161 * 4;
                D.41163 = D.33491 + D.41162;
                D.41164 = *D.41163;
                D.41190 = D.41164->dreg;
                D.41191 = D.41190 + 1;
                D.41192 = (unsigned int) D.41191;
                D.33862 = cfg->vreg_to_inst_len;
                if (D.41192 < D.33862) goto <D.41193>; else goto <D.41194>;
                <D.41193>:
                D.33865 = cfg->vreg_to_inst;
                D.33491 = cfg->varinfo;
                D.41160 = vtvar->data.op[0].const_val;
                D.41161 = (unsigned int) D.41160;
                D.41162 = D.41161 * 4;
                D.41163 = D.33491 + D.41162;
                D.41164 = *D.41163;
                D.41190 = D.41164->dreg;
                D.41195 = (sizetype) D.41190;
                D.41196 = D.41195 + 1;
                D.41197 = D.41196 * 4;
                D.41198 = D.33865 + D.41197;
                iftmp.300 = *D.41198;
                goto <D.41199>;
                <D.41194>:
                iftmp.300 = 0B;
                <D.41199>:
                var1 = iftmp.300;
                D.33491 = cfg->varinfo;
                D.41160 = vtvar->data.op[0].const_val;
                D.41161 = (unsigned int) D.41160;
                D.41162 = D.41161 * 4;
                D.41163 = D.33491 + D.41162;
                D.41164 = *D.41163;
                D.41190 = D.41164->dreg;
                D.41201 = D.41190 + 2;
                D.41202 = (unsigned int) D.41201;
                D.33862 = cfg->vreg_to_inst_len;
                if (D.41202 < D.33862) goto <D.41203>; else goto <D.41204>;
                <D.41203>:
                D.33865 = cfg->vreg_to_inst;
                D.33491 = cfg->varinfo;
                D.41160 = vtvar->data.op[0].const_val;
                D.41161 = (unsigned int) D.41160;
                D.41162 = D.41161 * 4;
                D.41163 = D.33491 + D.41162;
                D.41164 = *D.41163;
                D.41190 = D.41164->dreg;
                D.41195 = (sizetype) D.41190;
                D.41205 = D.41195 + 2;
                D.41206 = D.41205 * 4;
                D.41207 = D.33865 + D.41206;
                iftmp.301 = *D.41207;
                goto <D.41208>;
                <D.41204>:
                iftmp.301 = 0B;
                <D.41208>:
                var2 = iftmp.301;
                D.41209 = var1 == 0B;
                D.41210 = (long int) D.41209;
                D.41211 = __builtin_expect (D.41210, 0);
                if (D.41211 != 0) goto <D.41212>; else goto <D.41213>;
                <D.41212>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10878, "var1");
                <D.41213>:
                D.41214 = var2 == 0B;
                D.41215 = (long int) D.41214;
                D.41216 = __builtin_expect (D.41215, 0);
                if (D.41216 != 0) goto <D.41217>; else goto <D.41218>;
                <D.41217>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10878, "var2");
                <D.41218>:
                D.41219 = var1->flags;
                D.41220 = D.41219 | 16;
                var1->flags = D.41220;
                D.41221 = var2->flags;
                D.41222 = D.41221 | 16;
                var2->flags = D.41222;
              }
              <D.41188>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.41223>; else goto <D.41224>;
              <D.41223>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = addr;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              addr->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = addr;
              goto <D.41225>;
              <D.41224>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = addr;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.41225>:
              {
                struct MonoInst * inst;

                D.32755 = cfg->mempool;
                inst = mono_mempool_alloc (D.32755, 56);
                inst->data.op[1].const_val = 0;
                D.41226 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.41226;
                inst->prev = 0B;
                D.41227 = inst->prev;
                inst->next = D.41227;
                inst->opcode = 374;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.41228 = inst->sreg3;
                inst->sreg2 = D.41228;
                D.41229 = inst->sreg2;
                inst->sreg1 = D.41229;
                D.32979 = cfg->ip;
                inst->cil_code = D.32979;
                D.33170 = ins->dreg;
                inst->sreg1 = D.33170;
                D.41230 = addr->dreg;
                inst->dreg = D.41230;
                inst->data.op[0].const_val = 0;
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                if (D.33008 != 0B) goto <D.41231>; else goto <D.41232>;
                <D.41231>:
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                D.33008->next = inst;
                bblock.125 = cfg->cbb;
                D.33008 = bblock.125->last_ins;
                inst->prev = D.33008;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                goto <D.41233>;
                <D.41232>:
                bblock.125 = cfg->cbb;
                bblock.125 = cfg->cbb;
                bblock.125->last_ins = inst;
                D.33008 = bblock.125->last_ins;
                bblock.125->code = D.33008;
                <D.41233>:
              }
              D.32755 = cfg->mempool;
              ins = mono_mempool_alloc (D.32755, 56);
              ins->data.op[1].const_val = 0;
              D.32975 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.32975;
              ins->prev = 0B;
              D.32976 = ins->prev;
              ins->next = D.32976;
              ins->opcode = 424;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.32977 = ins->sreg3;
              ins->sreg2 = D.32977;
              D.32978 = ins->sreg2;
              ins->sreg1 = D.32978;
              D.32979 = cfg->ip;
              ins->cil_code = D.32979;
              D.33491 = cfg->varinfo;
              D.41160 = vtvar->data.op[0].const_val;
              D.41161 = (unsigned int) D.41160;
              D.41162 = D.41161 * 4;
              D.41163 = D.33491 + D.41162;
              D.41164 = *D.41163;
              D.41172 = D.41164->data.op[1].vtype;
              D.41234 = mono_type_to_regmove (cfg, D.41172);
              D.41235 = (short unsigned int) D.41234;
              ins->opcode = D.41235;
              D.33491 = cfg->varinfo;
              D.41160 = vtvar->data.op[0].const_val;
              D.41161 = (unsigned int) D.41160;
              D.41162 = D.41161 * 4;
              D.41163 = D.33491 + D.41162;
              D.41164 = *D.41163;
              D.41172 = D.41164->data.op[1].vtype;
              type_to_eval_stack_type (cfg, D.41172, ins);
              D.33491 = cfg->varinfo;
              D.41160 = vtvar->data.op[0].const_val;
              D.41161 = (unsigned int) D.41160;
              D.41162 = D.41161 * 4;
              D.41163 = D.33491 + D.41162;
              D.41164 = *D.41163;
              D.41167 = D.41164->klass;
              ins->klass = D.41167;
              D.33491 = cfg->varinfo;
              D.41160 = vtvar->data.op[0].const_val;
              D.41161 = (unsigned int) D.41160;
              D.41162 = D.41161 * 4;
              D.41163 = D.33491 + D.41162;
              D.41164 = *D.41163;
              D.41190 = D.41164->dreg;
              ins->sreg1 = D.41190;
              D.33501 = ins->type;
              D.33502 = (<unnamed type>) D.33501;
              D.41236 = alloc_dreg (cfg, D.33502);
              D.41237 = (int) D.41236;
              ins->dreg = D.41237;
              D.33505 = ins->opcode;
              if (D.33505 == 427) goto <D.41238>; else goto <D.41239>;
              <D.41238>:
              D.33491 = cfg->varinfo;
              D.41160 = vtvar->data.op[0].const_val;
              D.41161 = (unsigned int) D.41160;
              D.41162 = D.41161 * 4;
              D.41163 = D.33491 + D.41162;
              D.41164 = *D.41163;
              D.41172 = D.41164->data.op[1].vtype;
              D.41240 = mono_class_from_mono_type (D.41172);
              ins->klass = D.41240;
              <D.41239>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.41241>; else goto <D.41242>;
              <D.41241>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = ins;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              ins->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              goto <D.41243>;
              <D.41242>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.41243>:
            }
            <D.41033>:
            <D.40898>:
            sp.302 = sp;
            sp = sp.302 + 4;
            *sp.302 = ins;
            ip = ip + 5;
            goto <D.29893>;
          }
        finally
          {
            handle_class = {CLOBBER};
          }
      }
      <D.30551>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.41245>; else goto <D.41246>;
      <D.41245>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.41247>; else goto <D.41248>;
      <D.41247>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.41249>; else goto <D.41250>;
      <D.41249>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41250>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41248>:
      D.41251 = mini_get_debug_options ();
      D.41252 = D.41251->break_on_unverified;
      if (D.41252 != 0) goto <D.41253>; else goto unverified;
      <D.41253>:
      raise (5);
      <D.41246>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 371;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      sp = sp + 4294967292;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      ip = ip + 1;
      bblock.76 = bblock;
      bblock.76->out_of_line = 1;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      if (D.33093 != 0B) goto <D.41254>; else goto <D.41255>;
      <D.41254>:
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      D.33093->next = ins;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      ins->prev = D.33093;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      goto <D.41256>;
      <D.41255>:
      bblock.76 = bblock;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      D.33093 = bblock.76->last_ins;
      bblock.76->code = D.33093;
      <D.41256>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 798;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      if (D.33093 != 0B) goto <D.41257>; else goto <D.41258>;
      <D.41257>:
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      D.33093->next = ins;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      ins->prev = D.33093;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      goto <D.41259>;
      <D.41258>:
      bblock.76 = bblock;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      D.33093 = bblock.76->last_ins;
      bblock.76->code = D.33093;
      <D.41259>:
      sp = stack_start;
      bblock.76 = bblock;
      link_bblock (cfg, bblock.76, end_bblock);
      start_new_bblock = 1;
      goto <D.29893>;
      <D.30552>:
      if (sp != stack_start) goto <D.41260>; else goto <D.41261>;
      <D.41260>:
      emit_seq_point (cfg, method, ip, 0, 0);
      <D.41261>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 738;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      if (D.33093 != 0B) goto <D.41262>; else goto <D.41263>;
      <D.41262>:
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      D.33093->next = ins;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      ins->prev = D.33093;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      goto <D.41264>;
      <D.41263>:
      bblock.76 = bblock;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      D.33093 = bblock.76->last_ins;
      bblock.76->code = D.33093;
      <D.41264>:
      ip = ip + 1;
      start_new_bblock = 1;
      goto <D.30554>;
      <D.30553>:
      sp = sp + 4294967292;
      <D.30554>:
      if (sp != stack_start) goto <D.30553>; else goto <D.30555>;
      <D.30555>:
      goto <D.29893>;
      <D.30556>:
      <D.30557>:
      {
        struct GList * handlers;

        D.33632 = *ip;
        if (D.33632 == 221) goto <D.41265>; else goto <D.41266>;
        <D.41265>:
        D.34195 = ip + 5;
        if (D.34195 > end) goto <D.41267>; else goto <D.41268>;
        <D.41267>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.41269>; else goto <D.41270>;
        <D.41269>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.41271>; else goto <D.41272>;
        <D.41271>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.41272>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41270>:
        D.41273 = mini_get_debug_options ();
        D.41274 = D.41273->break_on_unverified;
        if (D.41274 != 0) goto <D.41275>; else goto unverified;
        <D.41275>:
        raise (5);
        <D.41268>:
        D.34214 = ip + 1;
        D.41276 = mono_read32 (D.34214);
        D.41277 = D.41276 + 5;
        target = ip + D.41277;
        goto <D.41278>;
        <D.41266>:
        D.33761 = ip + 2;
        if (D.33761 > end) goto <D.41279>; else goto <D.41280>;
        <D.41279>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.41281>; else goto <D.41282>;
        <D.41281>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.41283>; else goto <D.41284>;
        <D.41283>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.41284>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41282>:
        D.41285 = mini_get_debug_options ();
        D.41286 = D.41285->break_on_unverified;
        if (D.41286 != 0) goto <D.41287>; else goto unverified;
        <D.41287>:
        raise (5);
        <D.41280>:
        D.33780 = ip + 1;
        D.33781 = *D.33780;
        D.41288 = (signed char) D.33781;
        D.41289 = (sizetype) D.41288;
        D.41290 = D.41289 + 2;
        target = ip + D.41290;
        <D.41278>:
        goto <D.30560>;
        <D.30559>:
        sp = sp + 4294967292;
        <D.30560>:
        if (sp != stack_start) goto <D.30559>; else goto <D.30561>;
        <D.30561>:
        i = 0;
        goto <D.30570>;
        <D.30569>:
        {
          struct MonoExceptionClause * clause;

          D.32884 = header->clauses;
          i.74 = (unsigned int) i;
          D.32886 = i.74 * 24;
          clause = D.32884 + D.32886;
          D.41291 = clause->handler_offset;
          ip.81 = (int) ip;
          D.32903 = header->code;
          D.33448 = (int) D.32903;
          D.33449 = ip.81 - D.33448;
          D.41292 = (unsigned int) D.33449;
          if (D.41291 <= D.41292) goto <D.41293>; else goto <D.41294>;
          <D.41293>:
          ip.81 = (int) ip;
          D.32903 = header->code;
          D.33448 = (int) D.32903;
          D.33449 = ip.81 - D.33448;
          D.41292 = (unsigned int) D.33449;
          D.41291 = clause->handler_offset;
          D.41295 = clause->handler_len;
          D.41296 = D.41291 + D.41295;
          if (D.41292 < D.41296) goto <D.41297>; else goto <D.41298>;
          <D.41297>:
          D.41299 = clause->flags;
          if (D.41299 == 0) goto <D.41300>; else goto <D.41301>;
          <D.41300>:
          ip.81 = (int) ip;
          D.32903 = header->code;
          D.33448 = (int) D.32903;
          D.33449 = ip.81 - D.33448;
          D.33632 = *ip;
          if (D.33632 == 221) goto <D.41303>; else goto <D.41304>;
          <D.41303>:
          iftmp.303 = 5;
          goto <D.41305>;
          <D.41304>:
          iftmp.303 = 2;
          <D.41305>:
          D.41306 = D.33449 + iftmp.303;
          D.41307 = (unsigned int) D.41306;
          D.41291 = clause->handler_offset;
          D.41295 = clause->handler_len;
          D.41296 = D.41291 + D.41295;
          if (D.41307 <= D.41296) goto <D.41308>; else goto <D.41309>;
          <D.41308>:
          D.32698 = BIT_FIELD_REF <*method, 8, 160>;
          D.32699 = D.32698 & 124;
          if (D.32699 != 16) goto <D.41310>; else goto <D.41311>;
          <D.41310>:
          {
            struct MonoInst * exc_ins;
            struct MonoBasicBlock * dont_throw;

            exc_ins = mono_emit_jit_icall (cfg, mono_thread_get_undeniable_exception, 0B);
            D.32755 = cfg->mempool;
            dont_throw = mono_mempool_alloc0 (D.32755, 172);
            D.32864 = cfg->num_bblocks;
            D.41312 = D.32864;
            D.41313 = D.41312 + 1;
            cfg->num_bblocks = D.41313;
            D.41314 = (int) D.41312;
            dont_throw->block_num = D.41314;
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.41315 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.41315;
              inst->prev = 0B;
              D.41316 = inst->prev;
              inst->next = D.41316;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.41317 = inst->sreg3;
              inst->sreg2 = D.41317;
              D.41318 = inst->sreg2;
              inst->sreg1 = D.41318;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = -1;
              D.41319 = exc_ins->dreg;
              inst->sreg1 = D.41319;
              inst->data.op[1].const_val = 0;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.41320>; else goto <D.41321>;
              <D.41320>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.41322>;
              <D.41321>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.41322>:
            }
            {
              struct MonoInst * ins;
              struct MonoBasicBlock * falsebb;

              D.32755 = cfg->mempool;
              ins = mono_mempool_alloc (D.32755, 56);
              ins->data.op[1].const_val = 0;
              D.41323 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.41323;
              ins->prev = 0B;
              D.41324 = ins->prev;
              ins->next = D.41324;
              ins->opcode = 648;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.41325 = ins->sreg3;
              ins->sreg2 = D.41325;
              D.41326 = ins->sreg2;
              ins->sreg1 = D.41326;
              D.32979 = cfg->ip;
              ins->cil_code = D.32979;
              if (0 != 0) goto <D.41327>; else goto <D.41328>;
              <D.41327>:
              D.32755 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.32755, 172);
              D.32864 = cfg->num_bblocks;
              D.41329 = D.32864;
              D.41330 = D.41329 + 1;
              cfg->num_bblocks = D.41330;
              D.41331 = (int) D.41329;
              falsebb->block_num = D.41331;
              ins->data.op[0].target_block = dont_throw;
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, dont_throw);
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.41332>; else goto <D.41333>;
              <D.41332>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = ins;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              ins->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              goto <D.41334>;
              <D.41333>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.41334>:
              D.41335 = falsebb->cil_code;
              if (D.41335 != 0B) goto <D.41336>; else goto <D.41337>;
              <D.41336>:
              D.32887 = cfg->cil_offset_to_bb;
              D.41335 = falsebb->cil_code;
              D.41338 = (int) D.41335;
              D.32891 = cfg->cil_start;
              D.32892 = (int) D.32891;
              D.41339 = D.41338 - D.32892;
              D.41340 = (unsigned int) D.41339;
              D.41341 = D.41340 * 4;
              D.41342 = D.32887 + D.41341;
              *D.41342 = falsebb;
              <D.41337>:
              D.32923 = cfg->real_offset;
              falsebb->real_offset = D.32923;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.41346>; else goto <D.41343>;
              <D.41346>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.41347 = D.33008->opcode;
              D.41348 = D.41347 + 64985;
              D.41349 = D.41348 <= 9;
              D.41350 = D.41347 + 64878;
              D.41351 = D.41350 <= 9;
              D.41352 = D.41349 | D.41351;
              if (D.41352 != 0) goto <D.41344>; else goto <D.41353>;
              <D.41353>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36965 = D.33008->opcode;
              D.36966 = D.36965 + 64888;
              if (D.36966 <= 9) goto <D.41344>; else goto <D.41343>;
              <D.41344>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36967 = D.33008->data.op[1].many_blocks;
              D.36968 = D.36967 + 4;
              D.36969 = *D.36968;
              if (D.36969 == 0B) goto <D.41354>; else goto <D.41343>;
              <D.41354>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36967 = D.33008->data.op[1].many_blocks;
              D.36968 = D.36967 + 4;
              *D.36968 = falsebb;
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, falsebb);
              goto <D.41345>;
              <D.41343>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 == 0B) goto <D.41355>; else goto <D.41357>;
              <D.41357>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.41358 = D.33008->opcode;
              D.41359 = D.41358 != 442;
              D.41360 = D.41358 != 759;
              D.41361 = D.41359 & D.41360;
              if (D.41361 != 0) goto <D.41362>; else goto <D.41356>;
              <D.41362>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.41363 = D.33008->opcode;
              D.41364 = D.41363 + 64985;
              D.41365 = D.41364 > 9;
              D.41366 = D.41363 + 64878;
              D.41367 = D.41366 > 9;
              D.41368 = D.41365 & D.41367;
              if (D.41368 != 0) goto <D.41369>; else goto <D.41356>;
              <D.41369>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36965 = D.33008->opcode;
              D.36966 = D.36965 + 64888;
              if (D.36966 > 9) goto <D.41355>; else goto <D.41356>;
              <D.41355>:
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, falsebb);
              <D.41356>:
              <D.41345>:
              bblock.125 = cfg->cbb;
              bblock.125->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.41370>;
              <D.41328>:
              D.32755 = cfg->mempool;
              D.41371 = mono_mempool_alloc (D.32755, 8);
              ins->data.op[1].many_blocks = D.41371;
              D.41372 = ins->data.op[1].many_blocks;
              *D.41372 = dont_throw;
              D.41372 = ins->data.op[1].many_blocks;
              D.41373 = D.41372 + 4;
              *D.41373 = 0B;
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, dont_throw);
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.41374>; else goto <D.41375>;
              <D.41374>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = ins;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              ins->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              goto <D.41376>;
              <D.41375>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.41376>:
              D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.36993 = D.33150 & 8;
              if (D.36993 == 0) goto <D.41377>; else goto <D.41378>;
              <D.41377>:
              D.32755 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.32755, 172);
              D.32864 = cfg->num_bblocks;
              D.41379 = D.32864;
              D.41380 = D.41379 + 1;
              cfg->num_bblocks = D.41380;
              D.41381 = (int) D.41379;
              falsebb->block_num = D.41381;
              D.41372 = ins->data.op[1].many_blocks;
              D.41373 = D.41372 + 4;
              *D.41373 = falsebb;
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, falsebb);
              D.41335 = falsebb->cil_code;
              if (D.41335 != 0B) goto <D.41382>; else goto <D.41383>;
              <D.41382>:
              D.32887 = cfg->cil_offset_to_bb;
              D.41335 = falsebb->cil_code;
              D.41338 = (int) D.41335;
              D.32891 = cfg->cil_start;
              D.32892 = (int) D.32891;
              D.41339 = D.41338 - D.32892;
              D.41340 = (unsigned int) D.41339;
              D.41341 = D.41340 * 4;
              D.41342 = D.32887 + D.41341;
              *D.41342 = falsebb;
              <D.41383>:
              D.32923 = cfg->real_offset;
              falsebb->real_offset = D.32923;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.41387>; else goto <D.41384>;
              <D.41387>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.41388 = D.33008->opcode;
              D.41389 = D.41388 + 64985;
              D.41390 = D.41389 <= 9;
              D.41391 = D.41388 + 64878;
              D.41392 = D.41391 <= 9;
              D.41393 = D.41390 | D.41392;
              if (D.41393 != 0) goto <D.41385>; else goto <D.41394>;
              <D.41394>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36965 = D.33008->opcode;
              D.36966 = D.36965 + 64888;
              if (D.36966 <= 9) goto <D.41385>; else goto <D.41384>;
              <D.41385>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36967 = D.33008->data.op[1].many_blocks;
              D.36968 = D.36967 + 4;
              D.36969 = *D.36968;
              if (D.36969 == 0B) goto <D.41395>; else goto <D.41384>;
              <D.41395>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36967 = D.33008->data.op[1].many_blocks;
              D.36968 = D.36967 + 4;
              *D.36968 = falsebb;
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, falsebb);
              goto <D.41386>;
              <D.41384>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 == 0B) goto <D.41396>; else goto <D.41398>;
              <D.41398>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.41399 = D.33008->opcode;
              D.41400 = D.41399 != 442;
              D.41401 = D.41399 != 759;
              D.41402 = D.41400 & D.41401;
              if (D.41402 != 0) goto <D.41403>; else goto <D.41397>;
              <D.41403>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.41404 = D.33008->opcode;
              D.41405 = D.41404 + 64985;
              D.41406 = D.41405 > 9;
              D.41407 = D.41404 + 64878;
              D.41408 = D.41407 > 9;
              D.41409 = D.41406 & D.41408;
              if (D.41409 != 0) goto <D.41410>; else goto <D.41397>;
              <D.41410>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36965 = D.33008->opcode;
              D.36966 = D.36965 + 64888;
              if (D.36966 > 9) goto <D.41396>; else goto <D.41397>;
              <D.41396>:
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, falsebb);
              <D.41397>:
              <D.41386>:
              bblock.125 = cfg->cbb;
              bblock.125->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.41411>;
              <D.41378>:
              bblock.125 = cfg->cbb;
              bblock.125->extended = 1;
              <D.41411>:
              <D.41370>:
            }
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.41412 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.41412;
              inst->prev = 0B;
              D.41413 = inst->prev;
              inst->next = D.41413;
              inst->opcode = 371;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.41414 = inst->sreg3;
              inst->sreg2 = D.41414;
              D.41415 = inst->sreg2;
              inst->sreg1 = D.41415;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = -1;
              D.41319 = exc_ins->dreg;
              inst->sreg1 = D.41319;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.41416>; else goto <D.41417>;
              <D.41416>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.41418>;
              <D.41417>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.41418>:
            }
            D.41419 = dont_throw->cil_code;
            if (D.41419 != 0B) goto <D.41420>; else goto <D.41421>;
            <D.41420>:
            D.32887 = cfg->cil_offset_to_bb;
            D.41419 = dont_throw->cil_code;
            D.41422 = (int) D.41419;
            D.32891 = cfg->cil_start;
            D.32892 = (int) D.32891;
            D.41423 = D.41422 - D.32892;
            D.41424 = (unsigned int) D.41423;
            D.41425 = D.41424 * 4;
            D.41426 = D.32887 + D.41425;
            *D.41426 = dont_throw;
            <D.41421>:
            D.32923 = cfg->real_offset;
            dont_throw->real_offset = D.32923;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.41430>; else goto <D.41427>;
            <D.41430>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.41431 = D.33008->opcode;
            D.41432 = D.41431 + 64985;
            D.41433 = D.41432 <= 9;
            D.41434 = D.41431 + 64878;
            D.41435 = D.41434 <= 9;
            D.41436 = D.41433 | D.41435;
            if (D.41436 != 0) goto <D.41428>; else goto <D.41437>;
            <D.41437>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.36965 = D.33008->opcode;
            D.36966 = D.36965 + 64888;
            if (D.36966 <= 9) goto <D.41428>; else goto <D.41427>;
            <D.41428>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.36967 = D.33008->data.op[1].many_blocks;
            D.36968 = D.36967 + 4;
            D.36969 = *D.36968;
            if (D.36969 == 0B) goto <D.41438>; else goto <D.41427>;
            <D.41438>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.36967 = D.33008->data.op[1].many_blocks;
            D.36968 = D.36967 + 4;
            *D.36968 = dont_throw;
            bblock.125 = cfg->cbb;
            mono_link_bblock (cfg, bblock.125, dont_throw);
            goto <D.41429>;
            <D.41427>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 == 0B) goto <D.41439>; else goto <D.41441>;
            <D.41441>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.41442 = D.33008->opcode;
            D.41443 = D.41442 != 442;
            D.41444 = D.41442 != 759;
            D.41445 = D.41443 & D.41444;
            if (D.41445 != 0) goto <D.41446>; else goto <D.41440>;
            <D.41446>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.41447 = D.33008->opcode;
            D.41448 = D.41447 + 64985;
            D.41449 = D.41448 > 9;
            D.41450 = D.41447 + 64878;
            D.41451 = D.41450 > 9;
            D.41452 = D.41449 & D.41451;
            if (D.41452 != 0) goto <D.41453>; else goto <D.41440>;
            <D.41453>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.36965 = D.33008->opcode;
            D.36966 = D.36965 + 64888;
            if (D.36966 > 9) goto <D.41439>; else goto <D.41440>;
            <D.41439>:
            bblock.125 = cfg->cbb;
            mono_link_bblock (cfg, bblock.125, dont_throw);
            <D.41440>:
            <D.41429>:
            bblock.125 = cfg->cbb;
            bblock.125->next_bb = dont_throw;
            cfg->cbb = dont_throw;
            bblock.125 = cfg->cbb;
            bblock = bblock.125;
          }
          <D.41311>:
          <D.41309>:
          <D.41301>:
          <D.41298>:
          <D.41294>:
        }
        i = i + 1;
        <D.30570>:
        D.33073 = header->num_clauses;
        D.33074 = (int) D.33073;
        if (D.33074 > i) goto <D.30569>; else goto <D.30571>;
        <D.30571>:
        handlers = mono_find_final_block (cfg, ip, target, 2);
        if (handlers != 0B) goto <D.41454>; else goto <D.41455>;
        <D.41454>:
        {
          struct GList * tmp;
          struct MonoExceptionClause * clause;

          tmp = handlers;
          goto <D.30576>;
          <D.30575>:
          clause = tmp->data;
          D.32887 = cfg->cil_offset_to_bb;
          D.41456 = clause->handler_offset;
          D.41457 = D.41456 * 4;
          D.41458 = D.32887 + D.41457;
          tblock = *D.41458;
          D.41459 = tblock == 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", 10988, "tblock");
          <D.41463>:
          bblock.76 = bblock;
          link_bblock (cfg, bblock.76, tblock);
          D.32755 = cfg->mempool;
          ins = mono_mempool_alloc (D.32755, 56);
          ins->data.op[1].const_val = 0;
          D.32975 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.32975;
          ins->prev = 0B;
          D.32976 = ins->prev;
          ins->next = D.32976;
          ins->opcode = 735;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.32977 = ins->sreg3;
          ins->sreg2 = D.32977;
          D.32978 = ins->sreg2;
          ins->sreg1 = D.32978;
          D.32979 = cfg->ip;
          ins->cil_code = D.32979;
          ins->data.op[0].target_block = tblock;
          ins->data.op[1].exception_clause = clause;
          bblock.76 = bblock;
          D.33093 = bblock.76->last_ins;
          if (D.33093 != 0B) goto <D.41464>; else goto <D.41465>;
          <D.41464>:
          bblock.76 = bblock;
          D.33093 = bblock.76->last_ins;
          D.33093->next = ins;
          bblock.76 = bblock;
          D.33093 = bblock.76->last_ins;
          ins->prev = D.33093;
          bblock.76 = bblock;
          bblock.76->last_ins = ins;
          goto <D.41466>;
          <D.41465>:
          bblock.76 = bblock;
          bblock.76 = bblock;
          bblock.76->last_ins = ins;
          D.33093 = bblock.76->last_ins;
          bblock.76->code = D.33093;
          <D.41466>:
          bblock.76 = bblock;
          bblock.76->has_call_handler = 1;
          if (0 != 0) goto <D.41467>; else goto <D.41468>;
          <D.41467>:
          {
            struct MonoBasicBlock * target_bb;

            D.32887 = cfg->cil_offset_to_bb;
            target.149 = (int) target;
            D.32891 = cfg->cil_start;
            D.32892 = (int) D.32891;
            D.36390 = target.149 - D.32892;
            D.36391 = (unsigned int) D.36390;
            D.36392 = D.36391 * 4;
            D.36393 = D.32887 + D.36392;
            target_bb = *D.36393;
            if (target_bb == 0B) goto <D.41469>; else goto <D.41470>;
            <D.41469>:
            if (target >= end) goto <D.41471>; else goto <D.41473>;
            <D.41473>:
            D.32903 = header->code;
            if (D.32903 > target) goto <D.41471>; else goto <D.41472>;
            <D.41471>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.41474>; else goto <D.41475>;
            <D.41474>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.41476>; else goto <D.41477>;
            <D.41476>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.41477>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.41475>:
            D.41478 = mini_get_debug_options ();
            D.41479 = D.41478->break_on_unverified;
            if (D.41479 != 0) goto <D.41480>; else goto unverified;
            <D.41480>:
            raise (5);
            <D.41472>:
            D.32755 = cfg->mempool;
            target_bb = mono_mempool_alloc0 (D.32755, 172);
            D.32864 = cfg->num_bblocks;
            D.41481 = D.32864;
            D.41482 = D.41481 + 1;
            cfg->num_bblocks = D.41482;
            D.41483 = (int) D.41481;
            target_bb->block_num = D.41483;
            target_bb->cil_code = target;
            D.41484 = target_bb->cil_code;
            if (D.41484 != 0B) goto <D.41485>; else goto <D.41486>;
            <D.41485>:
            D.32887 = cfg->cil_offset_to_bb;
            D.41484 = target_bb->cil_code;
            D.41487 = (int) D.41484;
            D.32891 = cfg->cil_start;
            D.32892 = (int) D.32891;
            D.41488 = D.41487 - D.32892;
            D.41489 = (unsigned int) D.41488;
            D.41490 = D.41489 * 4;
            D.41491 = D.32887 + D.41490;
            *D.41491 = target_bb;
            <D.41486>:
            D.32923 = cfg->real_offset;
            target_bb->real_offset = D.32923;
            <D.41470>:
            link_bblock (cfg, tblock, target_bb);
          }
          <D.41468>:
          tmp = tmp->next;
          <D.30576>:
          if (tmp != 0B) goto <D.30575>; else goto <D.30577>;
          <D.30577>:
          monoeg_g_list_free (handlers);
        }
        <D.41455>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 442;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        if (D.33093 != 0B) goto <D.41492>; else goto <D.41493>;
        <D.41492>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        D.33093->next = ins;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        ins->prev = D.33093;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        goto <D.41494>;
        <D.41493>:
        bblock.76 = bblock;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        D.33093 = bblock.76->last_ins;
        bblock.76->code = D.33093;
        <D.41494>:
        D.32887 = cfg->cil_offset_to_bb;
        target.149 = (int) target;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.36390 = target.149 - D.32892;
        D.36391 = (unsigned int) D.36390;
        D.36392 = D.36391 * 4;
        D.36393 = D.32887 + D.36392;
        tblock = *D.36393;
        if (tblock == 0B) goto <D.41495>; else goto <D.41496>;
        <D.41495>:
        if (target >= end) goto <D.41497>; else goto <D.41499>;
        <D.41499>:
        D.32903 = header->code;
        if (D.32903 > target) goto <D.41497>; else goto <D.41498>;
        <D.41497>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.41500>; else goto <D.41501>;
        <D.41500>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.41502>; else goto <D.41503>;
        <D.41502>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.41503>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41501>:
        D.41504 = mini_get_debug_options ();
        D.41505 = D.41504->break_on_unverified;
        if (D.41505 != 0) goto <D.41506>; else goto unverified;
        <D.41506>:
        raise (5);
        <D.41498>:
        D.32755 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.32755, 172);
        D.32864 = cfg->num_bblocks;
        D.41507 = D.32864;
        D.41508 = D.41507 + 1;
        cfg->num_bblocks = D.41508;
        D.41509 = (int) D.41507;
        tblock->block_num = D.41509;
        tblock->cil_code = target;
        D.32952 = tblock->cil_code;
        if (D.32952 != 0B) goto <D.41510>; else goto <D.41511>;
        <D.41510>:
        D.32887 = cfg->cil_offset_to_bb;
        D.32952 = tblock->cil_code;
        D.32955 = (int) D.32952;
        D.32891 = cfg->cil_start;
        D.32892 = (int) D.32891;
        D.32956 = D.32955 - D.32892;
        D.32957 = (unsigned int) D.32956;
        D.32958 = D.32957 * 4;
        D.32959 = D.32887 + D.32958;
        *D.32959 = tblock;
        <D.41511>:
        D.32923 = cfg->real_offset;
        tblock->real_offset = D.32923;
        <D.41496>:
        bblock.76 = bblock;
        link_bblock (cfg, bblock.76, tblock);
        ins->data.op[0].target_block = tblock;
        start_new_bblock = 1;
        D.33632 = *ip;
        if (D.33632 == 221) goto <D.41512>; else goto <D.41513>;
        <D.41512>:
        ip = ip + 5;
        goto <D.41514>;
        <D.41513>:
        ip = ip + 2;
        <D.41514>:
        goto <D.29893>;
      }
      <D.30578>:
      D.32698 = BIT_FIELD_REF <*method, 8, 160>;
      D.32699 = D.32698 & 124;
      D.41515 = D.32699 == 0;
      D.41516 = (long int) D.41515;
      D.41517 = __builtin_expect (D.41516, 0);
      if (D.41517 != 0) goto <D.41518>; else goto <D.41519>;
      <D.41518>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11030, "method->wrapper_type != MONO_WRAPPER_NONE");
      <D.41519>:
      D.33761 = ip + 2;
      if (D.33761 > end) goto <D.41520>; else goto <D.41521>;
      <D.41520>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.41522>; else goto <D.41523>;
      <D.41522>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.41524>; else goto <D.41525>;
      <D.41524>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41525>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41523>:
      D.41526 = mini_get_debug_options ();
      D.41527 = D.41526->break_on_unverified;
      if (D.41527 != 0) goto <D.41528>; else goto unverified;
      <D.41528>:
      raise (5);
      <D.41521>:
      D.33780 = ip + 1;
      D.33781 = *D.33780;
      D.34111 = (int) D.33781;
      switch (D.34111) <default: <D.30637>, case 0: <D.30579>, case 1: <D.30600>, case 2: <D.30584>, case 3: <D.30592>, case 4: <D.30597>, case 5: <D.30607>, case 6: <D.30601>, case 7: <D.30610>, case 8: <D.30611>, case 9: <D.30613>, case 10: <D.30614>, case 11: <D.30615>, case 12: <D.30616>, case 13: <D.30617>, case 14: <D.30589>, case 15: <D.30619>, case 16: <D.30621>, case 17: <D.30622>, case 18: <D.30635>, case 19: <D.30586>>
      <D.30579>:
      {
        void * func;
        struct MonoJitICallInfo * info;

        D.41529 = ip + 2;
        token = mono_read32 (D.41529);
        func = mono_method_get_wrapper_data (method, token);
        info = mono_find_jit_icall_by_addr (func);
        if (info == 0B) goto <D.41530>; else goto <D.41531>;
        <D.41530>:
        D.41532 = mono_method_full_name (method, 1);
        monoeg_g_log (0B, 4, "Could not find icall address in wrapper %s", D.41532);
        <D.30582>:
        goto <D.30582>;
        <D.41531>:
        D.41533 = info == 0B;
        D.41534 = (long int) D.41533;
        D.41535 = __builtin_expect (D.41534, 0);
        if (D.41535 != 0) goto <D.41536>; else goto <D.41537>;
        <D.41536>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11043, "info");
        <D.41537>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        D.33527 = D.33526 /[ex] 4;
        D.41538 = info->sig;
        D.41539 = D.41538->param_count;
        D.41540 = (int) D.41539;
        if (D.33527 < D.41540) goto <D.41541>; else goto <D.41542>;
        <D.41541>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.41543>; else goto <D.41544>;
        <D.41543>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.41545>; else goto <D.41546>;
        <D.41545>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.41546>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41544>:
        D.41547 = mini_get_debug_options ();
        D.41548 = D.41547->break_on_unverified;
        if (D.41548 != 0) goto <D.41549>; else goto unverified;
        <D.41549>:
        raise (5);
        <D.41542>:
        D.41538 = info->sig;
        D.41539 = D.41538->param_count;
        D.41550 = (unsigned int) D.41539;
        D.41551 = D.41550 * 4;
        D.41552 = -D.41551;
        sp = sp + D.41552;
        D.41553 = info->func;
        ins = mono_emit_jit_icall (cfg, D.41553, sp);
        D.41538 = info->sig;
        D.41554 = D.41538->ret;
        D.41555 = mono_type_is_void (D.41554);
        if (D.41555 == 0) goto <D.41556>; else goto <D.41557>;
        <D.41556>:
        sp.304 = sp;
        sp = sp.304 + 4;
        *sp.304 = ins;
        <D.41557>:
        ip = ip + 6;
        num_calls.305 = num_calls;
        num_calls = num_calls.305 + 1;
        D.41560 = num_calls.305 * 10;
        inline_costs = D.41560 + inline_costs;
        goto <D.30583>;
      }
      <D.30584>:
      {
        void * ptr;

        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        D.33527 = D.33526 /[ex] 4;
        D.33440 = header->max_stack;
        D.33441 = (int) D.33440;
        if (D.33527 >= D.33441) goto <D.41561>; else goto <D.41562>;
        <D.41561>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.41563>; else goto <D.41564>;
        <D.41563>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.41565>; else goto <D.41566>;
        <D.41565>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.41566>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41564>:
        D.41567 = mini_get_debug_options ();
        D.41568 = D.41567->break_on_unverified;
        if (D.41568 != 0) goto <D.41569>; else goto unverified;
        <D.41569>:
        raise (5);
        <D.41562>:
        D.37547 = ip + 6;
        if (D.37547 > end) goto <D.41570>; else goto <D.41571>;
        <D.41570>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.41572>; else goto <D.41573>;
        <D.41572>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.41574>; else goto <D.41575>;
        <D.41574>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.41575>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41573>:
        D.41576 = mini_get_debug_options ();
        D.41577 = D.41576->break_on_unverified;
        if (D.41577 != 0) goto <D.41578>; else goto unverified;
        <D.41578>:
        raise (5);
        <D.41571>:
        D.41529 = ip + 2;
        token = mono_read32 (D.41529);
        ptr = mono_method_get_wrapper_data (method, token);
        D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.33151 = D.33150 & 64;
        if (D.33151 != 0) goto <D.41579>; else goto <D.41580>;
        <D.41579>:
        D.41581 = mono_thread_interruption_request_flag ();
        if (D.41581 == ptr) goto <D.41582>; else goto <D.41583>;
        <D.41582>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.33151 = D.33150 & 64;
        if (D.33151 != 0) goto <D.41585>; else goto <D.41586>;
        <D.41585>:
        iftmp.306 = 732;
        goto <D.41587>;
        <D.41586>:
        iftmp.306 = 362;
        <D.41587>:
        ins->opcode = iftmp.306;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        ins->data.op[0].p = 0B;
        ins->data.op[1].src = 33B;
        ins->type = 3;
        D.41588 = alloc_dreg (cfg, 3);
        D.41589 = (int) D.41588;
        ins->dreg = D.41589;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.41590>; else goto <D.41591>;
        <D.41590>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.41592>;
        <D.41591>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.41592>:
        sp.307 = sp;
        sp = sp.307 + 4;
        *sp.307 = ins;
        ip = ip + 6;
        goto <D.30583>;
        <D.41583>:
        <D.41580>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 362;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        ins->data.op[0].p = ptr;
        ins->type = 3;
        D.41594 = alloc_dreg (cfg, 3);
        D.41595 = (int) D.41594;
        ins->dreg = D.41595;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.41596>; else goto <D.41597>;
        <D.41596>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.41598>;
        <D.41597>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.41598>:
        sp.308 = sp;
        sp = sp.308 + 4;
        *sp.308 = ins;
        ip = ip + 6;
        num_calls.309 = num_calls;
        num_calls = num_calls.309 + 1;
        D.41601 = num_calls.309 * 10;
        inline_costs = D.41601 + inline_costs;
        D.32836 = cfg->verbose_level;
        if (D.32836 > 1) goto <D.41602>; else goto <D.41603>;
        <D.41602>:
        printf ("AOT disabled: %s:%d\n", "method-to-ir.c", 11077);
        <D.41603>:
        cfg->disable_aot = 1;
        goto <D.30583>;
      }
      <D.30586>:
      {
        struct MonoJitICallInfo * callinfo;
        void * ptr;

        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        D.33527 = D.33526 /[ex] 4;
        D.33440 = header->max_stack;
        D.33441 = (int) D.33440;
        if (D.33527 >= D.33441) goto <D.41604>; else goto <D.41605>;
        <D.41604>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.41606>; else goto <D.41607>;
        <D.41606>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.41608>; else goto <D.41609>;
        <D.41608>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.41609>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41607>:
        D.41610 = mini_get_debug_options ();
        D.41611 = D.41610->break_on_unverified;
        if (D.41611 != 0) goto <D.41612>; else goto unverified;
        <D.41612>:
        raise (5);
        <D.41605>:
        D.37547 = ip + 6;
        if (D.37547 > end) goto <D.41613>; else goto <D.41614>;
        <D.41613>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.41615>; else goto <D.41616>;
        <D.41615>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.41617>; else goto <D.41618>;
        <D.41617>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.41618>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41616>:
        D.41619 = mini_get_debug_options ();
        D.41620 = D.41619->break_on_unverified;
        if (D.41620 != 0) goto <D.41621>; else goto unverified;
        <D.41621>:
        raise (5);
        <D.41614>:
        D.41529 = ip + 2;
        token = mono_read32 (D.41529);
        ptr = mono_method_get_wrapper_data (method, token);
        callinfo = mono_find_jit_icall_by_addr (ptr);
        D.41622 = callinfo == 0B;
        D.41623 = (long int) D.41622;
        D.41624 = __builtin_expect (D.41623, 0);
        if (D.41624 != 0) goto <D.41625>; else goto <D.41626>;
        <D.41625>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11090, "callinfo");
        <D.41626>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.33151 = D.33150 & 64;
        if (D.33151 != 0) goto <D.41628>; else goto <D.41629>;
        <D.41628>:
        iftmp.310 = 732;
        goto <D.41630>;
        <D.41629>:
        iftmp.310 = 362;
        <D.41630>:
        ins->opcode = iftmp.310;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        D.41631 = callinfo->name;
        ins->data.op[0].p = D.41631;
        ins->data.op[1].src = 32B;
        ins->type = 3;
        D.41632 = alloc_dreg (cfg, 3);
        D.41633 = (int) D.41632;
        ins->dreg = D.41633;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.41634>; else goto <D.41635>;
        <D.41634>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.41636>;
        <D.41635>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.41636>:
        sp.311 = sp;
        sp = sp.311 + 4;
        *sp.311 = ins;
        ip = ip + 6;
        num_calls.312 = num_calls;
        num_calls = num_calls.312 + 1;
        D.41639 = num_calls.312 * 10;
        inline_costs = D.41639 + inline_costs;
        goto <D.30583>;
      }
      <D.30589>:
      {
        struct MonoMethod * cmethod;
        void * ptr;

        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        D.33527 = D.33526 /[ex] 4;
        D.33440 = header->max_stack;
        D.33441 = (int) D.33440;
        if (D.33527 >= D.33441) goto <D.41640>; else goto <D.41641>;
        <D.41640>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.41642>; else goto <D.41643>;
        <D.41642>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.41644>; else goto <D.41645>;
        <D.41644>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.41645>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41643>:
        D.41646 = mini_get_debug_options ();
        D.41647 = D.41646->break_on_unverified;
        if (D.41647 != 0) goto <D.41648>; else goto unverified;
        <D.41648>:
        raise (5);
        <D.41641>:
        D.37547 = ip + 6;
        if (D.37547 > end) goto <D.41649>; else goto <D.41650>;
        <D.41649>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.41651>; else goto <D.41652>;
        <D.41651>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.41653>; else goto <D.41654>;
        <D.41653>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.41654>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41652>:
        D.41655 = mini_get_debug_options ();
        D.41656 = D.41655->break_on_unverified;
        if (D.41656 != 0) goto <D.41657>; else goto unverified;
        <D.41657>:
        raise (5);
        <D.41650>:
        D.41529 = ip + 2;
        token = mono_read32 (D.41529);
        cmethod = mono_method_get_wrapper_data (method, token);
        D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.33151 = D.33150 & 64;
        if (D.33151 != 0) goto <D.41658>; else goto <D.41659>;
        <D.41658>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.33151 = D.33150 & 64;
        if (D.33151 != 0) goto <D.41661>; else goto <D.41662>;
        <D.41661>:
        iftmp.313 = 732;
        goto <D.41663>;
        <D.41662>:
        iftmp.313 = 362;
        <D.41663>:
        ins->opcode = iftmp.313;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        ins->data.op[0].p = cmethod;
        ins->data.op[1].src = 31B;
        ins->type = 3;
        D.41664 = alloc_dreg (cfg, 3);
        D.41665 = (int) D.41664;
        ins->dreg = D.41665;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.41666>; else goto <D.41667>;
        <D.41666>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.41668>;
        <D.41667>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.41668>:
        goto <D.41669>;
        <D.41659>:
        ptr = mono_lookup_internal_call (cmethod);
        D.41670 = ptr == 0B;
        D.41671 = (long int) D.41670;
        D.41672 = __builtin_expect (D.41671, 0);
        if (D.41672 != 0) goto <D.41673>; else goto <D.41674>;
        <D.41673>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11111, "ptr");
        <D.41674>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 362;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        ins->data.op[0].p = ptr;
        ins->type = 3;
        D.41675 = alloc_dreg (cfg, 3);
        D.41676 = (int) D.41675;
        ins->dreg = D.41676;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.41677>; else goto <D.41678>;
        <D.41677>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.41679>;
        <D.41678>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.41679>:
        <D.41669>:
        sp.314 = sp;
        sp = sp.314 + 4;
        *sp.314 = ins;
        ip = ip + 6;
        goto <D.30583>;
      }
      <D.30592>:
      {
        struct MonoInst * src_var;
        struct MonoInst * src;

        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        if (D.33526 <= 3) goto <D.41681>; else goto <D.41682>;
        <D.41681>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.41683>; else goto <D.41684>;
        <D.41683>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.41685>; else goto <D.41686>;
        <D.41685>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.41686>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41684>:
        D.41687 = mini_get_debug_options ();
        D.41688 = D.41687->break_on_unverified;
        if (D.41688 != 0) goto <D.41689>; else goto unverified;
        <D.41689>:
        raise (5);
        <D.41682>:
        sp = sp + 4294967292;
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        D.39187 = (unsigned int) D.33943;
        D.33862 = cfg->vreg_to_inst_len;
        if (D.39187 < D.33862) goto <D.41691>; else goto <D.41692>;
        <D.41691>:
        D.33865 = cfg->vreg_to_inst;
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        D.39190 = (unsigned int) D.33943;
        D.39191 = D.39190 * 4;
        D.39192 = D.33865 + D.39191;
        iftmp.315 = *D.39192;
        goto <D.41693>;
        <D.41692>:
        iftmp.315 = 0B;
        <D.41693>:
        src_var = iftmp.315;
        D.32755 = cfg->mempool;
        src = mono_mempool_alloc (D.32755, 56);
        src->data.op[1].const_val = 0;
        D.41694 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.41694;
        src->prev = 0B;
        D.41695 = src->prev;
        src->next = D.41695;
        src->opcode = 314;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.41696 = src->sreg3;
        src->sreg2 = D.41696;
        D.41697 = src->sreg2;
        src->sreg1 = D.41697;
        D.32979 = cfg->ip;
        src->cil_code = D.32979;
        src->data.op[0].p = src_var;
        D.41698 = src_var->flags;
        D.41699 = D.41698 | 16;
        src_var->flags = D.41699;
        src->type = 5;
        D.41700 = src_var->klass;
        src->klass = D.41700;
        D.41701 = alloc_dreg (cfg, 5);
        D.41702 = (int) D.41701;
        src->dreg = D.41702;
        cfg->has_indirection = 1;
        D.32904 = cfg->gsharedvt;
        D.33836 = D.32904 != 0;
        D.33837 = (long int) D.33836;
        D.33838 = __builtin_expect (D.33837, 0);
        if (D.33838 != 0) goto <D.41703>; else goto <D.41704>;
        <D.41703>:
        D.41705 = src_var->data.op[1].vtype;
        D.41706 = mini_is_gsharedvt_variable_type (cfg, D.41705);
        if (D.41706 != 0) goto <D.41707>; else goto <D.41708>;
        <D.41707>:
        handle_gsharedvt_ldaddr (cfg);
        <D.41708>:
        <D.41704>:
        D.41710 = mono_arch_is_soft_float ();
        if (D.41710 != 0) goto <D.41711>; else goto <D.41712>;
        <D.41711>:
        D.41713 = src_var->type;
        D.41714 = D.41713 == 2;
        D.41715 = D.41713 == 4;
        D.41716 = D.41714 | D.41715;
        D.41717 = (int) D.41716;
        iftmp.316 = (_Bool) D.41717;
        goto <D.41718>;
        <D.41712>:
        D.41719 = src_var->type;
        iftmp.316 = D.41719 == 2;
        <D.41718>:
        if (iftmp.316 != 0) goto <D.41720>; else goto <D.41721>;
        <D.41720>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.41723 = src_var->dreg;
          D.41724 = D.41723 + 1;
          D.41725 = (unsigned int) D.41724;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.41725 < D.33862) goto <D.41726>; else goto <D.41727>;
          <D.41726>:
          D.33865 = cfg->vreg_to_inst;
          D.41723 = src_var->dreg;
          D.41728 = (sizetype) D.41723;
          D.41729 = D.41728 + 1;
          D.41730 = D.41729 * 4;
          D.41731 = D.33865 + D.41730;
          iftmp.317 = *D.41731;
          goto <D.41732>;
          <D.41727>:
          iftmp.317 = 0B;
          <D.41732>:
          var1 = iftmp.317;
          D.41723 = src_var->dreg;
          D.41734 = D.41723 + 2;
          D.41735 = (unsigned int) D.41734;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.41735 < D.33862) goto <D.41736>; else goto <D.41737>;
          <D.41736>:
          D.33865 = cfg->vreg_to_inst;
          D.41723 = src_var->dreg;
          D.41728 = (sizetype) D.41723;
          D.41738 = D.41728 + 2;
          D.41739 = D.41738 * 4;
          D.41740 = D.33865 + D.41739;
          iftmp.318 = *D.41740;
          goto <D.41741>;
          <D.41737>:
          iftmp.318 = 0B;
          <D.41741>:
          var2 = iftmp.318;
          D.41742 = var1 == 0B;
          D.41743 = (long int) D.41742;
          D.41744 = __builtin_expect (D.41743, 0);
          if (D.41744 != 0) goto <D.41745>; else goto <D.41746>;
          <D.41745>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11126, "var1");
          <D.41746>:
          D.41747 = var2 == 0B;
          D.41748 = (long int) D.41747;
          D.41749 = __builtin_expect (D.41748, 0);
          if (D.41749 != 0) goto <D.41750>; else goto <D.41751>;
          <D.41750>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11126, "var2");
          <D.41751>:
          D.41752 = var1->flags;
          D.41753 = D.41752 | 16;
          var1->flags = D.41753;
          D.41754 = var2->flags;
          D.41755 = D.41754 | 16;
          var2->flags = D.41755;
        }
        <D.41721>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.41756>; else goto <D.41757>;
        <D.41756>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = src;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        src->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = src;
        goto <D.41758>;
        <D.41757>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = src;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.41758>:
        sp.319 = sp;
        sp = sp.319 + 4;
        *sp.319 = src;
        ip = ip + 2;
        goto <D.30583>;
      }
      <D.30597>:
      {
        struct MonoInst * iargs[2];

        try
          {
            sp.83 = (int) sp;
            stack_start.84 = (int) stack_start;
            D.33526 = sp.83 - stack_start.84;
            D.33527 = D.33526 /[ex] 4;
            D.33440 = header->max_stack;
            D.33441 = (int) D.33440;
            if (D.33527 >= D.33441) goto <D.41760>; else goto <D.41761>;
            <D.41760>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.41762>; else goto <D.41763>;
            <D.41762>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.41764>; else goto <D.41765>;
            <D.41764>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.41765>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.41763>:
            D.41766 = mini_get_debug_options ();
            D.41767 = D.41766->break_on_unverified;
            if (D.41767 != 0) goto <D.41768>; else goto unverified;
            <D.41768>:
            raise (5);
            <D.41761>:
            D.37547 = ip + 6;
            if (D.37547 > end) goto <D.41769>; else goto <D.41770>;
            <D.41769>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.41771>; else goto <D.41772>;
            <D.41771>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.41773>; else goto <D.41774>;
            <D.41773>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.41774>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.41772>:
            D.41775 = mini_get_debug_options ();
            D.41776 = D.41775->break_on_unverified;
            if (D.41776 != 0) goto <D.41777>; else goto unverified;
            <D.41777>:
            raise (5);
            <D.41770>:
            D.41529 = ip + 2;
            token = mono_read32 (D.41529);
            klass.320 = mono_method_get_wrapper_data (method, token);
            klass = klass.320;
            klass.170 = klass;
            mono_class_init (klass.170);
            D.33148 = cfg->opt;
            D.33149 = D.33148 & 512;
            if (D.33149 != 0) goto <D.41779>; else goto <D.41782>;
            <D.41782>:
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.41779>; else goto <D.41780>;
            <D.41779>:
            {
              struct MonoInst * __domain_var;

              __domain_var = mono_get_domainvar (cfg);
              D.32755 = cfg->mempool;
              D.41783 = mono_mempool_alloc (D.32755, 56);
              iargs[0] = D.41783;
              D.41784 = iargs[0];
              D.41784 = iargs[0];
              D.41784->data.op[1].const_val = 0;
              D.41785 = D.41784->data.op[1].const_val;
              D.41784->data.op[0].const_val = D.41785;
              D.41784 = iargs[0];
              D.41784 = iargs[0];
              D.41784->prev = 0B;
              D.41786 = D.41784->prev;
              D.41784->next = D.41786;
              D.41784 = iargs[0];
              D.41784->opcode = 424;
              D.41784 = iargs[0];
              D.41784->flags = 0;
              D.41784 = iargs[0];
              D.41784->type = 0;
              D.41784 = iargs[0];
              D.41784->dreg = -1;
              D.41784 = iargs[0];
              D.41784 = iargs[0];
              D.41784 = iargs[0];
              D.41784->sreg3 = -1;
              D.41787 = D.41784->sreg3;
              D.41784->sreg2 = D.41787;
              D.41788 = D.41784->sreg2;
              D.41784->sreg1 = D.41788;
              D.41784 = iargs[0];
              D.32979 = cfg->ip;
              D.41784->cil_code = D.32979;
              D.41784 = iargs[0];
              D.33491 = cfg->varinfo;
              D.41789 = __domain_var->data.op[0].const_val;
              D.41790 = (unsigned int) D.41789;
              D.41791 = D.41790 * 4;
              D.41792 = D.33491 + D.41791;
              D.41793 = *D.41792;
              D.41794 = D.41793->data.op[1].vtype;
              D.41795 = mono_type_to_regmove (cfg, D.41794);
              D.41796 = (short unsigned int) D.41795;
              D.41784->opcode = D.41796;
              D.33491 = cfg->varinfo;
              D.41789 = __domain_var->data.op[0].const_val;
              D.41790 = (unsigned int) D.41789;
              D.41791 = D.41790 * 4;
              D.41792 = D.33491 + D.41791;
              D.41793 = *D.41792;
              D.41794 = D.41793->data.op[1].vtype;
              D.41784 = iargs[0];
              type_to_eval_stack_type (cfg, D.41794, D.41784);
              D.41784 = iargs[0];
              D.33491 = cfg->varinfo;
              D.41789 = __domain_var->data.op[0].const_val;
              D.41790 = (unsigned int) D.41789;
              D.41791 = D.41790 * 4;
              D.41792 = D.33491 + D.41791;
              D.41793 = *D.41792;
              D.41797 = D.41793->klass;
              D.41784->klass = D.41797;
              D.41784 = iargs[0];
              D.33491 = cfg->varinfo;
              D.41789 = __domain_var->data.op[0].const_val;
              D.41790 = (unsigned int) D.41789;
              D.41791 = D.41790 * 4;
              D.41792 = D.33491 + D.41791;
              D.41793 = *D.41792;
              D.41798 = D.41793->dreg;
              D.41784->sreg1 = D.41798;
              D.41784 = iargs[0];
              D.41784 = iargs[0];
              D.41799 = D.41784->type;
              D.41800 = (<unnamed type>) D.41799;
              D.41801 = alloc_dreg (cfg, D.41800);
              D.41802 = (int) D.41801;
              D.41784->dreg = D.41802;
              D.41784 = iargs[0];
              D.41803 = D.41784->opcode;
              if (D.41803 == 427) goto <D.41804>; else goto <D.41805>;
              <D.41804>:
              D.41784 = iargs[0];
              D.33491 = cfg->varinfo;
              D.41789 = __domain_var->data.op[0].const_val;
              D.41790 = (unsigned int) D.41789;
              D.41791 = D.41790 * 4;
              D.41792 = D.33491 + D.41791;
              D.41793 = *D.41792;
              D.41794 = D.41793->data.op[1].vtype;
              D.41806 = mono_class_from_mono_type (D.41794);
              D.41784->klass = D.41806;
              <D.41805>:
            }
            goto <D.41781>;
            <D.41780>:
            D.32755 = cfg->mempool;
            D.41807 = mono_mempool_alloc (D.32755, 56);
            iargs[0] = D.41807;
            D.41784 = iargs[0];
            D.41784 = iargs[0];
            D.41784->data.op[1].const_val = 0;
            D.41785 = D.41784->data.op[1].const_val;
            D.41784->data.op[0].const_val = D.41785;
            D.41784 = iargs[0];
            D.41784 = iargs[0];
            D.41784->prev = 0B;
            D.41786 = D.41784->prev;
            D.41784->next = D.41786;
            D.41784 = iargs[0];
            D.41784->opcode = 362;
            D.41784 = iargs[0];
            D.41784->flags = 0;
            D.41784 = iargs[0];
            D.41784->type = 0;
            D.41784 = iargs[0];
            D.41784->dreg = -1;
            D.41784 = iargs[0];
            D.41784 = iargs[0];
            D.41784 = iargs[0];
            D.41784->sreg3 = -1;
            D.41787 = D.41784->sreg3;
            D.41784->sreg2 = D.41787;
            D.41788 = D.41784->sreg2;
            D.41784->sreg1 = D.41788;
            D.41784 = iargs[0];
            D.32979 = cfg->ip;
            D.41784->cil_code = D.32979;
            D.41784 = iargs[0];
            D.32780 = cfg->domain;
            D.41784->data.op[0].p = D.32780;
            D.41784 = iargs[0];
            D.41784->type = 3;
            D.41784 = iargs[0];
            D.41808 = alloc_dreg (cfg, 3);
            D.41809 = (int) D.41808;
            D.41784->dreg = D.41809;
            <D.41781>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.41810>; else goto <D.41811>;
            <D.41810>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.41784 = iargs[0];
            D.33008->next = D.41784;
            D.41784 = iargs[0];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.41784->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.41784 = iargs[0];
            bblock.125->last_ins = D.41784;
            goto <D.41812>;
            <D.41811>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.41784 = iargs[0];
            bblock.125->last_ins = D.41784;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.41812>:
            D.32755 = cfg->mempool;
            D.41813 = mono_mempool_alloc (D.32755, 56);
            iargs[1] = D.41813;
            D.41814 = iargs[1];
            D.41814 = iargs[1];
            D.41814->data.op[1].const_val = 0;
            D.41815 = D.41814->data.op[1].const_val;
            D.41814->data.op[0].const_val = D.41815;
            D.41814 = iargs[1];
            D.41814 = iargs[1];
            D.41814->prev = 0B;
            D.41816 = D.41814->prev;
            D.41814->next = D.41816;
            D.41814 = iargs[1];
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.41818>; else goto <D.41819>;
            <D.41818>:
            iftmp.321 = 732;
            goto <D.41820>;
            <D.41819>:
            iftmp.321 = 362;
            <D.41820>:
            D.41814->opcode = iftmp.321;
            D.41814 = iargs[1];
            D.41814->flags = 0;
            D.41814 = iargs[1];
            D.41814->type = 0;
            D.41814 = iargs[1];
            D.41814->dreg = -1;
            D.41814 = iargs[1];
            D.41814 = iargs[1];
            D.41814 = iargs[1];
            D.41814->sreg3 = -1;
            D.41821 = D.41814->sreg3;
            D.41814->sreg2 = D.41821;
            D.41822 = D.41814->sreg2;
            D.41814->sreg1 = D.41822;
            D.41814 = iargs[1];
            D.32979 = cfg->ip;
            D.41814->cil_code = D.32979;
            D.41814 = iargs[1];
            klass.170 = klass;
            D.41814->data.op[0].p = klass.170;
            D.41814 = iargs[1];
            D.41814->data.op[1].src = 11B;
            D.41814 = iargs[1];
            D.41814->type = 3;
            D.41814 = iargs[1];
            D.41823 = alloc_dreg (cfg, 3);
            D.41824 = (int) D.41823;
            D.41814->dreg = D.41824;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.41825>; else goto <D.41826>;
            <D.41825>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.41814 = iargs[1];
            D.33008->next = D.41814;
            D.41814 = iargs[1];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.41814->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.41814 = iargs[1];
            bblock.125->last_ins = D.41814;
            goto <D.41827>;
            <D.41826>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.41814 = iargs[1];
            bblock.125->last_ins = D.41814;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.41827>:
            sp.322 = sp;
            sp = sp.322 + 4;
            D.41829 = mono_emit_jit_icall (cfg, mono_object_new, &iargs);
            *sp.322 = D.41829;
            ip = ip + 6;
            num_calls.323 = num_calls;
            num_calls = num_calls.323 + 1;
            D.41831 = num_calls.323 * 10;
            inline_costs = D.41831 + inline_costs;
            goto <D.30583>;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      <D.30600>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.41832>; else goto <D.41833>;
      <D.41832>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.41834>; else goto <D.41835>;
      <D.41834>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.41836>; else goto <D.41837>;
      <D.41836>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41837>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41835>:
      D.41838 = mini_get_debug_options ();
      D.41839 = D.41838->break_on_unverified;
      if (D.41839 != 0) goto <D.41840>; else goto unverified;
      <D.41840>:
      raise (5);
      <D.41833>:
      sp = sp + 4294967292;
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.41841 = alloc_ireg_mp (cfg);
      D.41842 = (int) D.41841;
      ins->dreg = D.41842;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      ins->type = 5;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.41843>; else goto <D.41844>;
      <D.41843>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.41845>;
      <D.41844>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.41845>:
      sp.324 = sp;
      sp = sp.324 + 4;
      *sp.324 = ins;
      ip = ip + 2;
      goto <D.30583>;
      <D.30601>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.41847>; else goto <D.41848>;
      <D.41847>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.41849>; else goto <D.41850>;
      <D.41849>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.41851>; else goto <D.41852>;
      <D.41851>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41852>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41850>:
      D.41853 = mini_get_debug_options ();
      D.41854 = D.41853->break_on_unverified;
      if (D.41854 != 0) goto <D.41855>; else goto unverified;
      <D.41855>:
      raise (5);
      <D.41848>:
      D.37547 = ip + 6;
      if (D.37547 > end) goto <D.41856>; else goto <D.41857>;
      <D.41856>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.41858>; else goto <D.41859>;
      <D.41858>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.41860>; else goto <D.41861>;
      <D.41860>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41861>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41859>:
      D.41862 = mini_get_debug_options ();
      D.41863 = D.41862->break_on_unverified;
      if (D.41863 != 0) goto <D.41864>; else goto unverified;
      <D.41864>:
      raise (5);
      <D.41857>:
      sp = sp + 4294967292;
      D.41529 = ip + 2;
      token = mono_read32 (D.41529);
      klass.325 = mono_method_get_wrapper_data (method, token);
      klass = klass.325;
      klass.170 = klass;
      D.38944 = BIT_FIELD_REF <*klass.170, 8, 160>;
      D.38945 = D.38944 & 8;
      D.41866 = D.38945 == 0;
      D.41867 = (long int) D.41866;
      D.41868 = __builtin_expect (D.41867, 0);
      if (D.41868 != 0) goto <D.41869>; else goto <D.41870>;
      <D.41869>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11169, "klass->valuetype");
      <D.41870>:
      klass.170 = klass;
      mono_class_init (klass.170);
      {
        struct MonoInst * src;
        struct MonoInst * dest;
        struct MonoInst * temp;

        src = *sp;
        klass.170 = klass;
        D.37564 = &klass.170->byval_arg;
        temp = mono_compile_create_var (cfg, D.37564, 329);
        temp->backend.is_pinvoke = 1;
        D.32755 = cfg->mempool;
        dest = mono_mempool_alloc (D.32755, 56);
        dest->data.op[1].const_val = 0;
        D.41871 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.41871;
        dest->prev = 0B;
        D.41872 = dest->prev;
        dest->next = D.41872;
        dest->opcode = 314;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.41873 = dest->sreg3;
        dest->sreg2 = D.41873;
        D.41874 = dest->sreg2;
        dest->sreg1 = D.41874;
        D.32979 = cfg->ip;
        dest->cil_code = D.32979;
        D.33491 = cfg->varinfo;
        D.41875 = temp->data.op[0].const_val;
        D.41876 = (unsigned int) D.41875;
        D.41877 = D.41876 * 4;
        D.41878 = D.33491 + D.41877;
        D.41879 = *D.41878;
        dest->data.op[0].p = D.41879;
        D.33491 = cfg->varinfo;
        D.41875 = temp->data.op[0].const_val;
        D.41876 = (unsigned int) D.41875;
        D.41877 = D.41876 * 4;
        D.41878 = D.33491 + D.41877;
        D.41879 = *D.41878;
        D.33491 = cfg->varinfo;
        D.41875 = temp->data.op[0].const_val;
        D.41876 = (unsigned int) D.41875;
        D.41877 = D.41876 * 4;
        D.41878 = D.33491 + D.41877;
        D.41879 = *D.41878;
        D.41880 = D.41879->flags;
        D.41881 = D.41880 | 16;
        D.41879->flags = D.41881;
        dest->type = 5;
        D.33491 = cfg->varinfo;
        D.41875 = temp->data.op[0].const_val;
        D.41876 = (unsigned int) D.41875;
        D.41877 = D.41876 * 4;
        D.41878 = D.33491 + D.41877;
        D.41879 = *D.41878;
        D.41882 = D.41879->klass;
        dest->klass = D.41882;
        D.41883 = alloc_dreg (cfg, 5);
        D.41884 = (int) D.41883;
        dest->dreg = D.41884;
        cfg->has_indirection = 1;
        D.32904 = cfg->gsharedvt;
        D.33836 = D.32904 != 0;
        D.33837 = (long int) D.33836;
        D.33838 = __builtin_expect (D.33837, 0);
        if (D.33838 != 0) goto <D.41885>; else goto <D.41886>;
        <D.41885>:
        D.33491 = cfg->varinfo;
        D.41875 = temp->data.op[0].const_val;
        D.41876 = (unsigned int) D.41875;
        D.41877 = D.41876 * 4;
        D.41878 = D.33491 + D.41877;
        D.41879 = *D.41878;
        D.41887 = D.41879->data.op[1].vtype;
        D.41888 = mini_is_gsharedvt_variable_type (cfg, D.41887);
        if (D.41888 != 0) goto <D.41889>; else goto <D.41890>;
        <D.41889>:
        handle_gsharedvt_ldaddr (cfg);
        <D.41890>:
        <D.41886>:
        D.41892 = mono_arch_is_soft_float ();
        if (D.41892 != 0) goto <D.41893>; else goto <D.41894>;
        <D.41893>:
        D.33491 = cfg->varinfo;
        D.41875 = temp->data.op[0].const_val;
        D.41876 = (unsigned int) D.41875;
        D.41877 = D.41876 * 4;
        D.41878 = D.33491 + D.41877;
        D.41879 = *D.41878;
        D.41895 = D.41879->type;
        D.41896 = D.41895 == 2;
        D.41897 = D.41895 == 4;
        D.41898 = D.41896 | D.41897;
        D.41899 = (int) D.41898;
        iftmp.326 = (_Bool) D.41899;
        goto <D.41900>;
        <D.41894>:
        D.33491 = cfg->varinfo;
        D.41875 = temp->data.op[0].const_val;
        D.41876 = (unsigned int) D.41875;
        D.41877 = D.41876 * 4;
        D.41878 = D.33491 + D.41877;
        D.41879 = *D.41878;
        D.41901 = D.41879->type;
        iftmp.326 = D.41901 == 2;
        <D.41900>:
        if (iftmp.326 != 0) goto <D.41902>; else goto <D.41903>;
        <D.41902>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.33491 = cfg->varinfo;
          D.41875 = temp->data.op[0].const_val;
          D.41876 = (unsigned int) D.41875;
          D.41877 = D.41876 * 4;
          D.41878 = D.33491 + D.41877;
          D.41879 = *D.41878;
          D.41905 = D.41879->dreg;
          D.41906 = D.41905 + 1;
          D.41907 = (unsigned int) D.41906;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.41907 < D.33862) goto <D.41908>; else goto <D.41909>;
          <D.41908>:
          D.33865 = cfg->vreg_to_inst;
          D.33491 = cfg->varinfo;
          D.41875 = temp->data.op[0].const_val;
          D.41876 = (unsigned int) D.41875;
          D.41877 = D.41876 * 4;
          D.41878 = D.33491 + D.41877;
          D.41879 = *D.41878;
          D.41905 = D.41879->dreg;
          D.41910 = (sizetype) D.41905;
          D.41911 = D.41910 + 1;
          D.41912 = D.41911 * 4;
          D.41913 = D.33865 + D.41912;
          iftmp.327 = *D.41913;
          goto <D.41914>;
          <D.41909>:
          iftmp.327 = 0B;
          <D.41914>:
          var1 = iftmp.327;
          D.33491 = cfg->varinfo;
          D.41875 = temp->data.op[0].const_val;
          D.41876 = (unsigned int) D.41875;
          D.41877 = D.41876 * 4;
          D.41878 = D.33491 + D.41877;
          D.41879 = *D.41878;
          D.41905 = D.41879->dreg;
          D.41916 = D.41905 + 2;
          D.41917 = (unsigned int) D.41916;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.41917 < D.33862) goto <D.41918>; else goto <D.41919>;
          <D.41918>:
          D.33865 = cfg->vreg_to_inst;
          D.33491 = cfg->varinfo;
          D.41875 = temp->data.op[0].const_val;
          D.41876 = (unsigned int) D.41875;
          D.41877 = D.41876 * 4;
          D.41878 = D.33491 + D.41877;
          D.41879 = *D.41878;
          D.41905 = D.41879->dreg;
          D.41910 = (sizetype) D.41905;
          D.41920 = D.41910 + 2;
          D.41921 = D.41920 * 4;
          D.41922 = D.33865 + D.41921;
          iftmp.328 = *D.41922;
          goto <D.41923>;
          <D.41919>:
          iftmp.328 = 0B;
          <D.41923>:
          var2 = iftmp.328;
          D.41924 = var1 == 0B;
          D.41925 = (long int) D.41924;
          D.41926 = __builtin_expect (D.41925, 0);
          if (D.41926 != 0) goto <D.41927>; else goto <D.41928>;
          <D.41927>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11178, "var1");
          <D.41928>:
          D.41929 = var2 == 0B;
          D.41930 = (long int) D.41929;
          D.41931 = __builtin_expect (D.41930, 0);
          if (D.41931 != 0) goto <D.41932>; else goto <D.41933>;
          <D.41932>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11178, "var2");
          <D.41933>:
          D.41934 = var1->flags;
          D.41935 = D.41934 | 16;
          var1->flags = D.41935;
          D.41936 = var2->flags;
          D.41937 = D.41936 | 16;
          var2->flags = D.41937;
        }
        <D.41903>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.41938>; else goto <D.41939>;
        <D.41938>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = dest;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        dest->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = dest;
        goto <D.41940>;
        <D.41939>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = dest;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.41940>:
        klass.170 = klass;
        mini_emit_stobj (cfg, dest, src, klass.170, 1);
        D.32755 = cfg->mempool;
        dest = mono_mempool_alloc (D.32755, 56);
        dest->data.op[1].const_val = 0;
        D.41871 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.41871;
        dest->prev = 0B;
        D.41872 = dest->prev;
        dest->next = D.41872;
        dest->opcode = 424;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.41873 = dest->sreg3;
        dest->sreg2 = D.41873;
        D.41874 = dest->sreg2;
        dest->sreg1 = D.41874;
        D.32979 = cfg->ip;
        dest->cil_code = D.32979;
        D.33491 = cfg->varinfo;
        D.41875 = temp->data.op[0].const_val;
        D.41876 = (unsigned int) D.41875;
        D.41877 = D.41876 * 4;
        D.41878 = D.33491 + D.41877;
        D.41879 = *D.41878;
        D.41887 = D.41879->data.op[1].vtype;
        D.41941 = mono_type_to_regmove (cfg, D.41887);
        D.41942 = (short unsigned int) D.41941;
        dest->opcode = D.41942;
        D.33491 = cfg->varinfo;
        D.41875 = temp->data.op[0].const_val;
        D.41876 = (unsigned int) D.41875;
        D.41877 = D.41876 * 4;
        D.41878 = D.33491 + D.41877;
        D.41879 = *D.41878;
        D.41887 = D.41879->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.41887, dest);
        D.33491 = cfg->varinfo;
        D.41875 = temp->data.op[0].const_val;
        D.41876 = (unsigned int) D.41875;
        D.41877 = D.41876 * 4;
        D.41878 = D.33491 + D.41877;
        D.41879 = *D.41878;
        D.41882 = D.41879->klass;
        dest->klass = D.41882;
        D.33491 = cfg->varinfo;
        D.41875 = temp->data.op[0].const_val;
        D.41876 = (unsigned int) D.41875;
        D.41877 = D.41876 * 4;
        D.41878 = D.33491 + D.41877;
        D.41879 = *D.41878;
        D.41905 = D.41879->dreg;
        dest->sreg1 = D.41905;
        D.41943 = dest->type;
        D.41944 = (<unnamed type>) D.41943;
        D.41945 = alloc_dreg (cfg, D.41944);
        D.41946 = (int) D.41945;
        dest->dreg = D.41946;
        D.41947 = dest->opcode;
        if (D.41947 == 427) goto <D.41948>; else goto <D.41949>;
        <D.41948>:
        D.33491 = cfg->varinfo;
        D.41875 = temp->data.op[0].const_val;
        D.41876 = (unsigned int) D.41875;
        D.41877 = D.41876 * 4;
        D.41878 = D.33491 + D.41877;
        D.41879 = *D.41878;
        D.41887 = D.41879->data.op[1].vtype;
        D.41950 = mono_class_from_mono_type (D.41887);
        dest->klass = D.41950;
        <D.41949>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.41951>; else goto <D.41952>;
        <D.41951>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = dest;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        dest->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = dest;
        goto <D.41953>;
        <D.41952>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = dest;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.41953>:
        dest->type = 7;
        klass.170 = klass;
        dest->klass = klass.170;
        sp.329 = sp;
        sp = sp.329 + 4;
        *sp.329 = dest;
        ip = ip + 6;
      }
      goto <D.30583>;
      <D.30607>:
      D.36285 = cfg->ret;
      D.41955 = D.36285 == 0B;
      D.41956 = (long int) D.41955;
      D.41957 = __builtin_expect (D.41956, 0);
      if (D.41957 != 0) goto <D.41958>; else goto <D.41959>;
      <D.41958>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11194, "cfg->ret");
      <D.41959>:
      D.41960 = mono_method_signature (method);
      D.41961 = BIT_FIELD_REF <*D.41960, 8, 88>;
      D.41962 = D.41961 & 1;
      D.41963 = D.41962 == 0;
      D.41964 = (long int) D.41963;
      D.41965 = __builtin_expect (D.41964, 0);
      if (D.41965 != 0) goto <D.41966>; else goto <D.41967>;
      <D.41966>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11195, "mono_method_signature (method)->pinvoke");
      <D.41967>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.41968>; else goto <D.41969>;
      <D.41968>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.41970>; else goto <D.41971>;
      <D.41970>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.41972>; else goto <D.41973>;
      <D.41972>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41973>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41971>:
      D.41974 = mini_get_debug_options ();
      D.41975 = D.41974->break_on_unverified;
      if (D.41975 != 0) goto <D.41976>; else goto unverified;
      <D.41976>:
      raise (5);
      <D.41969>:
      sp = sp + 4294967292;
      D.37547 = ip + 6;
      if (D.37547 > end) goto <D.41977>; else goto <D.41978>;
      <D.41977>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.41979>; else goto <D.41980>;
      <D.41979>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.41981>; else goto <D.41982>;
      <D.41981>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41982>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41980>:
      D.41983 = mini_get_debug_options ();
      D.41984 = D.41983->break_on_unverified;
      if (D.41984 != 0) goto <D.41985>; else goto unverified;
      <D.41985>:
      raise (5);
      <D.41978>:
      D.41529 = ip + 2;
      token = mono_read32 (D.41529);
      klass.330 = mono_method_get_wrapper_data (method, token);
      klass = klass.330;
      D.36328 = cfg->vret_addr;
      if (D.36328 == 0B) goto <D.41987>; else goto <D.41988>;
      <D.41987>:
      D.33528 = BIT_FIELD_REF <*cfg, 8, 3400>;
      D.41989 = D.33528 & 4;
      D.41990 = D.41989 == 0;
      D.41991 = (long int) D.41990;
      D.41992 = __builtin_expect (D.41991, 0);
      if (D.41992 != 0) goto <D.41993>; else goto <D.41994>;
      <D.41993>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11204, "cfg->ret_var_is_local");
      <D.41994>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 314;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.36285 = cfg->ret;
      ins->data.op[0].p = D.36285;
      D.36285 = cfg->ret;
      D.36285 = cfg->ret;
      D.41995 = D.36285->flags;
      D.41996 = D.41995 | 16;
      D.36285->flags = D.41996;
      ins->type = 5;
      D.36285 = cfg->ret;
      D.36337 = D.36285->klass;
      ins->klass = D.36337;
      D.41997 = alloc_dreg (cfg, 5);
      D.41998 = (int) D.41997;
      ins->dreg = D.41998;
      cfg->has_indirection = 1;
      D.32904 = cfg->gsharedvt;
      D.33836 = D.32904 != 0;
      D.33837 = (long int) D.33836;
      D.33838 = __builtin_expect (D.33837, 0);
      if (D.33838 != 0) goto <D.41999>; else goto <D.42000>;
      <D.41999>:
      D.36285 = cfg->ret;
      D.42001 = D.36285->data.op[1].vtype;
      D.42002 = mini_is_gsharedvt_variable_type (cfg, D.42001);
      if (D.42002 != 0) goto <D.42003>; else goto <D.42004>;
      <D.42003>:
      handle_gsharedvt_ldaddr (cfg);
      <D.42004>:
      <D.42000>:
      D.42006 = mono_arch_is_soft_float ();
      if (D.42006 != 0) goto <D.42007>; else goto <D.42008>;
      <D.42007>:
      D.36285 = cfg->ret;
      D.42009 = D.36285->type;
      D.42010 = D.42009 == 2;
      D.42011 = D.42009 == 4;
      D.42012 = D.42010 | D.42011;
      D.42013 = (int) D.42012;
      iftmp.331 = (_Bool) D.42013;
      goto <D.42014>;
      <D.42008>:
      D.36285 = cfg->ret;
      D.42015 = D.36285->type;
      iftmp.331 = D.42015 == 2;
      <D.42014>:
      if (iftmp.331 != 0) goto <D.42016>; else goto <D.42017>;
      <D.42016>:
      {
        struct MonoInst * var1;
        struct MonoInst * var2;

        D.36285 = cfg->ret;
        D.36338 = D.36285->dreg;
        D.42019 = D.36338 + 1;
        D.42020 = (unsigned int) D.42019;
        D.33862 = cfg->vreg_to_inst_len;
        if (D.42020 < D.33862) goto <D.42021>; else goto <D.42022>;
        <D.42021>:
        D.33865 = cfg->vreg_to_inst;
        D.36285 = cfg->ret;
        D.36338 = D.36285->dreg;
        D.42023 = (sizetype) D.36338;
        D.42024 = D.42023 + 1;
        D.42025 = D.42024 * 4;
        D.42026 = D.33865 + D.42025;
        iftmp.332 = *D.42026;
        goto <D.42027>;
        <D.42022>:
        iftmp.332 = 0B;
        <D.42027>:
        var1 = iftmp.332;
        D.36285 = cfg->ret;
        D.36338 = D.36285->dreg;
        D.42029 = D.36338 + 2;
        D.42030 = (unsigned int) D.42029;
        D.33862 = cfg->vreg_to_inst_len;
        if (D.42030 < D.33862) goto <D.42031>; else goto <D.42032>;
        <D.42031>:
        D.33865 = cfg->vreg_to_inst;
        D.36285 = cfg->ret;
        D.36338 = D.36285->dreg;
        D.42023 = (sizetype) D.36338;
        D.42033 = D.42023 + 2;
        D.42034 = D.42033 * 4;
        D.42035 = D.33865 + D.42034;
        iftmp.333 = *D.42035;
        goto <D.42036>;
        <D.42032>:
        iftmp.333 = 0B;
        <D.42036>:
        var2 = iftmp.333;
        D.42037 = var1 == 0B;
        D.42038 = (long int) D.42037;
        D.42039 = __builtin_expect (D.42038, 0);
        if (D.42039 != 0) goto <D.42040>; else goto <D.42041>;
        <D.42040>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11206, "var1");
        <D.42041>:
        D.42042 = var2 == 0B;
        D.42043 = (long int) D.42042;
        D.42044 = __builtin_expect (D.42043, 0);
        if (D.42044 != 0) goto <D.42045>; else goto <D.42046>;
        <D.42045>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11206, "var2");
        <D.42046>:
        D.42047 = var1->flags;
        D.42048 = D.42047 | 16;
        var1->flags = D.42048;
        D.42049 = var2->flags;
        D.42050 = D.42049 | 16;
        var2->flags = D.42050;
      }
      <D.42017>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.42051>; else goto <D.42052>;
      <D.42051>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.42053>;
      <D.42052>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.42053>:
      goto <D.42054>;
      <D.41988>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      ins->type = 5;
      D.36285 = cfg->ret;
      D.36337 = D.36285->klass;
      ins->klass = D.36337;
      D.36328 = cfg->vret_addr;
      D.36351 = D.36328->dreg;
      ins->sreg1 = D.36351;
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.42055 = alloc_dreg (cfg, D.33502);
      D.42056 = (int) D.42055;
      ins->dreg = D.42056;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.42057>; else goto <D.42058>;
      <D.42057>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.42059>;
      <D.42058>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.42059>:
      <D.42054>:
      D.33750 = *sp;
      klass.170 = klass;
      mini_emit_stobj (cfg, ins, D.33750, klass.170, 1);
      if (sp != stack_start) goto <D.42060>; else goto <D.42061>;
      <D.42060>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.42062>; else goto <D.42063>;
      <D.42062>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.42064>; else goto <D.42065>;
      <D.42064>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.42065>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.42063>:
      D.42066 = mini_get_debug_options ();
      D.42067 = D.42066->break_on_unverified;
      if (D.42067 != 0) goto <D.42068>; else goto unverified;
      <D.42068>:
      raise (5);
      <D.42061>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 442;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      ins->data.op[0].target_block = end_bblock;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      if (D.33093 != 0B) goto <D.42069>; else goto <D.42070>;
      <D.42069>:
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      D.33093->next = ins;
      bblock.76 = bblock;
      D.33093 = bblock.76->last_ins;
      ins->prev = D.33093;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      goto <D.42071>;
      <D.42070>:
      bblock.76 = bblock;
      bblock.76 = bblock;
      bblock.76->last_ins = ins;
      D.33093 = bblock.76->last_ins;
      bblock.76->code = D.33093;
      <D.42071>:
      bblock.76 = bblock;
      link_bblock (cfg, bblock.76, end_bblock);
      start_new_bblock = 1;
      ip = ip + 6;
      goto <D.30583>;
      <D.30610>:
      <D.30611>:
      {
        int token;

        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        if (D.33526 <= 3) goto <D.42072>; else goto <D.42073>;
        <D.42072>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.42074>; else goto <D.42075>;
        <D.42074>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.42076>; else goto <D.42077>;
        <D.42076>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.42077>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.42075>:
        D.42078 = mini_get_debug_options ();
        D.42079 = D.42078->break_on_unverified;
        if (D.42079 != 0) goto <D.42080>; else goto unverified;
        <D.42080>:
        raise (5);
        <D.42073>:
        sp = sp + 4294967292;
        D.37547 = ip + 6;
        if (D.37547 > end) goto <D.42081>; else goto <D.42082>;
        <D.42081>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.42083>; else goto <D.42084>;
        <D.42083>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.42085>; else goto <D.42086>;
        <D.42085>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.42086>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.42084>:
        D.42087 = mini_get_debug_options ();
        D.42088 = D.42087->break_on_unverified;
        if (D.42088 != 0) goto <D.42089>; else goto unverified;
        <D.42089>:
        raise (5);
        <D.42082>:
        D.41529 = ip + 2;
        D.42090 = mono_read32 (D.41529);
        token = (int) D.42090;
        token.334 = (unsigned int) token;
        klass.335 = mono_method_get_wrapper_data (method, token.334);
        klass = klass.335;
        D.33780 = ip + 1;
        D.33781 = *D.33780;
        if (D.33781 == 7) goto <D.42093>; else goto <D.42094>;
        <D.42093>:
        klass.170 = klass;
        D.33750 = *sp;
        ins = handle_cisinst (cfg, klass.170, D.33750);
        goto <D.42095>;
        <D.42094>:
        klass.170 = klass;
        D.33750 = *sp;
        ins = handle_ccastclass (cfg, klass.170, D.33750);
        <D.42095>:
        bblock.125 = cfg->cbb;
        bblock = bblock.125;
        sp.336 = sp;
        sp = sp.336 + 4;
        *sp.336 = ins;
        ip = ip + 6;
        goto <D.30583>;
      }
      <D.30613>:
      <D.30614>:
      ip = ip + 2;
      goto <D.30583>;
      <D.30615>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      D.33440 = header->max_stack;
      D.33441 = (int) D.33440;
      if (D.33527 >= D.33441) goto <D.42097>; else goto <D.42098>;
      <D.42097>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.42099>; else goto <D.42100>;
      <D.42099>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.42101>; else goto <D.42102>;
      <D.42101>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.42102>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.42100>:
      D.42103 = mini_get_debug_options ();
      D.42104 = D.42103->break_on_unverified;
      if (D.42104 != 0) goto <D.42105>; else goto unverified;
      <D.42105>:
      raise (5);
      <D.42098>:
      D.37547 = ip + 6;
      if (D.37547 > end) goto <D.42106>; else goto <D.42107>;
      <D.42106>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.42108>; else goto <D.42109>;
      <D.42108>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.42110>; else goto <D.42111>;
      <D.42110>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.42111>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.42109>:
      D.42112 = mini_get_debug_options ();
      D.42113 = D.42112->break_on_unverified;
      if (D.42113 != 0) goto <D.42114>; else goto unverified;
      <D.42114>:
      raise (5);
      <D.42107>:
      D.41529 = ip + 2;
      token = mono_read32 (D.41529);
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.33151 = D.33150 & 64;
      if (D.33151 != 0) goto <D.42116>; else goto <D.42117>;
      <D.42116>:
      iftmp.337 = 732;
      goto <D.42118>;
      <D.42117>:
      iftmp.337 = 362;
      <D.42118>:
      ins->opcode = iftmp.337;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.42119 = mono_method_get_wrapper_data (method, token);
      ins->data.op[0].p = D.42119;
      ins->data.op[1].src = 11B;
      ins->type = 3;
      D.42120 = alloc_dreg (cfg, 3);
      D.42121 = (int) D.42120;
      ins->dreg = D.42121;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.42122>; else goto <D.42123>;
      <D.42122>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.42124>;
      <D.42123>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.42124>:
      sp.338 = sp;
      sp = sp.338 + 4;
      *sp.338 = ins;
      ip = ip + 6;
      num_calls.339 = num_calls;
      num_calls = num_calls.339 + 1;
      D.42127 = num_calls.339 * 10;
      inline_costs = D.42127 + inline_costs;
      goto <D.30583>;
      <D.30616>:
      bblock.76 = bblock;
      bblock.76->out_of_line = 1;
      ip = ip + 2;
      goto <D.30583>;
      <D.30617>:
      {
        int key;

        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        D.33527 = D.33526 /[ex] 4;
        D.33440 = header->max_stack;
        D.33441 = (int) D.33440;
        if (D.33527 >= D.33441) goto <D.42128>; else goto <D.42129>;
        <D.42128>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.42130>; else goto <D.42131>;
        <D.42130>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.42132>; else goto <D.42133>;
        <D.42132>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.42133>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.42131>:
        D.42134 = mini_get_debug_options ();
        D.42135 = D.42134->break_on_unverified;
        if (D.42135 != 0) goto <D.42136>; else goto unverified;
        <D.42136>:
        raise (5);
        <D.42129>:
        D.37547 = ip + 6;
        if (D.37547 > end) goto <D.42137>; else goto <D.42138>;
        <D.42137>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.42139>; else goto <D.42140>;
        <D.42139>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.42141>; else goto <D.42142>;
        <D.42141>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.42142>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.42140>:
        D.42143 = mini_get_debug_options ();
        D.42144 = D.42143->break_on_unverified;
        if (D.42144 != 0) goto <D.42145>; else goto unverified;
        <D.42145>:
        raise (5);
        <D.42138>:
        D.41529 = ip + 2;
        D.42146 = mono_read32 (D.41529);
        key = (int) D.42146;
        D.42147 = key > 8;
        D.42148 = (long int) D.42147;
        D.42149 = __builtin_expect (D.42148, 0);
        if (D.42149 != 0) goto <D.42150>; else goto <D.42151>;
        <D.42150>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11268, "key < TLS_KEY_NUM");
        <D.42151>:
        key.340 = (<unnamed type>) key;
        ins = mono_create_tls_get (cfg, key.340);
        if (ins == 0B) goto <D.42153>; else goto <D.42154>;
        <D.42153>:
        D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.33151 = D.33150 & 64;
        if (D.33151 != 0) goto <D.42155>; else goto <D.42156>;
        <D.42155>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 1) goto <D.42157>; else goto <D.42158>;
        <D.42157>:
        printf ("AOT disabled: %s:%d\n", "method-to-ir.c", 11273);
        <D.42158>:
        cfg->disable_aot = 1;
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 791;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        D.42159 = alloc_preg (cfg);
        D.42160 = (int) D.42159;
        ins->dreg = D.42160;
        ins->type = 3;
        goto <D.42161>;
        <D.42156>:
        monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 11278);
        <D.42161>:
        <D.42154>:
        ins->type = 3;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        if (D.33093 != 0B) goto <D.42162>; else goto <D.42163>;
        <D.42162>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        D.33093->next = ins;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        ins->prev = D.33093;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        goto <D.42164>;
        <D.42163>:
        bblock.76 = bblock;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        D.33093 = bblock.76->last_ins;
        bblock.76->code = D.33093;
        <D.42164>:
        sp.341 = sp;
        sp = sp.341 + 4;
        *sp.341 = ins;
        ip = ip + 6;
        goto <D.30583>;
      }
      <D.30619>:
      {
        struct MonoCallInst * call;

        D.42166 = cfg->dyn_call_var;
        if (D.42166 == 0B) goto <D.42167>; else goto <D.42168>;
        <D.42167>:
        D.33162 = mono_defaults.int_class;
        D.33163 = &D.33162->byval_arg;
        D.42169 = mono_compile_create_var (cfg, D.33163, 329);
        cfg->dyn_call_var = D.42169;
        D.42166 = cfg->dyn_call_var;
        D.42166 = cfg->dyn_call_var;
        D.42170 = D.42166->flags;
        D.42171 = D.42170 | 4;
        D.42166->flags = D.42171;
        <D.42168>:
        D.32755 = cfg->mempool;
        call = mono_mempool_alloc0 (D.32755, 120);
        call->inst.opcode = 361;
        call->inst.dreg = -1;
        call->inst.sreg3 = -1;
        D.42172 = call->inst.sreg3;
        call->inst.sreg2 = D.42172;
        D.42173 = call->inst.sreg2;
        call->inst.sreg1 = D.42173;
        D.32979 = cfg->ip;
        call->inst.cil_code = D.32979;
        ins = call;
        sp = sp + 4294967288;
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        ins->sreg1 = D.33943;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        D.34877 = D.34876->dreg;
        ins->sreg2 = D.34877;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        if (D.33093 != 0B) goto <D.42174>; else goto <D.42175>;
        <D.42174>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        D.33093->next = ins;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        ins->prev = D.33093;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        goto <D.42176>;
        <D.42175>:
        bblock.76 = bblock;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        D.33093 = bblock.76->last_ins;
        bblock.76->code = D.33093;
        <D.42176>:
        D.42177 = cfg->param_area;
        D.42178 = MAX_EXPR <D.42177, 24>;
        cfg->param_area = D.42178;
        ip = ip + 2;
        num_calls.342 = num_calls;
        num_calls = num_calls.342 + 1;
        D.42180 = num_calls.342 * 10;
        inline_costs = D.42180 + inline_costs;
        goto <D.30583>;
      }
      <D.30621>:
      D.34195 = ip + 5;
      if (D.34195 > end) goto <D.42181>; else goto <D.42182>;
      <D.42181>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.42183>; else goto <D.42184>;
      <D.42183>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.42185>; else goto <D.42186>;
      <D.42185>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.42186>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.42184>:
      D.42187 = mini_get_debug_options ();
      D.42188 = D.42187->break_on_unverified;
      if (D.42188 != 0) goto <D.42189>; else goto unverified;
      <D.42189>:
      raise (5);
      <D.42182>:
      D.34214 = ip + 1;
      D.42190 = mono_read32 (D.34214);
      D.42191 = (int) D.42190;
      emit_memory_barrier (cfg, D.42191);
      ip = ip + 5;
      goto <D.30583>;
      <D.30622>:
      {
        struct MonoInst * args[16];
        struct MonoInst * ad_ins;
        struct MonoInst * lmf_ins;
        struct MonoBasicBlock * next_bb;

        try
          {
            next_bb = 0B;
            D.33162 = mono_defaults.int_class;
            D.33163 = &D.33162->byval_arg;
            D.42192 = mono_compile_create_var (cfg, D.33163, 329);
            cfg->orig_domain_var = D.42192;
            D.32755 = cfg->mempool;
            ins = mono_mempool_alloc (D.32755, 56);
            ins->data.op[1].const_val = 0;
            D.32975 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.32975;
            ins->prev = 0B;
            D.32976 = ins->prev;
            ins->next = D.32976;
            ins->opcode = 362;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.32977 = ins->sreg3;
            ins->sreg2 = D.32977;
            D.32978 = ins->sreg2;
            ins->sreg1 = D.32978;
            D.32979 = cfg->ip;
            ins->cil_code = D.32979;
            ins->data.op[0].p = 0B;
            ins->type = 3;
            D.42193 = alloc_dreg (cfg, 3);
            D.42194 = (int) D.42193;
            ins->dreg = D.42194;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.42195>; else goto <D.42196>;
            <D.42195>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = ins;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            ins->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            goto <D.42197>;
            <D.42196>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.42197>:
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.42198 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.42198;
              inst->prev = 0B;
              D.42199 = inst->prev;
              inst->next = D.42199;
              inst->opcode = 424;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.42200 = inst->sreg3;
              inst->sreg2 = D.42200;
              D.42201 = inst->sreg2;
              inst->sreg1 = D.42201;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              D.42202 = cfg->orig_domain_var;
              D.42203 = D.42202->dreg;
              inst->dreg = D.42203;
              D.33170 = ins->dreg;
              inst->sreg1 = D.33170;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.42204>; else goto <D.42205>;
              <D.42204>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.42206>;
              <D.42205>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.42206>:
            }
            ad_ins = mono_get_domain_intrinsic (cfg);
            lmf_ins = mono_get_lmf_intrinsic (cfg);
            D.42207 = ad_ins != 0B;
            D.42208 = lmf_ins != 0B;
            D.42209 = D.42207 & D.42208;
            if (D.42209 != 0) goto <D.42210>; else goto <D.42211>;
            <D.42210>:
            D.32755 = cfg->mempool;
            next_bb = mono_mempool_alloc0 (D.32755, 172);
            D.32864 = cfg->num_bblocks;
            D.42212 = D.32864;
            D.42213 = D.42212 + 1;
            cfg->num_bblocks = D.42213;
            D.42214 = (int) D.42212;
            next_bb->block_num = D.42214;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.42215>; else goto <D.42216>;
            <D.42215>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = ad_ins;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            ad_ins->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ad_ins;
            goto <D.42217>;
            <D.42216>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ad_ins;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.42217>:
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.42218 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.42218;
              inst->prev = 0B;
              D.42219 = inst->prev;
              inst->next = D.42219;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.42220 = inst->sreg3;
              inst->sreg2 = D.42220;
              D.42221 = inst->sreg2;
              inst->sreg1 = D.42221;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = -1;
              D.42222 = ad_ins->dreg;
              inst->sreg1 = D.42222;
              inst->data.op[1].const_val = 0;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.42223>; else goto <D.42224>;
              <D.42223>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.42225>;
              <D.42224>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.42225>:
            }
            {
              struct MonoInst * ins;
              struct MonoBasicBlock * falsebb;

              D.32755 = cfg->mempool;
              ins = mono_mempool_alloc (D.32755, 56);
              ins->data.op[1].const_val = 0;
              D.42226 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.42226;
              ins->prev = 0B;
              D.42227 = ins->prev;
              ins->next = D.42227;
              ins->opcode = 653;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.42228 = ins->sreg3;
              ins->sreg2 = D.42228;
              D.42229 = ins->sreg2;
              ins->sreg1 = D.42229;
              D.32979 = cfg->ip;
              ins->cil_code = D.32979;
              if (0 != 0) goto <D.42230>; else goto <D.42231>;
              <D.42230>:
              D.32755 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.32755, 172);
              D.32864 = cfg->num_bblocks;
              D.42232 = D.32864;
              D.42233 = D.42232 + 1;
              cfg->num_bblocks = D.42233;
              D.42234 = (int) D.42232;
              falsebb->block_num = D.42234;
              ins->data.op[0].target_block = next_bb;
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, next_bb);
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.42235>; else goto <D.42236>;
              <D.42235>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = ins;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              ins->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              goto <D.42237>;
              <D.42236>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.42237>:
              D.42238 = falsebb->cil_code;
              if (D.42238 != 0B) goto <D.42239>; else goto <D.42240>;
              <D.42239>:
              D.32887 = cfg->cil_offset_to_bb;
              D.42238 = falsebb->cil_code;
              D.42241 = (int) D.42238;
              D.32891 = cfg->cil_start;
              D.32892 = (int) D.32891;
              D.42242 = D.42241 - D.32892;
              D.42243 = (unsigned int) D.42242;
              D.42244 = D.42243 * 4;
              D.42245 = D.32887 + D.42244;
              *D.42245 = falsebb;
              <D.42240>:
              D.32923 = cfg->real_offset;
              falsebb->real_offset = D.32923;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.42249>; else goto <D.42246>;
              <D.42249>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.42250 = D.33008->opcode;
              D.42251 = D.42250 + 64985;
              D.42252 = D.42251 <= 9;
              D.42253 = D.42250 + 64878;
              D.42254 = D.42253 <= 9;
              D.42255 = D.42252 | D.42254;
              if (D.42255 != 0) goto <D.42247>; else goto <D.42256>;
              <D.42256>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36965 = D.33008->opcode;
              D.36966 = D.36965 + 64888;
              if (D.36966 <= 9) goto <D.42247>; else goto <D.42246>;
              <D.42247>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36967 = D.33008->data.op[1].many_blocks;
              D.36968 = D.36967 + 4;
              D.36969 = *D.36968;
              if (D.36969 == 0B) goto <D.42257>; else goto <D.42246>;
              <D.42257>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36967 = D.33008->data.op[1].many_blocks;
              D.36968 = D.36967 + 4;
              *D.36968 = falsebb;
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, falsebb);
              goto <D.42248>;
              <D.42246>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 == 0B) goto <D.42258>; else goto <D.42260>;
              <D.42260>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.42261 = D.33008->opcode;
              D.42262 = D.42261 != 442;
              D.42263 = D.42261 != 759;
              D.42264 = D.42262 & D.42263;
              if (D.42264 != 0) goto <D.42265>; else goto <D.42259>;
              <D.42265>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.42266 = D.33008->opcode;
              D.42267 = D.42266 + 64985;
              D.42268 = D.42267 > 9;
              D.42269 = D.42266 + 64878;
              D.42270 = D.42269 > 9;
              D.42271 = D.42268 & D.42270;
              if (D.42271 != 0) goto <D.42272>; else goto <D.42259>;
              <D.42272>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36965 = D.33008->opcode;
              D.36966 = D.36965 + 64888;
              if (D.36966 > 9) goto <D.42258>; else goto <D.42259>;
              <D.42258>:
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, falsebb);
              <D.42259>:
              <D.42248>:
              bblock.125 = cfg->cbb;
              bblock.125->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.42273>;
              <D.42231>:
              D.32755 = cfg->mempool;
              D.42274 = mono_mempool_alloc (D.32755, 8);
              ins->data.op[1].many_blocks = D.42274;
              D.42275 = ins->data.op[1].many_blocks;
              *D.42275 = next_bb;
              D.42275 = ins->data.op[1].many_blocks;
              D.42276 = D.42275 + 4;
              *D.42276 = 0B;
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, next_bb);
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.42277>; else goto <D.42278>;
              <D.42277>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = ins;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              ins->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              goto <D.42279>;
              <D.42278>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.42279>:
              D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.36993 = D.33150 & 8;
              if (D.36993 == 0) goto <D.42280>; else goto <D.42281>;
              <D.42280>:
              D.32755 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.32755, 172);
              D.32864 = cfg->num_bblocks;
              D.42282 = D.32864;
              D.42283 = D.42282 + 1;
              cfg->num_bblocks = D.42283;
              D.42284 = (int) D.42282;
              falsebb->block_num = D.42284;
              D.42275 = ins->data.op[1].many_blocks;
              D.42276 = D.42275 + 4;
              *D.42276 = falsebb;
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, falsebb);
              D.42238 = falsebb->cil_code;
              if (D.42238 != 0B) goto <D.42285>; else goto <D.42286>;
              <D.42285>:
              D.32887 = cfg->cil_offset_to_bb;
              D.42238 = falsebb->cil_code;
              D.42241 = (int) D.42238;
              D.32891 = cfg->cil_start;
              D.32892 = (int) D.32891;
              D.42242 = D.42241 - D.32892;
              D.42243 = (unsigned int) D.42242;
              D.42244 = D.42243 * 4;
              D.42245 = D.32887 + D.42244;
              *D.42245 = falsebb;
              <D.42286>:
              D.32923 = cfg->real_offset;
              falsebb->real_offset = D.32923;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.42290>; else goto <D.42287>;
              <D.42290>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.42291 = D.33008->opcode;
              D.42292 = D.42291 + 64985;
              D.42293 = D.42292 <= 9;
              D.42294 = D.42291 + 64878;
              D.42295 = D.42294 <= 9;
              D.42296 = D.42293 | D.42295;
              if (D.42296 != 0) goto <D.42288>; else goto <D.42297>;
              <D.42297>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36965 = D.33008->opcode;
              D.36966 = D.36965 + 64888;
              if (D.36966 <= 9) goto <D.42288>; else goto <D.42287>;
              <D.42288>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36967 = D.33008->data.op[1].many_blocks;
              D.36968 = D.36967 + 4;
              D.36969 = *D.36968;
              if (D.36969 == 0B) goto <D.42298>; else goto <D.42287>;
              <D.42298>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36967 = D.33008->data.op[1].many_blocks;
              D.36968 = D.36967 + 4;
              *D.36968 = falsebb;
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, falsebb);
              goto <D.42289>;
              <D.42287>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 == 0B) goto <D.42299>; else goto <D.42301>;
              <D.42301>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.42302 = D.33008->opcode;
              D.42303 = D.42302 != 442;
              D.42304 = D.42302 != 759;
              D.42305 = D.42303 & D.42304;
              if (D.42305 != 0) goto <D.42306>; else goto <D.42300>;
              <D.42306>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.42307 = D.33008->opcode;
              D.42308 = D.42307 + 64985;
              D.42309 = D.42308 > 9;
              D.42310 = D.42307 + 64878;
              D.42311 = D.42310 > 9;
              D.42312 = D.42309 & D.42311;
              if (D.42312 != 0) goto <D.42313>; else goto <D.42300>;
              <D.42313>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36965 = D.33008->opcode;
              D.36966 = D.36965 + 64888;
              if (D.36966 > 9) goto <D.42299>; else goto <D.42300>;
              <D.42299>:
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, falsebb);
              <D.42300>:
              <D.42289>:
              bblock.125 = cfg->cbb;
              bblock.125->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.42314>;
              <D.42281>:
              bblock.125 = cfg->cbb;
              bblock.125->extended = 1;
              <D.42314>:
              <D.42273>:
            }
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.42315>; else goto <D.42316>;
            <D.42315>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = lmf_ins;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            lmf_ins->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = lmf_ins;
            goto <D.42317>;
            <D.42316>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = lmf_ins;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.42317>:
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.42318 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.42318;
              inst->prev = 0B;
              D.42319 = inst->prev;
              inst->next = D.42319;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.42320 = inst->sreg3;
              inst->sreg2 = D.42320;
              D.42321 = inst->sreg2;
              inst->sreg1 = D.42321;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              inst->dreg = -1;
              D.42322 = lmf_ins->dreg;
              inst->sreg1 = D.42322;
              inst->data.op[1].const_val = 0;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.42323>; else goto <D.42324>;
              <D.42323>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.42325>;
              <D.42324>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.42325>:
            }
            {
              struct MonoInst * ins;
              struct MonoBasicBlock * falsebb;

              D.32755 = cfg->mempool;
              ins = mono_mempool_alloc (D.32755, 56);
              ins->data.op[1].const_val = 0;
              D.42326 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.42326;
              ins->prev = 0B;
              D.42327 = ins->prev;
              ins->next = D.42327;
              ins->opcode = 653;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.42328 = ins->sreg3;
              ins->sreg2 = D.42328;
              D.42329 = ins->sreg2;
              ins->sreg1 = D.42329;
              D.32979 = cfg->ip;
              ins->cil_code = D.32979;
              if (0 != 0) goto <D.42330>; else goto <D.42331>;
              <D.42330>:
              D.32755 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.32755, 172);
              D.32864 = cfg->num_bblocks;
              D.42332 = D.32864;
              D.42333 = D.42332 + 1;
              cfg->num_bblocks = D.42333;
              D.42334 = (int) D.42332;
              falsebb->block_num = D.42334;
              ins->data.op[0].target_block = next_bb;
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, next_bb);
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.42335>; else goto <D.42336>;
              <D.42335>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = ins;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              ins->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              goto <D.42337>;
              <D.42336>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.42337>:
              D.42338 = falsebb->cil_code;
              if (D.42338 != 0B) goto <D.42339>; else goto <D.42340>;
              <D.42339>:
              D.32887 = cfg->cil_offset_to_bb;
              D.42338 = falsebb->cil_code;
              D.42341 = (int) D.42338;
              D.32891 = cfg->cil_start;
              D.32892 = (int) D.32891;
              D.42342 = D.42341 - D.32892;
              D.42343 = (unsigned int) D.42342;
              D.42344 = D.42343 * 4;
              D.42345 = D.32887 + D.42344;
              *D.42345 = falsebb;
              <D.42340>:
              D.32923 = cfg->real_offset;
              falsebb->real_offset = D.32923;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.42349>; else goto <D.42346>;
              <D.42349>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.42350 = D.33008->opcode;
              D.42351 = D.42350 + 64985;
              D.42352 = D.42351 <= 9;
              D.42353 = D.42350 + 64878;
              D.42354 = D.42353 <= 9;
              D.42355 = D.42352 | D.42354;
              if (D.42355 != 0) goto <D.42347>; else goto <D.42356>;
              <D.42356>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36965 = D.33008->opcode;
              D.36966 = D.36965 + 64888;
              if (D.36966 <= 9) goto <D.42347>; else goto <D.42346>;
              <D.42347>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36967 = D.33008->data.op[1].many_blocks;
              D.36968 = D.36967 + 4;
              D.36969 = *D.36968;
              if (D.36969 == 0B) goto <D.42357>; else goto <D.42346>;
              <D.42357>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36967 = D.33008->data.op[1].many_blocks;
              D.36968 = D.36967 + 4;
              *D.36968 = falsebb;
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, falsebb);
              goto <D.42348>;
              <D.42346>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 == 0B) goto <D.42358>; else goto <D.42360>;
              <D.42360>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.42361 = D.33008->opcode;
              D.42362 = D.42361 != 442;
              D.42363 = D.42361 != 759;
              D.42364 = D.42362 & D.42363;
              if (D.42364 != 0) goto <D.42365>; else goto <D.42359>;
              <D.42365>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.42366 = D.33008->opcode;
              D.42367 = D.42366 + 64985;
              D.42368 = D.42367 > 9;
              D.42369 = D.42366 + 64878;
              D.42370 = D.42369 > 9;
              D.42371 = D.42368 & D.42370;
              if (D.42371 != 0) goto <D.42372>; else goto <D.42359>;
              <D.42372>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36965 = D.33008->opcode;
              D.36966 = D.36965 + 64888;
              if (D.36966 > 9) goto <D.42358>; else goto <D.42359>;
              <D.42358>:
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, falsebb);
              <D.42359>:
              <D.42348>:
              bblock.125 = cfg->cbb;
              bblock.125->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.42373>;
              <D.42331>:
              D.32755 = cfg->mempool;
              D.42374 = mono_mempool_alloc (D.32755, 8);
              ins->data.op[1].many_blocks = D.42374;
              D.42375 = ins->data.op[1].many_blocks;
              *D.42375 = next_bb;
              D.42375 = ins->data.op[1].many_blocks;
              D.42376 = D.42375 + 4;
              *D.42376 = 0B;
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, next_bb);
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.42377>; else goto <D.42378>;
              <D.42377>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = ins;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              ins->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              goto <D.42379>;
              <D.42378>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = ins;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.42379>:
              D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.36993 = D.33150 & 8;
              if (D.36993 == 0) goto <D.42380>; else goto <D.42381>;
              <D.42380>:
              D.32755 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.32755, 172);
              D.32864 = cfg->num_bblocks;
              D.42382 = D.32864;
              D.42383 = D.42382 + 1;
              cfg->num_bblocks = D.42383;
              D.42384 = (int) D.42382;
              falsebb->block_num = D.42384;
              D.42375 = ins->data.op[1].many_blocks;
              D.42376 = D.42375 + 4;
              *D.42376 = falsebb;
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, falsebb);
              D.42338 = falsebb->cil_code;
              if (D.42338 != 0B) goto <D.42385>; else goto <D.42386>;
              <D.42385>:
              D.32887 = cfg->cil_offset_to_bb;
              D.42338 = falsebb->cil_code;
              D.42341 = (int) D.42338;
              D.32891 = cfg->cil_start;
              D.32892 = (int) D.32891;
              D.42342 = D.42341 - D.32892;
              D.42343 = (unsigned int) D.42342;
              D.42344 = D.42343 * 4;
              D.42345 = D.32887 + D.42344;
              *D.42345 = falsebb;
              <D.42386>:
              D.32923 = cfg->real_offset;
              falsebb->real_offset = D.32923;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.42390>; else goto <D.42387>;
              <D.42390>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.42391 = D.33008->opcode;
              D.42392 = D.42391 + 64985;
              D.42393 = D.42392 <= 9;
              D.42394 = D.42391 + 64878;
              D.42395 = D.42394 <= 9;
              D.42396 = D.42393 | D.42395;
              if (D.42396 != 0) goto <D.42388>; else goto <D.42397>;
              <D.42397>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36965 = D.33008->opcode;
              D.36966 = D.36965 + 64888;
              if (D.36966 <= 9) goto <D.42388>; else goto <D.42387>;
              <D.42388>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36967 = D.33008->data.op[1].many_blocks;
              D.36968 = D.36967 + 4;
              D.36969 = *D.36968;
              if (D.36969 == 0B) goto <D.42398>; else goto <D.42387>;
              <D.42398>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36967 = D.33008->data.op[1].many_blocks;
              D.36968 = D.36967 + 4;
              *D.36968 = falsebb;
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, falsebb);
              goto <D.42389>;
              <D.42387>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 == 0B) goto <D.42399>; else goto <D.42401>;
              <D.42401>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.42402 = D.33008->opcode;
              D.42403 = D.42402 != 442;
              D.42404 = D.42402 != 759;
              D.42405 = D.42403 & D.42404;
              if (D.42405 != 0) goto <D.42406>; else goto <D.42400>;
              <D.42406>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.42407 = D.33008->opcode;
              D.42408 = D.42407 + 64985;
              D.42409 = D.42408 > 9;
              D.42410 = D.42407 + 64878;
              D.42411 = D.42410 > 9;
              D.42412 = D.42409 & D.42411;
              if (D.42412 != 0) goto <D.42413>; else goto <D.42400>;
              <D.42413>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.36965 = D.33008->opcode;
              D.36966 = D.36965 + 64888;
              if (D.36966 > 9) goto <D.42399>; else goto <D.42400>;
              <D.42399>:
              bblock.125 = cfg->cbb;
              mono_link_bblock (cfg, bblock.125, falsebb);
              <D.42400>:
              <D.42389>:
              bblock.125 = cfg->cbb;
              bblock.125->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.42414>;
              <D.42381>:
              bblock.125 = cfg->cbb;
              bblock.125->extended = 1;
              <D.42414>:
              <D.42373>:
            }
            <D.42211>:
            D.33150 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.33151 = D.33150 & 64;
            if (D.33151 != 0) goto <D.42415>; else goto <D.42416>;
            <D.42415>:
            D.32755 = cfg->mempool;
            D.42417 = mono_mempool_alloc (D.32755, 56);
            args[0] = D.42417;
            D.42418 = args[0];
            D.42418 = args[0];
            D.42418->data.op[1].const_val = 0;
            D.42419 = D.42418->data.op[1].const_val;
            D.42418->data.op[0].const_val = D.42419;
            D.42418 = args[0];
            D.42418 = args[0];
            D.42418->prev = 0B;
            D.42420 = D.42418->prev;
            D.42418->next = D.42420;
            D.42418 = args[0];
            D.42418->opcode = 362;
            D.42418 = args[0];
            D.42418->flags = 0;
            D.42418 = args[0];
            D.42418->type = 0;
            D.42418 = args[0];
            D.42418->dreg = -1;
            D.42418 = args[0];
            D.42418 = args[0];
            D.42418 = args[0];
            D.42418->sreg3 = -1;
            D.42421 = D.42418->sreg3;
            D.42418->sreg2 = D.42421;
            D.42422 = D.42418->sreg2;
            D.42418->sreg1 = D.42422;
            D.42418 = args[0];
            D.32979 = cfg->ip;
            D.42418->cil_code = D.32979;
            D.42418 = args[0];
            D.42418->data.op[0].p = 0B;
            D.42418 = args[0];
            D.42418->type = 3;
            D.42418 = args[0];
            D.42423 = alloc_dreg (cfg, 3);
            D.42424 = (int) D.42423;
            D.42418->dreg = D.42424;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.42425>; else goto <D.42426>;
            <D.42425>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.42418 = args[0];
            D.33008->next = D.42418;
            D.42418 = args[0];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.42418->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.42418 = args[0];
            bblock.125->last_ins = D.42418;
            goto <D.42427>;
            <D.42426>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.42418 = args[0];
            bblock.125->last_ins = D.42418;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.42427>:
            goto <D.42428>;
            <D.42416>:
            D.32755 = cfg->mempool;
            D.42429 = mono_mempool_alloc (D.32755, 56);
            args[0] = D.42429;
            D.42418 = args[0];
            D.42418 = args[0];
            D.42418->data.op[1].const_val = 0;
            D.42419 = D.42418->data.op[1].const_val;
            D.42418->data.op[0].const_val = D.42419;
            D.42418 = args[0];
            D.42418 = args[0];
            D.42418->prev = 0B;
            D.42420 = D.42418->prev;
            D.42418->next = D.42420;
            D.42418 = args[0];
            D.42418->opcode = 362;
            D.42418 = args[0];
            D.42418->flags = 0;
            D.42418 = args[0];
            D.42418->type = 0;
            D.42418 = args[0];
            D.42418->dreg = -1;
            D.42418 = args[0];
            D.42418 = args[0];
            D.42418 = args[0];
            D.42418->sreg3 = -1;
            D.42421 = D.42418->sreg3;
            D.42418->sreg2 = D.42421;
            D.42422 = D.42418->sreg2;
            D.42418->sreg1 = D.42422;
            D.42418 = args[0];
            D.32979 = cfg->ip;
            D.42418->cil_code = D.32979;
            D.42418 = args[0];
            D.32780 = cfg->domain;
            D.42418->data.op[0].p = D.32780;
            D.42418 = args[0];
            D.42418->type = 3;
            D.42418 = args[0];
            D.42430 = alloc_dreg (cfg, 3);
            D.42431 = (int) D.42430;
            D.42418->dreg = D.42431;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.42432>; else goto <D.42433>;
            <D.42432>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.42418 = args[0];
            D.33008->next = D.42418;
            D.42418 = args[0];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.42418->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.42418 = args[0];
            bblock.125->last_ins = D.42418;
            goto <D.42434>;
            <D.42433>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.42418 = args[0];
            bblock.125->last_ins = D.42418;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.42434>:
            <D.42428>:
            ins = mono_emit_jit_icall (cfg, mono_jit_thread_attach, &args);
            {
              struct MonoInst * inst;

              D.32755 = cfg->mempool;
              inst = mono_mempool_alloc (D.32755, 56);
              inst->data.op[1].const_val = 0;
              D.42435 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.42435;
              inst->prev = 0B;
              D.42436 = inst->prev;
              inst->next = D.42436;
              inst->opcode = 424;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.42437 = inst->sreg3;
              inst->sreg2 = D.42437;
              D.42438 = inst->sreg2;
              inst->sreg1 = D.42438;
              D.32979 = cfg->ip;
              inst->cil_code = D.32979;
              D.42202 = cfg->orig_domain_var;
              D.42203 = D.42202->dreg;
              inst->dreg = D.42203;
              D.33170 = ins->dreg;
              inst->sreg1 = D.33170;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              if (D.33008 != 0B) goto <D.42439>; else goto <D.42440>;
              <D.42439>:
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              D.33008->next = inst;
              bblock.125 = cfg->cbb;
              D.33008 = bblock.125->last_ins;
              inst->prev = D.33008;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              goto <D.42441>;
              <D.42440>:
              bblock.125 = cfg->cbb;
              bblock.125 = cfg->cbb;
              bblock.125->last_ins = inst;
              D.33008 = bblock.125->last_ins;
              bblock.125->code = D.33008;
              <D.42441>:
            }
            if (next_bb != 0B) goto <D.42442>; else goto <D.42443>;
            <D.42442>:
            D.42444 = next_bb->cil_code;
            if (D.42444 != 0B) goto <D.42445>; else goto <D.42446>;
            <D.42445>:
            D.32887 = cfg->cil_offset_to_bb;
            D.42444 = next_bb->cil_code;
            D.42447 = (int) D.42444;
            D.32891 = cfg->cil_start;
            D.32892 = (int) D.32891;
            D.42448 = D.42447 - D.32892;
            D.42449 = (unsigned int) D.42448;
            D.42450 = D.42449 * 4;
            D.42451 = D.32887 + D.42450;
            *D.42451 = next_bb;
            <D.42446>:
            D.32923 = cfg->real_offset;
            next_bb->real_offset = D.32923;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.42455>; else goto <D.42452>;
            <D.42455>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.42456 = D.33008->opcode;
            D.42457 = D.42456 + 64985;
            D.42458 = D.42457 <= 9;
            D.42459 = D.42456 + 64878;
            D.42460 = D.42459 <= 9;
            D.42461 = D.42458 | D.42460;
            if (D.42461 != 0) goto <D.42453>; else goto <D.42462>;
            <D.42462>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.36965 = D.33008->opcode;
            D.36966 = D.36965 + 64888;
            if (D.36966 <= 9) goto <D.42453>; else goto <D.42452>;
            <D.42453>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.36967 = D.33008->data.op[1].many_blocks;
            D.36968 = D.36967 + 4;
            D.36969 = *D.36968;
            if (D.36969 == 0B) goto <D.42463>; else goto <D.42452>;
            <D.42463>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.36967 = D.33008->data.op[1].many_blocks;
            D.36968 = D.36967 + 4;
            *D.36968 = next_bb;
            bblock.125 = cfg->cbb;
            mono_link_bblock (cfg, bblock.125, next_bb);
            goto <D.42454>;
            <D.42452>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 == 0B) goto <D.42464>; else goto <D.42466>;
            <D.42466>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.42467 = D.33008->opcode;
            D.42468 = D.42467 != 442;
            D.42469 = D.42467 != 759;
            D.42470 = D.42468 & D.42469;
            if (D.42470 != 0) goto <D.42471>; else goto <D.42465>;
            <D.42471>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.42472 = D.33008->opcode;
            D.42473 = D.42472 + 64985;
            D.42474 = D.42473 > 9;
            D.42475 = D.42472 + 64878;
            D.42476 = D.42475 > 9;
            D.42477 = D.42474 & D.42476;
            if (D.42477 != 0) goto <D.42478>; else goto <D.42465>;
            <D.42478>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.36965 = D.33008->opcode;
            D.36966 = D.36965 + 64888;
            if (D.36966 > 9) goto <D.42464>; else goto <D.42465>;
            <D.42464>:
            bblock.125 = cfg->cbb;
            mono_link_bblock (cfg, bblock.125, next_bb);
            <D.42465>:
            <D.42454>:
            bblock.125 = cfg->cbb;
            bblock.125->next_bb = next_bb;
            cfg->cbb = next_bb;
            bblock.125 = cfg->cbb;
            bblock = bblock.125;
            <D.42443>:
            ip = ip + 2;
            goto <D.30583>;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      <D.30635>:
      {
        struct MonoInst * args[16];

        try
          {
            D.42479 = alloc_ireg (cfg);
            dreg = (int) D.42479;
            D.32755 = cfg->mempool;
            D.42480 = mono_mempool_alloc (D.32755, 56);
            args[0] = D.42480;
            D.42481 = args[0];
            D.42481 = args[0];
            D.42481->data.op[1].const_val = 0;
            D.42482 = D.42481->data.op[1].const_val;
            D.42481->data.op[0].const_val = D.42482;
            D.42481 = args[0];
            D.42481 = args[0];
            D.42481->prev = 0B;
            D.42483 = D.42481->prev;
            D.42481->next = D.42483;
            D.42481 = args[0];
            D.42481->opcode = 424;
            D.42481 = args[0];
            D.42481->flags = 0;
            D.42481 = args[0];
            D.42481->type = 0;
            D.42481 = args[0];
            D.42481->dreg = -1;
            D.42481 = args[0];
            D.42481 = args[0];
            D.42481 = args[0];
            D.42481->sreg3 = -1;
            D.42484 = D.42481->sreg3;
            D.42481->sreg2 = D.42484;
            D.42485 = D.42481->sreg2;
            D.42481->sreg1 = D.42485;
            D.42481 = args[0];
            D.32979 = cfg->ip;
            D.42481->cil_code = D.32979;
            D.42481 = args[0];
            D.42481->dreg = dreg;
            D.42481 = args[0];
            D.42202 = cfg->orig_domain_var;
            D.42203 = D.42202->dreg;
            D.42481->sreg1 = D.42203;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.42486>; else goto <D.42487>;
            <D.42486>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.42481 = args[0];
            D.33008->next = D.42481;
            D.42481 = args[0];
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.42481->prev = D.33008;
            bblock.125 = cfg->cbb;
            D.42481 = args[0];
            bblock.125->last_ins = D.42481;
            goto <D.42488>;
            <D.42487>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            D.42481 = args[0];
            bblock.125->last_ins = D.42481;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.42488>:
            mono_emit_jit_icall (cfg, mono_jit_set_domain, &args);
            ip = ip + 2;
            goto <D.30583>;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      <D.30637>:
      D.33780 = ip + 1;
      D.33781 = *D.33780;
      D.34111 = (int) D.33781;
      monoeg_g_log (0B, 4, "opcode 0x%02x 0x%02x not handled", 240, D.34111);
      <D.30638>:
      goto <D.30638>;
      <D.30583>:
      goto <D.29893>;
      <D.30639>:
      D.33761 = ip + 2;
      if (D.33761 > end) goto <D.42489>; else goto <D.42490>;
      <D.42489>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.42491>; else goto <D.42492>;
      <D.42491>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.42493>; else goto <D.42494>;
      <D.42493>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.42494>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.42492>:
      D.42495 = mini_get_debug_options ();
      D.42496 = D.42495->break_on_unverified;
      if (D.42496 != 0) goto <D.42497>; else goto unverified;
      <D.42497>:
      raise (5);
      <D.42490>:
      D.33780 = ip + 1;
      D.33781 = *D.33780;
      D.34111 = (int) D.33781;
      switch (D.34111) <default: <D.30720>, case 0: <D.30640>, case 1: <D.30646>, case 2: <D.30647>, case 3: <D.30648>, case 4: <D.30649>, case 5: <D.30650>, case 6: <D.30652>, case 7: <D.30663>, case 8: <D.30715>, case 9: <D.30665>, case 10: <D.30666>, case 11: <D.30669>, case 12: <D.30670>, case 13: <D.30671>, case 14: <D.30675>, case 15: <D.30676>, case 16: <D.30716>, case 17: <D.30677>, case 18: <D.30685>, case 19: <D.30686>, case 20: <D.30687>, case 21: <D.30688>, case 22: <D.30690>, case 23: <D.30691>, case 24: <D.30692>, case 25: <D.30696>, case 26: <D.30697>, case 27: <D.30718>, case 28: <D.30704>, case 29: <D.30709>, case 30: <D.30714>, case 34: <D.30717>, case 36: <D.30719>>
      <D.30640>:
      {
        struct MonoInst * addr;
        struct MonoInst * vtvar;

        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        D.33527 = D.33526 /[ex] 4;
        D.33440 = header->max_stack;
        D.33441 = (int) D.33440;
        if (D.33527 >= D.33441) goto <D.42498>; else goto <D.42499>;
        <D.42498>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.42500>; else goto <D.42501>;
        <D.42500>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.42502>; else goto <D.42503>;
        <D.42502>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.42503>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.42501>:
        D.42504 = mini_get_debug_options ();
        D.42505 = D.42504->break_on_unverified;
        if (D.42505 != 0) goto <D.42506>; else goto unverified;
        <D.42506>:
        raise (5);
        <D.42499>:
        D.42507 = mono_defaults.argumenthandle_class;
        D.42508 = &D.42507->byval_arg;
        vtvar = mono_compile_create_var (cfg, D.42508, 329);
        D.32755 = cfg->mempool;
        addr = mono_mempool_alloc (D.32755, 56);
        addr->data.op[1].const_val = 0;
        D.42509 = addr->data.op[1].const_val;
        addr->data.op[0].const_val = D.42509;
        addr->prev = 0B;
        D.42510 = addr->prev;
        addr->next = D.42510;
        addr->opcode = 314;
        addr->flags = 0;
        addr->type = 0;
        addr->dreg = -1;
        addr->sreg3 = -1;
        D.42511 = addr->sreg3;
        addr->sreg2 = D.42511;
        D.42512 = addr->sreg2;
        addr->sreg1 = D.42512;
        D.32979 = cfg->ip;
        addr->cil_code = D.32979;
        D.33491 = cfg->varinfo;
        D.42513 = vtvar->data.op[0].const_val;
        D.42514 = (unsigned int) D.42513;
        D.42515 = D.42514 * 4;
        D.42516 = D.33491 + D.42515;
        D.42517 = *D.42516;
        addr->data.op[0].p = D.42517;
        D.33491 = cfg->varinfo;
        D.42513 = vtvar->data.op[0].const_val;
        D.42514 = (unsigned int) D.42513;
        D.42515 = D.42514 * 4;
        D.42516 = D.33491 + D.42515;
        D.42517 = *D.42516;
        D.33491 = cfg->varinfo;
        D.42513 = vtvar->data.op[0].const_val;
        D.42514 = (unsigned int) D.42513;
        D.42515 = D.42514 * 4;
        D.42516 = D.33491 + D.42515;
        D.42517 = *D.42516;
        D.42518 = D.42517->flags;
        D.42519 = D.42518 | 16;
        D.42517->flags = D.42519;
        addr->type = 5;
        D.33491 = cfg->varinfo;
        D.42513 = vtvar->data.op[0].const_val;
        D.42514 = (unsigned int) D.42513;
        D.42515 = D.42514 * 4;
        D.42516 = D.33491 + D.42515;
        D.42517 = *D.42516;
        D.42520 = D.42517->klass;
        addr->klass = D.42520;
        D.42521 = alloc_dreg (cfg, 5);
        D.42522 = (int) D.42521;
        addr->dreg = D.42522;
        cfg->has_indirection = 1;
        D.32904 = cfg->gsharedvt;
        D.33836 = D.32904 != 0;
        D.33837 = (long int) D.33836;
        D.33838 = __builtin_expect (D.33837, 0);
        if (D.33838 != 0) goto <D.42523>; else goto <D.42524>;
        <D.42523>:
        D.33491 = cfg->varinfo;
        D.42513 = vtvar->data.op[0].const_val;
        D.42514 = (unsigned int) D.42513;
        D.42515 = D.42514 * 4;
        D.42516 = D.33491 + D.42515;
        D.42517 = *D.42516;
        D.42525 = D.42517->data.op[1].vtype;
        D.42526 = mini_is_gsharedvt_variable_type (cfg, D.42525);
        if (D.42526 != 0) goto <D.42527>; else goto <D.42528>;
        <D.42527>:
        handle_gsharedvt_ldaddr (cfg);
        <D.42528>:
        <D.42524>:
        D.42530 = mono_arch_is_soft_float ();
        if (D.42530 != 0) goto <D.42531>; else goto <D.42532>;
        <D.42531>:
        D.33491 = cfg->varinfo;
        D.42513 = vtvar->data.op[0].const_val;
        D.42514 = (unsigned int) D.42513;
        D.42515 = D.42514 * 4;
        D.42516 = D.33491 + D.42515;
        D.42517 = *D.42516;
        D.42533 = D.42517->type;
        D.42534 = D.42533 == 2;
        D.42535 = D.42533 == 4;
        D.42536 = D.42534 | D.42535;
        D.42537 = (int) D.42536;
        iftmp.343 = (_Bool) D.42537;
        goto <D.42538>;
        <D.42532>:
        D.33491 = cfg->varinfo;
        D.42513 = vtvar->data.op[0].const_val;
        D.42514 = (unsigned int) D.42513;
        D.42515 = D.42514 * 4;
        D.42516 = D.33491 + D.42515;
        D.42517 = *D.42516;
        D.42539 = D.42517->type;
        iftmp.343 = D.42539 == 2;
        <D.42538>:
        if (iftmp.343 != 0) goto <D.42540>; else goto <D.42541>;
        <D.42540>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.33491 = cfg->varinfo;
          D.42513 = vtvar->data.op[0].const_val;
          D.42514 = (unsigned int) D.42513;
          D.42515 = D.42514 * 4;
          D.42516 = D.33491 + D.42515;
          D.42517 = *D.42516;
          D.42543 = D.42517->dreg;
          D.42544 = D.42543 + 1;
          D.42545 = (unsigned int) D.42544;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.42545 < D.33862) goto <D.42546>; else goto <D.42547>;
          <D.42546>:
          D.33865 = cfg->vreg_to_inst;
          D.33491 = cfg->varinfo;
          D.42513 = vtvar->data.op[0].const_val;
          D.42514 = (unsigned int) D.42513;
          D.42515 = D.42514 * 4;
          D.42516 = D.33491 + D.42515;
          D.42517 = *D.42516;
          D.42543 = D.42517->dreg;
          D.42548 = (sizetype) D.42543;
          D.42549 = D.42548 + 1;
          D.42550 = D.42549 * 4;
          D.42551 = D.33865 + D.42550;
          iftmp.344 = *D.42551;
          goto <D.42552>;
          <D.42547>:
          iftmp.344 = 0B;
          <D.42552>:
          var1 = iftmp.344;
          D.33491 = cfg->varinfo;
          D.42513 = vtvar->data.op[0].const_val;
          D.42514 = (unsigned int) D.42513;
          D.42515 = D.42514 * 4;
          D.42516 = D.33491 + D.42515;
          D.42517 = *D.42516;
          D.42543 = D.42517->dreg;
          D.42554 = D.42543 + 2;
          D.42555 = (unsigned int) D.42554;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.42555 < D.33862) goto <D.42556>; else goto <D.42557>;
          <D.42556>:
          D.33865 = cfg->vreg_to_inst;
          D.33491 = cfg->varinfo;
          D.42513 = vtvar->data.op[0].const_val;
          D.42514 = (unsigned int) D.42513;
          D.42515 = D.42514 * 4;
          D.42516 = D.33491 + D.42515;
          D.42517 = *D.42516;
          D.42543 = D.42517->dreg;
          D.42548 = (sizetype) D.42543;
          D.42558 = D.42548 + 2;
          D.42559 = D.42558 * 4;
          D.42560 = D.33865 + D.42559;
          iftmp.345 = *D.42560;
          goto <D.42561>;
          <D.42557>:
          iftmp.345 = 0B;
          <D.42561>:
          var2 = iftmp.345;
          D.42562 = var1 == 0B;
          D.42563 = (long int) D.42562;
          D.42564 = __builtin_expect (D.42563, 0);
          if (D.42564 != 0) goto <D.42565>; else goto <D.42566>;
          <D.42565>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11394, "var1");
          <D.42566>:
          D.42567 = var2 == 0B;
          D.42568 = (long int) D.42567;
          D.42569 = __builtin_expect (D.42568, 0);
          if (D.42569 != 0) goto <D.42570>; else goto <D.42571>;
          <D.42570>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11394, "var2");
          <D.42571>:
          D.42572 = var1->flags;
          D.42573 = D.42572 | 16;
          var1->flags = D.42573;
          D.42574 = var2->flags;
          D.42575 = D.42574 | 16;
          var2->flags = D.42575;
        }
        <D.42541>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.42576>; else goto <D.42577>;
        <D.42576>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = addr;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        addr->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = addr;
        goto <D.42578>;
        <D.42577>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = addr;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.42578>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 373;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        ins->dreg = -1;
        D.42579 = addr->dreg;
        ins->sreg1 = D.42579;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.42580>; else goto <D.42581>;
        <D.42580>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.42582>;
        <D.42581>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.42582>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 424;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        D.33491 = cfg->varinfo;
        D.42513 = vtvar->data.op[0].const_val;
        D.42514 = (unsigned int) D.42513;
        D.42515 = D.42514 * 4;
        D.42516 = D.33491 + D.42515;
        D.42517 = *D.42516;
        D.42525 = D.42517->data.op[1].vtype;
        D.42583 = mono_type_to_regmove (cfg, D.42525);
        D.42584 = (short unsigned int) D.42583;
        ins->opcode = D.42584;
        D.33491 = cfg->varinfo;
        D.42513 = vtvar->data.op[0].const_val;
        D.42514 = (unsigned int) D.42513;
        D.42515 = D.42514 * 4;
        D.42516 = D.33491 + D.42515;
        D.42517 = *D.42516;
        D.42525 = D.42517->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.42525, ins);
        D.33491 = cfg->varinfo;
        D.42513 = vtvar->data.op[0].const_val;
        D.42514 = (unsigned int) D.42513;
        D.42515 = D.42514 * 4;
        D.42516 = D.33491 + D.42515;
        D.42517 = *D.42516;
        D.42520 = D.42517->klass;
        ins->klass = D.42520;
        D.33491 = cfg->varinfo;
        D.42513 = vtvar->data.op[0].const_val;
        D.42514 = (unsigned int) D.42513;
        D.42515 = D.42514 * 4;
        D.42516 = D.33491 + D.42515;
        D.42517 = *D.42516;
        D.42543 = D.42517->dreg;
        ins->sreg1 = D.42543;
        D.33501 = ins->type;
        D.33502 = (<unnamed type>) D.33501;
        D.42585 = alloc_dreg (cfg, D.33502);
        D.42586 = (int) D.42585;
        ins->dreg = D.42586;
        D.33505 = ins->opcode;
        if (D.33505 == 427) goto <D.42587>; else goto <D.42588>;
        <D.42587>:
        D.33491 = cfg->varinfo;
        D.42513 = vtvar->data.op[0].const_val;
        D.42514 = (unsigned int) D.42513;
        D.42515 = D.42514 * 4;
        D.42516 = D.33491 + D.42515;
        D.42517 = *D.42516;
        D.42525 = D.42517->data.op[1].vtype;
        D.42589 = mono_class_from_mono_type (D.42525);
        ins->klass = D.42589;
        <D.42588>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.42590>; else goto <D.42591>;
        <D.42590>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.42592>;
        <D.42591>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.42592>:
        ins->type = 7;
        D.42507 = mono_defaults.argumenthandle_class;
        ins->klass = D.42507;
        sp.346 = sp;
        sp = sp.346 + 4;
        *sp.346 = ins;
        ip = ip + 2;
        goto <D.30645>;
      }
      <D.30646>:
      <D.30647>:
      <D.30648>:
      <D.30649>:
      <D.30650>:
      {
        struct MonoInst * cmp;

        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        if (D.33526 <= 7) goto <D.42594>; else goto <D.42595>;
        <D.42594>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.42596>; else goto <D.42597>;
        <D.42596>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.42598>; else goto <D.42599>;
        <D.42598>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.42599>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.42597>:
        D.42600 = mini_get_debug_options ();
        D.42601 = D.42600->break_on_unverified;
        if (D.42601 != 0) goto <D.42602>; else goto unverified;
        <D.42602>:
        raise (5);
        <D.42595>:
        D.32755 = cfg->mempool;
        cmp = mono_mempool_alloc (D.32755, 56);
        cmp->data.op[1].const_val = 0;
        D.42603 = cmp->data.op[1].const_val;
        cmp->data.op[0].const_val = D.42603;
        cmp->prev = 0B;
        D.42604 = cmp->prev;
        cmp->next = D.42604;
        D.33780 = ip + 1;
        D.33781 = *D.33780;
        D.42605 = (short unsigned int) D.33781;
        D.42606 = D.42605 + 445;
        cmp->opcode = D.42606;
        cmp->flags = 0;
        cmp->type = 0;
        cmp->dreg = -1;
        cmp->sreg3 = -1;
        D.42607 = cmp->sreg3;
        cmp->sreg2 = D.42607;
        D.42608 = cmp->sreg2;
        cmp->sreg1 = D.42608;
        D.32979 = cfg->ip;
        cmp->cil_code = D.32979;
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        D.42609 = cmp->opcode;
        ins->opcode = D.42609;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        sp = sp + 4294967288;
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        cmp->sreg1 = D.33943;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        D.34877 = D.34876->dreg;
        cmp->sreg2 = D.34877;
        D.33750 = *sp;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        type_from_op (cmp, D.33750, D.34876);
        D.42610 = cmp->type;
        if (D.42610 == 0) goto <D.42611>; else goto <D.42612>;
        <D.42611>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.42613>; else goto <D.42614>;
        <D.42613>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.42615>; else goto <D.42616>;
        <D.42615>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.42616>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.42614>:
        D.42617 = mini_get_debug_options ();
        D.42618 = D.42617->break_on_unverified;
        if (D.42618 != 0) goto <D.42619>; else goto unverified;
        <D.42619>:
        raise (5);
        <D.42612>:
        D.33750 = *sp;
        D.35492 = D.33750->type;
        if (D.35492 == 2) goto <D.42620>; else goto <D.42621>;
        <D.42620>:
        cmp->opcode = 325;
        goto <D.42622>;
        <D.42621>:
        D.33750 = *sp;
        D.35492 = D.33750->type;
        if (D.35492 == 4) goto <D.42623>; else goto <D.42624>;
        <D.42623>:
        cmp->opcode = 324;
        goto <D.42625>;
        <D.42624>:
        cmp->opcode = 326;
        <D.42625>:
        <D.42622>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        if (D.33093 != 0B) goto <D.42626>; else goto <D.42627>;
        <D.42626>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        D.33093->next = cmp;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        cmp->prev = D.33093;
        bblock.76 = bblock;
        bblock.76->last_ins = cmp;
        goto <D.42628>;
        <D.42627>:
        bblock.76 = bblock;
        bblock.76 = bblock;
        bblock.76->last_ins = cmp;
        D.33093 = bblock.76->last_ins;
        bblock.76->code = D.33093;
        <D.42628>:
        ins->type = 1;
        D.33501 = ins->type;
        D.33502 = (<unnamed type>) D.33501;
        D.42629 = alloc_dreg (cfg, D.33502);
        D.42630 = (int) D.42629;
        ins->dreg = D.42630;
        D.33750 = *sp;
        D.34875 = sp + 4;
        D.34876 = *D.34875;
        type_from_op (ins, D.33750, D.34876);
        D.42609 = cmp->opcode;
        if (D.42609 == 324) goto <D.42631>; else goto <D.42632>;
        <D.42631>:
        cmp->opcode = 316;
        D.42633 = cmp->sreg1;
        ins->sreg1 = D.42633;
        D.42608 = cmp->sreg2;
        ins->sreg2 = D.42608;
        <D.42632>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        if (D.33093 != 0B) goto <D.42634>; else goto <D.42635>;
        <D.42634>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        D.33093->next = ins;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        ins->prev = D.33093;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        goto <D.42636>;
        <D.42635>:
        bblock.76 = bblock;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        D.33093 = bblock.76->last_ins;
        bblock.76->code = D.33093;
        <D.42636>:
        sp.347 = sp;
        sp = sp.347 + 4;
        *sp.347 = ins;
        ip = ip + 2;
        goto <D.30645>;
      }
      <D.30652>:
      {
        struct MonoInst * argconst;
        struct MonoMethod * cil_method;

        try
          {
            sp.83 = (int) sp;
            stack_start.84 = (int) stack_start;
            D.33526 = sp.83 - stack_start.84;
            D.33527 = D.33526 /[ex] 4;
            D.33440 = header->max_stack;
            D.33441 = (int) D.33440;
            if (D.33527 >= D.33441) goto <D.42638>; else goto <D.42639>;
            <D.42638>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.42640>; else goto <D.42641>;
            <D.42640>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.42642>; else goto <D.42643>;
            <D.42642>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.42643>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.42641>:
            D.42644 = mini_get_debug_options ();
            D.42645 = D.42644->break_on_unverified;
            if (D.42645 != 0) goto <D.42646>; else goto unverified;
            <D.42646>:
            raise (5);
            <D.42639>:
            D.37547 = ip + 6;
            if (D.37547 > end) goto <D.42647>; else goto <D.42648>;
            <D.42647>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.42649>; else goto <D.42650>;
            <D.42649>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.42651>; else goto <D.42652>;
            <D.42651>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.42652>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.42650>:
            D.42653 = mini_get_debug_options ();
            D.42654 = D.42653->break_on_unverified;
            if (D.42654 != 0) goto <D.42655>; else goto unverified;
            <D.42655>:
            raise (5);
            <D.42648>:
            D.41529 = ip + 2;
            D.42656 = mono_read32 (D.41529);
            n = (int) D.42656;
            n.175 = (unsigned int) n;
            cmethod = mini_get_method (cfg, method, n.175, 0B, generic_context);
            if (cmethod == 0B) goto <D.42657>; else goto <D.42659>;
            <D.42659>:
            D.42660 = mono_loader_get_last_error ();
            if (D.42660 != 0B) goto <D.42657>; else goto <D.42658>;
            <D.42657>:
            D.42661 = mini_get_debug_options ();
            D.42662 = D.42661->break_on_unverified;
            if (D.42662 != 0) goto <D.42663>; else goto load_error;
            <D.42663>:
            raise (5);
            <D.42658>:
            D.34618 = cmethod->klass;
            mono_class_init (D.34618);
            n.175 = (unsigned int) n;
            mono_save_token_info (cfg, image, n.175, cmethod);
            context_used = mini_method_check_context_used (cfg, cmethod);
            cil_method = cmethod;
            if (dont_verify == 0) goto <D.42664>; else goto <D.42665>;
            <D.42664>:
            D.33528 = BIT_FIELD_REF <*cfg, 8, 3400>;
            D.34635 = D.33528 & 64;
            if (D.34635 == 0) goto <D.42666>; else goto <D.42667>;
            <D.42666>:
            D.42668 = mono_method_can_access_method (method, cmethod);
            if (D.42668 == 0) goto <D.42669>; else goto <D.42670>;
            <D.42669>:
            {
              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.42671 = monoeg_g_strdup_printf ("Method `%s\' is inaccessible from method `%s\'\n", cil_method_fname, method_fname);
              cfg->exception_message = D.42671;
              monoeg_g_free (method_fname);
              monoeg_g_free (cil_method_fname);
              goto exception_exit;
            }
            <D.42670>:
            <D.42667>:
            <D.42665>:
            D.42672 = mono_security_get_mode ();
            if (D.42672 == 2) goto <D.42673>; else goto <D.42674>;
            <D.42673>:
            D.42675 = check_linkdemand (cfg, method, cmethod);
            if (D.42675 != 0) goto <D.42676>; else goto <D.42677>;
            <D.42676>:
            D.32726 = cfg->method;
            if (D.32726 != method) goto <D.42678>; else goto <D.42679>;
            <D.42678>:
            D.32698 = BIT_FIELD_REF <*method, 8, 160>;
            D.32699 = D.32698 & 124;
            if (D.32699 == 0) goto <D.42680>; else goto <D.42681>;
            <D.42680>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 1) goto <D.42682>; else goto <D.42683>;
            <D.42682>:
            printf ("inline failed: %s\n", "linkdemand");
            <D.42683>:
            goto inline_failure;
            <D.42681>:
            <D.42679>:
            <D.42677>:
            D.33309 = cfg->exception_type;
            if (D.33309 != 0) goto exception_exit; else goto <D.42684>;
            <D.42684>:
            goto <D.42685>;
            <D.42674>:
            D.42686 = mono_security_get_mode ();
            if (D.42686 == 1) goto <D.42687>; else goto <D.42688>;
            <D.42687>:
            bblock.76 = bblock;
            ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock.76, ip);
            <D.42688>:
            <D.42685>:
            if (sp > stack_start) goto <D.42689>; else goto <D.42690>;
            <D.42689>:
            D.42691 = ip + 11;
            if (D.42691 < end) goto <D.42692>; else goto <D.42693>;
            <D.42692>:
            bblock.76 = bblock;
            D.40051 = ip + 6;
            D.42694 = ip_in_bb (cfg, bblock.76, D.40051);
            if (D.42694 != 0) goto <D.42695>; else goto <D.42696>;
            <D.42695>:
            D.37547 = ip + 6;
            D.37548 = *D.37547;
            if (D.37548 == 115) goto <D.42697>; else goto <D.42698>;
            <D.42697>:
            {
              struct MonoMethod * ctor_method;

              D.42699 = ip + 7;
              D.42700 = mono_read32 (D.42699);
              ctor_method = mini_get_method (cfg, method, D.42700, 0B, generic_context);
              if (ctor_method != 0B) goto <D.42701>; else goto <D.42702>;
              <D.42701>:
              D.42703 = ctor_method->klass;
              D.42704 = D.42703->parent;
              D.35104 = mono_defaults.multicastdelegate_class;
              if (D.42704 == D.35104) goto <D.42705>; else goto <D.42706>;
              <D.42705>:
              {
                struct MonoInst * target_ins;
                struct MonoMethod * invoke;
                int invoke_context_used;

                D.42703 = ctor_method->klass;
                invoke = mono_get_delegate_invoke (D.42703);
                if (invoke == 0B) goto <D.42707>; else goto <D.42709>;
                <D.42709>:
                D.42710 = mono_method_signature (invoke);
                if (D.42710 == 0B) goto <D.42707>; else goto <D.42708>;
                <D.42707>:
                D.42711 = mini_get_debug_options ();
                D.42712 = D.42711->break_on_unverified;
                if (D.42712 != 0) goto <D.42713>; else goto load_error;
                <D.42713>:
                raise (5);
                <D.42708>:
                invoke_context_used = mini_method_check_context_used (cfg, invoke);
                target_ins = MEM[(struct MonoInst * *)sp + 4294967292B];
                D.42714 = mono_security_get_mode ();
                if (D.42714 == 1) goto <D.42715>; else goto <D.42716>;
                <D.42715>:
                bblock.76 = bblock;
                ensure_method_is_allowed_to_call_method (cfg, method, ctor_method, bblock.76, ip);
                <D.42716>:
                D.34654 = cmethod->flags;
                D.34655 = (int) D.34654;
                D.42717 = D.34655 & 16;
                if (D.42717 == 0) goto <D.42718>; else goto <D.42719>;
                <D.42718>:
                D.42720 = mono_method_signature (invoke);
                D.42721 = D.42720->param_count;
                D.42722 = mono_method_signature (cmethod);
                D.42723 = D.42722->param_count;
                if (D.42721 == D.42723) goto <D.42724>; else goto <D.42725>;
                <D.42724>:
                {
                  struct MonoInst * inst;

                  D.32755 = cfg->mempool;
                  inst = mono_mempool_alloc (D.32755, 56);
                  inst->data.op[1].const_val = 0;
                  D.42726 = inst->data.op[1].const_val;
                  inst->data.op[0].const_val = D.42726;
                  inst->prev = 0B;
                  D.42727 = inst->prev;
                  inst->next = D.42727;
                  inst->opcode = 323;
                  inst->flags = 0;
                  inst->type = 0;
                  inst->dreg = -1;
                  inst->sreg3 = -1;
                  D.42728 = inst->sreg3;
                  inst->sreg2 = D.42728;
                  D.42729 = inst->sreg2;
                  inst->sreg1 = D.42729;
                  D.32979 = cfg->ip;
                  inst->cil_code = D.32979;
                  inst->dreg = -1;
                  D.42730 = target_ins->dreg;
                  inst->sreg1 = D.42730;
                  inst->data.op[1].const_val = 0;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.42731>; else goto <D.42732>;
                  <D.42731>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.33008->next = inst;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  inst->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  bblock.125->last_ins = inst;
                  goto <D.42733>;
                  <D.42732>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  bblock.125->last_ins = inst;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.42733>:
                }
                {
                  struct MonoInst * inst;

                  D.32755 = cfg->mempool;
                  inst = mono_mempool_alloc (D.32755, 56);
                  inst->data.op[1].const_val = 0;
                  D.42734 = inst->data.op[1].const_val;
                  inst->data.op[0].const_val = D.42734;
                  inst->prev = 0B;
                  D.42735 = inst->prev;
                  inst->next = D.42735;
                  inst->opcode = 451;
                  inst->flags = 0;
                  inst->type = 0;
                  inst->dreg = -1;
                  inst->sreg3 = -1;
                  D.42736 = inst->sreg3;
                  inst->sreg2 = D.42736;
                  D.42737 = inst->sreg2;
                  inst->sreg1 = D.42737;
                  D.32979 = cfg->ip;
                  inst->cil_code = D.32979;
                  inst->data.op[1].p = "ArgumentException";
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  if (D.33008 != 0B) goto <D.42738>; else goto <D.42739>;
                  <D.42738>:
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  D.33008->next = inst;
                  bblock.125 = cfg->cbb;
                  D.33008 = bblock.125->last_ins;
                  inst->prev = D.33008;
                  bblock.125 = cfg->cbb;
                  bblock.125->last_ins = inst;
                  goto <D.42740>;
                  <D.42739>:
                  bblock.125 = cfg->cbb;
                  bblock.125 = cfg->cbb;
                  bblock.125->last_ins = inst;
                  D.33008 = bblock.125->last_ins;
                  bblock.125->code = D.33008;
                  <D.42740>:
                }
                <D.42725>:
                <D.42719>:
                if (invoke_context_used == 0) goto <D.42741>; else goto <D.42742>;
                <D.42741>:
                ip = ip + 6;
                D.32836 = cfg->verbose_level;
                if (D.32836 > 3) goto <D.42743>; else goto <D.42744>;
                <D.42743>:
                bblock.76 = bblock;
                D.33630 = bblock.76->block_num;
                sp.83 = (int) sp;
                stack_start.84 = (int) stack_start;
                D.33526 = sp.83 - stack_start.84;
                D.33527 = D.33526 /[ex] 4;
                D.42745 = mono_disasm_code_one (0B, method, ip, 0B);
                monoeg_g_print ("converting (in B%d: stack: %d) %s", D.33630, D.33527, D.42745);
                <D.42744>:
                sp = sp + 4294967292;
                D.42703 = ctor_method->klass;
                D.42746 = handle_delegate_ctor (cfg, D.42703, target_ins, cmethod, context_used);
                *sp = D.42746;
                D.33309 = cfg->exception_type;
                if (D.33309 != 0) goto exception_exit; else goto <D.42747>;
                <D.42747>:
                ip = ip + 5;
                sp = sp + 4;
                goto <D.30645>;
                <D.42742>:
              }
              <D.42706>:
              <D.42702>:
            }
            <D.42698>:
            <D.42696>:
            <D.42693>:
            <D.42690>:
            argconst.348 = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
            argconst = argconst.348;
            ins = mono_emit_jit_icall (cfg, mono_ldftn, &argconst);
            sp.349 = sp;
            sp = sp.349 + 4;
            *sp.349 = ins;
            ip = ip + 6;
            num_calls.350 = num_calls;
            num_calls = num_calls.350 + 1;
            D.42751 = num_calls.350 * 10;
            inline_costs = D.42751 + inline_costs;
            goto <D.30645>;
          }
        finally
          {
            argconst = {CLOBBER};
          }
      }
      <D.30663>:
      {
        struct MonoInst * args[2];

        try
          {
            sp.83 = (int) sp;
            stack_start.84 = (int) stack_start;
            D.33526 = sp.83 - stack_start.84;
            if (D.33526 <= 3) goto <D.42752>; else goto <D.42753>;
            <D.42752>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.42754>; else goto <D.42755>;
            <D.42754>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.42756>; else goto <D.42757>;
            <D.42756>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.42757>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.42755>:
            D.42758 = mini_get_debug_options ();
            D.42759 = D.42758->break_on_unverified;
            if (D.42759 != 0) goto <D.42760>; else goto unverified;
            <D.42760>:
            raise (5);
            <D.42753>:
            D.37547 = ip + 6;
            if (D.37547 > end) goto <D.42761>; else goto <D.42762>;
            <D.42761>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.42763>; else goto <D.42764>;
            <D.42763>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.42765>; else goto <D.42766>;
            <D.42765>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.42766>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.42764>:
            D.42767 = mini_get_debug_options ();
            D.42768 = D.42767->break_on_unverified;
            if (D.42768 != 0) goto <D.42769>; else goto unverified;
            <D.42769>:
            raise (5);
            <D.42762>:
            D.41529 = ip + 2;
            D.42770 = mono_read32 (D.41529);
            n = (int) D.42770;
            n.175 = (unsigned int) n;
            cmethod = mini_get_method (cfg, method, n.175, 0B, generic_context);
            if (cmethod == 0B) goto <D.42771>; else goto <D.42773>;
            <D.42773>:
            D.42774 = mono_loader_get_last_error ();
            if (D.42774 != 0B) goto <D.42771>; else goto <D.42772>;
            <D.42771>:
            D.42775 = mini_get_debug_options ();
            D.42776 = D.42775->break_on_unverified;
            if (D.42776 != 0) goto <D.42777>; else goto load_error;
            <D.42777>:
            raise (5);
            <D.42772>:
            D.34618 = cmethod->klass;
            mono_class_init (D.34618);
            context_used = mini_method_check_context_used (cfg, cmethod);
            D.42778 = mono_security_get_mode ();
            if (D.42778 == 2) goto <D.42779>; else goto <D.42780>;
            <D.42779>:
            D.42781 = check_linkdemand (cfg, method, cmethod);
            if (D.42781 != 0) goto <D.42782>; else goto <D.42783>;
            <D.42782>:
            D.32726 = cfg->method;
            if (D.32726 != method) goto <D.42784>; else goto <D.42785>;
            <D.42784>:
            D.32698 = BIT_FIELD_REF <*method, 8, 160>;
            D.32699 = D.32698 & 124;
            if (D.32699 == 0) goto <D.42786>; else goto <D.42787>;
            <D.42786>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 1) goto <D.42788>; else goto <D.42789>;
            <D.42788>:
            printf ("inline failed: %s\n", "linkdemand");
            <D.42789>:
            goto inline_failure;
            <D.42787>:
            <D.42785>:
            <D.42783>:
            D.33309 = cfg->exception_type;
            if (D.33309 != 0) goto exception_exit; else goto <D.42790>;
            <D.42790>:
            goto <D.42791>;
            <D.42780>:
            D.42792 = mono_security_get_mode ();
            if (D.42792 == 1) goto <D.42793>; else goto <D.42794>;
            <D.42793>:
            bblock.76 = bblock;
            ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock.76, ip);
            <D.42794>:
            <D.42791>:
            sp = sp + 4294967292;
            D.33750 = *sp;
            args[0] = D.33750;
            D.42795 = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
            args[1] = D.42795;
            if (context_used != 0) goto <D.42796>; else goto <D.42797>;
            <D.42796>:
            sp.351 = sp;
            sp = sp.351 + 4;
            D.42799 = mono_emit_jit_icall (cfg, mono_ldvirtfn_gshared, &args);
            *sp.351 = D.42799;
            goto <D.42800>;
            <D.42797>:
            sp.352 = sp;
            sp = sp.352 + 4;
            D.42802 = mono_emit_jit_icall (cfg, mono_ldvirtfn, &args);
            *sp.352 = D.42802;
            <D.42800>:
            ip = ip + 6;
            num_calls.353 = num_calls;
            num_calls = num_calls.353 + 1;
            D.42804 = num_calls.353 * 10;
            inline_costs = D.42804 + inline_costs;
            goto <D.30645>;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      <D.30665>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      D.33440 = header->max_stack;
      D.33441 = (int) D.33440;
      if (D.33527 >= D.33441) goto <D.42805>; else goto <D.42806>;
      <D.42805>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.42807>; else goto <D.42808>;
      <D.42807>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.42809>; else goto <D.42810>;
      <D.42809>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.42810>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.42808>:
      D.42811 = mini_get_debug_options ();
      D.42812 = D.42811->break_on_unverified;
      if (D.42812 != 0) goto <D.42813>; else goto unverified;
      <D.42813>:
      raise (5);
      <D.42806>:
      D.42814 = ip + 4;
      if (D.42814 > end) goto <D.42815>; else goto <D.42816>;
      <D.42815>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.42817>; else goto <D.42818>;
      <D.42817>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.42819>; else goto <D.42820>;
      <D.42819>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.42820>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.42818>:
      D.42821 = mini_get_debug_options ();
      D.42822 = D.42821->break_on_unverified;
      if (D.42822 != 0) goto <D.42823>; else goto unverified;
      <D.42823>:
      raise (5);
      <D.42816>:
      D.41529 = ip + 2;
      D.42824 = mono_read16 (D.41529);
      n = (int) D.42824;
      n.88 = (unsigned int) n;
      if (n.88 >= num_args) goto <D.42825>; else goto <D.42826>;
      <D.42825>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.42827>; else goto <D.42828>;
      <D.42827>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.42829>; else goto <D.42830>;
      <D.42829>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.42830>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.42828>:
      D.42831 = mini_get_debug_options ();
      D.42832 = D.42831->break_on_unverified;
      if (D.42832 != 0) goto <D.42833>; else goto unverified;
      <D.42833>:
      raise (5);
      <D.42826>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.33368 = cfg->arg_types;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33678 = D.33368 + D.33677;
      D.33679 = *D.33678;
      D.42834 = mono_type_to_regmove (cfg, D.33679);
      D.42835 = (short unsigned int) D.42834;
      ins->opcode = D.42835;
      D.33368 = cfg->arg_types;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33678 = D.33368 + D.33677;
      D.33679 = *D.33678;
      type_to_eval_stack_type (cfg, D.33679, ins);
      D.33358 = cfg->args;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33682 = D.33358 + D.33677;
      D.33683 = *D.33682;
      D.33684 = D.33683->klass;
      ins->klass = D.33684;
      D.33358 = cfg->args;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33682 = D.33358 + D.33677;
      D.33683 = *D.33682;
      D.33685 = D.33683->dreg;
      ins->sreg1 = D.33685;
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.42836 = alloc_dreg (cfg, D.33502);
      D.42837 = (int) D.42836;
      ins->dreg = D.42837;
      D.33505 = ins->opcode;
      if (D.33505 == 427) goto <D.42838>; else goto <D.42839>;
      <D.42838>:
      D.33368 = cfg->arg_types;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33678 = D.33368 + D.33677;
      D.33679 = *D.33678;
      D.42840 = mono_class_from_mono_type (D.33679);
      ins->klass = D.42840;
      <D.42839>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.42841>; else goto <D.42842>;
      <D.42841>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.42843>;
      <D.42842>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.42843>:
      sp.354 = sp;
      sp = sp.354 + 4;
      *sp.354 = ins;
      ip = ip + 4;
      goto <D.30645>;
      <D.30666>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      D.33440 = header->max_stack;
      D.33441 = (int) D.33440;
      if (D.33527 >= D.33441) goto <D.42845>; else goto <D.42846>;
      <D.42845>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.42847>; else goto <D.42848>;
      <D.42847>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.42849>; else goto <D.42850>;
      <D.42849>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.42850>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.42848>:
      D.42851 = mini_get_debug_options ();
      D.42852 = D.42851->break_on_unverified;
      if (D.42852 != 0) goto <D.42853>; else goto unverified;
      <D.42853>:
      raise (5);
      <D.42846>:
      D.42814 = ip + 4;
      if (D.42814 > end) goto <D.42854>; else goto <D.42855>;
      <D.42854>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.42856>; else goto <D.42857>;
      <D.42856>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.42858>; else goto <D.42859>;
      <D.42858>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.42859>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.42857>:
      D.42860 = mini_get_debug_options ();
      D.42861 = D.42860->break_on_unverified;
      if (D.42861 != 0) goto <D.42862>; else goto unverified;
      <D.42862>:
      raise (5);
      <D.42855>:
      D.41529 = ip + 2;
      D.42863 = mono_read16 (D.41529);
      n = (int) D.42863;
      n.88 = (unsigned int) n;
      if (n.88 >= num_args) goto <D.42864>; else goto <D.42865>;
      <D.42864>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.42866>; else goto <D.42867>;
      <D.42866>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.42868>; else goto <D.42869>;
      <D.42868>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.42869>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.42867>:
      D.42870 = mini_get_debug_options ();
      D.42871 = D.42870->break_on_unverified;
      if (D.42871 != 0) goto <D.42872>; else goto unverified;
      <D.42872>:
      raise (5);
      <D.42865>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 314;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33829 = arg_array + D.33677;
      D.33830 = *D.33829;
      ins->data.op[0].p = D.33830;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33829 = arg_array + D.33677;
      D.33830 = *D.33829;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33829 = arg_array + D.33677;
      D.33830 = *D.33829;
      D.33831 = D.33830->flags;
      D.33832 = D.33831 | 16;
      D.33830->flags = D.33832;
      ins->type = 5;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33829 = arg_array + D.33677;
      D.33830 = *D.33829;
      D.33833 = D.33830->klass;
      ins->klass = D.33833;
      D.42873 = alloc_dreg (cfg, 5);
      D.42874 = (int) D.42873;
      ins->dreg = D.42874;
      cfg->has_indirection = 1;
      D.32904 = cfg->gsharedvt;
      D.33836 = D.32904 != 0;
      D.33837 = (long int) D.33836;
      D.33838 = __builtin_expect (D.33837, 0);
      if (D.33838 != 0) goto <D.42875>; else goto <D.42876>;
      <D.42875>:
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33829 = arg_array + D.33677;
      D.33830 = *D.33829;
      D.33841 = D.33830->data.op[1].vtype;
      D.42877 = mini_is_gsharedvt_variable_type (cfg, D.33841);
      if (D.42877 != 0) goto <D.42878>; else goto <D.42879>;
      <D.42878>:
      handle_gsharedvt_ldaddr (cfg);
      <D.42879>:
      <D.42876>:
      D.42881 = mono_arch_is_soft_float ();
      if (D.42881 != 0) goto <D.42882>; else goto <D.42883>;
      <D.42882>:
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33829 = arg_array + D.33677;
      D.33830 = *D.33829;
      D.42884 = D.33830->type;
      D.42885 = D.42884 == 2;
      D.42886 = D.42884 == 4;
      D.42887 = D.42885 | D.42886;
      D.42888 = (int) D.42887;
      iftmp.355 = (_Bool) D.42888;
      goto <D.42889>;
      <D.42883>:
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33829 = arg_array + D.33677;
      D.33830 = *D.33829;
      D.33855 = D.33830->type;
      iftmp.355 = D.33855 == 2;
      <D.42889>:
      if (iftmp.355 != 0) goto <D.42890>; else goto <D.42891>;
      <D.42890>:
      {
        struct MonoInst * var1;
        struct MonoInst * var2;

        n.88 = (unsigned int) n;
        D.33677 = n.88 * 4;
        D.33829 = arg_array + D.33677;
        D.33830 = *D.33829;
        D.33859 = D.33830->dreg;
        D.33860 = D.33859 + 1;
        D.33861 = (unsigned int) D.33860;
        D.33862 = cfg->vreg_to_inst_len;
        if (D.33861 < D.33862) goto <D.42893>; else goto <D.42894>;
        <D.42893>:
        D.33865 = cfg->vreg_to_inst;
        n.88 = (unsigned int) n;
        D.33677 = n.88 * 4;
        D.33829 = arg_array + D.33677;
        D.33830 = *D.33829;
        D.33859 = D.33830->dreg;
        D.33866 = (sizetype) D.33859;
        D.33867 = D.33866 + 1;
        D.33868 = D.33867 * 4;
        D.33869 = D.33865 + D.33868;
        iftmp.356 = *D.33869;
        goto <D.42895>;
        <D.42894>:
        iftmp.356 = 0B;
        <D.42895>:
        var1 = iftmp.356;
        n.88 = (unsigned int) n;
        D.33677 = n.88 * 4;
        D.33829 = arg_array + D.33677;
        D.33830 = *D.33829;
        D.33859 = D.33830->dreg;
        D.33872 = D.33859 + 2;
        D.33873 = (unsigned int) D.33872;
        D.33862 = cfg->vreg_to_inst_len;
        if (D.33873 < D.33862) goto <D.42897>; else goto <D.42898>;
        <D.42897>:
        D.33865 = cfg->vreg_to_inst;
        n.88 = (unsigned int) n;
        D.33677 = n.88 * 4;
        D.33829 = arg_array + D.33677;
        D.33830 = *D.33829;
        D.33859 = D.33830->dreg;
        D.33866 = (sizetype) D.33859;
        D.33876 = D.33866 + 2;
        D.33877 = D.33876 * 4;
        D.33878 = D.33865 + D.33877;
        iftmp.357 = *D.33878;
        goto <D.42899>;
        <D.42898>:
        iftmp.357 = 0B;
        <D.42899>:
        var2 = iftmp.357;
        D.42900 = var1 == 0B;
        D.42901 = (long int) D.42900;
        D.42902 = __builtin_expect (D.42901, 0);
        if (D.42902 != 0) goto <D.42903>; else goto <D.42904>;
        <D.42903>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11584, "var1");
        <D.42904>:
        D.42905 = var2 == 0B;
        D.42906 = (long int) D.42905;
        D.42907 = __builtin_expect (D.42906, 0);
        if (D.42907 != 0) goto <D.42908>; else goto <D.42909>;
        <D.42908>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11584, "var2");
        <D.42909>:
        D.42910 = var1->flags;
        D.42911 = D.42910 | 16;
        var1->flags = D.42911;
        D.42912 = var2->flags;
        D.42913 = D.42912 | 16;
        var2->flags = D.42913;
      }
      <D.42891>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.42914>; else goto <D.42915>;
      <D.42914>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.42916>;
      <D.42915>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.42916>:
      sp.358 = sp;
      sp = sp.358 + 4;
      *sp.358 = ins;
      ip = ip + 4;
      goto <D.30645>;
      <D.30669>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.42918>; else goto <D.42919>;
      <D.42918>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.42920>; else goto <D.42921>;
      <D.42920>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.42922>; else goto <D.42923>;
      <D.42922>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.42923>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.42921>:
      D.42924 = mini_get_debug_options ();
      D.42925 = D.42924->break_on_unverified;
      if (D.42925 != 0) goto <D.42926>; else goto unverified;
      <D.42926>:
      raise (5);
      <D.42919>:
      sp = sp + 4294967292;
      D.42814 = ip + 4;
      if (D.42814 > end) goto <D.42927>; else goto <D.42928>;
      <D.42927>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.42929>; else goto <D.42930>;
      <D.42929>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.42931>; else goto <D.42932>;
      <D.42931>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.42932>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.42930>:
      D.42933 = mini_get_debug_options ();
      D.42934 = D.42933->break_on_unverified;
      if (D.42934 != 0) goto <D.42935>; else goto unverified;
      <D.42935>:
      raise (5);
      <D.42928>:
      D.41529 = ip + 2;
      D.42936 = mono_read16 (D.41529);
      n = (int) D.42936;
      n.88 = (unsigned int) n;
      if (n.88 >= num_args) goto <D.42937>; else goto <D.42938>;
      <D.42937>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.42939>; else goto <D.42940>;
      <D.42939>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.42941>; else goto <D.42942>;
      <D.42941>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.42942>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.42940>:
      D.42943 = mini_get_debug_options ();
      D.42944 = D.42943->break_on_unverified;
      if (D.42944 != 0) goto <D.42945>; else goto unverified;
      <D.42945>:
      raise (5);
      <D.42938>:
      if (dont_verify_stloc == 0) goto <D.42946>; else goto <D.42947>;
      <D.42946>:
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.42948 = param_types + D.33677;
      D.42949 = *D.42948;
      D.33750 = *sp;
      D.42950 = target_type_is_incompatible (cfg, D.42949, D.33750);
      if (D.42950 != 0) goto <D.42951>; else goto <D.42952>;
      <D.42951>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.42953>; else goto <D.42954>;
      <D.42953>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.42955>; else goto <D.42956>;
      <D.42955>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.42956>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.42954>:
      D.42957 = mini_get_debug_options ();
      D.42958 = D.42957->break_on_unverified;
      if (D.42958 != 0) goto <D.42959>; else goto unverified;
      <D.42959>:
      raise (5);
      <D.42952>:
      <D.42947>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.33368 = cfg->arg_types;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33678 = D.33368 + D.33677;
      D.33679 = *D.33678;
      D.42960 = mono_type_to_regmove (cfg, D.33679);
      D.42961 = (short unsigned int) D.42960;
      ins->opcode = D.42961;
      D.33358 = cfg->args;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33682 = D.33358 + D.33677;
      D.33683 = *D.33682;
      D.33684 = D.33683->klass;
      ins->klass = D.33684;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      D.33358 = cfg->args;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33682 = D.33358 + D.33677;
      D.33683 = *D.33682;
      D.33685 = D.33683->dreg;
      ins->dreg = D.33685;
      D.33505 = ins->opcode;
      if (D.33505 == 427) goto <D.42962>; else goto <D.42963>;
      <D.42962>:
      D.33368 = cfg->arg_types;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33678 = D.33368 + D.33677;
      D.33679 = *D.33678;
      D.42964 = mono_class_from_mono_type (D.33679);
      ins->klass = D.42964;
      <D.42963>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.42965>; else goto <D.42966>;
      <D.42965>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.42967>;
      <D.42966>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.42967>:
      ip = ip + 4;
      goto <D.30645>;
      <D.30670>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      D.33527 = D.33526 /[ex] 4;
      D.33440 = header->max_stack;
      D.33441 = (int) D.33440;
      if (D.33527 >= D.33441) goto <D.42968>; else goto <D.42969>;
      <D.42968>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.42970>; else goto <D.42971>;
      <D.42970>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.42972>; else goto <D.42973>;
      <D.42972>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.42973>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.42971>:
      D.42974 = mini_get_debug_options ();
      D.42975 = D.42974->break_on_unverified;
      if (D.42975 != 0) goto <D.42976>; else goto unverified;
      <D.42976>:
      raise (5);
      <D.42969>:
      D.42814 = ip + 4;
      if (D.42814 > end) goto <D.42977>; else goto <D.42978>;
      <D.42977>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.42979>; else goto <D.42980>;
      <D.42979>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.42981>; else goto <D.42982>;
      <D.42981>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.42982>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.42980>:
      D.42983 = mini_get_debug_options ();
      D.42984 = D.42983->break_on_unverified;
      if (D.42984 != 0) goto <D.42985>; else goto unverified;
      <D.42985>:
      raise (5);
      <D.42978>:
      D.41529 = ip + 2;
      D.42986 = mono_read16 (D.41529);
      n = (int) D.42986;
      n.88 = (unsigned int) n;
      D.33345 = header->num_locals;
      D.33704 = (unsigned int) D.33345;
      if (n.88 >= D.33704) goto <D.42987>; else goto <D.42988>;
      <D.42987>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.42989>; else goto <D.42990>;
      <D.42989>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.42991>; else goto <D.42992>;
      <D.42991>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.42992>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.42990>:
      D.42993 = mini_get_debug_options ();
      D.42994 = D.42993->break_on_unverified;
      if (D.42994 != 0) goto <D.42995>; else goto unverified;
      <D.42995>:
      raise (5);
      <D.42988>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.33333 = header->locals[n];
      D.42996 = mono_type_to_regmove (cfg, D.33333);
      D.42997 = (short unsigned int) D.42996;
      ins->opcode = D.42997;
      D.33333 = header->locals[n];
      type_to_eval_stack_type (cfg, D.33333, ins);
      D.33716 = cfg->locals;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33717 = D.33716 + D.33677;
      D.33718 = *D.33717;
      D.33719 = D.33718->klass;
      ins->klass = D.33719;
      D.33716 = cfg->locals;
      n.88 = (unsigned int) n;
      D.33677 = n.88 * 4;
      D.33717 = D.33716 + D.33677;
      D.33718 = *D.33717;
      D.33720 = D.33718->dreg;
      ins->sreg1 = D.33720;
      D.33501 = ins->type;
      D.33502 = (<unnamed type>) D.33501;
      D.42998 = alloc_dreg (cfg, D.33502);
      D.42999 = (int) D.42998;
      ins->dreg = D.42999;
      D.33505 = ins->opcode;
      if (D.33505 == 427) goto <D.43000>; else goto <D.43001>;
      <D.43000>:
      D.33333 = header->locals[n];
      D.43002 = mono_class_from_mono_type (D.33333);
      ins->klass = D.43002;
      <D.43001>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.43003>; else goto <D.43004>;
      <D.43003>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.43005>;
      <D.43004>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.43005>:
      sp.359 = sp;
      sp = sp.359 + 4;
      *sp.359 = ins;
      ip = ip + 4;
      goto <D.30645>;
      <D.30671>:
      {
        unsigned char * tmp_ip;

        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        D.33527 = D.33526 /[ex] 4;
        D.33440 = header->max_stack;
        D.33441 = (int) D.33440;
        if (D.33527 >= D.33441) goto <D.43007>; else goto <D.43008>;
        <D.43007>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.43009>; else goto <D.43010>;
        <D.43009>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.43011>; else goto <D.43012>;
        <D.43011>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.43012>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.43010>:
        D.43013 = mini_get_debug_options ();
        D.43014 = D.43013->break_on_unverified;
        if (D.43014 != 0) goto <D.43015>; else goto unverified;
        <D.43015>:
        raise (5);
        <D.43008>:
        D.42814 = ip + 4;
        if (D.42814 > end) goto <D.43016>; else goto <D.43017>;
        <D.43016>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.43018>; else goto <D.43019>;
        <D.43018>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.43020>; else goto <D.43021>;
        <D.43020>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.43021>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.43019>:
        D.43022 = mini_get_debug_options ();
        D.43023 = D.43022->break_on_unverified;
        if (D.43023 != 0) goto <D.43024>; else goto unverified;
        <D.43024>:
        raise (5);
        <D.43017>:
        D.41529 = ip + 2;
        D.43025 = mono_read16 (D.41529);
        n = (int) D.43025;
        n.88 = (unsigned int) n;
        D.33345 = header->num_locals;
        D.33704 = (unsigned int) D.33345;
        if (n.88 >= D.33704) goto <D.43026>; else goto <D.43027>;
        <D.43026>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.43028>; else goto <D.43029>;
        <D.43028>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.43030>; else goto <D.43031>;
        <D.43030>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.43031>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.43029>:
        D.43032 = mini_get_debug_options ();
        D.43033 = D.43032->break_on_unverified;
        if (D.43033 != 0) goto <D.43034>; else goto unverified;
        <D.43034>:
        raise (5);
        <D.43027>:
        tmp_ip = emit_optimized_ldloca_ir (cfg, ip, end, 2);
        if (tmp_ip != 0B) goto <D.43035>; else goto <D.43036>;
        <D.43035>:
        ip = tmp_ip;
        inline_costs = inline_costs + 1;
        goto <D.30645>;
        <D.43036>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 314;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        D.33716 = cfg->locals;
        n.88 = (unsigned int) n;
        D.33677 = n.88 * 4;
        D.33717 = D.33716 + D.33677;
        D.33718 = *D.33717;
        ins->data.op[0].p = D.33718;
        D.33716 = cfg->locals;
        n.88 = (unsigned int) n;
        D.33677 = n.88 * 4;
        D.33717 = D.33716 + D.33677;
        D.33718 = *D.33717;
        D.33716 = cfg->locals;
        n.88 = (unsigned int) n;
        D.33677 = n.88 * 4;
        D.33717 = D.33716 + D.33677;
        D.33718 = *D.33717;
        D.43037 = D.33718->flags;
        D.43038 = D.43037 | 16;
        D.33718->flags = D.43038;
        ins->type = 5;
        D.33716 = cfg->locals;
        n.88 = (unsigned int) n;
        D.33677 = n.88 * 4;
        D.33717 = D.33716 + D.33677;
        D.33718 = *D.33717;
        D.33719 = D.33718->klass;
        ins->klass = D.33719;
        D.43039 = alloc_dreg (cfg, 5);
        D.43040 = (int) D.43039;
        ins->dreg = D.43040;
        cfg->has_indirection = 1;
        D.32904 = cfg->gsharedvt;
        D.33836 = D.32904 != 0;
        D.33837 = (long int) D.33836;
        D.33838 = __builtin_expect (D.33837, 0);
        if (D.33838 != 0) goto <D.43041>; else goto <D.43042>;
        <D.43041>:
        D.33716 = cfg->locals;
        n.88 = (unsigned int) n;
        D.33677 = n.88 * 4;
        D.33717 = D.33716 + D.33677;
        D.33718 = *D.33717;
        D.43043 = D.33718->data.op[1].vtype;
        D.43044 = mini_is_gsharedvt_variable_type (cfg, D.43043);
        if (D.43044 != 0) goto <D.43045>; else goto <D.43046>;
        <D.43045>:
        handle_gsharedvt_ldaddr (cfg);
        <D.43046>:
        <D.43042>:
        D.43048 = mono_arch_is_soft_float ();
        if (D.43048 != 0) goto <D.43049>; else goto <D.43050>;
        <D.43049>:
        D.33716 = cfg->locals;
        n.88 = (unsigned int) n;
        D.33677 = n.88 * 4;
        D.33717 = D.33716 + D.33677;
        D.33718 = *D.33717;
        D.43051 = D.33718->type;
        D.43052 = D.43051 == 2;
        D.43053 = D.43051 == 4;
        D.43054 = D.43052 | D.43053;
        D.43055 = (int) D.43054;
        iftmp.360 = (_Bool) D.43055;
        goto <D.43056>;
        <D.43050>:
        D.33716 = cfg->locals;
        n.88 = (unsigned int) n;
        D.33677 = n.88 * 4;
        D.33717 = D.33716 + D.33677;
        D.33718 = *D.33717;
        D.43057 = D.33718->type;
        iftmp.360 = D.43057 == 2;
        <D.43056>:
        if (iftmp.360 != 0) goto <D.43058>; else goto <D.43059>;
        <D.43058>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.33716 = cfg->locals;
          n.88 = (unsigned int) n;
          D.33677 = n.88 * 4;
          D.33717 = D.33716 + D.33677;
          D.33718 = *D.33717;
          D.33720 = D.33718->dreg;
          D.43061 = D.33720 + 1;
          D.43062 = (unsigned int) D.43061;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.43062 < D.33862) goto <D.43063>; else goto <D.43064>;
          <D.43063>:
          D.33865 = cfg->vreg_to_inst;
          D.33716 = cfg->locals;
          n.88 = (unsigned int) n;
          D.33677 = n.88 * 4;
          D.33717 = D.33716 + D.33677;
          D.33718 = *D.33717;
          D.33720 = D.33718->dreg;
          D.43065 = (sizetype) D.33720;
          D.43066 = D.43065 + 1;
          D.43067 = D.43066 * 4;
          D.43068 = D.33865 + D.43067;
          iftmp.361 = *D.43068;
          goto <D.43069>;
          <D.43064>:
          iftmp.361 = 0B;
          <D.43069>:
          var1 = iftmp.361;
          D.33716 = cfg->locals;
          n.88 = (unsigned int) n;
          D.33677 = n.88 * 4;
          D.33717 = D.33716 + D.33677;
          D.33718 = *D.33717;
          D.33720 = D.33718->dreg;
          D.43071 = D.33720 + 2;
          D.43072 = (unsigned int) D.43071;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.43072 < D.33862) goto <D.43073>; else goto <D.43074>;
          <D.43073>:
          D.33865 = cfg->vreg_to_inst;
          D.33716 = cfg->locals;
          n.88 = (unsigned int) n;
          D.33677 = n.88 * 4;
          D.33717 = D.33716 + D.33677;
          D.33718 = *D.33717;
          D.33720 = D.33718->dreg;
          D.43065 = (sizetype) D.33720;
          D.43075 = D.43065 + 2;
          D.43076 = D.43075 * 4;
          D.43077 = D.33865 + D.43076;
          iftmp.362 = *D.43077;
          goto <D.43078>;
          <D.43074>:
          iftmp.362 = 0B;
          <D.43078>:
          var2 = iftmp.362;
          D.43079 = var1 == 0B;
          D.43080 = (long int) D.43079;
          D.43081 = __builtin_expect (D.43080, 0);
          if (D.43081 != 0) goto <D.43082>; else goto <D.43083>;
          <D.43082>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11622, "var1");
          <D.43083>:
          D.43084 = var2 == 0B;
          D.43085 = (long int) D.43084;
          D.43086 = __builtin_expect (D.43085, 0);
          if (D.43086 != 0) goto <D.43087>; else goto <D.43088>;
          <D.43087>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11622, "var2");
          <D.43088>:
          D.43089 = var1->flags;
          D.43090 = D.43089 | 16;
          var1->flags = D.43090;
          D.43091 = var2->flags;
          D.43092 = D.43091 | 16;
          var2->flags = D.43092;
        }
        <D.43059>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.43093>; else goto <D.43094>;
        <D.43093>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.43095>;
        <D.43094>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.43095>:
        sp.363 = sp;
        sp = sp.363 + 4;
        *sp.363 = ins;
        ip = ip + 4;
        goto <D.30645>;
      }
      <D.30675>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.43097>; else goto <D.43098>;
      <D.43097>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.43099>; else goto <D.43100>;
      <D.43099>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.43101>; else goto <D.43102>;
      <D.43101>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.43102>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.43100>:
      D.43103 = mini_get_debug_options ();
      D.43104 = D.43103->break_on_unverified;
      if (D.43104 != 0) goto <D.43105>; else goto unverified;
      <D.43105>:
      raise (5);
      <D.43098>:
      sp = sp + 4294967292;
      D.42814 = ip + 4;
      if (D.42814 > end) goto <D.43106>; else goto <D.43107>;
      <D.43106>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.43108>; else goto <D.43109>;
      <D.43108>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.43110>; else goto <D.43111>;
      <D.43110>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.43111>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.43109>:
      D.43112 = mini_get_debug_options ();
      D.43113 = D.43112->break_on_unverified;
      if (D.43113 != 0) goto <D.43114>; else goto unverified;
      <D.43114>:
      raise (5);
      <D.43107>:
      D.41529 = ip + 2;
      D.43115 = mono_read16 (D.41529);
      n = (int) D.43115;
      n.88 = (unsigned int) n;
      D.33345 = header->num_locals;
      D.33704 = (unsigned int) D.33345;
      if (n.88 >= D.33704) goto <D.43116>; else goto <D.43117>;
      <D.43116>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.43118>; else goto <D.43119>;
      <D.43118>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.43120>; else goto <D.43121>;
      <D.43120>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.43121>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.43119>:
      D.43122 = mini_get_debug_options ();
      D.43123 = D.43122->break_on_unverified;
      if (D.43123 != 0) goto <D.43124>; else goto unverified;
      <D.43124>:
      raise (5);
      <D.43117>:
      if (dont_verify_stloc == 0) goto <D.43125>; else goto <D.43126>;
      <D.43125>:
      D.33333 = header->locals[n];
      D.33750 = *sp;
      D.43127 = target_type_is_incompatible (cfg, D.33333, D.33750);
      if (D.43127 != 0) goto <D.43128>; else goto <D.43129>;
      <D.43128>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.43130>; else goto <D.43131>;
      <D.43130>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.43132>; else goto <D.43133>;
      <D.43132>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.43133>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.43131>:
      D.43134 = mini_get_debug_options ();
      D.43135 = D.43134->break_on_unverified;
      if (D.43135 != 0) goto <D.43136>; else goto unverified;
      <D.43136>:
      raise (5);
      <D.43129>:
      <D.43126>:
      emit_stloc_ir (cfg, sp, header, n);
      ip = ip + 4;
      inline_costs = inline_costs + 1;
      goto <D.30645>;
      <D.30676>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.43137>; else goto <D.43138>;
      <D.43137>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.43139>; else goto <D.43140>;
      <D.43139>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.43141>; else goto <D.43142>;
      <D.43141>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.43142>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.43140>:
      D.43143 = mini_get_debug_options ();
      D.43144 = D.43143->break_on_unverified;
      if (D.43144 != 0) goto <D.43145>; else goto unverified;
      <D.43145>:
      raise (5);
      <D.43138>:
      sp = sp + 4294967292;
      if (sp != stack_start) goto <D.43146>; else goto <D.43147>;
      <D.43146>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.43148>; else goto <D.43149>;
      <D.43148>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.43150>; else goto <D.43151>;
      <D.43150>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.43151>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.43149>:
      D.43152 = mini_get_debug_options ();
      D.43153 = D.43152->break_on_unverified;
      if (D.43153 != 0) goto <D.43154>; else goto unverified;
      <D.43154>:
      raise (5);
      <D.43147>:
      D.32726 = cfg->method;
      if (D.32726 != method) goto inline_failure; else goto <D.43155>;
      <D.43155>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 338;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      D.43156 = alloc_preg (cfg);
      D.43157 = (int) D.43156;
      ins->dreg = D.43157;
      D.33750 = *sp;
      D.33943 = D.33750->dreg;
      ins->sreg1 = D.33943;
      ins->type = 3;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      if (D.33008 != 0B) goto <D.43158>; else goto <D.43159>;
      <D.43158>:
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      D.33008->next = ins;
      bblock.125 = cfg->cbb;
      D.33008 = bblock.125->last_ins;
      ins->prev = D.33008;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      goto <D.43160>;
      <D.43159>:
      bblock.125 = cfg->cbb;
      bblock.125 = cfg->cbb;
      bblock.125->last_ins = ins;
      D.33008 = bblock.125->last_ins;
      bblock.125->code = D.33008;
      <D.43160>:
      D.33186 = cfg->flags;
      D.33187 = D.33186 | 1;
      cfg->flags = D.33187;
      if (init_locals != 0) goto <D.43161>; else goto <D.43162>;
      <D.43161>:
      D.33600 = ins->flags;
      D.43163 = D.33600 | 1;
      ins->flags = D.43163;
      <D.43162>:
      sp.364 = sp;
      sp = sp.364 + 4;
      *sp.364 = ins;
      ip = ip + 2;
      goto <D.30645>;
      <D.30677>:
      {
        struct MonoExceptionClause * clause;
        struct MonoExceptionClause * nearest;
        int cc;
        int nearest_num;

        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        if (D.33526 <= 3) goto <D.43165>; else goto <D.43166>;
        <D.43165>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.43167>; else goto <D.43168>;
        <D.43167>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.43169>; else goto <D.43170>;
        <D.43169>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.43170>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.43168>:
        D.43171 = mini_get_debug_options ();
        D.43172 = D.43171->break_on_unverified;
        if (D.43172 != 0) goto <D.43173>; else goto unverified;
        <D.43173>:
        raise (5);
        <D.43166>:
        sp = sp + 4294967292;
        if (sp != stack_start) goto <D.43174>; else goto <D.43176>;
        <D.43176>:
        D.33750 = *sp;
        D.35492 = D.33750->type;
        if (D.35492 != 1) goto <D.43174>; else goto <D.43175>;
        <D.43174>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.43177>; else goto <D.43178>;
        <D.43177>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.43179>; else goto <D.43180>;
        <D.43179>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.43180>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.43178>:
        D.43181 = mini_get_debug_options ();
        D.43182 = D.43181->break_on_unverified;
        if (D.43182 != 0) goto <D.43183>; else goto unverified;
        <D.43183>:
        raise (5);
        <D.43175>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 737;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        ins->sreg1 = D.33943;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        if (D.33093 != 0B) goto <D.43184>; else goto <D.43185>;
        <D.43184>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        D.33093->next = ins;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        ins->prev = D.33093;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        goto <D.43186>;
        <D.43185>:
        bblock.76 = bblock;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        D.33093 = bblock.76->last_ins;
        bblock.76->code = D.33093;
        <D.43186>:
        start_new_bblock = 1;
        ip = ip + 2;
        nearest = 0B;
        nearest_num = 0;
        cc = 0;
        goto <D.30683>;
        <D.30682>:
        D.32884 = header->clauses;
        cc.365 = (unsigned int) cc;
        D.43188 = cc.365 * 24;
        clause = D.32884 + D.43188;
        D.43191 = clause->flags;
        D.43192 = D.43191 & 1;
        if (D.43192 != 0) goto <D.43193>; else goto <D.43194>;
        <D.43193>:
        ip.81 = (int) ip;
        D.32903 = header->code;
        D.33448 = (int) D.32903;
        D.33449 = ip.81 - D.33448;
        D.41292 = (unsigned int) D.33449;
        D.43195 = clause->data.filter_offset;
        if (D.41292 > D.43195) goto <D.43196>; else goto <D.43197>;
        <D.43196>:
        ip.81 = (int) ip;
        D.32903 = header->code;
        D.33448 = (int) D.32903;
        D.33449 = ip.81 - D.33448;
        D.41292 = (unsigned int) D.33449;
        D.43198 = clause->handler_offset;
        if (D.41292 <= D.43198) goto <D.43199>; else goto <D.43200>;
        <D.43199>:
        if (nearest == 0B) goto <D.43189>; else goto <D.43201>;
        <D.43201>:
        D.43195 = clause->data.filter_offset;
        D.43202 = nearest->data.filter_offset;
        if (D.43195 < D.43202) goto <D.43189>; else goto <D.43190>;
        <D.43189>:
        nearest = clause;
        nearest_num = cc;
        <D.43190>:
        <D.43200>:
        <D.43197>:
        <D.43194>:
        cc = cc + 1;
        <D.30683>:
        D.33073 = header->num_clauses;
        D.33074 = (int) D.33073;
        if (D.33074 > cc) goto <D.30682>; else goto <D.30684>;
        <D.30684>:
        D.43203 = nearest == 0B;
        D.43204 = (long int) D.43203;
        D.43205 = __builtin_expect (D.43204, 0);
        if (D.43205 != 0) goto <D.43206>; else goto <D.43207>;
        <D.43206>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11690, "nearest");
        <D.43207>:
        ip.81 = (int) ip;
        D.32903 = header->code;
        D.33448 = (int) D.32903;
        D.33449 = ip.81 - D.33448;
        D.41292 = (unsigned int) D.33449;
        D.43208 = nearest->handler_offset;
        if (D.41292 != D.43208) goto <D.43209>; else goto <D.43210>;
        <D.43209>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.43211>; else goto <D.43212>;
        <D.43211>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.43213>; else goto <D.43214>;
        <D.43213>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.43214>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.43212>:
        D.43215 = mini_get_debug_options ();
        D.43216 = D.43215->break_on_unverified;
        if (D.43216 != 0) goto <D.43217>; else goto unverified;
        <D.43217>:
        raise (5);
        <D.43210>:
        goto <D.30645>;
      }
      <D.30685>:
      ins_flag = ins_flag | 8;
      D.43218 = ip + 3;
      if (D.43218 > end) goto <D.43219>; else goto <D.43220>;
      <D.43219>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.43221>; else goto <D.43222>;
      <D.43221>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.43223>; else goto <D.43224>;
      <D.43223>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.43224>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.43222>:
      D.43225 = mini_get_debug_options ();
      D.43226 = D.43225->break_on_unverified;
      if (D.43226 != 0) goto <D.43227>; else goto unverified;
      <D.43227>:
      raise (5);
      <D.43220>:
      ip = ip + 3;
      goto <D.30645>;
      <D.30686>:
      ins_flag = ins_flag | 4;
      ip = ip + 2;
      goto <D.30645>;
      <D.30687>:
      ins_flag = ins_flag | 4;
      D.33186 = cfg->flags;
      D.43228 = D.33186 | 16;
      cfg->flags = D.43228;
      inline_costs = inline_costs + 100000;
      ip = ip + 2;
      goto <D.30645>;
      <D.30688>:
      sp.83 = (int) sp;
      stack_start.84 = (int) stack_start;
      D.33526 = sp.83 - stack_start.84;
      if (D.33526 <= 3) goto <D.43229>; else goto <D.43230>;
      <D.43229>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.43231>; else goto <D.43232>;
      <D.43231>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.43233>; else goto <D.43234>;
      <D.43233>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.43234>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.43232>:
      D.43235 = mini_get_debug_options ();
      D.43236 = D.43235->break_on_unverified;
      if (D.43236 != 0) goto <D.43237>; else goto unverified;
      <D.43237>:
      raise (5);
      <D.43230>:
      sp = sp + 4294967292;
      D.37547 = ip + 6;
      if (D.37547 > end) goto <D.43238>; else goto <D.43239>;
      <D.43238>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.43240>; else goto <D.43241>;
      <D.43240>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.43242>; else goto <D.43243>;
      <D.43242>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.43243>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.43241>:
      D.43244 = mini_get_debug_options ();
      D.43245 = D.43244->break_on_unverified;
      if (D.43245 != 0) goto <D.43246>; else goto unverified;
      <D.43246>:
      raise (5);
      <D.43239>:
      D.41529 = ip + 2;
      token = mono_read32 (D.41529);
      klass.366 = mini_get_class (method, token, generic_context);
      klass = klass.366;
      klass.170 = klass;
      if (klass.170 == 0B) goto <D.43248>; else goto <D.43250>;
      <D.43250>:
      klass.170 = klass;
      D.37490 = klass.170->exception_type;
      if (D.37490 != 0) goto <D.43248>; else goto <D.43249>;
      <D.43248>:
      klass.170 = klass;
      cfg->exception_ptr = klass.170;
      D.43251 = mini_get_debug_options ();
      D.43252 = D.43251->break_on_unverified;
      if (D.43252 != 0) goto <D.43253>; else goto load_error;
      <D.43253>:
      raise (5);
      <D.43249>:
      klass.170 = klass;
      D.43254 = generic_class_is_reference_type (cfg, klass.170);
      if (D.43254 != 0) goto <D.43255>; else goto <D.43256>;
      <D.43255>:
      {
        struct MonoInst * inst;

        D.32755 = cfg->mempool;
        inst = mono_mempool_alloc (D.32755, 56);
        inst->data.op[1].const_val = 0;
        D.43257 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.43257;
        inst->prev = 0B;
        D.43258 = inst->prev;
        inst->next = D.43258;
        inst->opcode = 381;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.43259 = inst->sreg3;
        inst->sreg2 = D.43259;
        D.43260 = inst->sreg2;
        inst->sreg1 = D.43260;
        D.32979 = cfg->ip;
        inst->cil_code = D.32979;
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        inst->dreg = D.33943;
        inst->data.op[0].const_val = 0;
        inst->data.op[1].const_val = 0;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.43261>; else goto <D.43262>;
        <D.43261>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = inst;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        inst->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = inst;
        goto <D.43263>;
        <D.43262>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = inst;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.43263>:
      }
      goto <D.43264>;
      <D.43256>:
      D.33750 = *sp;
      klass.170 = klass;
      mini_emit_initobj (cfg, D.33750, 0B, klass.170);
      <D.43264>:
      ip = ip + 6;
      inline_costs = inline_costs + 1;
      goto <D.30645>;
      <D.30690>:
      D.37547 = ip + 6;
      if (D.37547 > end) goto <D.43265>; else goto <D.43266>;
      <D.43265>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.43267>; else goto <D.43268>;
      <D.43267>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.43269>; else goto <D.43270>;
      <D.43269>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.43270>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.43268>:
      D.43271 = mini_get_debug_options ();
      D.43272 = D.43271->break_on_unverified;
      if (D.43272 != 0) goto <D.43273>; else goto unverified;
      <D.43273>:
      raise (5);
      <D.43266>:
      D.41529 = ip + 2;
      token = mono_read32 (D.41529);
      constrained_call = mini_get_class (method, token, generic_context);
      if (constrained_call == 0B) goto <D.43274>; else goto <D.43276>;
      <D.43276>:
      D.35054 = constrained_call->exception_type;
      if (D.35054 != 0) goto <D.43274>; else goto <D.43275>;
      <D.43274>:
      cfg->exception_ptr = constrained_call;
      D.43277 = mini_get_debug_options ();
      D.43278 = D.43277->break_on_unverified;
      if (D.43278 != 0) goto <D.43279>; else goto load_error;
      <D.43279>:
      raise (5);
      <D.43275>:
      ip = ip + 6;
      goto <D.30645>;
      <D.30691>:
      <D.30692>:
      {
        struct MonoInst * iargs[3];

        try
          {
            sp.83 = (int) sp;
            stack_start.84 = (int) stack_start;
            D.33526 = sp.83 - stack_start.84;
            if (D.33526 <= 11) goto <D.43280>; else goto <D.43281>;
            <D.43280>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.43282>; else goto <D.43283>;
            <D.43282>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.43284>; else goto <D.43285>;
            <D.43284>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.43285>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.43283>:
            D.43286 = mini_get_debug_options ();
            D.43287 = D.43286->break_on_unverified;
            if (D.43287 != 0) goto <D.43288>; else goto unverified;
            <D.43288>:
            raise (5);
            <D.43281>:
            sp = sp + 4294967284;
            D.33780 = ip + 1;
            D.33781 = *D.33780;
            if (D.33781 == 23) goto <D.43291>; else goto <D.43289>;
            <D.43291>:
            D.33148 = cfg->opt;
            D.35152 = D.33148 & 2048;
            if (D.35152 != 0) goto <D.43292>; else goto <D.43289>;
            <D.43292>:
            D.43293 = sp + 8;
            D.43294 = *D.43293;
            D.43295 = D.43294->opcode;
            if (D.43295 == 362) goto <D.43296>; else goto <D.43289>;
            <D.43296>:
            D.43293 = sp + 8;
            D.43294 = *D.43293;
            n = D.43294->data.op[0].const_val;
            n.88 = (unsigned int) n;
            if (n.88 <= 20) goto <D.43297>; else goto <D.43289>;
            <D.43297>:
            D.33750 = *sp;
            D.33943 = D.33750->dreg;
            D.34875 = sp + 4;
            D.34876 = *D.34875;
            D.34877 = D.34876->dreg;
            D.43293 = sp + 8;
            D.43294 = *D.43293;
            D.43298 = D.43294->data.op[0].const_val;
            mini_emit_memcpy (cfg, D.33943, 0, D.34877, 0, D.43298, 0);
            goto <D.43290>;
            <D.43289>:
            D.33780 = ip + 1;
            D.33781 = *D.33780;
            if (D.33781 == 24) goto <D.43301>; else goto <D.43299>;
            <D.43301>:
            D.33148 = cfg->opt;
            D.35152 = D.33148 & 2048;
            if (D.35152 != 0) goto <D.43302>; else goto <D.43299>;
            <D.43302>:
            D.43293 = sp + 8;
            D.43294 = *D.43293;
            D.43295 = D.43294->opcode;
            if (D.43295 == 362) goto <D.43303>; else goto <D.43299>;
            <D.43303>:
            D.43293 = sp + 8;
            D.43294 = *D.43293;
            n = D.43294->data.op[0].const_val;
            n.88 = (unsigned int) n;
            if (n.88 <= 20) goto <D.43304>; else goto <D.43299>;
            <D.43304>:
            D.34875 = sp + 4;
            D.34876 = *D.34875;
            D.37146 = D.34876->opcode;
            if (D.37146 == 362) goto <D.43305>; else goto <D.43299>;
            <D.43305>:
            D.34875 = sp + 4;
            D.34876 = *D.34875;
            D.37171 = D.34876->data.op[0].const_val;
            if (D.37171 == 0) goto <D.43306>; else goto <D.43299>;
            <D.43306>:
            D.33750 = *sp;
            D.33943 = D.33750->dreg;
            D.43293 = sp + 8;
            D.43294 = *D.43293;
            D.43298 = D.43294->data.op[0].const_val;
            D.34875 = sp + 4;
            D.34876 = *D.34875;
            D.37171 = D.34876->data.op[0].const_val;
            mini_emit_memset (cfg, D.33943, 0, D.43298, D.37171, 0);
            goto <D.43300>;
            <D.43299>:
            D.33750 = *sp;
            iargs[0] = D.33750;
            D.37948 = MEM[(struct MonoInst * *)sp + 4B];
            iargs[1] = D.37948;
            D.43307 = MEM[(struct MonoInst * *)sp + 8B];
            iargs[2] = D.43307;
            D.33780 = ip + 1;
            D.33781 = *D.33780;
            if (D.33781 == 23) goto <D.43308>; else goto <D.43309>;
            <D.43308>:
            {
              struct MonoMethod * memcpy_method;

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

              memset_method = get_memset_method ();
              mono_emit_method_call (cfg, memset_method, &iargs, 0B);
            }
            <D.43310>:
            <D.43300>:
            <D.43290>:
            ip = ip + 2;
            inline_costs = inline_costs + 1;
            goto <D.30645>;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      <D.30696>:
      D.43218 = ip + 3;
      if (D.43218 > end) goto <D.43311>; else goto <D.43312>;
      <D.43311>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.43313>; else goto <D.43314>;
      <D.43313>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.43315>; else goto <D.43316>;
      <D.43315>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.43316>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.43314>:
      D.43317 = mini_get_debug_options ();
      D.43318 = D.43317->break_on_unverified;
      if (D.43318 != 0) goto <D.43319>; else goto unverified;
      <D.43319>:
      raise (5);
      <D.43312>:
      D.33761 = ip + 2;
      D.43320 = *D.33761;
      D.43321 = (int) D.43320;
      D.43322 = D.43321 & 1;
      if (D.43322 != 0) goto <D.43323>; else goto <D.43324>;
      <D.43323>:
      ins_flag = ins_flag | 4;
      <D.43324>:
      D.33761 = ip + 2;
      D.43320 = *D.33761;
      D.43321 = (int) D.43320;
      D.43325 = D.43321 & 2;
      if (D.43325 != 0) goto <D.43326>; else goto <D.43327>;
      <D.43326>:
      ins_flag = ins_flag | 16;
      <D.43327>:
      ip = ip + 3;
      goto <D.30645>;
      <D.30697>:
      {
        struct MonoInst * load;
        int handler_offset;

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

          D.32884 = header->clauses;
          i.74 = (unsigned int) i;
          D.32886 = i.74 * 24;
          clause = D.32884 + D.32886;
          D.43328 = clause->handler_offset;
          ip.81 = (int) ip;
          D.32903 = header->code;
          D.33448 = (int) D.32903;
          D.33449 = ip.81 - D.33448;
          D.41292 = (unsigned int) D.33449;
          if (D.43328 <= D.41292) goto <D.43329>; else goto <D.43330>;
          <D.43329>:
          ip.81 = (int) ip;
          D.32903 = header->code;
          D.33448 = (int) D.32903;
          D.33449 = ip.81 - D.33448;
          D.41292 = (unsigned int) D.33449;
          D.43328 = clause->handler_offset;
          D.43331 = clause->handler_len;
          D.43332 = D.43328 + D.43331;
          if (D.41292 < D.43332) goto <D.43333>; else goto <D.43334>;
          <D.43333>:
          D.43335 = clause->flags;
          D.43336 = D.43335 & 2;
          if (D.43336 == 0) goto <D.43337>; else goto <D.43338>;
          <D.43337>:
          D.43328 = clause->handler_offset;
          handler_offset = (int) D.43328;
          goto <D.30701>;
          <D.43338>:
          <D.43334>:
          <D.43330>:
        }
        i = i + 1;
        <D.30703>:
        D.33073 = header->num_clauses;
        D.33074 = (int) D.33073;
        if (D.33074 > i) goto <D.30702>; else goto <D.30701>;
        <D.30701>:
        bblock.76 = bblock;
        bblock.76 = bblock;
        D.43339 = bblock.76->flags;
        D.43340 = D.43339 | 8;
        bblock.76->flags = D.43340;
        D.43341 = handler_offset == -1;
        D.43342 = (long int) D.43341;
        D.43343 = __builtin_expect (D.43342, 0);
        if (D.43343 != 0) goto <D.43344>; else goto <D.43345>;
        <D.43344>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11786, "handler_offset != -1");
        <D.43345>:
        D.32755 = cfg->mempool;
        load = mono_mempool_alloc (D.32755, 56);
        load->data.op[1].const_val = 0;
        D.43346 = load->data.op[1].const_val;
        load->data.op[0].const_val = D.43346;
        load->prev = 0B;
        D.43347 = load->prev;
        load->next = D.43347;
        load->opcode = 424;
        load->flags = 0;
        load->type = 0;
        load->dreg = -1;
        load->sreg3 = -1;
        D.43348 = load->sreg3;
        load->sreg2 = D.43348;
        D.43349 = load->sreg2;
        load->sreg1 = D.43349;
        D.32979 = cfg->ip;
        load->cil_code = D.32979;
        D.33491 = cfg->varinfo;
        D.43350 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.43351 = D.43350->data.op[0].const_val;
        D.43352 = (unsigned int) D.43351;
        D.43353 = D.43352 * 4;
        D.43354 = D.33491 + D.43353;
        D.43355 = *D.43354;
        D.43356 = D.43355->data.op[1].vtype;
        D.43357 = mono_type_to_regmove (cfg, D.43356);
        D.43358 = (short unsigned int) D.43357;
        load->opcode = D.43358;
        D.33491 = cfg->varinfo;
        D.43359 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.43360 = D.43359->data.op[0].const_val;
        D.43361 = (unsigned int) D.43360;
        D.43362 = D.43361 * 4;
        D.43363 = D.33491 + D.43362;
        D.43364 = *D.43363;
        D.43365 = D.43364->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.43365, load);
        D.33491 = cfg->varinfo;
        D.43366 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.43367 = D.43366->data.op[0].const_val;
        D.43368 = (unsigned int) D.43367;
        D.43369 = D.43368 * 4;
        D.43370 = D.33491 + D.43369;
        D.43371 = *D.43370;
        D.43372 = D.43371->klass;
        load->klass = D.43372;
        D.33491 = cfg->varinfo;
        D.43373 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.43374 = D.43373->data.op[0].const_val;
        D.43375 = (unsigned int) D.43374;
        D.43376 = D.43375 * 4;
        D.43377 = D.33491 + D.43376;
        D.43378 = *D.43377;
        D.43379 = D.43378->dreg;
        load->sreg1 = D.43379;
        D.43380 = load->type;
        D.43381 = (<unnamed type>) D.43380;
        D.43382 = alloc_dreg (cfg, D.43381);
        D.43383 = (int) D.43382;
        load->dreg = D.43383;
        D.43384 = load->opcode;
        if (D.43384 == 427) goto <D.43385>; else goto <D.43386>;
        <D.43385>:
        D.33491 = cfg->varinfo;
        D.43387 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.43388 = D.43387->data.op[0].const_val;
        D.43389 = (unsigned int) D.43388;
        D.43390 = D.43389 * 4;
        D.43391 = D.33491 + D.43390;
        D.43392 = *D.43391;
        D.43393 = D.43392->data.op[1].vtype;
        D.43394 = mono_class_from_mono_type (D.43393);
        load->klass = D.43394;
        <D.43386>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.43395>; else goto <D.43396>;
        <D.43395>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = load;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        load->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = load;
        goto <D.43397>;
        <D.43396>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = load;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.43397>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 372;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        D.43398 = load->dreg;
        ins->sreg1 = D.43398;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        if (D.33093 != 0B) goto <D.43399>; else goto <D.43400>;
        <D.43399>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        D.33093->next = ins;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        ins->prev = D.33093;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        goto <D.43401>;
        <D.43400>:
        bblock.76 = bblock;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        D.33093 = bblock.76->last_ins;
        bblock.76->code = D.33093;
        <D.43401>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        ins->opcode = 798;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        if (D.33093 != 0B) goto <D.43402>; else goto <D.43403>;
        <D.43402>:
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        D.33093->next = ins;
        bblock.76 = bblock;
        D.33093 = bblock.76->last_ins;
        ins->prev = D.33093;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        goto <D.43404>;
        <D.43403>:
        bblock.76 = bblock;
        bblock.76 = bblock;
        bblock.76->last_ins = ins;
        D.33093 = bblock.76->last_ins;
        bblock.76->code = D.33093;
        <D.43404>:
        sp = stack_start;
        bblock.76 = bblock;
        link_bblock (cfg, bblock.76, end_bblock);
        start_new_bblock = 1;
        ip = ip + 2;
        goto <D.30645>;
      }
      <D.30704>:
      {
        guint32 val;
        int ialign;

        try
          {
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.43405>; else goto <D.43406>;
            <D.43405>:
            D.32693 = method->klass;
            D.34423 = D.32693->name_space;
            D.32693 = method->klass;
            D.34424 = D.32693->name;
            D.34425 = method->name;
            D.34426 = method->signature;
            D.34427 = D.34426->param_count;
            D.34428 = (int) D.34427;
            D.33632 = *ip;
            D.33633 = (int) D.33632;
            D.43407 = mono_opcode_name (D.33633);
            D.43408 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.34423, D.34424, D.34425, D.34428, D.43407, "method-to-ir.c", 11806);
            cfg->exception_message = D.43408;
            D.32836 = cfg->verbose_level;
            if (D.32836 > 1) goto <D.43409>; else goto <D.43410>;
            <D.43409>:
            D.34433 = cfg->exception_message;
            printf ("%s\n", D.34433);
            <D.43410>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.43406>:
            sp.83 = (int) sp;
            stack_start.84 = (int) stack_start;
            D.33526 = sp.83 - stack_start.84;
            D.33527 = D.33526 /[ex] 4;
            D.33440 = header->max_stack;
            D.33441 = (int) D.33440;
            if (D.33527 >= D.33441) goto <D.43411>; else goto <D.43412>;
            <D.43411>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.43413>; else goto <D.43414>;
            <D.43413>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.43415>; else goto <D.43416>;
            <D.43415>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.43416>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.43414>:
            D.43417 = mini_get_debug_options ();
            D.43418 = D.43417->break_on_unverified;
            if (D.43418 != 0) goto <D.43419>; else goto unverified;
            <D.43419>:
            raise (5);
            <D.43412>:
            D.37547 = ip + 6;
            if (D.37547 > end) goto <D.43420>; else goto <D.43421>;
            <D.43420>:
            D.32904 = cfg->gsharedvt;
            if (D.32904 != 0) goto <D.43422>; else goto <D.43423>;
            <D.43422>:
            D.32836 = cfg->verbose_level;
            if (D.32836 > 2) goto <D.43424>; else goto <D.43425>;
            <D.43424>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.43425>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.43423>:
            D.43426 = mini_get_debug_options ();
            D.43427 = D.43426->break_on_unverified;
            if (D.43427 != 0) goto <D.43428>; else goto unverified;
            <D.43428>:
            raise (5);
            <D.43421>:
            D.41529 = ip + 2;
            token = mono_read32 (D.41529);
            D.43431 = token >> 24;
            if (D.43431 == 27) goto <D.43432>; else goto <D.43429>;
            <D.43432>:
            D.32693 = method->klass;
            D.32694 = D.32693->image;
            D.43433 = BIT_FIELD_REF <*D.32694, 8, 128>;
            D.43434 = D.43433 & 8;
            if (D.43434 == 0) goto <D.43435>; else goto <D.43429>;
            <D.43435>:
            if (generic_context == 0B) goto <D.43436>; else goto <D.43429>;
            <D.43436>:
            {
              struct MonoType * type;

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

              klass = mono_class_get_full (image, token, generic_context);
              if (klass == 0B) goto <D.43438>; else goto <D.43440>;
              <D.43440>:
              D.43441 = klass->exception_type;
              if (D.43441 != 0) goto <D.43438>; else goto <D.43439>;
              <D.43438>:
              cfg->exception_ptr = klass;
              D.43442 = mini_get_debug_options ();
              D.43443 = D.43442->break_on_unverified;
              if (D.43443 != 0) goto <D.43444>; else goto load_error;
              <D.43444>:
              raise (5);
              <D.43439>:
              mono_class_init (klass);
              D.43445 = &klass->byval_arg;
              D.43446 = mono_type_size (D.43445, &ialign);
              val = (guint32) D.43446;
            }
            <D.43430>:
            D.32755 = cfg->mempool;
            ins = mono_mempool_alloc (D.32755, 56);
            ins->data.op[1].const_val = 0;
            D.32975 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.32975;
            ins->prev = 0B;
            D.32976 = ins->prev;
            ins->next = D.32976;
            ins->opcode = 362;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.32977 = ins->sreg3;
            ins->sreg2 = D.32977;
            D.32978 = ins->sreg2;
            ins->sreg1 = D.32978;
            D.32979 = cfg->ip;
            ins->cil_code = D.32979;
            val.367 = (int) val;
            ins->data.op[0].const_val = val.367;
            ins->type = 1;
            D.43448 = alloc_dreg (cfg, 1);
            D.43449 = (int) D.43448;
            ins->dreg = D.43449;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            if (D.33008 != 0B) goto <D.43450>; else goto <D.43451>;
            <D.43450>:
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            D.33008->next = ins;
            bblock.125 = cfg->cbb;
            D.33008 = bblock.125->last_ins;
            ins->prev = D.33008;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            goto <D.43452>;
            <D.43451>:
            bblock.125 = cfg->cbb;
            bblock.125 = cfg->cbb;
            bblock.125->last_ins = ins;
            D.33008 = bblock.125->last_ins;
            bblock.125->code = D.33008;
            <D.43452>:
            sp.368 = sp;
            sp = sp.368 + 4;
            *sp.368 = ins;
            ip = ip + 6;
            goto <D.30645>;
          }
        finally
          {
            ialign = {CLOBBER};
          }
      }
      <D.30709>:
      {
        struct MonoInst * src_var;
        struct MonoInst * src;

        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.43454>; else goto <D.43455>;
        <D.43454>:
        D.32693 = method->klass;
        D.34423 = D.32693->name_space;
        D.32693 = method->klass;
        D.34424 = D.32693->name;
        D.34425 = method->name;
        D.34426 = method->signature;
        D.34427 = D.34426->param_count;
        D.34428 = (int) D.34427;
        D.33632 = *ip;
        D.33633 = (int) D.33632;
        D.43456 = mono_opcode_name (D.33633);
        D.43457 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.34423, D.34424, D.34425, D.34428, D.43456, "method-to-ir.c", 11828);
        cfg->exception_message = D.43457;
        D.32836 = cfg->verbose_level;
        if (D.32836 > 1) goto <D.43458>; else goto <D.43459>;
        <D.43458>:
        D.34433 = cfg->exception_message;
        printf ("%s\n", D.34433);
        <D.43459>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.43455>:
        sp.83 = (int) sp;
        stack_start.84 = (int) stack_start;
        D.33526 = sp.83 - stack_start.84;
        if (D.33526 <= 3) goto <D.43460>; else goto <D.43461>;
        <D.43460>:
        D.32904 = cfg->gsharedvt;
        if (D.32904 != 0) goto <D.43462>; else goto <D.43463>;
        <D.43462>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.43464>; else goto <D.43465>;
        <D.43464>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.43465>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.43463>:
        D.43466 = mini_get_debug_options ();
        D.43467 = D.43466->break_on_unverified;
        if (D.43467 != 0) goto <D.43468>; else goto unverified;
        <D.43468>:
        raise (5);
        <D.43461>:
        sp = sp + 4294967292;
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        D.39187 = (unsigned int) D.33943;
        D.33862 = cfg->vreg_to_inst_len;
        if (D.39187 < D.33862) goto <D.43470>; else goto <D.43471>;
        <D.43470>:
        D.33865 = cfg->vreg_to_inst;
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        D.39190 = (unsigned int) D.33943;
        D.39191 = D.39190 * 4;
        D.39192 = D.33865 + D.39191;
        iftmp.369 = *D.39192;
        goto <D.43472>;
        <D.43471>:
        iftmp.369 = 0B;
        <D.43472>:
        src_var = iftmp.369;
        if (src_var == 0B) goto <D.43473>; else goto <D.43474>;
        <D.43473>:
        D.40537 = mono_defaults.typed_reference_class;
        D.40538 = &D.40537->byval_arg;
        D.33750 = *sp;
        D.33943 = D.33750->dreg;
        src_var = mono_compile_create_var_for_vreg (cfg, D.40538, 329, D.33943);
        <D.43474>:
        D.32755 = cfg->mempool;
        src = mono_mempool_alloc (D.32755, 56);
        src->data.op[1].const_val = 0;
        D.43475 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.43475;
        src->prev = 0B;
        D.43476 = src->prev;
        src->next = D.43476;
        src->opcode = 314;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.43477 = src->sreg3;
        src->sreg2 = D.43477;
        D.43478 = src->sreg2;
        src->sreg1 = D.43478;
        D.32979 = cfg->ip;
        src->cil_code = D.32979;
        src->data.op[0].p = src_var;
        D.43479 = src_var->flags;
        D.43480 = D.43479 | 16;
        src_var->flags = D.43480;
        src->type = 5;
        D.43481 = src_var->klass;
        src->klass = D.43481;
        D.43482 = alloc_dreg (cfg, 5);
        D.43483 = (int) D.43482;
        src->dreg = D.43483;
        cfg->has_indirection = 1;
        D.32904 = cfg->gsharedvt;
        D.33836 = D.32904 != 0;
        D.33837 = (long int) D.33836;
        D.33838 = __builtin_expect (D.33837, 0);
        if (D.33838 != 0) goto <D.43484>; else goto <D.43485>;
        <D.43484>:
        D.43486 = src_var->data.op[1].vtype;
        D.43487 = mini_is_gsharedvt_variable_type (cfg, D.43486);
        if (D.43487 != 0) goto <D.43488>; else goto <D.43489>;
        <D.43488>:
        handle_gsharedvt_ldaddr (cfg);
        <D.43489>:
        <D.43485>:
        D.43491 = mono_arch_is_soft_float ();
        if (D.43491 != 0) goto <D.43492>; else goto <D.43493>;
        <D.43492>:
        D.43494 = src_var->type;
        D.43495 = D.43494 == 2;
        D.43496 = D.43494 == 4;
        D.43497 = D.43495 | D.43496;
        D.43498 = (int) D.43497;
        iftmp.370 = (_Bool) D.43498;
        goto <D.43499>;
        <D.43493>:
        D.43500 = src_var->type;
        iftmp.370 = D.43500 == 2;
        <D.43499>:
        if (iftmp.370 != 0) goto <D.43501>; else goto <D.43502>;
        <D.43501>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.43504 = src_var->dreg;
          D.43505 = D.43504 + 1;
          D.43506 = (unsigned int) D.43505;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.43506 < D.33862) goto <D.43507>; else goto <D.43508>;
          <D.43507>:
          D.33865 = cfg->vreg_to_inst;
          D.43504 = src_var->dreg;
          D.43509 = (sizetype) D.43504;
          D.43510 = D.43509 + 1;
          D.43511 = D.43510 * 4;
          D.43512 = D.33865 + D.43511;
          iftmp.371 = *D.43512;
          goto <D.43513>;
          <D.43508>:
          iftmp.371 = 0B;
          <D.43513>:
          var1 = iftmp.371;
          D.43504 = src_var->dreg;
          D.43515 = D.43504 + 2;
          D.43516 = (unsigned int) D.43515;
          D.33862 = cfg->vreg_to_inst_len;
          if (D.43516 < D.33862) goto <D.43517>; else goto <D.43518>;
          <D.43517>:
          D.33865 = cfg->vreg_to_inst;
          D.43504 = src_var->dreg;
          D.43509 = (sizetype) D.43504;
          D.43519 = D.43509 + 2;
          D.43520 = D.43519 * 4;
          D.43521 = D.33865 + D.43520;
          iftmp.372 = *D.43521;
          goto <D.43522>;
          <D.43518>:
          iftmp.372 = 0B;
          <D.43522>:
          var2 = iftmp.372;
          D.43523 = var1 == 0B;
          D.43524 = (long int) D.43523;
          D.43525 = __builtin_expect (D.43524, 0);
          if (D.43525 != 0) goto <D.43526>; else goto <D.43527>;
          <D.43526>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11837, "var1");
          <D.43527>:
          D.43528 = var2 == 0B;
          D.43529 = (long int) D.43528;
          D.43530 = __builtin_expect (D.43529, 0);
          if (D.43530 != 0) goto <D.43531>; else goto <D.43532>;
          <D.43531>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11837, "var2");
          <D.43532>:
          D.43533 = var1->flags;
          D.43534 = D.43533 | 16;
          var1->flags = D.43534;
          D.43535 = var2->flags;
          D.43536 = D.43535 | 16;
          var2->flags = D.43536;
        }
        <D.43502>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.43537>; else goto <D.43538>;
        <D.43537>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = src;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        src->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = src;
        goto <D.43539>;
        <D.43538>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = src;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.43539>:
        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.32975 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.32975;
        ins->prev = 0B;
        D.32976 = ins->prev;
        ins->next = D.32976;
        D.40862 = mono_defaults.typehandle_class;
        D.43540 = &D.40862->byval_arg;
        D.43541 = mono_type_to_load_membase (cfg, D.43540);
        D.43542 = (short unsigned int) D.43541;
        ins->opcode = D.43542;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.32977 = ins->sreg3;
        ins->sreg2 = D.32977;
        D.32978 = ins->sreg2;
        ins->sreg1 = D.32978;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        ins->dreg = 0;
        D.43543 = src->dreg;
        ins->sreg1 = D.43543;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        D.40862 = mono_defaults.typehandle_class;
        D.43540 = &D.40862->byval_arg;
        type_to_eval_stack_type (cfg, D.43540, ins);
        D.33501 = ins->type;
        D.33502 = (<unnamed type>) D.33501;
        D.43544 = alloc_dreg (cfg, D.33502);
        D.43545 = (int) D.43544;
        ins->dreg = D.43545;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.43546>; else goto <D.43547>;
        <D.43546>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = ins;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        ins->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        goto <D.43548>;
        <D.43547>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = ins;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.43548>:
        sp.373 = sp;
        sp = sp.373 + 4;
        *sp.373 = ins;
        ip = ip + 2;
        goto <D.30645>;
      }
      <D.30714>:
      readonly = 1;
      ip = ip + 2;
      goto <D.30645>;
      <D.30715>:
      <D.30716>:
      <D.30717>:
      <D.30718>:
      <D.30719>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.43550>; else goto <D.43551>;
      <D.43550>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.43552>; else goto <D.43553>;
      <D.43552>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.43553>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.43551>:
      D.43554 = mini_get_debug_options ();
      D.43555 = D.43554->break_on_unverified;
      if (D.43555 != 0) goto <D.43556>; else goto unverified;
      <D.43556>:
      raise (5);
      <D.30720>:
      D.33780 = ip + 1;
      D.33781 = *D.33780;
      D.34111 = (int) D.33781;
      monoeg_g_log (0B, 16, "opcode 0xfe 0x%02x not handled", D.34111);
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.43557>; else goto <D.43558>;
      <D.43557>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.43559>; else goto <D.43560>;
      <D.43559>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.43560>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.43558>:
      D.43561 = mini_get_debug_options ();
      D.43562 = D.43561->break_on_unverified;
      if (D.43562 != 0) goto <D.43563>; else goto unverified;
      <D.43563>:
      raise (5);
      <D.30645>:
      goto <D.29893>;
      <D.30721>:
      <D.30722>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.43564>; else goto <D.43565>;
      <D.43564>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.43566>; else goto <D.43567>;
      <D.43566>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.43567>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.43565>:
      D.43568 = mini_get_debug_options ();
      D.43569 = D.43568->break_on_unverified;
      if (D.43569 != 0) goto <D.43570>; else goto unverified;
      <D.43570>:
      raise (5);
      <D.30723>:
      D.33632 = *ip;
      D.33633 = (int) D.33632;
      monoeg_g_log (0B, 16, "opcode 0x%02x not handled", D.33633);
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.43571>; else goto <D.43572>;
      <D.43571>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.43573>; else goto <D.43574>;
      <D.43573>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.43574>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.43572>:
      D.43575 = mini_get_debug_options ();
      D.43576 = D.43575->break_on_unverified;
      if (D.43576 != 0) goto <D.43577>; else goto unverified;
      <D.43577>:
      raise (5);
      <D.29893>:
      <D.29888>:
      if (ip < end) goto <D.30724>; else goto <D.30725>;
      <D.30725>:
      if (start_new_bblock != 1) goto <D.43578>; else goto <D.43579>;
      <D.43578>:
      D.32904 = cfg->gsharedvt;
      if (D.32904 != 0) goto <D.43580>; else goto <D.43581>;
      <D.43580>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.43582>; else goto <D.43583>;
      <D.43582>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.43583>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.43581>:
      D.43584 = mini_get_debug_options ();
      D.43585 = D.43584->break_on_unverified;
      if (D.43585 != 0) goto <D.43586>; else goto unverified;
      <D.43586>:
      raise (5);
      <D.43579>:
      bblock.76 = bblock;
      ip.81 = (int) ip;
      bblock.76 = bblock;
      D.33081 = bblock.76->cil_code;
      D.33084 = (int) D.33081;
      D.33454 = ip.81 - D.33084;
      bblock.76->cil_length = D.33454;
      bblock.76 = bblock;
      D.43587 = bblock.76->next_bb;
      if (D.43587 != 0B) goto <D.43588>; else goto <D.43589>;
      <D.43588>:
      {
        struct MonoBasicBlock * bb;

        bb = bblock;
        goto <D.30728>;
        <D.30727>:
        bb = bb->next_bb;
        <D.30728>:
        D.43590 = bb->next_bb;
        if (D.43590 != 0B) goto <D.30727>; else goto <D.30729>;
        <D.30729>:
        bb->next_bb = end_bblock;
      }
      goto <D.43591>;
      <D.43589>:
      bblock.76 = bblock;
      bblock.76->next_bb = end_bblock;
      <D.43591>:
      D.32726 = cfg->method;
      if (D.32726 == method) goto <D.43592>; else goto <D.43593>;
      <D.43592>:
      D.43594 = cfg->domainvar;
      if (D.43594 != 0B) goto <D.43595>; else goto <D.43596>;
      <D.43595>:
      {
        struct MonoInst * store;
        struct MonoInst * get_domain;

        cfg->cbb = init_localsbb;
        get_domain = mono_get_domain_intrinsic (cfg);
        if (get_domain != 0B) goto <D.43597>; else goto <D.43598>;
        <D.43597>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.43599>; else goto <D.43600>;
        <D.43599>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = get_domain;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        get_domain->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = get_domain;
        goto <D.43601>;
        <D.43600>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = get_domain;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.43601>:
        goto <D.43602>;
        <D.43598>:
        get_domain = mono_emit_jit_icall (cfg, mono_domain_get, 0B);
        <D.43602>:
        D.32755 = cfg->mempool;
        store = mono_mempool_alloc (D.32755, 56);
        store->data.op[1].const_val = 0;
        D.43603 = store->data.op[1].const_val;
        store->data.op[0].const_val = D.43603;
        store->prev = 0B;
        D.43604 = store->prev;
        store->next = D.43604;
        store->opcode = 424;
        store->flags = 0;
        store->type = 0;
        store->dreg = -1;
        store->sreg3 = -1;
        D.43605 = store->sreg3;
        store->sreg2 = D.43605;
        D.43606 = store->sreg2;
        store->sreg1 = D.43606;
        D.32979 = cfg->ip;
        store->cil_code = D.32979;
        D.33491 = cfg->varinfo;
        D.43594 = cfg->domainvar;
        D.43607 = D.43594->data.op[0].const_val;
        D.43608 = (unsigned int) D.43607;
        D.43609 = D.43608 * 4;
        D.43610 = D.33491 + D.43609;
        D.43611 = *D.43610;
        D.43612 = D.43611->data.op[1].vtype;
        D.43613 = mono_type_to_regmove (cfg, D.43612);
        D.43614 = (short unsigned int) D.43613;
        store->opcode = D.43614;
        D.33491 = cfg->varinfo;
        D.43594 = cfg->domainvar;
        D.43607 = D.43594->data.op[0].const_val;
        D.43608 = (unsigned int) D.43607;
        D.43609 = D.43608 * 4;
        D.43610 = D.33491 + D.43609;
        D.43611 = *D.43610;
        D.43615 = D.43611->klass;
        store->klass = D.43615;
        D.43616 = get_domain->dreg;
        store->sreg1 = D.43616;
        D.33491 = cfg->varinfo;
        D.43594 = cfg->domainvar;
        D.43607 = D.43594->data.op[0].const_val;
        D.43608 = (unsigned int) D.43607;
        D.43609 = D.43608 * 4;
        D.43610 = D.33491 + D.43609;
        D.43611 = *D.43610;
        D.43617 = D.43611->dreg;
        store->dreg = D.43617;
        D.43618 = store->opcode;
        if (D.43618 == 427) goto <D.43619>; else goto <D.43620>;
        <D.43619>:
        D.33491 = cfg->varinfo;
        D.43594 = cfg->domainvar;
        D.43607 = D.43594->data.op[0].const_val;
        D.43608 = (unsigned int) D.43607;
        D.43609 = D.43608 * 4;
        D.43610 = D.33491 + D.43609;
        D.43611 = *D.43610;
        D.43612 = D.43611->data.op[1].vtype;
        D.43621 = mono_class_from_mono_type (D.43612);
        store->klass = D.43621;
        <D.43620>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        if (D.33008 != 0B) goto <D.43622>; else goto <D.43623>;
        <D.43622>:
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        D.33008->next = store;
        bblock.125 = cfg->cbb;
        D.33008 = bblock.125->last_ins;
        store->prev = D.33008;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = store;
        goto <D.43624>;
        <D.43623>:
        bblock.125 = cfg->cbb;
        bblock.125 = cfg->cbb;
        bblock.125->last_ins = store;
        D.33008 = bblock.125->last_ins;
        bblock.125->code = D.33008;
        <D.43624>:
      }
      <D.43596>:
      <D.43593>:
      D.32726 = cfg->method;
      if (D.32726 == method) goto <D.43625>; else goto <D.43626>;
      <D.43625>:
      D.43627 = cfg->got_var;
      if (D.43627 != 0B) goto <D.43628>; else goto <D.43629>;
      <D.43628>:
      mono_emit_load_got_addr (cfg);
      <D.43629>:
      <D.43626>:
      if (init_locals != 0) goto <D.43630>; else goto <D.43631>;
      <D.43630>:
      cfg->cbb = init_localsbb;
      cfg->ip = 0B;
      i = 0;
      goto <D.30733>;
      <D.30732>:
      D.43632 = header->locals[i];
      emit_init_local (cfg, i, D.43632);
      i = i + 1;
      <D.30733>:
      D.33345 = header->num_locals;
      D.33346 = (int) D.33345;
      if (D.33346 > i) goto <D.30732>; else goto <D.30734>;
      <D.30734>:
      <D.43631>:
      D.35961 = BIT_FIELD_REF <*cfg, 8, 3416>;
      D.43633 = D.35961 & 32;
      if (D.43633 != 0) goto <D.43634>; else goto <D.43635>;
      <D.43634>:
      D.32726 = cfg->method;
      if (D.32726 == method) goto <D.43636>; else goto <D.43637>;
      <D.43636>:
      i = 0;
      goto <D.30738>;
      <D.30737>:
      {
        struct MonoInst * ins;

        D.33491 = cfg->varinfo;
        i.74 = (unsigned int) i;
        D.33487 = i.74 * 4;
        D.43638 = D.33491 + D.33487;
        ins = *D.43638;
        D.43639 = BIT_FIELD_REF <*ins, 32, 0>;
        D.43640 = D.43639 & 16777215;
        if (D.43640 == 393545) goto <D.43641>; else goto <D.43642>;
        <D.43641>:
        {
          struct MonoInst * inst;

          D.32755 = cfg->mempool;
          inst = mono_mempool_alloc (D.32755, 56);
          inst->data.op[1].const_val = 0;
          D.43643 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.43643;
          inst->prev = 0B;
          D.43644 = inst->prev;
          inst->next = D.43644;
          inst->opcode = 362;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.43645 = inst->sreg3;
          inst->sreg2 = D.43645;
          D.43646 = inst->sreg2;
          inst->sreg1 = D.43646;
          D.32979 = cfg->ip;
          inst->cil_code = D.32979;
          D.43647 = ins->dreg;
          inst->dreg = D.43647;
          inst->data.op[0].p = 0B;
          inst->type = 3;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          if (D.33008 != 0B) goto <D.43648>; else goto <D.43649>;
          <D.43648>:
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          D.33008->next = inst;
          bblock.125 = cfg->cbb;
          D.33008 = bblock.125->last_ins;
          inst->prev = D.33008;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          goto <D.43650>;
          <D.43649>:
          bblock.125 = cfg->cbb;
          bblock.125 = cfg->cbb;
          bblock.125->last_ins = inst;
          D.33008 = bblock.125->last_ins;
          bblock.125->code = D.33008;
          <D.43650>:
        }
        <D.43642>:
      }
      i = i + 1;
      <D.30738>:
      i.115 = (unsigned int) i;
      D.43651 = cfg->num_varinfo;
      if (i.115 < D.43651) goto <D.30737>; else goto <D.30739>;
      <D.30739>:
      <D.43637>:
      <D.43635>:
      D.36280 = cfg->lmf_var;
      if (D.36280 != 0B) goto <D.43652>; else goto <D.43653>;
      <D.43652>:
      D.32726 = cfg->method;
      if (D.32726 == method) goto <D.43654>; else goto <D.43655>;
      <D.43654>:
      cfg->cbb = init_localsbb;
      emit_push_lmf (cfg);
      <D.43655>:
      <D.43653>:
      if (seq_points != 0) goto <D.43656>; else goto <D.43657>;
      <D.43656>:
      {
        struct MonoBasicBlock * bb;

        bb = cfg->bb_entry;
        goto <D.30742>;
        <D.30741>:
        D.43658 = bb->code;
        if (D.43658 != 0B) goto <D.43659>; else goto <D.43660>;
        <D.43659>:
        D.43661 = bb->in_count;
        if (D.43661 > 1) goto <D.43662>; else goto <D.43663>;
        <D.43662>:
        D.43658 = bb->code;
        D.43664 = D.43658->opcode;
        if (D.43664 == 341) goto <D.43665>; else goto <D.43666>;
        <D.43665>:
        D.43658 = bb->code;
        D.43658 = bb->code;
        D.43667 = D.43658->flags;
        D.43668 = D.43667 | 1;
        D.43658->flags = D.43668;
        <D.43666>:
        <D.43663>:
        <D.43660>:
        bb = bb->next_bb;
        <D.30742>:
        if (bb != 0B) goto <D.30741>; else goto <D.30743>;
        <D.30743>:
      }
      <D.43657>:
      if (seq_points != 0) goto <D.43669>; else goto <D.43670>;
      <D.43669>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 341;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      ins->data.op[1].const_val = -1;
      ins->flags = 0;
      D.43671 = init_localsbb->last_ins;
      if (D.43671 != 0B) goto <D.43672>; else goto <D.43673>;
      <D.43672>:
      D.43671 = init_localsbb->last_ins;
      D.43671->next = ins;
      D.43671 = init_localsbb->last_ins;
      ins->prev = D.43671;
      init_localsbb->last_ins = ins;
      goto <D.43674>;
      <D.43673>:
      init_localsbb->last_ins = ins;
      D.43671 = init_localsbb->last_ins;
      init_localsbb->code = D.43671;
      <D.43674>:
      D.32755 = cfg->mempool;
      ins = mono_mempool_alloc (D.32755, 56);
      ins->data.op[1].const_val = 0;
      D.32975 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.32975;
      ins->prev = 0B;
      D.32976 = ins->prev;
      ins->next = D.32976;
      ins->opcode = 341;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.32977 = ins->sreg3;
      ins->sreg2 = D.32977;
      D.32978 = ins->sreg2;
      ins->sreg1 = D.32978;
      D.32979 = cfg->ip;
      ins->cil_code = D.32979;
      ins->data.op[1].const_val = 16777215;
      ins->flags = 0;
      D.43675 = cfg->bb_exit;
      D.43676 = D.43675->last_ins;
      if (D.43676 != 0B) goto <D.43677>; else goto <D.43678>;
      <D.43677>:
      D.43675 = cfg->bb_exit;
      D.43676 = D.43675->last_ins;
      D.43676->next = ins;
      D.43675 = cfg->bb_exit;
      D.43676 = D.43675->last_ins;
      ins->prev = D.43676;
      D.43675 = cfg->bb_exit;
      D.43675->last_ins = ins;
      goto <D.43679>;
      <D.43678>:
      D.43675 = cfg->bb_exit;
      D.43675 = cfg->bb_exit;
      D.43675->last_ins = ins;
      D.43676 = D.43675->last_ins;
      D.43675->code = D.43676;
      <D.43679>:
      <D.43670>:
      if (sym_seq_points != 0) goto <D.43680>; else goto <D.43681>;
      <D.43680>:
      i = 0;
      goto <D.30746>;
      <D.30745>:
      i.74 = (unsigned int) i;
      D.43682 = i.74 / 32;
      D.43683 = seq_point_locs->data[D.43682];
      D.43684 = i & 31;
      D.43685 = 1 << D.43684;
      D.43686 = D.43683 & D.43685;
      if (D.43686 != 0) goto <D.43687>; else goto <D.43688>;
      <D.43687>:
      i.74 = (unsigned int) i;
      D.43682 = i.74 / 32;
      D.43689 = seq_point_set_locs->data[D.43682];
      D.43684 = i & 31;
      D.43685 = 1 << D.43684;
      D.43690 = D.43689 & D.43685;
      if (D.43690 == 0) goto <D.43691>; else goto <D.43692>;
      <D.43691>:
      {
        struct MonoInst * ins;

        D.32755 = cfg->mempool;
        ins = mono_mempool_alloc (D.32755, 56);
        ins->data.op[1].const_val = 0;
        D.43693 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.43693;
        ins->prev = 0B;
        D.43694 = ins->prev;
        ins->next = D.43694;
        ins->opcode = 341;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.43695 = ins->sreg3;
        ins->sreg2 = D.43695;
        D.43696 = ins->sreg2;
        ins->sreg1 = D.43696;
        D.32979 = cfg->ip;
        ins->cil_code = D.32979;
        ins->data.op[1].const_val = i;
        ins->flags = 0;
        mono_add_seq_point (cfg, 0B, ins, -1);
      }
      <D.43692>:
      <D.43688>:
      i = i + 1;
      <D.30746>:
      i.374 = (unsigned int) i;
      D.32734 = header->code_size;
      if (i.374 < D.32734) goto <D.30745>; else goto <D.30747>;
      <D.30747>:
      <D.43681>:
      cfg->ip = 0B;
      D.32726 = cfg->method;
      if (D.32726 == method) goto <D.43698>; else goto <D.43699>;
      <D.43698>:
      {
        struct MonoBasicBlock * bb;

        bb = cfg->bb_entry;
        goto <D.30750>;
        <D.30749>:
        D.43700 = bb->real_offset;
        D.43701 = (int) D.43700;
        D.43702 = mono_find_block_region (cfg, D.43701);
        D.43703 = (unsigned int) D.43702;
        bb->region = D.43703;
        D.43704 = cfg->spvars;
        if (D.43704 != 0B) goto <D.43705>; else goto <D.43706>;
        <D.43705>:
        D.43707 = bb->region;
        D.43708 = (int) D.43707;
        mono_create_spvar_for_region (cfg, D.43708);
        <D.43706>:
        D.32836 = cfg->verbose_level;
        if (D.32836 > 2) goto <D.43709>; else goto <D.43710>;
        <D.43709>:
        D.43711 = bb->block_num;
        D.43700 = bb->real_offset;
        D.43707 = bb->region;
        printf ("REGION BB%d IL_%04x ID_%08X\n", D.43711, D.43700, D.43707);
        <D.43710>:
        bb = bb->next_bb;
        <D.30750>:
        if (bb != 0B) goto <D.30749>; else goto <D.30751>;
        <D.30751>:
      }
      <D.43699>:
      monoeg_g_slist_free (class_inits);
      dont_inline = monoeg_g_list_remove (dont_inline, method);
      if (inline_costs < 0) goto <D.43712>; else goto <D.43713>;
      <D.43712>:
      {
        char * mname;

        mname = mono_method_full_name (method, 1);
        mono_cfg_set_exception (cfg, 3);
        D.43714 = monoeg_g_strdup_printf ("Method %s is too complex.", mname);
        cfg->exception_message = D.43714;
        monoeg_g_free (mname);
        D.32755 = cfg->mempool;
        D.43715 = cfg->headers_to_free;
        D.43716 = g_slist_prepend_mempool (D.32755, D.43715, header);
        cfg->headers_to_free = D.43716;
        mono_basic_block_free (original_bb);
        D.43717 = -1;
        return D.43717;
      }
      <D.43713>:
      D.32836 = cfg->verbose_level;
      if (D.32836 > 2) goto <D.43718>; else goto <D.43719>;
      <D.43718>:
      D.32726 = cfg->method;
      if (D.32726 == method) goto <D.43720>; else goto <D.43721>;
      <D.43720>:
      mono_print_code (cfg, "AFTER METHOD-TO-IR");
      <D.43721>:
      <D.43719>:
      D.32755 = cfg->mempool;
      D.43715 = cfg->headers_to_free;
      D.43722 = g_slist_prepend_mempool (D.32755, D.43715, header);
      cfg->headers_to_free = D.43722;
      mono_basic_block_free (original_bb);
      D.43717 = inline_costs;
      return D.43717;
      exception_exit:
      D.33309 = cfg->exception_type;
      D.43723 = D.33309 == 0;
      D.43724 = (long int) D.43723;
      D.43725 = __builtin_expect (D.43724, 0);
      if (D.43725 != 0) goto <D.43726>; else goto <D.43727>;
      <D.43726>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12004, "cfg->exception_type != MONO_EXCEPTION_NONE");
      <D.43727>:
      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.32755 = cfg->mempool;
      D.43715 = cfg->headers_to_free;
      D.43728 = g_slist_prepend_mempool (D.32755, D.43715, header);
      cfg->headers_to_free = D.43728;
      D.43717 = -1;
      return D.43717;
    }
  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.43791;
  struct MonoImage * D.43792;
  _Bool D.43793;
  long int D.43794;
  long int D.43795;
  unsigned char D.43798;
  gboolean D.43801;
  unsigned char D.43802;
  struct MonoClass * klass.375;
  struct MonoImage * D.43806;
  struct MonoClass * klass.376;
  struct MonoMethod * D.43814;
  struct MonoClass * D.43816;
  unsigned int D.43817;
  short unsigned int D.43818;
  _Bool D.43819;
  long int D.43820;
  long int D.43821;
  short unsigned int D.43826;
  struct MonoType * D.43828;
  unsigned char D.43829;
  struct MonoType * D.43831;
  unsigned char D.43832;
  char D.43833;
  int D.43834;
  unsigned char D.43835;
  struct MonoAssembly * ass;
  struct MonoCustomAttrInfo * attrs;
  static struct MonoClass * klass;
  int i;
  gboolean val;

  D.43791 = m->klass;
  D.43792 = D.43791->image;
  ass = D.43792->assembly;
  val = 0;
  D.43793 = ass == 0B;
  D.43794 = (long int) D.43793;
  D.43795 = __builtin_expect (D.43794, 0);
  if (D.43795 != 0) goto <D.43796>; else goto <D.43797>;
  <D.43796>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6422, "ass");
  <D.43797>:
  D.43798 = ass->jit_optimizer_disabled_inited;
  if (D.43798 != 0) goto <D.43799>; else goto <D.43800>;
  <D.43799>:
  D.43802 = ass->jit_optimizer_disabled;
  D.43801 = (gboolean) D.43802;
  return D.43801;
  <D.43800>:
  klass.375 = klass;
  if (klass.375 == 0B) goto <D.43804>; else goto <D.43805>;
  <D.43804>:
  D.43806 = mono_defaults.corlib;
  klass.376 = mono_class_from_name (D.43806, "System.Diagnostics", "DebuggableAttribute");
  klass = klass.376;
  <D.43805>:
  klass.375 = klass;
  if (klass.375 == 0B) goto <D.43808>; else goto <D.43809>;
  <D.43808>:
  ass->jit_optimizer_disabled = 0;
  mono_memory_barrier ();
  ass->jit_optimizer_disabled_inited = 1;
  D.43801 = 0;
  return D.43801;
  <D.43809>:
  attrs = mono_custom_attrs_from_assembly (ass);
  if (attrs != 0B) goto <D.43810>; else goto <D.43811>;
  <D.43810>:
  i = 0;
  goto <D.29706>;
  <D.29705>:
  {
    struct MonoCustomAttrEntry * attr;
    const gchar * p;
    int len;
    struct MonoMethodSignature * sig;

    attr = &attrs->attrs[i];
    D.43814 = attr->ctor;
    if (D.43814 == 0B) goto <D.43812>; else goto <D.43815>;
    <D.43815>:
    D.43814 = attr->ctor;
    D.43816 = D.43814->klass;
    klass.375 = klass;
    if (D.43816 != klass.375) goto <D.43812>; else goto <D.43813>;
    <D.43812>:
    // predicted unlikely by continue predictor.
    goto <D.29704>;
    <D.43813>:
    D.43817 = attr->data_size;
    len = (int) D.43817;
    p = attr->data;
    D.43818 = mono_read16 (p);
    D.43819 = D.43818 != 1;
    D.43820 = (long int) D.43819;
    D.43821 = __builtin_expect (D.43820, 0);
    if (D.43821 != 0) goto <D.43822>; else goto <D.43823>;
    <D.43822>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6449, "read16 (p) == 0x0001");
    <D.43823>:
    p = p + 2;
    D.43814 = attr->ctor;
    sig = mono_method_signature (D.43814);
    D.43826 = sig->param_count;
    if (D.43826 != 2) goto <D.43824>; else goto <D.43827>;
    <D.43827>:
    D.43828 = sig->params[0];
    D.43829 = D.43828->type;
    if (D.43829 != 2) goto <D.43824>; else goto <D.43830>;
    <D.43830>:
    D.43831 = sig->params[1];
    D.43832 = D.43831->type;
    if (D.43832 != 2) goto <D.43824>; else goto <D.43825>;
    <D.43824>:
    // predicted unlikely by continue predictor.
    goto <D.29704>;
    <D.43825>:
    p = p + 1;
    D.43833 = *p;
    val = (gboolean) D.43833;
  }
  <D.29704>:
  i = i + 1;
  <D.29706>:
  D.43834 = attrs->num_attrs;
  if (D.43834 > i) goto <D.29705>; else goto <D.29707>;
  <D.29707>:
  mono_custom_attrs_free (attrs);
  <D.43811>:
  D.43835 = (unsigned char) val;
  ass->jit_optimizer_disabled = D.43835;
  mono_memory_barrier ();
  ass->jit_optimizer_disabled_inited = 1;
  D.43801 = val;
  return D.43801;
}


mono_memory_barrier ()
{
  __sync_synchronize ();
}


mono_create_exvar_for_offset (struct MonoCompile * cfg, int offset)
{
  struct GHashTable * D.43837;
  const void * offset.377;
  struct MonoInst * D.43841;
  struct MonoClass * D.43842;
  struct MonoType * D.43843;
  unsigned char D.43844;
  unsigned char D.43845;
  void * offset.378;
  struct MonoInst * var;

  D.43837 = cfg->exvars;
  offset.377 = (const void *) offset;
  var = monoeg_g_hash_table_lookup (D.43837, offset.377);
  if (var != 0B) goto <D.43839>; else goto <D.43840>;
  <D.43839>:
  D.43841 = var;
  return D.43841;
  <D.43840>:
  D.43842 = mono_defaults.object_class;
  D.43843 = &D.43842->byval_arg;
  var = mono_compile_create_var (cfg, D.43843, 329);
  D.43844 = var->flags;
  D.43845 = D.43844 | 4;
  var->flags = D.43845;
  D.43837 = cfg->exvars;
  offset.378 = (void *) offset;
  monoeg_g_hash_table_insert_replace (D.43837, offset.378, var, 0);
  D.43841 = var;
  return D.43841;
}


mono_save_args (struct MonoCompile * cfg, struct MonoMethodSignature * sig, struct MonoInst * * sp)
{
  struct MonoType * iftmp.379;
  unsigned char D.43851;
  unsigned char D.43852;
  struct MonoInst * D.43855;
  <unnamed-unsigned:1> D.43856;
  int D.43857;
  int D.43858;
  struct MonoInst * * D.43859;
  unsigned int i.380;
  unsigned int D.43861;
  struct MonoInst * * D.43862;
  struct MonoMemPool * D.43863;
  int D.43864;
  struct MonoInst * D.43865;
  int D.43866;
  int D.43867;
  const unsigned char * D.43868;
  struct MonoType * * D.43869;
  struct MonoType * * D.43870;
  struct MonoType * D.43871;
  unsigned int D.43872;
  short unsigned int D.43873;
  struct MonoInst * D.43874;
  struct MonoClass * D.43875;
  int D.43876;
  int D.43877;
  short unsigned int D.43878;
  struct MonoClass * D.43881;
  struct MonoBasicBlock * D.43882;
  struct MonoInst * D.43883;
  const unsigned char * D.43887;
  short unsigned int D.43888;
  int D.43889;
  int D.43890;
  struct MonoInst * store;
  struct MonoInst * temp;
  int i;

  i = 0;
  goto <D.29388>;
  <D.29387>:
  {
    struct MonoType * argtype;

    D.43851 = BIT_FIELD_REF <*sig, 8, 80>;
    D.43852 = D.43851 & 64;
    if (D.43852 != 0) goto <D.43853>; else goto <D.43849>;
    <D.43853>:
    if (i == 0) goto <D.43854>; else goto <D.43849>;
    <D.43854>:
    D.43855 = *sp;
    iftmp.379 = type_from_stack_type (D.43855);
    goto <D.43850>;
    <D.43849>:
    D.43856 = sig->hasthis;
    D.43857 = (int) D.43856;
    D.43858 = i - D.43857;
    iftmp.379 = sig->params[D.43858];
    <D.43850>:
    argtype = iftmp.379;
    temp = mono_compile_create_var (cfg, argtype, 329);
    D.43859 = cfg->args;
    i.380 = (unsigned int) i;
    D.43861 = i.380 * 4;
    D.43862 = D.43859 + D.43861;
    *D.43862 = temp;
    D.43863 = cfg->mempool;
    store = mono_mempool_alloc (D.43863, 56);
    store->data.op[1].const_val = 0;
    D.43864 = store->data.op[1].const_val;
    store->data.op[0].const_val = D.43864;
    store->prev = 0B;
    D.43865 = store->prev;
    store->next = D.43865;
    store->opcode = 424;
    store->flags = 0;
    store->type = 0;
    store->dreg = -1;
    store->sreg3 = -1;
    D.43866 = store->sreg3;
    store->sreg2 = D.43866;
    D.43867 = store->sreg2;
    store->sreg1 = D.43867;
    D.43868 = cfg->ip;
    store->cil_code = D.43868;
    D.43869 = cfg->arg_types;
    i.380 = (unsigned int) i;
    D.43861 = i.380 * 4;
    D.43870 = D.43869 + D.43861;
    D.43871 = *D.43870;
    D.43872 = mono_type_to_regmove (cfg, D.43871);
    D.43873 = (short unsigned int) D.43872;
    store->opcode = D.43873;
    D.43859 = cfg->args;
    i.380 = (unsigned int) i;
    D.43861 = i.380 * 4;
    D.43862 = D.43859 + D.43861;
    D.43874 = *D.43862;
    D.43875 = D.43874->klass;
    store->klass = D.43875;
    D.43855 = *sp;
    D.43876 = D.43855->dreg;
    store->sreg1 = D.43876;
    D.43859 = cfg->args;
    i.380 = (unsigned int) i;
    D.43861 = i.380 * 4;
    D.43862 = D.43859 + D.43861;
    D.43874 = *D.43862;
    D.43877 = D.43874->dreg;
    store->dreg = D.43877;
    D.43878 = store->opcode;
    if (D.43878 == 427) goto <D.43879>; else goto <D.43880>;
    <D.43879>:
    D.43869 = cfg->arg_types;
    i.380 = (unsigned int) i;
    D.43861 = i.380 * 4;
    D.43870 = D.43869 + D.43861;
    D.43871 = *D.43870;
    D.43881 = mono_class_from_mono_type (D.43871);
    store->klass = D.43881;
    <D.43880>:
    D.43882 = cfg->cbb;
    D.43883 = D.43882->last_ins;
    if (D.43883 != 0B) goto <D.43884>; else goto <D.43885>;
    <D.43884>:
    D.43882 = cfg->cbb;
    D.43883 = D.43882->last_ins;
    D.43883->next = store;
    D.43882 = cfg->cbb;
    D.43883 = D.43882->last_ins;
    store->prev = D.43883;
    D.43882 = cfg->cbb;
    D.43882->last_ins = store;
    goto <D.43886>;
    <D.43885>:
    D.43882 = cfg->cbb;
    D.43882 = cfg->cbb;
    D.43882->last_ins = store;
    D.43883 = D.43882->last_ins;
    D.43882->code = D.43883;
    <D.43886>:
    D.43855 = *sp;
    D.43887 = D.43855->cil_code;
    store->cil_code = D.43887;
    sp = sp + 4;
  }
  i = i + 1;
  <D.29388>:
  D.43888 = sig->param_count;
  D.43889 = (int) D.43888;
  D.43856 = sig->hasthis;
  D.43857 = (int) D.43856;
  D.43890 = D.43889 + D.43857;
  if (D.43890 > i) goto <D.29387>; else goto <D.29389>;
  <D.29389>:
}


emit_get_rgctx_gsharedvt_method (struct MonoCompile * cfg, int context_used, struct MonoMethod * cmethod, struct MonoGSharedVtMethodInfo * info)
{
  struct MonoMemPool * D.43891;
  struct MonoMethod * D.43892;
  int D.43893;
  struct MonoInst * D.43894;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.43891 = cfg->mempool;
  D.43892 = cfg->current_method;
  D.43893 = context_used & 2;
  entry = mono_patch_info_rgctx_entry_new (D.43891, D.43892, D.43893, 46, info, 20);
  D.43892 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.43892, context_used);
  D.43894 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.43894;
}


emit_throw_exception (struct MonoCompile * cfg, struct MonoException * ex)
{
  struct MonoMemPool * D.43896;
  void * D.43897;
  struct MonoInst * D.43898;
  int D.43899;
  struct MonoInst * D.43900;
  int D.43901;
  int D.43902;
  const unsigned char * D.43903;
  unsigned int D.43904;
  int D.43905;
  struct MonoBasicBlock * D.43906;
  struct MonoInst * D.43907;
  struct MonoMethod * thrower;
  struct MonoInst * args[1];

  try
    {
      thrower = throw_exception ();
      D.43896 = cfg->mempool;
      D.43897 = mono_mempool_alloc (D.43896, 56);
      args[0] = D.43897;
      D.43898 = args[0];
      D.43898 = args[0];
      D.43898->data.op[1].const_val = 0;
      D.43899 = D.43898->data.op[1].const_val;
      D.43898->data.op[0].const_val = D.43899;
      D.43898 = args[0];
      D.43898 = args[0];
      D.43898->prev = 0B;
      D.43900 = D.43898->prev;
      D.43898->next = D.43900;
      D.43898 = args[0];
      D.43898->opcode = 362;
      D.43898 = args[0];
      D.43898->flags = 0;
      D.43898 = args[0];
      D.43898->type = 0;
      D.43898 = args[0];
      D.43898->dreg = -1;
      D.43898 = args[0];
      D.43898 = args[0];
      D.43898 = args[0];
      D.43898->sreg3 = -1;
      D.43901 = D.43898->sreg3;
      D.43898->sreg2 = D.43901;
      D.43902 = D.43898->sreg2;
      D.43898->sreg1 = D.43902;
      D.43898 = args[0];
      D.43903 = cfg->ip;
      D.43898->cil_code = D.43903;
      D.43898 = args[0];
      D.43898->data.op[0].p = ex;
      D.43898 = args[0];
      D.43898->type = 3;
      D.43898 = args[0];
      D.43904 = alloc_dreg (cfg, 3);
      D.43905 = (int) D.43904;
      D.43898->dreg = D.43905;
      D.43906 = cfg->cbb;
      D.43907 = D.43906->last_ins;
      if (D.43907 != 0B) goto <D.43908>; else goto <D.43909>;
      <D.43908>:
      D.43906 = cfg->cbb;
      D.43907 = D.43906->last_ins;
      D.43898 = args[0];
      D.43907->next = D.43898;
      D.43898 = args[0];
      D.43906 = cfg->cbb;
      D.43907 = D.43906->last_ins;
      D.43898->prev = D.43907;
      D.43906 = cfg->cbb;
      D.43898 = args[0];
      D.43906->last_ins = D.43898;
      goto <D.43910>;
      <D.43909>:
      D.43906 = cfg->cbb;
      D.43906 = cfg->cbb;
      D.43898 = args[0];
      D.43906->last_ins = D.43898;
      D.43907 = D.43906->last_ins;
      D.43906->code = D.43907;
      <D.43910>:
      mono_emit_method_call (cfg, thrower, &args, 0B);
    }
  finally
    {
      args = {CLOBBER};
    }
}


throw_exception ()
{
  struct MonoMethod * method.381;
  struct MonoClass * D.43914;
  struct MonoMethod * method.382;
  _Bool D.43916;
  long int D.43917;
  long int D.43918;
  struct MonoMethod * D.43921;
  static struct MonoMethod * method = 0B;

  method.381 = method;
  if (method.381 == 0B) goto <D.43912>; else goto <D.43913>;
  <D.43912>:
  {
    struct MonoSecurityManager * secman;

    secman = mono_security_manager_get_methods ();
    D.43914 = secman->securitymanager;
    method.382 = mono_class_get_method_from_name (D.43914, "ThrowException", 1);
    method = method.382;
  }
  <D.43913>:
  method.381 = method;
  D.43916 = method.381 == 0B;
  D.43917 = (long int) D.43916;
  D.43918 = __builtin_expect (D.43917, 0);
  if (D.43918 != 0) goto <D.43919>; else goto <D.43920>;
  <D.43919>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6187, "method");
  <D.43920>:
  D.43921 = method;
  return D.43921;
}


get_basic_blocks (struct MonoCompile * cfg, struct MonoMethodHeader * header, guint real_offset, unsigned char * start, unsigned char * end, unsigned char * * pos)
{
  unsigned char * ip.383;
  int ip.384;
  int start.385;
  int D.43926;
  <unnamed type> D.43927;
  int D.43930;
  unsigned int D.43933;
  struct MonoDebugOptions * D.43936;
  int D.43937;
  unsigned char D.43939;
  int D.43940;
  unsigned char * ip.386;
  unsigned char * ip.387;
  unsigned char * ip.388;
  unsigned char * ip.389;
  unsigned char D.43945;
  signed char D.43946;
  sizetype D.43947;
  sizetype D.43948;
  sizetype D.43949;
  struct MonoBasicBlock * * D.43950;
  int target.390;
  unsigned char * D.43952;
  int D.43953;
  int D.43954;
  unsigned int D.43955;
  unsigned int D.43956;
  struct MonoBasicBlock * * D.43957;
  const unsigned char * D.43963;
  struct MonoDebugOptions * D.43968;
  int D.43969;
  struct MonoMemPool * D.43971;
  unsigned int D.43972;
  unsigned int D.43973;
  unsigned int D.43974;
  int D.43975;
  unsigned char * D.43976;
  int D.43979;
  int D.43980;
  unsigned int D.43981;
  unsigned int D.43982;
  struct MonoBasicBlock * * D.43983;
  unsigned int D.43984;
  int D.43987;
  unsigned int D.43988;
  unsigned int D.43989;
  struct MonoBasicBlock * * D.43990;
  struct MonoDebugOptions * D.44000;
  int D.44001;
  unsigned int D.44003;
  unsigned int D.44004;
  int D.44005;
  const unsigned char * D.44008;
  unsigned int D.44009;
  sizetype D.44010;
  sizetype D.44011;
  struct MonoDebugOptions * D.44021;
  int D.44022;
  unsigned int D.44024;
  unsigned int D.44025;
  int D.44026;
  struct MonoDebugOptions * D.44040;
  int D.44041;
  unsigned int D.44043;
  unsigned int D.44044;
  int D.44045;
  unsigned int D.44048;
  unsigned int D.44049;
  struct MonoDebugOptions * D.44059;
  int D.44060;
  unsigned int D.44062;
  unsigned int D.44063;
  int D.44064;
  unsigned int D.44067;
  sizetype D.44068;
  struct MonoDebugOptions * D.44078;
  int D.44079;
  unsigned int D.44081;
  unsigned int D.44082;
  int D.44083;
  unsigned char * ip.391;
  unsigned char * ip.392;
  int bb_start.393;
  int D.44091;
  unsigned int D.44092;
  unsigned int D.44093;
  struct MonoBasicBlock * * D.44094;
  _Bool D.44095;
  _Bool D.44096;
  _Bool D.44097;
  int D.44100;
  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.29536>;
      <D.29535>:
      ip.383 = ip;
      ip.384 = (int) ip.383;
      start.385 = (int) start;
      D.43926 = ip.384 - start.385;
      cli_addr = (guint) D.43926;
      D.43927 = mono_opcode_value (&ip, end);
      i = (int) D.43927;
      if (i < 0) goto <D.43928>; else goto <D.43929>;
      <D.43928>:
      D.43930 = cfg->gsharedvt;
      if (D.43930 != 0) goto <D.43931>; else goto <D.43932>;
      <D.43931>:
      D.43933 = cfg->verbose_level;
      if (D.43933 > 2) goto <D.43934>; else goto <D.43935>;
      <D.43934>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.43935>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.43932>:
      D.43936 = mini_get_debug_options ();
      D.43937 = D.43936->break_on_unverified;
      if (D.43937 != 0) goto <D.43938>; else goto unverified;
      <D.43938>:
      raise (5);
      <D.43929>:
      opcode = &mono_opcodes[i];
      D.43939 = opcode->argument;
      D.43940 = (int) D.43939;
      switch (D.43940) <default: <D.29530>, case 0: <D.29507>, case 1: <D.29510>, case 2: <D.29511>, case 3: <D.29512>, case 4: <D.29513>, case 5: <D.29509>, case 6: <D.29514>, case 7: <D.29517>, case 8: <D.29518>, case 9: <D.29521>, case 10: <D.29520>, case 11: <D.29522>, case 12: <D.29528>, case 13: <D.29515>, case 14: <D.29516>, case 15: <D.29519>, case 16: <D.29529>>
      <D.29507>:
      ip.383 = ip;
      ip.386 = ip.383 + 1;
      ip = ip.386;
      goto <D.29508>;
      <D.29509>:
      <D.29510>:
      <D.29511>:
      <D.29512>:
      <D.29513>:
      <D.29514>:
      <D.29515>:
      <D.29516>:
      ip.383 = ip;
      ip.387 = ip.383 + 5;
      ip = ip.387;
      goto <D.29508>;
      <D.29517>:
      ip.383 = ip;
      ip.388 = ip.383 + 3;
      ip = ip.388;
      goto <D.29508>;
      <D.29518>:
      <D.29519>:
      ip.383 = ip;
      ip.389 = ip.383 + 2;
      ip = ip.389;
      goto <D.29508>;
      <D.29520>:
      ip.383 = ip;
      ip.386 = ip.383 + 1;
      D.43945 = *ip.386;
      D.43946 = (signed char) D.43945;
      D.43947 = (sizetype) D.43946;
      D.43948 = D.43947 + cli_addr;
      D.43949 = D.43948 + 2;
      target = start + D.43949;
      D.43950 = cfg->cil_offset_to_bb;
      target.390 = (int) target;
      D.43952 = cfg->cil_start;
      D.43953 = (int) D.43952;
      D.43954 = target.390 - D.43953;
      D.43955 = (unsigned int) D.43954;
      D.43956 = D.43955 * 4;
      D.43957 = D.43950 + D.43956;
      bblock = *D.43957;
      if (bblock == 0B) goto <D.43958>; else goto <D.43959>;
      <D.43958>:
      if (target >= end) goto <D.43960>; else goto <D.43962>;
      <D.43962>:
      D.43963 = header->code;
      if (D.43963 > target) goto <D.43960>; else goto <D.43961>;
      <D.43960>:
      D.43930 = cfg->gsharedvt;
      if (D.43930 != 0) goto <D.43964>; else goto <D.43965>;
      <D.43964>:
      D.43933 = cfg->verbose_level;
      if (D.43933 > 2) goto <D.43966>; else goto <D.43967>;
      <D.43966>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.43967>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.43965>:
      D.43968 = mini_get_debug_options ();
      D.43969 = D.43968->break_on_unverified;
      if (D.43969 != 0) goto <D.43970>; else goto unverified;
      <D.43970>:
      raise (5);
      <D.43961>:
      D.43971 = cfg->mempool;
      bblock = mono_mempool_alloc0 (D.43971, 172);
      D.43972 = cfg->num_bblocks;
      D.43973 = D.43972;
      D.43974 = D.43973 + 1;
      cfg->num_bblocks = D.43974;
      D.43975 = (int) D.43973;
      bblock->block_num = D.43975;
      bblock->cil_code = target;
      D.43976 = bblock->cil_code;
      if (D.43976 != 0B) goto <D.43977>; else goto <D.43978>;
      <D.43977>:
      D.43950 = cfg->cil_offset_to_bb;
      D.43976 = bblock->cil_code;
      D.43979 = (int) D.43976;
      D.43952 = cfg->cil_start;
      D.43953 = (int) D.43952;
      D.43980 = D.43979 - D.43953;
      D.43981 = (unsigned int) D.43980;
      D.43982 = D.43981 * 4;
      D.43983 = D.43950 + D.43982;
      *D.43983 = bblock;
      <D.43978>:
      D.43984 = cfg->real_offset;
      bblock->real_offset = D.43984;
      <D.43959>:
      ip.383 = ip;
      ip.389 = ip.383 + 2;
      ip = ip.389;
      ip.383 = ip;
      if (ip.383 < end) goto <D.43985>; else goto <D.43986>;
      <D.43985>:
      D.43950 = cfg->cil_offset_to_bb;
      ip.383 = ip;
      ip.384 = (int) ip.383;
      D.43952 = cfg->cil_start;
      D.43953 = (int) D.43952;
      D.43987 = ip.384 - D.43953;
      D.43988 = (unsigned int) D.43987;
      D.43989 = D.43988 * 4;
      D.43990 = D.43950 + D.43989;
      bblock = *D.43990;
      if (bblock == 0B) goto <D.43991>; else goto <D.43992>;
      <D.43991>:
      ip.383 = ip;
      if (ip.383 >= end) goto <D.43993>; else goto <D.43995>;
      <D.43995>:
      D.43963 = header->code;
      ip.383 = ip;
      if (D.43963 > ip.383) goto <D.43993>; else goto <D.43994>;
      <D.43993>:
      D.43930 = cfg->gsharedvt;
      if (D.43930 != 0) goto <D.43996>; else goto <D.43997>;
      <D.43996>:
      D.43933 = cfg->verbose_level;
      if (D.43933 > 2) goto <D.43998>; else goto <D.43999>;
      <D.43998>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.43999>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.43997>:
      D.44000 = mini_get_debug_options ();
      D.44001 = D.44000->break_on_unverified;
      if (D.44001 != 0) goto <D.44002>; else goto unverified;
      <D.44002>:
      raise (5);
      <D.43994>:
      D.43971 = cfg->mempool;
      bblock = mono_mempool_alloc0 (D.43971, 172);
      D.43972 = cfg->num_bblocks;
      D.44003 = D.43972;
      D.44004 = D.44003 + 1;
      cfg->num_bblocks = D.44004;
      D.44005 = (int) D.44003;
      bblock->block_num = D.44005;
      ip.383 = ip;
      bblock->cil_code = ip.383;
      D.43976 = bblock->cil_code;
      if (D.43976 != 0B) goto <D.44006>; else goto <D.44007>;
      <D.44006>:
      D.43950 = cfg->cil_offset_to_bb;
      D.43976 = bblock->cil_code;
      D.43979 = (int) D.43976;
      D.43952 = cfg->cil_start;
      D.43953 = (int) D.43952;
      D.43980 = D.43979 - D.43953;
      D.43981 = (unsigned int) D.43980;
      D.43982 = D.43981 * 4;
      D.43983 = D.43950 + D.43982;
      *D.43983 = bblock;
      <D.44007>:
      D.43984 = cfg->real_offset;
      bblock->real_offset = D.43984;
      <D.43992>:
      <D.43986>:
      goto <D.29508>;
      <D.29521>:
      ip.383 = ip;
      D.44008 = ip.383 + 1;
      D.44009 = mono_read32 (D.44008);
      D.44010 = D.44009 + cli_addr;
      D.44011 = D.44010 + 5;
      target = start + D.44011;
      D.43950 = cfg->cil_offset_to_bb;
      target.390 = (int) target;
      D.43952 = cfg->cil_start;
      D.43953 = (int) D.43952;
      D.43954 = target.390 - D.43953;
      D.43955 = (unsigned int) D.43954;
      D.43956 = D.43955 * 4;
      D.43957 = D.43950 + D.43956;
      bblock = *D.43957;
      if (bblock == 0B) goto <D.44012>; else goto <D.44013>;
      <D.44012>:
      if (target >= end) goto <D.44014>; else goto <D.44016>;
      <D.44016>:
      D.43963 = header->code;
      if (D.43963 > target) goto <D.44014>; else goto <D.44015>;
      <D.44014>:
      D.43930 = cfg->gsharedvt;
      if (D.43930 != 0) goto <D.44017>; else goto <D.44018>;
      <D.44017>:
      D.43933 = cfg->verbose_level;
      if (D.43933 > 2) goto <D.44019>; else goto <D.44020>;
      <D.44019>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.44020>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.44018>:
      D.44021 = mini_get_debug_options ();
      D.44022 = D.44021->break_on_unverified;
      if (D.44022 != 0) goto <D.44023>; else goto unverified;
      <D.44023>:
      raise (5);
      <D.44015>:
      D.43971 = cfg->mempool;
      bblock = mono_mempool_alloc0 (D.43971, 172);
      D.43972 = cfg->num_bblocks;
      D.44024 = D.43972;
      D.44025 = D.44024 + 1;
      cfg->num_bblocks = D.44025;
      D.44026 = (int) D.44024;
      bblock->block_num = D.44026;
      bblock->cil_code = target;
      D.43976 = bblock->cil_code;
      if (D.43976 != 0B) goto <D.44027>; else goto <D.44028>;
      <D.44027>:
      D.43950 = cfg->cil_offset_to_bb;
      D.43976 = bblock->cil_code;
      D.43979 = (int) D.43976;
      D.43952 = cfg->cil_start;
      D.43953 = (int) D.43952;
      D.43980 = D.43979 - D.43953;
      D.43981 = (unsigned int) D.43980;
      D.43982 = D.43981 * 4;
      D.43983 = D.43950 + D.43982;
      *D.43983 = bblock;
      <D.44028>:
      D.43984 = cfg->real_offset;
      bblock->real_offset = D.43984;
      <D.44013>:
      ip.383 = ip;
      ip.387 = ip.383 + 5;
      ip = ip.387;
      ip.383 = ip;
      if (ip.383 < end) goto <D.44029>; else goto <D.44030>;
      <D.44029>:
      D.43950 = cfg->cil_offset_to_bb;
      ip.383 = ip;
      ip.384 = (int) ip.383;
      D.43952 = cfg->cil_start;
      D.43953 = (int) D.43952;
      D.43987 = ip.384 - D.43953;
      D.43988 = (unsigned int) D.43987;
      D.43989 = D.43988 * 4;
      D.43990 = D.43950 + D.43989;
      bblock = *D.43990;
      if (bblock == 0B) goto <D.44031>; else goto <D.44032>;
      <D.44031>:
      ip.383 = ip;
      if (ip.383 >= end) goto <D.44033>; else goto <D.44035>;
      <D.44035>:
      D.43963 = header->code;
      ip.383 = ip;
      if (D.43963 > ip.383) goto <D.44033>; else goto <D.44034>;
      <D.44033>:
      D.43930 = cfg->gsharedvt;
      if (D.43930 != 0) goto <D.44036>; else goto <D.44037>;
      <D.44036>:
      D.43933 = cfg->verbose_level;
      if (D.43933 > 2) goto <D.44038>; else goto <D.44039>;
      <D.44038>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.44039>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.44037>:
      D.44040 = mini_get_debug_options ();
      D.44041 = D.44040->break_on_unverified;
      if (D.44041 != 0) goto <D.44042>; else goto unverified;
      <D.44042>:
      raise (5);
      <D.44034>:
      D.43971 = cfg->mempool;
      bblock = mono_mempool_alloc0 (D.43971, 172);
      D.43972 = cfg->num_bblocks;
      D.44043 = D.43972;
      D.44044 = D.44043 + 1;
      cfg->num_bblocks = D.44044;
      D.44045 = (int) D.44043;
      bblock->block_num = D.44045;
      ip.383 = ip;
      bblock->cil_code = ip.383;
      D.43976 = bblock->cil_code;
      if (D.43976 != 0B) goto <D.44046>; else goto <D.44047>;
      <D.44046>:
      D.43950 = cfg->cil_offset_to_bb;
      D.43976 = bblock->cil_code;
      D.43979 = (int) D.43976;
      D.43952 = cfg->cil_start;
      D.43953 = (int) D.43952;
      D.43980 = D.43979 - D.43953;
      D.43981 = (unsigned int) D.43980;
      D.43982 = D.43981 * 4;
      D.43983 = D.43950 + D.43982;
      *D.43983 = bblock;
      <D.44047>:
      D.43984 = cfg->real_offset;
      bblock->real_offset = D.43984;
      <D.44032>:
      <D.44030>:
      goto <D.29508>;
      <D.29522>:
      {
        guint32 n;
        guint32 j;

        ip.383 = ip;
        D.44008 = ip.383 + 1;
        n = mono_read32 (D.44008);
        ip.383 = ip;
        ip.387 = ip.383 + 5;
        ip = ip.387;
        D.44048 = n * 4;
        D.44049 = D.44048 + cli_addr;
        cli_addr = D.44049 + 5;
        target = start + cli_addr;
        D.43950 = cfg->cil_offset_to_bb;
        target.390 = (int) target;
        D.43952 = cfg->cil_start;
        D.43953 = (int) D.43952;
        D.43954 = target.390 - D.43953;
        D.43955 = (unsigned int) D.43954;
        D.43956 = D.43955 * 4;
        D.43957 = D.43950 + D.43956;
        bblock = *D.43957;
        if (bblock == 0B) goto <D.44050>; else goto <D.44051>;
        <D.44050>:
        if (target >= end) goto <D.44052>; else goto <D.44054>;
        <D.44054>:
        D.43963 = header->code;
        if (D.43963 > target) goto <D.44052>; else goto <D.44053>;
        <D.44052>:
        D.43930 = cfg->gsharedvt;
        if (D.43930 != 0) goto <D.44055>; else goto <D.44056>;
        <D.44055>:
        D.43933 = cfg->verbose_level;
        if (D.43933 > 2) goto <D.44057>; else goto <D.44058>;
        <D.44057>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.44058>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.44056>:
        D.44059 = mini_get_debug_options ();
        D.44060 = D.44059->break_on_unverified;
        if (D.44060 != 0) goto <D.44061>; else goto unverified;
        <D.44061>:
        raise (5);
        <D.44053>:
        D.43971 = cfg->mempool;
        bblock = mono_mempool_alloc0 (D.43971, 172);
        D.43972 = cfg->num_bblocks;
        D.44062 = D.43972;
        D.44063 = D.44062 + 1;
        cfg->num_bblocks = D.44063;
        D.44064 = (int) D.44062;
        bblock->block_num = D.44064;
        bblock->cil_code = target;
        D.43976 = bblock->cil_code;
        if (D.43976 != 0B) goto <D.44065>; else goto <D.44066>;
        <D.44065>:
        D.43950 = cfg->cil_offset_to_bb;
        D.43976 = bblock->cil_code;
        D.43979 = (int) D.43976;
        D.43952 = cfg->cil_start;
        D.43953 = (int) D.43952;
        D.43980 = D.43979 - D.43953;
        D.43981 = (unsigned int) D.43980;
        D.43982 = D.43981 * 4;
        D.43983 = D.43950 + D.43982;
        *D.43983 = bblock;
        <D.44066>:
        D.43984 = cfg->real_offset;
        bblock->real_offset = D.43984;
        <D.44051>:
        j = 0;
        goto <D.29526>;
        <D.29525>:
        ip.383 = ip;
        D.44067 = mono_read32 (ip.383);
        D.44068 = D.44067 + cli_addr;
        target = start + D.44068;
        D.43950 = cfg->cil_offset_to_bb;
        target.390 = (int) target;
        D.43952 = cfg->cil_start;
        D.43953 = (int) D.43952;
        D.43954 = target.390 - D.43953;
        D.43955 = (unsigned int) D.43954;
        D.43956 = D.43955 * 4;
        D.43957 = D.43950 + D.43956;
        bblock = *D.43957;
        if (bblock == 0B) goto <D.44069>; else goto <D.44070>;
        <D.44069>:
        if (target >= end) goto <D.44071>; else goto <D.44073>;
        <D.44073>:
        D.43963 = header->code;
        if (D.43963 > target) goto <D.44071>; else goto <D.44072>;
        <D.44071>:
        D.43930 = cfg->gsharedvt;
        if (D.43930 != 0) goto <D.44074>; else goto <D.44075>;
        <D.44074>:
        D.43933 = cfg->verbose_level;
        if (D.43933 > 2) goto <D.44076>; else goto <D.44077>;
        <D.44076>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.44077>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.44075>:
        D.44078 = mini_get_debug_options ();
        D.44079 = D.44078->break_on_unverified;
        if (D.44079 != 0) goto <D.44080>; else goto unverified;
        <D.44080>:
        raise (5);
        <D.44072>:
        D.43971 = cfg->mempool;
        bblock = mono_mempool_alloc0 (D.43971, 172);
        D.43972 = cfg->num_bblocks;
        D.44081 = D.43972;
        D.44082 = D.44081 + 1;
        cfg->num_bblocks = D.44082;
        D.44083 = (int) D.44081;
        bblock->block_num = D.44083;
        bblock->cil_code = target;
        D.43976 = bblock->cil_code;
        if (D.43976 != 0B) goto <D.44084>; else goto <D.44085>;
        <D.44084>:
        D.43950 = cfg->cil_offset_to_bb;
        D.43976 = bblock->cil_code;
        D.43979 = (int) D.43976;
        D.43952 = cfg->cil_start;
        D.43953 = (int) D.43952;
        D.43980 = D.43979 - D.43953;
        D.43981 = (unsigned int) D.43980;
        D.43982 = D.43981 * 4;
        D.43983 = D.43950 + D.43982;
        *D.43983 = bblock;
        <D.44085>:
        D.43984 = cfg->real_offset;
        bblock->real_offset = D.43984;
        <D.44070>:
        ip.383 = ip;
        ip.391 = ip.383 + 4;
        ip = ip.391;
        j = j + 1;
        <D.29526>:
        if (j < n) goto <D.29525>; else goto <D.29527>;
        <D.29527>:
        goto <D.29508>;
      }
      <D.29528>:
      <D.29529>:
      ip.383 = ip;
      ip.392 = ip.383 + 9;
      ip = ip.392;
      goto <D.29508>;
      <D.29530>:
      monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 6056);
      <D.29508>:
      if (i == 122) goto <D.44088>; else goto <D.44089>;
      <D.44088>:
      {
        unsigned char * bb_start;

        ip.383 = ip;
        bb_start = ip.383 + 4294967295;
        bblock = 0B;
        goto <D.29533>;
        <D.29532>:
        D.43950 = cfg->cil_offset_to_bb;
        bb_start.393 = (int) bb_start;
        start.385 = (int) start;
        D.44091 = bb_start.393 - start.385;
        D.44092 = (unsigned int) D.44091;
        D.44093 = D.44092 * 4;
        D.44094 = D.43950 + D.44093;
        bblock = *D.44094;
        bb_start = bb_start + 4294967295;
        <D.29533>:
        D.44095 = bb_start >= start;
        D.44096 = bblock == 0B;
        D.44097 = D.44095 & D.44096;
        if (D.44097 != 0) goto <D.29532>; else goto <D.29534>;
        <D.29534>:
        if (bblock != 0B) goto <D.44098>; else goto <D.44099>;
        <D.44098>:
        bblock->out_of_line = 1;
        <D.44099>:
      }
      <D.44089>:
      <D.29536>:
      ip.383 = ip;
      if (ip.383 < end) goto <D.29535>; else goto <D.29537>;
      <D.29537>:
      D.44100 = 0;
      return D.44100;
      unverified:
      exception_exit:
      ip.383 = ip;
      *pos = ip.383;
      D.44100 = 1;
      return D.44100;
    }
  finally
    {
      ip = {CLOBBER};
    }
}


should_insert_brekpoint (struct MonoMethod * method)
{
  MonoBreakPolicy (*<T3f61>) (struct MonoMethod *) break_policy_func.394;
  <unnamed type> D.44104;
  gboolean D.44105;

  break_policy_func.394 = break_policy_func;
  D.44104 = break_policy_func.394 (method);
  switch (D.44104) <default: <D.28880>, case 0: <D.28877>, case 1: <D.28878>, case 2: <D.28879>>
  <D.28877>:
  D.44105 = 1;
  return D.44105;
  <D.28878>:
  D.44105 = 0;
  return D.44105;
  <D.28879>:
  monoeg_g_log (0B, 16, "mdb no longer supported");
  D.44105 = 0;
  return D.44105;
  <D.28880>:
  monoeg_g_log (0B, 16, "Incorrect value returned from break policy callback");
  D.44105 = 0;
  return D.44105;
}


mini_get_signature (struct MonoMethod * method, guint32 token, struct MonoGenericContext * context)
{
  unsigned char D.44107;
  unsigned char D.44108;
  int D.44113;
  _Bool D.44114;
  long int D.44115;
  long int D.44116;
  struct MonoClass * D.44120;
  struct MonoImage * D.44121;
  struct MonoMethodSignature * D.44122;
  struct MonoMethodSignature * fsig;

  D.44107 = BIT_FIELD_REF <*method, 8, 160>;
  D.44108 = D.44107 & 124;
  if (D.44108 != 0) goto <D.44109>; else goto <D.44110>;
  <D.44109>:
  {
    struct MonoError error;

    try
      {
        fsig = mono_method_get_wrapper_data (method, token);
        if (context != 0B) goto <D.44111>; else goto <D.44112>;
        <D.44111>:
        fsig = mono_inflate_generic_signature (fsig, context, &error);
        D.44113 = mono_error_ok (&error);
        D.44114 = D.44113 == 0;
        D.44115 = (long int) D.44114;
        D.44116 = __builtin_expect (D.44115, 0);
        if (D.44116 != 0) goto <D.44117>; else goto <D.44118>;
        <D.44117>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6135, "mono_error_ok (&error)");
        <D.44118>:
        <D.44112>:
      }
    finally
      {
        error = {CLOBBER};
      }
  }
  goto <D.44119>;
  <D.44110>:
  D.44120 = method->klass;
  D.44121 = D.44120->image;
  fsig = mono_metadata_parse_signature (D.44121, token);
  <D.44119>:
  D.44122 = fsig;
  return D.44122;
}


mini_get_method_allow_open (struct MonoMethod * m, guint32 token, struct MonoClass * klass, struct MonoGenericContext * context)
{
  unsigned char D.44124;
  unsigned char D.44125;
  struct MonoClass * D.44131;
  struct MonoImage * D.44132;
  struct MonoMethod * D.44133;
  struct MonoMethod * method;

  D.44124 = BIT_FIELD_REF <*m, 8, 160>;
  D.44125 = D.44124 & 124;
  if (D.44125 != 0) goto <D.44126>; else goto <D.44127>;
  <D.44126>:
  method = mono_method_get_wrapper_data (m, token);
  if (context != 0B) goto <D.44128>; else goto <D.44129>;
  <D.44128>:
  method = mono_class_inflate_generic_method (method, context);
  <D.44129>:
  goto <D.44130>;
  <D.44127>:
  D.44131 = m->klass;
  D.44132 = D.44131->image;
  method = mono_get_method_full (D.44132, token, klass, context);
  <D.44130>:
  D.44133 = method;
  return D.44133;
}


mini_emit_inst_for_sharable_method (struct MonoCompile * cfg, struct MonoMethod * cmethod, struct MonoMethodSignature * fsig, struct MonoInst * * args)
{
  struct MonoClass * D.44135;
  struct MonoClass * D.44136;
  int D.29034;
  int iftmp.395;
  int D.29033;
  const char[12] * D.44142;
  unsigned char D.44143;
  int D.44144;
  unsigned char D.44145;
  int D.44146;
  _Bool D.44147;
  _Bool D.44148;
  _Bool D.44149;
  const unsigned char * D.44152;
  unsigned char D.44153;
  int D.44154;
  const unsigned char * D.44155;
  unsigned char D.44156;
  int D.44157;
  _Bool D.44158;
  _Bool D.44159;
  const unsigned char * D.44162;
  unsigned char D.44163;
  int D.44164;
  const unsigned char * D.44165;
  unsigned char D.44166;
  int D.44167;
  _Bool D.44168;
  _Bool D.44169;
  const unsigned char * D.44172;
  unsigned char D.44173;
  int D.44174;
  const unsigned char * D.44175;
  unsigned char D.44176;
  int D.44177;
  const char * D.44179;
  struct MonoInst * D.44182;
  int D.29043;
  int iftmp.396;
  int D.29042;
  const char[11] * D.44186;
  unsigned char D.44187;
  int D.44188;
  unsigned char D.44189;
  int D.44190;
  _Bool D.44191;
  _Bool D.44192;
  _Bool D.44193;
  const unsigned char * D.44196;
  unsigned char D.44197;
  int D.44198;
  const unsigned char * D.44199;
  unsigned char D.44200;
  int D.44201;
  _Bool D.44202;
  _Bool D.44203;
  const unsigned char * D.44206;
  unsigned char D.44207;
  int D.44208;
  const unsigned char * D.44209;
  unsigned char D.44210;
  int D.44211;
  _Bool D.44212;
  _Bool D.44213;
  const unsigned char * D.44216;
  unsigned char D.44217;
  int D.44218;
  const unsigned char * D.44219;
  unsigned char D.44220;
  int D.44221;

  D.44135 = cmethod->klass;
  D.44136 = mono_defaults.array_class;
  if (D.44135 == D.44136) goto <D.44137>; else goto <D.44138>;
  <D.44137>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.44142 = "UnsafeStore";
      D.44143 = MEM[(const unsigned char *)D.44142];
      D.44144 = (int) D.44143;
      D.44145 = *__s2;
      D.44146 = (int) D.44145;
      __result = D.44144 - D.44146;
      {
        D.44147 = __s2_len != 0;
        D.44148 = __result == 0;
        D.44149 = D.44147 & D.44148;
        if (D.44149 != 0) goto <D.44150>; else goto <D.44151>;
        <D.44150>:
        D.44152 = &MEM[(void *)"UnsafeStore" + 1B];
        D.44153 = *D.44152;
        D.44154 = (int) D.44153;
        D.44155 = __s2 + 1;
        D.44156 = *D.44155;
        D.44157 = (int) D.44156;
        __result = D.44154 - D.44157;
        D.44158 = __s2_len > 1;
        D.44148 = __result == 0;
        D.44159 = D.44158 & D.44148;
        if (D.44159 != 0) goto <D.44160>; else goto <D.44161>;
        <D.44160>:
        D.44162 = &MEM[(void *)"UnsafeStore" + 2B];
        D.44163 = *D.44162;
        D.44164 = (int) D.44163;
        D.44165 = __s2 + 2;
        D.44166 = *D.44165;
        D.44167 = (int) D.44166;
        __result = D.44164 - D.44167;
        D.44168 = __s2_len > 2;
        D.44148 = __result == 0;
        D.44169 = D.44168 & D.44148;
        if (D.44169 != 0) goto <D.44170>; else goto <D.44171>;
        <D.44170>:
        D.44172 = &MEM[(void *)"UnsafeStore" + 3B];
        D.44173 = *D.44172;
        D.44174 = (int) D.44173;
        D.44175 = __s2 + 3;
        D.44176 = *D.44175;
        D.44177 = (int) D.44176;
        __result = D.44174 - D.44177;
        <D.44171>:
        <D.44161>:
        <D.44151>:
      }
      D.29033 = __result;
    }
    iftmp.395 = -D.29033;
    goto <D.44178>;
    <D.44141>:
    D.44179 = cmethod->name;
    iftmp.395 = __builtin_strcmp (D.44179, "UnsafeStore");
    <D.44178>:
    D.29034 = iftmp.395;
  }
  if (D.29034 == 0) goto <D.44180>; else goto <D.44181>;
  <D.44180>:
  D.44182 = emit_array_unsafe_access (cfg, fsig, args, 1);
  return D.44182;
  <D.44181>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.44186 = "UnsafeLoad";
      D.44187 = MEM[(const unsigned char *)D.44186];
      D.44188 = (int) D.44187;
      D.44189 = *__s2;
      D.44190 = (int) D.44189;
      __result = D.44188 - D.44190;
      {
        D.44191 = __s2_len != 0;
        D.44192 = __result == 0;
        D.44193 = D.44191 & D.44192;
        if (D.44193 != 0) goto <D.44194>; else goto <D.44195>;
        <D.44194>:
        D.44196 = &MEM[(void *)"UnsafeLoad" + 1B];
        D.44197 = *D.44196;
        D.44198 = (int) D.44197;
        D.44199 = __s2 + 1;
        D.44200 = *D.44199;
        D.44201 = (int) D.44200;
        __result = D.44198 - D.44201;
        D.44202 = __s2_len > 1;
        D.44192 = __result == 0;
        D.44203 = D.44202 & D.44192;
        if (D.44203 != 0) goto <D.44204>; else goto <D.44205>;
        <D.44204>:
        D.44206 = &MEM[(void *)"UnsafeLoad" + 2B];
        D.44207 = *D.44206;
        D.44208 = (int) D.44207;
        D.44209 = __s2 + 2;
        D.44210 = *D.44209;
        D.44211 = (int) D.44210;
        __result = D.44208 - D.44211;
        D.44212 = __s2_len > 2;
        D.44192 = __result == 0;
        D.44213 = D.44212 & D.44192;
        if (D.44213 != 0) goto <D.44214>; else goto <D.44215>;
        <D.44214>:
        D.44216 = &MEM[(void *)"UnsafeLoad" + 3B];
        D.44217 = *D.44216;
        D.44218 = (int) D.44217;
        D.44219 = __s2 + 3;
        D.44220 = *D.44219;
        D.44221 = (int) D.44220;
        __result = D.44218 - D.44221;
        <D.44215>:
        <D.44205>:
        <D.44195>:
      }
      D.29042 = __result;
    }
    iftmp.396 = -D.29042;
    goto <D.44222>;
    <D.44185>:
    D.44179 = cmethod->name;
    iftmp.396 = __builtin_strcmp (D.44179, "UnsafeLoad");
    <D.44222>:
    D.29043 = iftmp.396;
  }
  if (D.29043 == 0) goto <D.44223>; else goto <D.44224>;
  <D.44223>:
  D.44182 = emit_array_unsafe_access (cfg, fsig, args, 0);
  return D.44182;
  <D.44224>:
  <D.44138>:
  D.44182 = 0B;
  return D.44182;
}


emit_array_unsafe_access (struct MonoCompile * cfg, struct MonoMethodSignature * fsig, struct MonoInst * * args, int is_set)
{
  struct MonoType * D.44228;
  struct MonoType * D.44230;
  struct MonoInst * D.44233;
  struct MonoInst * D.44234;
  struct MonoInst * * D.44235;
  struct MonoInst * D.44236;
  struct MonoMemPool * D.44237;
  int D.44238;
  struct MonoInst * D.44239;
  struct MonoType * D.44240;
  unsigned int D.44241;
  short unsigned int D.44242;
  int D.44243;
  int D.44244;
  const unsigned char * D.44245;
  int D.44246;
  unsigned char D.44247;
  <unnamed type> D.44248;
  unsigned int D.44249;
  int D.44250;
  struct MonoBasicBlock * D.44251;
  struct MonoInst * D.44252;
  struct MonoClass * eklass;

  if (is_set != 0) goto <D.44226>; else goto <D.44227>;
  <D.44226>:
  D.44228 = fsig->params[2];
  eklass = mono_class_from_mono_type (D.44228);
  goto <D.44229>;
  <D.44227>:
  D.44230 = fsig->ret;
  eklass = mono_class_from_mono_type (D.44230);
  <D.44229>:
  if (is_set != 0) goto <D.44231>; else goto <D.44232>;
  <D.44231>:
  D.44233 = emit_array_store (cfg, eklass, args, 0);
  return D.44233;
  <D.44232>:
  {
    struct MonoInst * ins;
    struct MonoInst * addr;

    D.44234 = *args;
    D.44235 = args + 4;
    D.44236 = *D.44235;
    addr = mini_emit_ldelema_1_ins (cfg, eklass, D.44234, D.44236, 0);
    D.44237 = cfg->mempool;
    ins = mono_mempool_alloc (D.44237, 56);
    ins->data.op[1].const_val = 0;
    D.44238 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.44238;
    ins->prev = 0B;
    D.44239 = ins->prev;
    ins->next = D.44239;
    D.44240 = &eklass->byval_arg;
    D.44241 = mono_type_to_load_membase (cfg, D.44240);
    D.44242 = (short unsigned int) D.44241;
    ins->opcode = D.44242;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.44243 = ins->sreg3;
    ins->sreg2 = D.44243;
    D.44244 = ins->sreg2;
    ins->sreg1 = D.44244;
    D.44245 = cfg->ip;
    ins->cil_code = D.44245;
    ins->dreg = 0;
    D.44246 = addr->dreg;
    ins->sreg1 = D.44246;
    ins->data.op[0].const_val = 0;
    ins->type = 1;
    D.44240 = &eklass->byval_arg;
    type_to_eval_stack_type (cfg, D.44240, ins);
    D.44247 = ins->type;
    D.44248 = (<unnamed type>) D.44247;
    D.44249 = alloc_dreg (cfg, D.44248);
    D.44250 = (int) D.44249;
    ins->dreg = D.44250;
    D.44251 = cfg->cbb;
    D.44252 = D.44251->last_ins;
    if (D.44252 != 0B) goto <D.44253>; else goto <D.44254>;
    <D.44253>:
    D.44251 = cfg->cbb;
    D.44252 = D.44251->last_ins;
    D.44252->next = ins;
    D.44251 = cfg->cbb;
    D.44252 = D.44251->last_ins;
    ins->prev = D.44252;
    D.44251 = cfg->cbb;
    D.44251->last_ins = ins;
    goto <D.44255>;
    <D.44254>:
    D.44251 = cfg->cbb;
    D.44251 = cfg->cbb;
    D.44251->last_ins = ins;
    D.44252 = D.44251->last_ins;
    D.44251->code = D.44252;
    <D.44255>:
    D.44233 = ins;
    return D.44233;
  }
}


check_method_sharing (struct MonoCompile * cfg, struct MonoMethod * cmethod, gboolean * out_pass_vtable, gboolean * out_pass_mrgctx)
{
  short unsigned int D.44260;
  int D.44261;
  int D.44262;
  struct MonoClass * D.44264;
  unsigned char D.44265;
  unsigned char D.44266;
  struct MonoGenericClass * D.44267;
  struct MonoGenericContainer * D.44269;
  int D.44270;
  _Bool D.44274;
  _Bool D.44275;
  _Bool D.44276;
  struct MonoGenericContext * D.44281;
  struct MonoGenericContext * D.44283;
  struct MonoGenericInst * D.44284;
  struct MonoGenericContext * D.44285;
  struct MonoGenericContext * D.44288;
  struct MonoGenericInst * D.44289;
  _Bool D.44292;
  long int D.44293;
  long int D.44294;
  int D.44297;
  _Bool D.44301;
  _Bool D.44302;
  _Bool D.44303;
  int D.44306;
  struct MonoMethodSignature * D.44309;
  int D.44310;
  gboolean pass_vtable;
  gboolean pass_mrgctx;

  pass_vtable = 0;
  pass_mrgctx = 0;
  D.44260 = cmethod->flags;
  D.44261 = (int) D.44260;
  D.44262 = D.44261 & 16;
  if (D.44262 != 0) goto <D.44259>; else goto <D.44263>;
  <D.44263>:
  D.44264 = cmethod->klass;
  D.44265 = BIT_FIELD_REF <*D.44264, 8, 160>;
  D.44266 = D.44265 & 8;
  if (D.44266 != 0) goto <D.44259>; else goto <D.44258>;
  <D.44259>:
  D.44264 = cmethod->klass;
  D.44267 = D.44264->generic_class;
  if (D.44267 != 0B) goto <D.44257>; else goto <D.44268>;
  <D.44268>:
  D.44264 = cmethod->klass;
  D.44269 = D.44264->generic_container;
  if (D.44269 != 0B) goto <D.44257>; else goto <D.44258>;
  <D.44257>:
  {
    gboolean sharable;

    sharable = 0;
    D.44270 = mono_method_is_generic_sharable (cmethod, 1);
    if (D.44270 != 0) goto <D.44271>; else goto <D.44272>;
    <D.44271>:
    sharable = 1;
    goto <D.44273>;
    <D.44272>:
    {
      gboolean sharing_enabled;
      struct MonoGenericContext * context;
      gboolean context_sharable;

      D.44264 = cmethod->klass;
      sharing_enabled = mono_class_generic_sharing_enabled (D.44264);
      D.44264 = cmethod->klass;
      context = mini_class_get_context (D.44264);
      context_sharable = mono_generic_context_is_sharable (context, 1);
      D.44274 = sharing_enabled != 0;
      D.44275 = context_sharable != 0;
      D.44276 = D.44274 & D.44275;
      sharable = (gboolean) D.44276;
    }
    <D.44273>:
    if (sharable != 0) goto <D.44279>; else goto <D.44280>;
    <D.44279>:
    D.44281 = mini_method_get_context (cmethod);
    if (D.44281 == 0B) goto <D.44277>; else goto <D.44282>;
    <D.44282>:
    D.44283 = mini_method_get_context (cmethod);
    D.44284 = D.44283->method_inst;
    if (D.44284 == 0B) goto <D.44277>; else goto <D.44278>;
    <D.44277>:
    pass_vtable = 1;
    <D.44278>:
    <D.44280>:
  }
  <D.44258>:
  D.44285 = mini_method_get_context (cmethod);
  if (D.44285 != 0B) goto <D.44286>; else goto <D.44287>;
  <D.44286>:
  D.44288 = mini_method_get_context (cmethod);
  D.44289 = D.44288->method_inst;
  if (D.44289 != 0B) goto <D.44290>; else goto <D.44291>;
  <D.44290>:
  D.44292 = pass_vtable != 0;
  D.44293 = (long int) D.44292;
  D.44294 = __builtin_expect (D.44293, 0);
  if (D.44294 != 0) goto <D.44295>; else goto <D.44296>;
  <D.44295>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2418, "!pass_vtable");
  <D.44296>:
  D.44297 = mono_method_is_generic_sharable (cmethod, 1);
  if (D.44297 != 0) goto <D.44298>; else goto <D.44299>;
  <D.44298>:
  pass_mrgctx = 1;
  goto <D.44300>;
  <D.44299>:
  {
    gboolean sharing_enabled;
    struct MonoGenericContext * context;
    gboolean context_sharable;

    D.44264 = cmethod->klass;
    sharing_enabled = mono_class_generic_sharing_enabled (D.44264);
    context = mini_method_get_context (cmethod);
    context_sharable = mono_generic_context_is_sharable (context, 1);
    D.44301 = sharing_enabled != 0;
    D.44302 = context_sharable != 0;
    D.44303 = D.44301 & D.44302;
    if (D.44303 != 0) goto <D.44304>; else goto <D.44305>;
    <D.44304>:
    pass_mrgctx = 1;
    <D.44305>:
    D.44306 = cfg->gsharedvt;
    if (D.44306 != 0) goto <D.44307>; else goto <D.44308>;
    <D.44307>:
    D.44309 = mono_method_signature (cmethod);
    D.44310 = mini_is_gsharedvt_signature (cfg, D.44309);
    if (D.44310 != 0) goto <D.44311>; else goto <D.44312>;
    <D.44311>:
    pass_mrgctx = 1;
    <D.44312>:
    <D.44308>:
  }
  <D.44300>:
  <D.44291>:
  <D.44287>:
  if (out_pass_vtable != 0B) goto <D.44313>; else goto <D.44314>;
  <D.44313>:
  *out_pass_vtable = pass_vtable;
  <D.44314>:
  if (out_pass_mrgctx != 0B) goto <D.44315>; else goto <D.44316>;
  <D.44315>:
  *out_pass_mrgctx = pass_mrgctx;
  <D.44316>:
}


type_from_stack_type (struct MonoInst * ins)
{
  unsigned char D.44317;
  int D.44318;
  struct MonoType * D.44319;
  struct MonoClass * D.44320;
  struct MonoClass * D.44321;
  struct MonoClass * D.44322;
  struct MonoClass * D.44323;
  struct MonoClass * D.44324;
  struct MonoClass * D.44325;

  D.44317 = ins->type;
  D.44318 = (int) D.44317;
  switch (D.44318) <default: <D.27426>, case 1: <D.27419>, case 2: <D.27420>, case 3: <D.27421>, case 4: <D.27422>, case 5: <D.27423>, case 6: <D.27424>, case 7: <D.27425>>
  <D.27419>:
  D.44320 = mono_defaults.int32_class;
  D.44319 = &D.44320->byval_arg;
  return D.44319;
  <D.27420>:
  D.44321 = mono_defaults.int64_class;
  D.44319 = &D.44321->byval_arg;
  return D.44319;
  <D.27421>:
  D.44322 = mono_defaults.int_class;
  D.44319 = &D.44322->byval_arg;
  return D.44319;
  <D.27422>:
  D.44323 = mono_defaults.double_class;
  D.44319 = &D.44323->byval_arg;
  return D.44319;
  <D.27423>:
  D.44324 = ins->klass;
  D.44319 = &D.44324->this_arg;
  return D.44319;
  <D.27424>:
  D.44325 = mono_defaults.object_class;
  D.44319 = &D.44325->byval_arg;
  return D.44319;
  <D.27425>:
  D.44324 = ins->klass;
  D.44319 = &D.44324->byval_arg;
  return D.44319;
  <D.27426>:
  D.44317 = ins->type;
  D.44318 = (int) D.44317;
  monoeg_g_log (0B, 4, "stack type %d to monotype not handled\n", D.44318);
  <D.27427>:
  goto <D.27427>;
  D.44319 = 0B;
  return D.44319;
}


mini_emit_inst_for_method (struct MonoCompile * cfg, struct MonoMethod * cmethod, struct MonoMethodSignature * fsig, struct MonoInst * * args)
{
  struct MonoClass * runtime_helpers_class.397;
  struct MonoImage * D.44330;
  struct MonoClass * runtime_helpers_class.398;
  struct MonoClass * D.44332;
  struct MonoClass * D.44333;
  int D.29060;
  int iftmp.399;
  int D.29059;
  const char[10] * D.44339;
  unsigned char D.44340;
  int D.44341;
  unsigned char D.44342;
  int D.44343;
  _Bool D.44344;
  _Bool D.44345;
  _Bool D.44346;
  const unsigned char * D.44349;
  unsigned char D.44350;
  int D.44351;
  const unsigned char * D.44352;
  unsigned char D.44353;
  int D.44354;
  _Bool D.44355;
  _Bool D.44356;
  const unsigned char * D.44359;
  unsigned char D.44360;
  int D.44361;
  const unsigned char * D.44362;
  unsigned char D.44363;
  int D.44364;
  _Bool D.44365;
  _Bool D.44366;
  const unsigned char * D.44369;
  unsigned char D.44370;
  int D.44371;
  const unsigned char * D.44372;
  unsigned char D.44373;
  int D.44374;
  const char * D.44376;
  unsigned int D.44379;
  unsigned int D.44380;
  unsigned int D.44381;
  unsigned int D.44382;
  struct MonoInst * * D.44383;
  struct MonoInst * D.44384;
  unsigned int D.44385;
  unsigned int D.44386;
  unsigned int D.44389;
  unsigned char D.44392;
  unsigned char D.44393;
  struct MonoMemPool * D.44396;
  int D.44397;
  struct MonoInst * D.44398;
  int D.44399;
  int D.44400;
  const unsigned char * D.44401;
  struct MonoInst * D.44402;
  int D.44403;
  struct MonoBasicBlock * D.44404;
  struct MonoInst * D.44405;
  int D.44409;
  struct MonoInst * D.44410;
  int D.44411;
  int D.44412;
  unsigned int D.44419;
  int D.44422;
  int D.44427;
  struct MonoInst * D.44428;
  int D.44429;
  int D.44430;
  int D.44434;
  struct MonoInst * D.44435;
  int D.44436;
  int D.44437;
  int D.44442;
  struct MonoInst * D.44443;
  int D.44444;
  int D.44445;
  unsigned char D.44446;
  int D.44451;
  int D.44456;
  struct MonoInst * D.44457;
  int D.44458;
  int D.44459;
  int D.44463;
  struct MonoInst * D.44464;
  int D.44465;
  int D.44466;
  int D.44471;
  struct MonoInst * D.44472;
  int D.44473;
  int D.44474;
  unsigned char D.44475;
  int D.44479;
  struct MonoInst * D.44480;
  int D.44481;
  int D.44482;
  int D.44486;
  struct MonoInst * D.44487;
  int D.44488;
  int D.44489;
  unsigned int D.44494;
  int D.44497;
  int D.44502;
  struct MonoInst * D.44503;
  int D.44504;
  int D.44505;
  int D.44509;
  struct MonoInst * D.44510;
  int D.44511;
  int D.44512;
  int D.44517;
  struct MonoInst * D.44518;
  int D.44519;
  int D.44520;
  unsigned char D.44521;
  int D.44526;
  int D.44531;
  struct MonoInst * D.44532;
  int D.44533;
  int D.44534;
  int D.44538;
  struct MonoInst * D.44539;
  int D.44540;
  int D.44541;
  int D.44546;
  struct MonoInst * D.44547;
  int D.44548;
  int D.44549;
  unsigned char D.44550;
  int D.44554;
  struct MonoInst * D.44555;
  int D.44556;
  int D.44557;
  int D.44561;
  struct MonoInst * D.44562;
  int D.44563;
  int D.44564;
  int D.44569;
  struct MonoInst * D.44570;
  int D.44571;
  int D.44572;
  unsigned char D.44573;
  unsigned char D.44574;
  unsigned int D.44578;
  unsigned int D.44579;
  int D.44580;
  struct MonoInst * D.44581;
  int D.44582;
  int D.44583;
  int D.44587;
  struct MonoInst * D.44588;
  int D.44589;
  int D.44590;
  int D.44594;
  struct MonoInst * D.44595;
  int D.44596;
  int D.44597;
  struct MonoInst * D.44601;
  int D.29100;
  int iftmp.400;
  int D.29099;
  const char[11] * D.44605;
  unsigned char D.44606;
  int D.44607;
  unsigned char D.44608;
  int D.44609;
  _Bool D.44610;
  _Bool D.44611;
  _Bool D.44612;
  const unsigned char * D.44615;
  unsigned char D.44616;
  int D.44617;
  const unsigned char * D.44618;
  unsigned char D.44619;
  int D.44620;
  _Bool D.44621;
  _Bool D.44622;
  const unsigned char * D.44625;
  unsigned char D.44626;
  int D.44627;
  const unsigned char * D.44628;
  unsigned char D.44629;
  int D.44630;
  _Bool D.44631;
  _Bool D.44632;
  const unsigned char * D.44635;
  unsigned char D.44636;
  int D.44637;
  const unsigned char * D.44638;
  unsigned char D.44639;
  int D.44640;
  unsigned int D.44644;
  unsigned char D.44648;
  unsigned char D.44649;
  int D.29110;
  int iftmp.401;
  int D.29109;
  const char[16] * D.44653;
  unsigned char D.44654;
  int D.44655;
  unsigned char D.44656;
  int D.44657;
  _Bool D.44658;
  _Bool D.44659;
  _Bool D.44660;
  const unsigned char * D.44663;
  unsigned char D.44664;
  int D.44665;
  const unsigned char * D.44666;
  unsigned char D.44667;
  int D.44668;
  _Bool D.44669;
  _Bool D.44670;
  const unsigned char * D.44673;
  unsigned char D.44674;
  int D.44675;
  const unsigned char * D.44676;
  unsigned char D.44677;
  int D.44678;
  _Bool D.44679;
  _Bool D.44680;
  const unsigned char * D.44683;
  unsigned char D.44684;
  int D.44685;
  const unsigned char * D.44686;
  unsigned char D.44687;
  int D.44688;
  unsigned int D.44692;
  unsigned int D.44693;
  int D.44694;
  struct MonoInst * D.44695;
  int D.44696;
  int D.44697;
  int D.44698;
  int D.44702;
  struct MonoInst * D.44703;
  int D.44704;
  int D.44705;
  int D.44709;
  struct MonoInst * D.44710;
  int D.44711;
  int D.44712;
  struct MonoInst * * D.44713;
  struct MonoInst * D.44714;
  int D.44715;
  struct MonoClass * D.44719;
  int D.29124;
  int iftmp.402;
  int D.29123;
  const char[8] * D.44725;
  unsigned char D.44726;
  int D.44727;
  unsigned char D.44728;
  int D.44729;
  _Bool D.44730;
  _Bool D.44731;
  _Bool D.44732;
  const unsigned char * D.44735;
  unsigned char D.44736;
  int D.44737;
  const unsigned char * D.44738;
  unsigned char D.44739;
  int D.44740;
  _Bool D.44741;
  _Bool D.44742;
  const unsigned char * D.44745;
  unsigned char D.44746;
  int D.44747;
  const unsigned char * D.44748;
  unsigned char D.44749;
  int D.44750;
  _Bool D.44751;
  _Bool D.44752;
  const unsigned char * D.44755;
  unsigned char D.44756;
  int D.44757;
  const unsigned char * D.44758;
  unsigned char D.44759;
  int D.44760;
  unsigned int D.44764;
  unsigned int D.44765;
  int D.44766;
  int D.44771;
  struct MonoInst * D.44772;
  int D.44773;
  int D.44774;
  int D.44778;
  struct MonoInst * D.44779;
  int D.44780;
  int D.44781;
  int D.44786;
  struct MonoInst * D.44787;
  int D.44788;
  int D.44789;
  unsigned char D.44790;
  int D.29139;
  int iftmp.403;
  int D.29138;
  const char[20] * D.44801;
  unsigned char D.44802;
  int D.44803;
  unsigned char D.44804;
  int D.44805;
  _Bool D.44806;
  _Bool D.44807;
  _Bool D.44808;
  const unsigned char * D.44811;
  unsigned char D.44812;
  int D.44813;
  const unsigned char * D.44814;
  unsigned char D.44815;
  int D.44816;
  _Bool D.44817;
  _Bool D.44818;
  const unsigned char * D.44821;
  unsigned char D.44822;
  int D.44823;
  const unsigned char * D.44824;
  unsigned char D.44825;
  int D.44826;
  _Bool D.44827;
  _Bool D.44828;
  const unsigned char * D.44831;
  unsigned char D.44832;
  int D.44833;
  const unsigned char * D.44834;
  unsigned char D.44835;
  int D.44836;
  int D.44839;
  unsigned int D.44841;
  unsigned int D.44842;
  int D.44843;
  struct MonoInst * D.44844;
  int D.44845;
  int D.44846;
  int D.29151;
  int iftmp.404;
  int D.29150;
  const char[6] * D.44856;
  unsigned char D.44857;
  int D.44858;
  unsigned char D.44859;
  int D.44860;
  _Bool D.44861;
  _Bool D.44862;
  _Bool D.44863;
  const unsigned char * D.44866;
  unsigned char D.44867;
  int D.44868;
  const unsigned char * D.44869;
  unsigned char D.44870;
  int D.44871;
  _Bool D.44872;
  _Bool D.44873;
  const unsigned char * D.44876;
  unsigned char D.44877;
  int D.44878;
  const unsigned char * D.44879;
  unsigned char D.44880;
  int D.44881;
  _Bool D.44882;
  _Bool D.44883;
  const unsigned char * D.44886;
  unsigned char D.44887;
  int D.44888;
  const unsigned char * D.44889;
  unsigned char D.44890;
  int D.44891;
  struct MonoClass * D.44898;
  int D.44901;
  int D.29160;
  int iftmp.405;
  int D.29159;
  const char[19] * D.44907;
  unsigned char D.44908;
  int D.44909;
  unsigned char D.44910;
  int D.44911;
  _Bool D.44912;
  _Bool D.44913;
  _Bool D.44914;
  const unsigned char * D.44917;
  unsigned char D.44918;
  int D.44919;
  const unsigned char * D.44920;
  unsigned char D.44921;
  int D.44922;
  _Bool D.44923;
  _Bool D.44924;
  const unsigned char * D.44927;
  unsigned char D.44928;
  int D.44929;
  const unsigned char * D.44930;
  unsigned char D.44931;
  int D.44932;
  _Bool D.44933;
  _Bool D.44934;
  const unsigned char * D.44937;
  unsigned char D.44938;
  int D.44939;
  const unsigned char * D.44940;
  unsigned char D.44941;
  int D.44942;
  const char * D.44944;
  char D.44947;
  _Bool D.44948;
  int D.44949;
  int D.29169;
  int iftmp.406;
  int D.29168;
  const char[10] * D.44955;
  unsigned char D.44956;
  int D.44957;
  unsigned char D.44958;
  int D.44959;
  _Bool D.44960;
  _Bool D.44961;
  _Bool D.44962;
  const unsigned char * D.44965;
  unsigned char D.44966;
  int D.44967;
  const unsigned char * D.44968;
  unsigned char D.44969;
  int D.44970;
  _Bool D.44971;
  _Bool D.44972;
  const unsigned char * D.44975;
  unsigned char D.44976;
  int D.44977;
  const unsigned char * D.44978;
  unsigned char D.44979;
  int D.44980;
  _Bool D.44981;
  _Bool D.44982;
  const unsigned char * D.44985;
  unsigned char D.44986;
  int D.44987;
  const unsigned char * D.44988;
  unsigned char D.44989;
  int D.44990;
  int D.29178;
  int iftmp.407;
  int D.29177;
  const char[14] * D.44996;
  unsigned char D.44997;
  int D.44998;
  unsigned char D.44999;
  int D.45000;
  _Bool D.45001;
  _Bool D.45002;
  _Bool D.45003;
  const unsigned char * D.45006;
  unsigned char D.45007;
  int D.45008;
  const unsigned char * D.45009;
  unsigned char D.45010;
  int D.45011;
  _Bool D.45012;
  _Bool D.45013;
  const unsigned char * D.45016;
  unsigned char D.45017;
  int D.45018;
  const unsigned char * D.45019;
  unsigned char D.45020;
  int D.45021;
  _Bool D.45022;
  _Bool D.45023;
  const unsigned char * D.45026;
  unsigned char D.45027;
  int D.45028;
  const unsigned char * D.45029;
  unsigned char D.45030;
  int D.45031;
  short unsigned int D.45033;
  int D.45036;
  unsigned int D.45039;
  unsigned int D.45040;
  int D.29192;
  int iftmp.408;
  int D.29191;
  unsigned char D.45044;
  int D.45045;
  _Bool D.45046;
  _Bool D.45047;
  _Bool D.45048;
  const unsigned char * D.45051;
  unsigned char D.45052;
  int D.45053;
  _Bool D.45054;
  _Bool D.45055;
  const unsigned char * D.45058;
  unsigned char D.45059;
  int D.45060;
  _Bool D.45061;
  _Bool D.45062;
  const unsigned char * D.45065;
  unsigned char D.45066;
  int D.45067;
  _Bool D.45069;
  unsigned int D.45070;
  unsigned int D.45071;
  unsigned int D.45072;
  int D.45073;
  unsigned int D.45074;
  unsigned int D.45075;
  int D.45076;
  int D.45077;
  int D.45082;
  struct MonoInst * D.45083;
  int D.45084;
  int D.45085;
  int D.45089;
  struct MonoInst * D.45090;
  int D.45091;
  int D.45092;
  unsigned char D.45097;
  int D.45101;
  struct MonoInst * D.45102;
  int D.45103;
  int D.45104;
  int D.45108;
  struct MonoInst * D.45109;
  int D.45110;
  int D.45111;
  unsigned int D.45114;
  unsigned int D.45115;
  int D.45116;
  unsigned char * D.45120;
  struct MonoBasicBlock * * D.45123;
  int D.45124;
  unsigned char * D.45125;
  int D.45126;
  int D.45127;
  unsigned int D.45128;
  unsigned int D.45129;
  struct MonoBasicBlock * * D.45130;
  unsigned int D.45131;
  short unsigned int D.45136;
  short unsigned int D.45137;
  _Bool D.45138;
  short unsigned int D.45139;
  _Bool D.45140;
  _Bool D.45141;
  short unsigned int D.45143;
  short unsigned int D.45144;
  struct MonoBasicBlock * * D.45145;
  struct MonoBasicBlock * * D.45146;
  struct MonoBasicBlock * D.45147;
  short unsigned int D.45152;
  _Bool D.45153;
  _Bool D.45154;
  _Bool D.45155;
  short unsigned int D.45157;
  short unsigned int D.45158;
  _Bool D.45159;
  short unsigned int D.45160;
  _Bool D.45161;
  _Bool D.45162;
  void * D.45165;
  struct MonoBasicBlock * * D.45166;
  struct MonoBasicBlock * * D.45167;
  unsigned char D.45171;
  unsigned char D.45172;
  unsigned int D.45175;
  unsigned int D.45176;
  int D.45177;
  short unsigned int D.45184;
  short unsigned int D.45185;
  _Bool D.45186;
  short unsigned int D.45187;
  _Bool D.45188;
  _Bool D.45189;
  short unsigned int D.45195;
  _Bool D.45196;
  _Bool D.45197;
  _Bool D.45198;
  short unsigned int D.45200;
  short unsigned int D.45201;
  _Bool D.45202;
  short unsigned int D.45203;
  _Bool D.45204;
  _Bool D.45205;
  int D.45217;
  struct MonoInst * D.45218;
  int D.45219;
  int D.45220;
  unsigned int D.45223;
  unsigned int D.45224;
  int D.45225;
  unsigned char * D.45229;
  int D.45232;
  int D.45233;
  unsigned int D.45234;
  unsigned int D.45235;
  struct MonoBasicBlock * * D.45236;
  short unsigned int D.45241;
  short unsigned int D.45242;
  _Bool D.45243;
  short unsigned int D.45244;
  _Bool D.45245;
  _Bool D.45246;
  short unsigned int D.45252;
  _Bool D.45253;
  _Bool D.45254;
  _Bool D.45255;
  short unsigned int D.45257;
  short unsigned int D.45258;
  _Bool D.45259;
  short unsigned int D.45260;
  _Bool D.45261;
  _Bool D.45262;
  void * D.45265;
  struct MonoBasicBlock * * D.45266;
  struct MonoBasicBlock * * D.45267;
  unsigned int D.45273;
  unsigned int D.45274;
  int D.45275;
  short unsigned int D.45282;
  short unsigned int D.45283;
  _Bool D.45284;
  short unsigned int D.45285;
  _Bool D.45286;
  _Bool D.45287;
  short unsigned int D.45293;
  _Bool D.45294;
  _Bool D.45295;
  _Bool D.45296;
  short unsigned int D.45298;
  short unsigned int D.45299;
  _Bool D.45300;
  short unsigned int D.45301;
  _Bool D.45302;
  _Bool D.45303;
  unsigned char * D.45306;
  int D.45309;
  int D.45310;
  unsigned int D.45311;
  unsigned int D.45312;
  struct MonoBasicBlock * * D.45313;
  short unsigned int D.45318;
  short unsigned int D.45319;
  _Bool D.45320;
  short unsigned int D.45321;
  _Bool D.45322;
  _Bool D.45323;
  short unsigned int D.45329;
  _Bool D.45330;
  _Bool D.45331;
  _Bool D.45332;
  short unsigned int D.45334;
  short unsigned int D.45335;
  _Bool D.45336;
  short unsigned int D.45337;
  _Bool D.45338;
  _Bool D.45339;
  int D.45347;
  struct MonoInst * D.45348;
  int D.45349;
  int D.45350;
  unsigned char * D.45354;
  int D.45357;
  int D.45358;
  unsigned int D.45359;
  unsigned int D.45360;
  struct MonoBasicBlock * * D.45361;
  short unsigned int D.45366;
  short unsigned int D.45367;
  _Bool D.45368;
  short unsigned int D.45369;
  _Bool D.45370;
  _Bool D.45371;
  short unsigned int D.45377;
  _Bool D.45378;
  _Bool D.45379;
  _Bool D.45380;
  short unsigned int D.45382;
  short unsigned int D.45383;
  _Bool D.45384;
  short unsigned int D.45385;
  _Bool D.45386;
  _Bool D.45387;
  int D.29210;
  int iftmp.409;
  int D.29209;
  const char[9] * D.45397;
  unsigned char D.45398;
  int D.45399;
  unsigned char D.45400;
  int D.45401;
  _Bool D.45402;
  _Bool D.45403;
  _Bool D.45404;
  const unsigned char * D.45407;
  unsigned char D.45408;
  int D.45409;
  const unsigned char * D.45410;
  unsigned char D.45411;
  int D.45412;
  _Bool D.45413;
  _Bool D.45414;
  const unsigned char * D.45417;
  unsigned char D.45418;
  int D.45419;
  const unsigned char * D.45420;
  unsigned char D.45421;
  int D.45422;
  _Bool D.45423;
  _Bool D.45424;
  const unsigned char * D.45427;
  unsigned char D.45428;
  int D.45429;
  const unsigned char * D.45430;
  unsigned char D.45431;
  int D.45432;
  unsigned int D.45436;
  unsigned int D.45437;
  int D.45438;
  int D.45443;
  struct MonoInst * D.45444;
  int D.45445;
  int D.45446;
  int D.45450;
  struct MonoInst * D.45451;
  int D.45452;
  int D.45453;
  int D.45458;
  struct MonoInst * D.45459;
  int D.45460;
  int D.45461;
  unsigned char D.45462;
  int D.29225;
  int iftmp.410;
  int D.29224;
  unsigned char D.45472;
  int D.45473;
  _Bool D.45474;
  _Bool D.45475;
  _Bool D.45476;
  const unsigned char * D.45479;
  unsigned char D.45480;
  int D.45481;
  _Bool D.45482;
  _Bool D.45483;
  const unsigned char * D.45486;
  unsigned char D.45487;
  int D.45488;
  _Bool D.45489;
  _Bool D.45490;
  const unsigned char * D.45493;
  unsigned char D.45494;
  int D.45495;
  unsigned int D.45499;
  int D.45500;
  int D.45505;
  struct MonoInst * D.45506;
  int D.45507;
  int D.45508;
  int D.45512;
  struct MonoInst * D.45513;
  int D.45514;
  int D.45515;
  unsigned char D.45520;
  int D.29238;
  int iftmp.411;
  int D.29237;
  const char[23] * D.45529;
  unsigned char D.45530;
  int D.45531;
  unsigned char D.45532;
  int D.45533;
  _Bool D.45534;
  _Bool D.45535;
  _Bool D.45536;
  const unsigned char * D.45539;
  unsigned char D.45540;
  int D.45541;
  const unsigned char * D.45542;
  unsigned char D.45543;
  int D.45544;
  _Bool D.45545;
  _Bool D.45546;
  const unsigned char * D.45549;
  unsigned char D.45550;
  int D.45551;
  const unsigned char * D.45552;
  unsigned char D.45553;
  int D.45554;
  _Bool D.45555;
  _Bool D.45556;
  const unsigned char * D.45559;
  unsigned char D.45560;
  int D.45561;
  const unsigned char * D.45562;
  unsigned char D.45563;
  int D.45564;
  unsigned int D.45568;
  int D.45569;
  struct MonoClass * D.45573;
  int D.29247;
  int iftmp.412;
  int D.29246;
  const char[13] * D.45579;
  unsigned char D.45580;
  int D.45581;
  unsigned char D.45582;
  int D.45583;
  _Bool D.45584;
  _Bool D.45585;
  _Bool D.45586;
  const unsigned char * D.45589;
  unsigned char D.45590;
  int D.45591;
  const unsigned char * D.45592;
  unsigned char D.45593;
  int D.45594;
  _Bool D.45595;
  _Bool D.45596;
  const unsigned char * D.45599;
  unsigned char D.45600;
  int D.45601;
  const unsigned char * D.45602;
  unsigned char D.45603;
  int D.45604;
  _Bool D.45605;
  _Bool D.45606;
  const unsigned char * D.45609;
  unsigned char D.45610;
  int D.45611;
  const unsigned char * D.45612;
  unsigned char D.45613;
  int D.45614;
  int D.29256;
  int iftmp.413;
  int D.29255;
  const char[14] * D.45624;
  unsigned char D.45625;
  int D.45626;
  unsigned char D.45627;
  int D.45628;
  _Bool D.45629;
  _Bool D.45630;
  _Bool D.45631;
  const unsigned char * D.45634;
  unsigned char D.45635;
  int D.45636;
  const unsigned char * D.45637;
  unsigned char D.45638;
  int D.45639;
  _Bool D.45640;
  _Bool D.45641;
  const unsigned char * D.45644;
  unsigned char D.45645;
  int D.45646;
  const unsigned char * D.45647;
  unsigned char D.45648;
  int D.45649;
  _Bool D.45650;
  _Bool D.45651;
  const unsigned char * D.45654;
  unsigned char D.45655;
  int D.45656;
  const unsigned char * D.45657;
  unsigned char D.45658;
  int D.45659;
  struct MonoClass * D.45664;
  struct MonoImage * D.45670;
  int D.29265;
  int iftmp.414;
  int D.29264;
  const char[17] * D.45675;
  unsigned char D.45676;
  int D.45677;
  unsigned char D.45678;
  int D.45679;
  _Bool D.45680;
  _Bool D.45681;
  _Bool D.45682;
  const unsigned char * D.45685;
  unsigned char D.45686;
  int D.45687;
  const unsigned char * D.45688;
  unsigned char D.45689;
  int D.45690;
  _Bool D.45691;
  _Bool D.45692;
  const unsigned char * D.45695;
  unsigned char D.45696;
  int D.45697;
  const unsigned char * D.45698;
  unsigned char D.45699;
  int D.45700;
  _Bool D.45701;
  _Bool D.45702;
  const unsigned char * D.45705;
  unsigned char D.45706;
  int D.45707;
  const unsigned char * D.45708;
  unsigned char D.45709;
  int D.45710;
  const char * D.45712;
  int D.29274;
  int iftmp.415;
  int D.29273;
  const char[12] * D.45717;
  unsigned char D.45718;
  int D.45719;
  unsigned char D.45720;
  int D.45721;
  _Bool D.45722;
  _Bool D.45723;
  _Bool D.45724;
  const unsigned char * D.45727;
  unsigned char D.45728;
  int D.45729;
  const unsigned char * D.45730;
  unsigned char D.45731;
  int D.45732;
  _Bool D.45733;
  _Bool D.45734;
  const unsigned char * D.45737;
  unsigned char D.45738;
  int D.45739;
  const unsigned char * D.45740;
  unsigned char D.45741;
  int D.45742;
  _Bool D.45743;
  _Bool D.45744;
  const unsigned char * D.45747;
  unsigned char D.45748;
  int D.45749;
  const unsigned char * D.45750;
  unsigned char D.45751;
  int D.45752;
  const char * D.45754;
  int D.29283;
  int iftmp.416;
  int D.29282;
  unsigned char D.45759;
  int D.45760;
  _Bool D.45761;
  _Bool D.45762;
  _Bool D.45763;
  const unsigned char * D.45766;
  unsigned char D.45767;
  int D.45768;
  _Bool D.45769;
  _Bool D.45770;
  const unsigned char * D.45773;
  unsigned char D.45774;
  int D.45775;
  _Bool D.45776;
  _Bool D.45777;
  const unsigned char * D.45780;
  unsigned char D.45781;
  int D.45782;
  int D.29292;
  int iftmp.417;
  int D.29291;
  const char[6] * D.45795;
  unsigned char D.45796;
  int D.45797;
  unsigned char D.45798;
  int D.45799;
  _Bool D.45800;
  _Bool D.45801;
  _Bool D.45802;
  const unsigned char * D.45805;
  unsigned char D.45806;
  int D.45807;
  const unsigned char * D.45808;
  unsigned char D.45809;
  int D.45810;
  _Bool D.45811;
  _Bool D.45812;
  const unsigned char * D.45815;
  unsigned char D.45816;
  int D.45817;
  const unsigned char * D.45818;
  unsigned char D.45819;
  int D.45820;
  _Bool D.45821;
  _Bool D.45822;
  const unsigned char * D.45825;
  unsigned char D.45826;
  int D.45827;
  const unsigned char * D.45828;
  unsigned char D.45829;
  int D.45830;
  int D.29301;
  int iftmp.418;
  int D.29300;
  const char[9] * D.45837;
  unsigned char D.45838;
  int D.45839;
  unsigned char D.45840;
  int D.45841;
  _Bool D.45842;
  _Bool D.45843;
  _Bool D.45844;
  const unsigned char * D.45847;
  unsigned char D.45848;
  int D.45849;
  const unsigned char * D.45850;
  unsigned char D.45851;
  int D.45852;
  _Bool D.45853;
  _Bool D.45854;
  const unsigned char * D.45857;
  unsigned char D.45858;
  int D.45859;
  const unsigned char * D.45860;
  unsigned char D.45861;
  int D.45862;
  _Bool D.45863;
  _Bool D.45864;
  const unsigned char * D.45867;
  unsigned char D.45868;
  int D.45869;
  const unsigned char * D.45870;
  unsigned char D.45871;
  int D.45872;
  struct MonoMethod * D.45876;
  int D.45877;
  int D.29310;
  int iftmp.419;
  int D.29309;
  const char[23] * D.45889;
  unsigned char D.45890;
  int D.45891;
  unsigned char D.45892;
  int D.45893;
  _Bool D.45894;
  _Bool D.45895;
  _Bool D.45896;
  const unsigned char * D.45899;
  unsigned char D.45900;
  int D.45901;
  const unsigned char * D.45902;
  unsigned char D.45903;
  int D.45904;
  _Bool D.45905;
  _Bool D.45906;
  const unsigned char * D.45909;
  unsigned char D.45910;
  int D.45911;
  const unsigned char * D.45912;
  unsigned char D.45913;
  int D.45914;
  _Bool D.45915;
  _Bool D.45916;
  const unsigned char * D.45919;
  unsigned char D.45920;
  int D.45921;
  const unsigned char * D.45922;
  unsigned char D.45923;
  int D.45924;
  int D.29319;
  int iftmp.420;
  int D.29318;
  const char[12] * D.45931;
  unsigned char D.45932;
  int D.45933;
  unsigned char D.45934;
  int D.45935;
  _Bool D.45936;
  _Bool D.45937;
  _Bool D.45938;
  const unsigned char * D.45941;
  unsigned char D.45942;
  int D.45943;
  const unsigned char * D.45944;
  unsigned char D.45945;
  int D.45946;
  _Bool D.45947;
  _Bool D.45948;
  const unsigned char * D.45951;
  unsigned char D.45952;
  int D.45953;
  const unsigned char * D.45954;
  unsigned char D.45955;
  int D.45956;
  _Bool D.45957;
  _Bool D.45958;
  const unsigned char * D.45961;
  unsigned char D.45962;
  int D.45963;
  const unsigned char * D.45964;
  unsigned char D.45965;
  int D.45966;
  unsigned int D.45970;
  int D.45971;
  struct MonoClass * D.45976;
  int D.29328;
  int iftmp.421;
  int D.29327;
  struct MonoAssembly * D.45985;
  const char[8] * D.45986;
  unsigned char D.45987;
  int D.45988;
  unsigned char D.45989;
  int D.45990;
  _Bool D.45991;
  _Bool D.45992;
  _Bool D.45993;
  const unsigned char * D.45996;
  unsigned char D.45997;
  int D.45998;
  const unsigned char * D.45999;
  unsigned char D.46000;
  int D.46001;
  _Bool D.46002;
  _Bool D.46003;
  const unsigned char * D.46006;
  unsigned char D.46007;
  int D.46008;
  const unsigned char * D.46009;
  unsigned char D.46010;
  int D.46011;
  _Bool D.46012;
  _Bool D.46013;
  const unsigned char * D.46016;
  unsigned char D.46017;
  int D.46018;
  const unsigned char * D.46019;
  unsigned char D.46020;
  int D.46021;
  const char * D.46023;
  int D.29337;
  int iftmp.422;
  int D.29336;
  const char[10] * D.46028;
  unsigned char D.46029;
  int D.46030;
  unsigned char D.46031;
  int D.46032;
  _Bool D.46033;
  _Bool D.46034;
  _Bool D.46035;
  const unsigned char * D.46038;
  unsigned char D.46039;
  int D.46040;
  const unsigned char * D.46041;
  unsigned char D.46042;
  int D.46043;
  _Bool D.46044;
  _Bool D.46045;
  const unsigned char * D.46048;
  unsigned char D.46049;
  int D.46050;
  const unsigned char * D.46051;
  unsigned char D.46052;
  int D.46053;
  _Bool D.46054;
  _Bool D.46055;
  const unsigned char * D.46058;
  unsigned char D.46059;
  int D.46060;
  const unsigned char * D.46061;
  unsigned char D.46062;
  int D.46063;
  int D.29346;
  int iftmp.423;
  int D.29345;
  const char[9] * D.46068;
  unsigned char D.46069;
  int D.46070;
  unsigned char D.46071;
  int D.46072;
  _Bool D.46073;
  _Bool D.46074;
  _Bool D.46075;
  const unsigned char * D.46078;
  unsigned char D.46079;
  int D.46080;
  const unsigned char * D.46081;
  unsigned char D.46082;
  int D.46083;
  _Bool D.46084;
  _Bool D.46085;
  const unsigned char * D.46088;
  unsigned char D.46089;
  int D.46090;
  const unsigned char * D.46091;
  unsigned char D.46092;
  int D.46093;
  _Bool D.46094;
  _Bool D.46095;
  const unsigned char * D.46098;
  unsigned char D.46099;
  int D.46100;
  const unsigned char * D.46101;
  unsigned char D.46102;
  int D.46103;
  int D.29355;
  int iftmp.424;
  int D.29354;
  const char[10] * D.46110;
  unsigned char D.46111;
  int D.46112;
  unsigned char D.46113;
  int D.46114;
  _Bool D.46115;
  _Bool D.46116;
  _Bool D.46117;
  const unsigned char * D.46120;
  unsigned char D.46121;
  int D.46122;
  const unsigned char * D.46123;
  unsigned char D.46124;
  int D.46125;
  _Bool D.46126;
  _Bool D.46127;
  const unsigned char * D.46130;
  unsigned char D.46131;
  int D.46132;
  const unsigned char * D.46133;
  unsigned char D.46134;
  int D.46135;
  _Bool D.46136;
  _Bool D.46137;
  const unsigned char * D.46140;
  unsigned char D.46141;
  int D.46142;
  const unsigned char * D.46143;
  unsigned char D.46144;
  int D.46145;
  unsigned char D.46149;
  short unsigned int D.46152;
  _Bool D.46153;
  _Bool D.46154;
  _Bool D.46155;
  short unsigned int D.46158;
  short unsigned int D.46161;
  _Bool D.46162;
  long int D.46163;
  long int D.46164;
  void * D.46167;
  int D.46168;
  _Bool D.46169;
  long int D.46170;
  long int D.46171;
  void * D.46175;
  int D.46176;
  _Bool D.46177;
  long int D.46178;
  long int D.46179;
  int D.46182;
  int D.46183;
  struct MonoDomain * D.46184;
  struct MonoImage * D.46185;
  unsigned int D.46186;
  unsigned int D.46187;
  unsigned int D.46188;
  int D.46189;
  char * D.46190;
  struct MonoInst * ins;
  static struct MonoClass * runtime_helpers_class = 0B;

  ins = 0B;
  runtime_helpers_class.397 = runtime_helpers_class;
  if (runtime_helpers_class.397 == 0B) goto <D.44328>; else goto <D.44329>;
  <D.44328>:
  D.44330 = mono_defaults.corlib;
  runtime_helpers_class.398 = mono_class_from_name (D.44330, "System.Runtime.CompilerServices", "RuntimeHelpers");
  runtime_helpers_class = runtime_helpers_class.398;
  <D.44329>:
  D.44332 = cmethod->klass;
  D.44333 = mono_defaults.string_class;
  if (D.44332 == D.44333) goto <D.44334>; else goto <D.44335>;
  <D.44334>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.44339 = "get_Chars";
      D.44340 = MEM[(const unsigned char *)D.44339];
      D.44341 = (int) D.44340;
      D.44342 = *__s2;
      D.44343 = (int) D.44342;
      __result = D.44341 - D.44343;
      {
        D.44344 = __s2_len != 0;
        D.44345 = __result == 0;
        D.44346 = D.44344 & D.44345;
        if (D.44346 != 0) goto <D.44347>; else goto <D.44348>;
        <D.44347>:
        D.44349 = &MEM[(void *)"get_Chars" + 1B];
        D.44350 = *D.44349;
        D.44351 = (int) D.44350;
        D.44352 = __s2 + 1;
        D.44353 = *D.44352;
        D.44354 = (int) D.44353;
        __result = D.44351 - D.44354;
        D.44355 = __s2_len > 1;
        D.44345 = __result == 0;
        D.44356 = D.44355 & D.44345;
        if (D.44356 != 0) goto <D.44357>; else goto <D.44358>;
        <D.44357>:
        D.44359 = &MEM[(void *)"get_Chars" + 2B];
        D.44360 = *D.44359;
        D.44361 = (int) D.44360;
        D.44362 = __s2 + 2;
        D.44363 = *D.44362;
        D.44364 = (int) D.44363;
        __result = D.44361 - D.44364;
        D.44365 = __s2_len > 2;
        D.44345 = __result == 0;
        D.44366 = D.44365 & D.44345;
        if (D.44366 != 0) goto <D.44367>; else goto <D.44368>;
        <D.44367>:
        D.44369 = &MEM[(void *)"get_Chars" + 3B];
        D.44370 = *D.44369;
        D.44371 = (int) D.44370;
        D.44372 = __s2 + 3;
        D.44373 = *D.44372;
        D.44374 = (int) D.44373;
        __result = D.44371 - D.44374;
        <D.44368>:
        <D.44358>:
        <D.44348>:
      }
      D.29059 = __result;
    }
    iftmp.399 = -D.29059;
    goto <D.44375>;
    <D.44338>:
    D.44376 = cmethod->name;
    iftmp.399 = __builtin_strcmp (D.44376, "get_Chars");
    <D.44375>:
    D.29060 = iftmp.399;
  }
  if (D.29060 == 0) goto <D.44377>; else goto <D.44378>;
  <D.44377>:
  {
    int dreg;
    int index_reg;
    int mult_reg;
    int add_reg;

    D.44379 = alloc_ireg (cfg);
    dreg = (int) D.44379;
    D.44380 = alloc_preg (cfg);
    index_reg = (int) D.44380;
    D.44381 = alloc_preg (cfg);
    mult_reg = (int) D.44381;
    D.44382 = alloc_preg (cfg);
    add_reg = (int) D.44382;
    D.44383 = args + 4;
    D.44384 = *D.44383;
    index_reg = D.44384->dreg;
    D.44385 = cfg->opt;
    D.44386 = D.44385 & 134217728;
    if (D.44386 == 0) goto <D.44387>; else goto <D.44388>;
    <D.44387>:
    D.44385 = cfg->opt;
    D.44389 = D.44385 & 262144;
    if (D.44389 == 0) goto <D.44390>; else goto <D.44391>;
    <D.44390>:
    D.44392 = BIT_FIELD_REF <*cfg, 8, 3424>;
    D.44393 = D.44392 & 64;
    if (D.44393 != 0) goto <D.44394>; else goto <D.44395>;
    <D.44394>:
    {
      struct MonoInst * inst;

      D.44396 = cfg->mempool;
      inst = mono_mempool_alloc (D.44396, 56);
      inst->data.op[1].const_val = 0;
      D.44397 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.44397;
      inst->prev = 0B;
      D.44398 = inst->prev;
      inst->next = D.44398;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.44399 = inst->sreg3;
      inst->sreg2 = D.44399;
      D.44400 = inst->sreg2;
      inst->sreg1 = D.44400;
      D.44401 = cfg->ip;
      inst->cil_code = D.44401;
      inst->dreg = -1;
      D.44402 = *args;
      D.44403 = D.44402->dreg;
      inst->sreg1 = D.44403;
      inst->data.op[1].const_val = 0;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.44406>; else goto <D.44407>;
      <D.44406>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.44405->next = inst;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      inst->prev = D.44405;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      goto <D.44408>;
      <D.44407>:
      D.44404 = cfg->cbb;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      D.44405 = D.44404->last_ins;
      D.44404->code = D.44405;
      <D.44408>:
    }
    {
      struct MonoInst * inst;

      D.44396 = cfg->mempool;
      inst = mono_mempool_alloc (D.44396, 56);
      inst->data.op[1].const_val = 0;
      D.44409 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.44409;
      inst->prev = 0B;
      D.44410 = inst->prev;
      inst->next = D.44410;
      inst->opcode = 451;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.44411 = inst->sreg3;
      inst->sreg2 = D.44411;
      D.44412 = inst->sreg2;
      inst->sreg1 = D.44412;
      D.44401 = cfg->ip;
      inst->cil_code = D.44401;
      inst->data.op[1].p = "NullReferenceException";
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.44413>; else goto <D.44414>;
      <D.44413>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.44405->next = inst;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      inst->prev = D.44405;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      goto <D.44415>;
      <D.44414>:
      D.44404 = cfg->cbb;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      D.44405 = D.44404->last_ins;
      D.44404->code = D.44405;
      <D.44415>:
    }
    goto <D.44416>;
    <D.44395>:
    <D.44416>:
    if (0 != 0) goto <D.44417>; else goto <D.44418>;
    <D.44417>:
    {
      int _length_reg;

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

        __ins_flags = 32;
        D.44422 = __ins_flags & 32;
        if (D.44422 != 0) goto <D.44423>; else goto <D.44424>;
        <D.44423>:
        D.44392 = BIT_FIELD_REF <*cfg, 8, 3424>;
        D.44393 = D.44392 & 64;
        if (D.44393 != 0) goto <D.44425>; else goto <D.44426>;
        <D.44425>:
        {
          struct MonoInst * inst;

          D.44396 = cfg->mempool;
          inst = mono_mempool_alloc (D.44396, 56);
          inst->data.op[1].const_val = 0;
          D.44427 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.44427;
          inst->prev = 0B;
          D.44428 = inst->prev;
          inst->next = D.44428;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.44429 = inst->sreg3;
          inst->sreg2 = D.44429;
          D.44430 = inst->sreg2;
          inst->sreg1 = D.44430;
          D.44401 = cfg->ip;
          inst->cil_code = D.44401;
          inst->dreg = -1;
          D.44402 = *args;
          D.44403 = D.44402->dreg;
          inst->sreg1 = D.44403;
          inst->data.op[1].const_val = 0;
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          if (D.44405 != 0B) goto <D.44431>; else goto <D.44432>;
          <D.44431>:
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          D.44405->next = inst;
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          inst->prev = D.44405;
          D.44404 = cfg->cbb;
          D.44404->last_ins = inst;
          goto <D.44433>;
          <D.44432>:
          D.44404 = cfg->cbb;
          D.44404 = cfg->cbb;
          D.44404->last_ins = inst;
          D.44405 = D.44404->last_ins;
          D.44404->code = D.44405;
          <D.44433>:
        }
        {
          struct MonoInst * inst;

          D.44396 = cfg->mempool;
          inst = mono_mempool_alloc (D.44396, 56);
          inst->data.op[1].const_val = 0;
          D.44434 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.44434;
          inst->prev = 0B;
          D.44435 = inst->prev;
          inst->next = D.44435;
          inst->opcode = 451;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.44436 = inst->sreg3;
          inst->sreg2 = D.44436;
          D.44437 = inst->sreg2;
          inst->sreg1 = D.44437;
          D.44401 = cfg->ip;
          inst->cil_code = D.44401;
          inst->data.op[1].p = "NullReferenceException";
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          if (D.44405 != 0B) goto <D.44438>; else goto <D.44439>;
          <D.44438>:
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          D.44405->next = inst;
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          inst->prev = D.44405;
          D.44404 = cfg->cbb;
          D.44404->last_ins = inst;
          goto <D.44440>;
          <D.44439>:
          D.44404 = cfg->cbb;
          D.44404 = cfg->cbb;
          D.44404->last_ins = inst;
          D.44405 = D.44404->last_ins;
          D.44404->code = D.44405;
          <D.44440>:
        }
        goto <D.44441>;
        <D.44426>:
        <D.44441>:
        <D.44424>:
        D.44396 = cfg->mempool;
        inst = mono_mempool_alloc (D.44396, 56);
        inst->data.op[1].const_val = 0;
        D.44442 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.44442;
        inst->prev = 0B;
        D.44443 = inst->prev;
        inst->next = D.44443;
        inst->opcode = 393;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.44444 = inst->sreg3;
        inst->sreg2 = D.44444;
        D.44445 = inst->sreg2;
        inst->sreg1 = D.44445;
        D.44401 = cfg->ip;
        inst->cil_code = D.44401;
        inst->dreg = _length_reg;
        D.44402 = *args;
        D.44403 = D.44402->dreg;
        inst->sreg1 = D.44403;
        inst->data.op[0].const_val = 8;
        inst->type = 1;
        D.44446 = (unsigned char) __ins_flags;
        inst->flags = D.44446;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        if (D.44405 != 0B) goto <D.44447>; else goto <D.44448>;
        <D.44447>:
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        D.44405->next = inst;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        inst->prev = D.44405;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        goto <D.44449>;
        <D.44448>:
        D.44404 = cfg->cbb;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        D.44405 = D.44404->last_ins;
        D.44404->code = D.44405;
        <D.44449>:
      }
      goto <D.44450>;
      <D.44421>:
      {
        struct MonoInst * inst;
        int __ins_flags;

        __ins_flags = 64;
        D.44451 = __ins_flags & 32;
        if (D.44451 != 0) goto <D.44452>; else goto <D.44453>;
        <D.44452>:
        D.44392 = BIT_FIELD_REF <*cfg, 8, 3424>;
        D.44393 = D.44392 & 64;
        if (D.44393 != 0) goto <D.44454>; else goto <D.44455>;
        <D.44454>:
        {
          struct MonoInst * inst;

          D.44396 = cfg->mempool;
          inst = mono_mempool_alloc (D.44396, 56);
          inst->data.op[1].const_val = 0;
          D.44456 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.44456;
          inst->prev = 0B;
          D.44457 = inst->prev;
          inst->next = D.44457;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.44458 = inst->sreg3;
          inst->sreg2 = D.44458;
          D.44459 = inst->sreg2;
          inst->sreg1 = D.44459;
          D.44401 = cfg->ip;
          inst->cil_code = D.44401;
          inst->dreg = -1;
          D.44402 = *args;
          D.44403 = D.44402->dreg;
          inst->sreg1 = D.44403;
          inst->data.op[1].const_val = 0;
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          if (D.44405 != 0B) goto <D.44460>; else goto <D.44461>;
          <D.44460>:
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          D.44405->next = inst;
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          inst->prev = D.44405;
          D.44404 = cfg->cbb;
          D.44404->last_ins = inst;
          goto <D.44462>;
          <D.44461>:
          D.44404 = cfg->cbb;
          D.44404 = cfg->cbb;
          D.44404->last_ins = inst;
          D.44405 = D.44404->last_ins;
          D.44404->code = D.44405;
          <D.44462>:
        }
        {
          struct MonoInst * inst;

          D.44396 = cfg->mempool;
          inst = mono_mempool_alloc (D.44396, 56);
          inst->data.op[1].const_val = 0;
          D.44463 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.44463;
          inst->prev = 0B;
          D.44464 = inst->prev;
          inst->next = D.44464;
          inst->opcode = 451;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.44465 = inst->sreg3;
          inst->sreg2 = D.44465;
          D.44466 = inst->sreg2;
          inst->sreg1 = D.44466;
          D.44401 = cfg->ip;
          inst->cil_code = D.44401;
          inst->data.op[1].p = "NullReferenceException";
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          if (D.44405 != 0B) goto <D.44467>; else goto <D.44468>;
          <D.44467>:
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          D.44405->next = inst;
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          inst->prev = D.44405;
          D.44404 = cfg->cbb;
          D.44404->last_ins = inst;
          goto <D.44469>;
          <D.44468>:
          D.44404 = cfg->cbb;
          D.44404 = cfg->cbb;
          D.44404->last_ins = inst;
          D.44405 = D.44404->last_ins;
          D.44404->code = D.44405;
          <D.44469>:
        }
        goto <D.44470>;
        <D.44455>:
        <D.44470>:
        <D.44453>:
        D.44396 = cfg->mempool;
        inst = mono_mempool_alloc (D.44396, 56);
        inst->data.op[1].const_val = 0;
        D.44471 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.44471;
        inst->prev = 0B;
        D.44472 = inst->prev;
        inst->next = D.44472;
        inst->opcode = 393;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.44473 = inst->sreg3;
        inst->sreg2 = D.44473;
        D.44474 = inst->sreg2;
        inst->sreg1 = D.44474;
        D.44401 = cfg->ip;
        inst->cil_code = D.44401;
        inst->dreg = _length_reg;
        D.44402 = *args;
        D.44403 = D.44402->dreg;
        inst->sreg1 = D.44403;
        inst->data.op[0].const_val = 8;
        inst->type = 1;
        D.44475 = (unsigned char) __ins_flags;
        inst->flags = D.44475;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        if (D.44405 != 0B) goto <D.44476>; else goto <D.44477>;
        <D.44476>:
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        D.44405->next = inst;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        inst->prev = D.44405;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        goto <D.44478>;
        <D.44477>:
        D.44404 = cfg->cbb;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        D.44405 = D.44404->last_ins;
        D.44404->code = D.44405;
        <D.44478>:
      }
      <D.44450>:
      {
        struct MonoInst * inst;

        D.44396 = cfg->mempool;
        inst = mono_mempool_alloc (D.44396, 56);
        inst->data.op[1].const_val = 0;
        D.44479 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.44479;
        inst->prev = 0B;
        D.44480 = inst->prev;
        inst->next = D.44480;
        inst->opcode = 322;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.44481 = inst->sreg3;
        inst->sreg2 = D.44481;
        D.44482 = inst->sreg2;
        inst->sreg1 = D.44482;
        D.44401 = cfg->ip;
        inst->cil_code = D.44401;
        inst->dreg = -1;
        inst->sreg1 = _length_reg;
        inst->sreg2 = index_reg;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        if (D.44405 != 0B) goto <D.44483>; else goto <D.44484>;
        <D.44483>:
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        D.44405->next = inst;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        inst->prev = D.44405;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        goto <D.44485>;
        <D.44484>:
        D.44404 = cfg->cbb;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        D.44405 = D.44404->last_ins;
        D.44404->code = D.44405;
        <D.44485>:
      }
      {
        struct MonoInst * inst;

        D.44396 = cfg->mempool;
        inst = mono_mempool_alloc (D.44396, 56);
        inst->data.op[1].const_val = 0;
        D.44486 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.44486;
        inst->prev = 0B;
        D.44487 = inst->prev;
        inst->next = D.44487;
        inst->opcode = 459;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.44488 = inst->sreg3;
        inst->sreg2 = D.44488;
        D.44489 = inst->sreg2;
        inst->sreg1 = D.44489;
        D.44401 = cfg->ip;
        inst->cil_code = D.44401;
        inst->data.op[1].p = "IndexOutOfRangeException";
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        if (D.44405 != 0B) goto <D.44490>; else goto <D.44491>;
        <D.44490>:
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        D.44405->next = inst;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        inst->prev = D.44405;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        goto <D.44492>;
        <D.44491>:
        D.44404 = cfg->cbb;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        D.44405 = D.44404->last_ins;
        D.44404->code = D.44405;
        <D.44492>:
      }
    }
    goto <D.44493>;
    <D.44418>:
    {
      int _length_reg;

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

        __ins_flags = 32;
        D.44497 = __ins_flags & 32;
        if (D.44497 != 0) goto <D.44498>; else goto <D.44499>;
        <D.44498>:
        D.44392 = BIT_FIELD_REF <*cfg, 8, 3424>;
        D.44393 = D.44392 & 64;
        if (D.44393 != 0) goto <D.44500>; else goto <D.44501>;
        <D.44500>:
        {
          struct MonoInst * inst;

          D.44396 = cfg->mempool;
          inst = mono_mempool_alloc (D.44396, 56);
          inst->data.op[1].const_val = 0;
          D.44502 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.44502;
          inst->prev = 0B;
          D.44503 = inst->prev;
          inst->next = D.44503;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.44504 = inst->sreg3;
          inst->sreg2 = D.44504;
          D.44505 = inst->sreg2;
          inst->sreg1 = D.44505;
          D.44401 = cfg->ip;
          inst->cil_code = D.44401;
          inst->dreg = -1;
          D.44402 = *args;
          D.44403 = D.44402->dreg;
          inst->sreg1 = D.44403;
          inst->data.op[1].const_val = 0;
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          if (D.44405 != 0B) goto <D.44506>; else goto <D.44507>;
          <D.44506>:
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          D.44405->next = inst;
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          inst->prev = D.44405;
          D.44404 = cfg->cbb;
          D.44404->last_ins = inst;
          goto <D.44508>;
          <D.44507>:
          D.44404 = cfg->cbb;
          D.44404 = cfg->cbb;
          D.44404->last_ins = inst;
          D.44405 = D.44404->last_ins;
          D.44404->code = D.44405;
          <D.44508>:
        }
        {
          struct MonoInst * inst;

          D.44396 = cfg->mempool;
          inst = mono_mempool_alloc (D.44396, 56);
          inst->data.op[1].const_val = 0;
          D.44509 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.44509;
          inst->prev = 0B;
          D.44510 = inst->prev;
          inst->next = D.44510;
          inst->opcode = 451;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.44511 = inst->sreg3;
          inst->sreg2 = D.44511;
          D.44512 = inst->sreg2;
          inst->sreg1 = D.44512;
          D.44401 = cfg->ip;
          inst->cil_code = D.44401;
          inst->data.op[1].p = "NullReferenceException";
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          if (D.44405 != 0B) goto <D.44513>; else goto <D.44514>;
          <D.44513>:
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          D.44405->next = inst;
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          inst->prev = D.44405;
          D.44404 = cfg->cbb;
          D.44404->last_ins = inst;
          goto <D.44515>;
          <D.44514>:
          D.44404 = cfg->cbb;
          D.44404 = cfg->cbb;
          D.44404->last_ins = inst;
          D.44405 = D.44404->last_ins;
          D.44404->code = D.44405;
          <D.44515>:
        }
        goto <D.44516>;
        <D.44501>:
        <D.44516>:
        <D.44499>:
        D.44396 = cfg->mempool;
        inst = mono_mempool_alloc (D.44396, 56);
        inst->data.op[1].const_val = 0;
        D.44517 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.44517;
        inst->prev = 0B;
        D.44518 = inst->prev;
        inst->next = D.44518;
        inst->opcode = 393;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.44519 = inst->sreg3;
        inst->sreg2 = D.44519;
        D.44520 = inst->sreg2;
        inst->sreg1 = D.44520;
        D.44401 = cfg->ip;
        inst->cil_code = D.44401;
        inst->dreg = _length_reg;
        D.44402 = *args;
        D.44403 = D.44402->dreg;
        inst->sreg1 = D.44403;
        inst->data.op[0].const_val = 8;
        inst->type = 1;
        D.44521 = (unsigned char) __ins_flags;
        inst->flags = D.44521;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        if (D.44405 != 0B) goto <D.44522>; else goto <D.44523>;
        <D.44522>:
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        D.44405->next = inst;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        inst->prev = D.44405;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        goto <D.44524>;
        <D.44523>:
        D.44404 = cfg->cbb;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        D.44405 = D.44404->last_ins;
        D.44404->code = D.44405;
        <D.44524>:
      }
      goto <D.44525>;
      <D.44496>:
      {
        struct MonoInst * inst;
        int __ins_flags;

        __ins_flags = 64;
        D.44526 = __ins_flags & 32;
        if (D.44526 != 0) goto <D.44527>; else goto <D.44528>;
        <D.44527>:
        D.44392 = BIT_FIELD_REF <*cfg, 8, 3424>;
        D.44393 = D.44392 & 64;
        if (D.44393 != 0) goto <D.44529>; else goto <D.44530>;
        <D.44529>:
        {
          struct MonoInst * inst;

          D.44396 = cfg->mempool;
          inst = mono_mempool_alloc (D.44396, 56);
          inst->data.op[1].const_val = 0;
          D.44531 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.44531;
          inst->prev = 0B;
          D.44532 = inst->prev;
          inst->next = D.44532;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.44533 = inst->sreg3;
          inst->sreg2 = D.44533;
          D.44534 = inst->sreg2;
          inst->sreg1 = D.44534;
          D.44401 = cfg->ip;
          inst->cil_code = D.44401;
          inst->dreg = -1;
          D.44402 = *args;
          D.44403 = D.44402->dreg;
          inst->sreg1 = D.44403;
          inst->data.op[1].const_val = 0;
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          if (D.44405 != 0B) goto <D.44535>; else goto <D.44536>;
          <D.44535>:
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          D.44405->next = inst;
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          inst->prev = D.44405;
          D.44404 = cfg->cbb;
          D.44404->last_ins = inst;
          goto <D.44537>;
          <D.44536>:
          D.44404 = cfg->cbb;
          D.44404 = cfg->cbb;
          D.44404->last_ins = inst;
          D.44405 = D.44404->last_ins;
          D.44404->code = D.44405;
          <D.44537>:
        }
        {
          struct MonoInst * inst;

          D.44396 = cfg->mempool;
          inst = mono_mempool_alloc (D.44396, 56);
          inst->data.op[1].const_val = 0;
          D.44538 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.44538;
          inst->prev = 0B;
          D.44539 = inst->prev;
          inst->next = D.44539;
          inst->opcode = 451;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.44540 = inst->sreg3;
          inst->sreg2 = D.44540;
          D.44541 = inst->sreg2;
          inst->sreg1 = D.44541;
          D.44401 = cfg->ip;
          inst->cil_code = D.44401;
          inst->data.op[1].p = "NullReferenceException";
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          if (D.44405 != 0B) goto <D.44542>; else goto <D.44543>;
          <D.44542>:
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          D.44405->next = inst;
          D.44404 = cfg->cbb;
          D.44405 = D.44404->last_ins;
          inst->prev = D.44405;
          D.44404 = cfg->cbb;
          D.44404->last_ins = inst;
          goto <D.44544>;
          <D.44543>:
          D.44404 = cfg->cbb;
          D.44404 = cfg->cbb;
          D.44404->last_ins = inst;
          D.44405 = D.44404->last_ins;
          D.44404->code = D.44405;
          <D.44544>:
        }
        goto <D.44545>;
        <D.44530>:
        <D.44545>:
        <D.44528>:
        D.44396 = cfg->mempool;
        inst = mono_mempool_alloc (D.44396, 56);
        inst->data.op[1].const_val = 0;
        D.44546 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.44546;
        inst->prev = 0B;
        D.44547 = inst->prev;
        inst->next = D.44547;
        inst->opcode = 393;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.44548 = inst->sreg3;
        inst->sreg2 = D.44548;
        D.44549 = inst->sreg2;
        inst->sreg1 = D.44549;
        D.44401 = cfg->ip;
        inst->cil_code = D.44401;
        inst->dreg = _length_reg;
        D.44402 = *args;
        D.44403 = D.44402->dreg;
        inst->sreg1 = D.44403;
        inst->data.op[0].const_val = 8;
        inst->type = 1;
        D.44550 = (unsigned char) __ins_flags;
        inst->flags = D.44550;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        if (D.44405 != 0B) goto <D.44551>; else goto <D.44552>;
        <D.44551>:
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        D.44405->next = inst;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        inst->prev = D.44405;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        goto <D.44553>;
        <D.44552>:
        D.44404 = cfg->cbb;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        D.44405 = D.44404->last_ins;
        D.44404->code = D.44405;
        <D.44553>:
      }
      <D.44525>:
      {
        struct MonoInst * inst;

        D.44396 = cfg->mempool;
        inst = mono_mempool_alloc (D.44396, 56);
        inst->data.op[1].const_val = 0;
        D.44554 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.44554;
        inst->prev = 0B;
        D.44555 = inst->prev;
        inst->next = D.44555;
        inst->opcode = 322;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.44556 = inst->sreg3;
        inst->sreg2 = D.44556;
        D.44557 = inst->sreg2;
        inst->sreg1 = D.44557;
        D.44401 = cfg->ip;
        inst->cil_code = D.44401;
        inst->dreg = -1;
        inst->sreg1 = _length_reg;
        inst->sreg2 = index_reg;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        if (D.44405 != 0B) goto <D.44558>; else goto <D.44559>;
        <D.44558>:
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        D.44405->next = inst;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        inst->prev = D.44405;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        goto <D.44560>;
        <D.44559>:
        D.44404 = cfg->cbb;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        D.44405 = D.44404->last_ins;
        D.44404->code = D.44405;
        <D.44560>:
      }
      {
        struct MonoInst * inst;

        D.44396 = cfg->mempool;
        inst = mono_mempool_alloc (D.44396, 56);
        inst->data.op[1].const_val = 0;
        D.44561 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.44561;
        inst->prev = 0B;
        D.44562 = inst->prev;
        inst->next = D.44562;
        inst->opcode = 459;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.44563 = inst->sreg3;
        inst->sreg2 = D.44563;
        D.44564 = inst->sreg2;
        inst->sreg1 = D.44564;
        D.44401 = cfg->ip;
        inst->cil_code = D.44401;
        inst->data.op[1].p = "IndexOutOfRangeException";
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        if (D.44405 != 0B) goto <D.44565>; else goto <D.44566>;
        <D.44565>:
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        D.44405->next = inst;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        inst->prev = D.44405;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        goto <D.44567>;
        <D.44566>:
        D.44404 = cfg->cbb;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        D.44405 = D.44404->last_ins;
        D.44404->code = D.44405;
        <D.44567>:
      }
    }
    <D.44493>:
    goto <D.44568>;
    <D.44391>:
    {
      struct MonoInst * ins;

      D.44396 = cfg->mempool;
      ins = mono_mempool_alloc (D.44396, 56);
      ins->data.op[1].const_val = 0;
      D.44569 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.44569;
      ins->prev = 0B;
      D.44570 = ins->prev;
      ins->next = D.44570;
      ins->opcode = 784;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.44571 = ins->sreg3;
      ins->sreg2 = D.44571;
      D.44572 = ins->sreg2;
      ins->sreg1 = D.44572;
      D.44401 = cfg->ip;
      ins->cil_code = D.44401;
      D.44402 = *args;
      D.44403 = D.44402->dreg;
      ins->sreg1 = D.44403;
      ins->sreg2 = index_reg;
      ins->data.op[1].const_val = 8;
      D.44573 = ins->flags;
      D.44574 = D.44573 | 32;
      ins->flags = D.44574;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.44575>; else goto <D.44576>;
      <D.44575>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.44405->next = ins;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      ins->prev = D.44405;
      D.44404 = cfg->cbb;
      D.44404->last_ins = ins;
      goto <D.44577>;
      <D.44576>:
      D.44404 = cfg->cbb;
      D.44404 = cfg->cbb;
      D.44404->last_ins = ins;
      D.44405 = D.44404->last_ins;
      D.44404->code = D.44405;
      <D.44577>:
      D.44578 = cfg->flags;
      D.44579 = D.44578 | 256;
      cfg->flags = D.44579;
      D.44404 = cfg->cbb;
      D.44404->has_array_access = 1;
    }
    <D.44568>:
    <D.44388>:
    {
      struct MonoInst * inst;

      D.44396 = cfg->mempool;
      inst = mono_mempool_alloc (D.44396, 56);
      inst->data.op[1].const_val = 0;
      D.44580 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.44580;
      inst->prev = 0B;
      D.44581 = inst->prev;
      inst->next = D.44581;
      inst->opcode = 439;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.44582 = inst->sreg3;
      inst->sreg2 = D.44582;
      D.44583 = inst->sreg2;
      inst->sreg1 = D.44583;
      D.44401 = cfg->ip;
      inst->cil_code = D.44401;
      inst->dreg = mult_reg;
      inst->sreg1 = index_reg;
      inst->data.op[1].const_val = 1;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.44584>; else goto <D.44585>;
      <D.44584>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.44405->next = inst;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      inst->prev = D.44405;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      goto <D.44586>;
      <D.44585>:
      D.44404 = cfg->cbb;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      D.44405 = D.44404->last_ins;
      D.44404->code = D.44405;
      <D.44586>:
    }
    {
      struct MonoInst * inst;

      D.44396 = cfg->mempool;
      inst = mono_mempool_alloc (D.44396, 56);
      inst->data.op[1].const_val = 0;
      D.44587 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.44587;
      inst->prev = 0B;
      D.44588 = inst->prev;
      inst->next = D.44588;
      inst->opcode = 565;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.44589 = inst->sreg3;
      inst->sreg2 = D.44589;
      D.44590 = inst->sreg2;
      inst->sreg1 = D.44590;
      D.44401 = cfg->ip;
      inst->cil_code = D.44401;
      inst->dreg = add_reg;
      inst->sreg1 = mult_reg;
      D.44402 = *args;
      D.44403 = D.44402->dreg;
      inst->sreg2 = D.44403;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.44591>; else goto <D.44592>;
      <D.44591>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.44405->next = inst;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      inst->prev = D.44405;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      goto <D.44593>;
      <D.44592>:
      D.44404 = cfg->cbb;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      D.44405 = D.44404->last_ins;
      D.44404->code = D.44405;
      <D.44593>:
    }
    D.44396 = cfg->mempool;
    ins = mono_mempool_alloc (D.44396, 56);
    ins->data.op[1].const_val = 0;
    D.44594 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.44594;
    ins->prev = 0B;
    D.44595 = ins->prev;
    ins->next = D.44595;
    ins->opcode = 392;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.44596 = ins->sreg3;
    ins->sreg2 = D.44596;
    D.44597 = ins->sreg2;
    ins->sreg1 = D.44597;
    D.44401 = cfg->ip;
    ins->cil_code = D.44401;
    ins->dreg = dreg;
    ins->sreg1 = add_reg;
    ins->data.op[0].const_val = 12;
    ins->type = 1;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    if (D.44405 != 0B) goto <D.44598>; else goto <D.44599>;
    <D.44598>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.44405->next = ins;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    ins->prev = D.44405;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    goto <D.44600>;
    <D.44599>:
    D.44404 = cfg->cbb;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    D.44405 = D.44404->last_ins;
    D.44404->code = D.44405;
    <D.44600>:
    type_from_op (ins, 0B, 0B);
    D.44601 = ins;
    return D.44601;
  }
  <D.44378>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.44605 = "get_Length";
      D.44606 = MEM[(const unsigned char *)D.44605];
      D.44607 = (int) D.44606;
      D.44608 = *__s2;
      D.44609 = (int) D.44608;
      __result = D.44607 - D.44609;
      {
        D.44610 = __s2_len != 0;
        D.44611 = __result == 0;
        D.44612 = D.44610 & D.44611;
        if (D.44612 != 0) goto <D.44613>; else goto <D.44614>;
        <D.44613>:
        D.44615 = &MEM[(void *)"get_Length" + 1B];
        D.44616 = *D.44615;
        D.44617 = (int) D.44616;
        D.44618 = __s2 + 1;
        D.44619 = *D.44618;
        D.44620 = (int) D.44619;
        __result = D.44617 - D.44620;
        D.44621 = __s2_len > 1;
        D.44611 = __result == 0;
        D.44622 = D.44621 & D.44611;
        if (D.44622 != 0) goto <D.44623>; else goto <D.44624>;
        <D.44623>:
        D.44625 = &MEM[(void *)"get_Length" + 2B];
        D.44626 = *D.44625;
        D.44627 = (int) D.44626;
        D.44628 = __s2 + 2;
        D.44629 = *D.44628;
        D.44630 = (int) D.44629;
        __result = D.44627 - D.44630;
        D.44631 = __s2_len > 2;
        D.44611 = __result == 0;
        D.44632 = D.44631 & D.44611;
        if (D.44632 != 0) goto <D.44633>; else goto <D.44634>;
        <D.44633>:
        D.44635 = &MEM[(void *)"get_Length" + 3B];
        D.44636 = *D.44635;
        D.44637 = (int) D.44636;
        D.44638 = __s2 + 3;
        D.44639 = *D.44638;
        D.44640 = (int) D.44639;
        __result = D.44637 - D.44640;
        <D.44634>:
        <D.44624>:
        <D.44614>:
      }
      D.29099 = __result;
    }
    iftmp.400 = -D.29099;
    goto <D.44641>;
    <D.44604>:
    D.44376 = cmethod->name;
    iftmp.400 = __builtin_strcmp (D.44376, "get_Length");
    <D.44641>:
    D.29100 = iftmp.400;
  }
  if (D.29100 == 0) goto <D.44642>; else goto <D.44643>;
  <D.44642>:
  {
    int dreg;

    D.44644 = alloc_ireg (cfg);
    dreg = (int) D.44644;
    D.44396 = cfg->mempool;
    ins = mono_mempool_alloc (D.44396, 56);
    ins->data.op[1].const_val = 0;
    D.44594 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.44594;
    ins->prev = 0B;
    D.44595 = ins->prev;
    ins->next = D.44595;
    ins->opcode = 781;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.44596 = ins->sreg3;
    ins->sreg2 = D.44596;
    D.44597 = ins->sreg2;
    ins->sreg1 = D.44597;
    D.44401 = cfg->ip;
    ins->cil_code = D.44401;
    ins->dreg = dreg;
    D.44402 = *args;
    D.44403 = D.44402->dreg;
    ins->sreg1 = D.44403;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    if (D.44405 != 0B) goto <D.44645>; else goto <D.44646>;
    <D.44645>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.44405->next = ins;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    ins->prev = D.44405;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    goto <D.44647>;
    <D.44646>:
    D.44404 = cfg->cbb;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    D.44405 = D.44404->last_ins;
    D.44404->code = D.44405;
    <D.44647>:
    ins->type = 1;
    D.44648 = ins->flags;
    D.44649 = D.44648 | 32;
    ins->flags = D.44649;
    D.44404 = cfg->cbb;
    D.44404->has_array_access = 1;
    D.44578 = cfg->flags;
    D.44579 = D.44578 | 256;
    cfg->flags = D.44579;
    D.44601 = ins;
    return D.44601;
  }
  <D.44643>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.44653 = "InternalSetChar";
      D.44654 = MEM[(const unsigned char *)D.44653];
      D.44655 = (int) D.44654;
      D.44656 = *__s2;
      D.44657 = (int) D.44656;
      __result = D.44655 - D.44657;
      {
        D.44658 = __s2_len != 0;
        D.44659 = __result == 0;
        D.44660 = D.44658 & D.44659;
        if (D.44660 != 0) goto <D.44661>; else goto <D.44662>;
        <D.44661>:
        D.44663 = &MEM[(void *)"InternalSetChar" + 1B];
        D.44664 = *D.44663;
        D.44665 = (int) D.44664;
        D.44666 = __s2 + 1;
        D.44667 = *D.44666;
        D.44668 = (int) D.44667;
        __result = D.44665 - D.44668;
        D.44669 = __s2_len > 1;
        D.44659 = __result == 0;
        D.44670 = D.44669 & D.44659;
        if (D.44670 != 0) goto <D.44671>; else goto <D.44672>;
        <D.44671>:
        D.44673 = &MEM[(void *)"InternalSetChar" + 2B];
        D.44674 = *D.44673;
        D.44675 = (int) D.44674;
        D.44676 = __s2 + 2;
        D.44677 = *D.44676;
        D.44678 = (int) D.44677;
        __result = D.44675 - D.44678;
        D.44679 = __s2_len > 2;
        D.44659 = __result == 0;
        D.44680 = D.44679 & D.44659;
        if (D.44680 != 0) goto <D.44681>; else goto <D.44682>;
        <D.44681>:
        D.44683 = &MEM[(void *)"InternalSetChar" + 3B];
        D.44684 = *D.44683;
        D.44685 = (int) D.44684;
        D.44686 = __s2 + 3;
        D.44687 = *D.44686;
        D.44688 = (int) D.44687;
        __result = D.44685 - D.44688;
        <D.44682>:
        <D.44672>:
        <D.44662>:
      }
      D.29109 = __result;
    }
    iftmp.401 = -D.29109;
    goto <D.44689>;
    <D.44652>:
    D.44376 = cmethod->name;
    iftmp.401 = __builtin_strcmp (D.44376, "InternalSetChar");
    <D.44689>:
    D.29110 = iftmp.401;
  }
  if (D.29110 == 0) goto <D.44690>; else goto <D.44691>;
  <D.44690>:
  {
    int mult_reg;
    int add_reg;

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

      D.44396 = cfg->mempool;
      inst = mono_mempool_alloc (D.44396, 56);
      inst->data.op[1].const_val = 0;
      D.44694 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.44694;
      inst->prev = 0B;
      D.44695 = inst->prev;
      inst->next = D.44695;
      inst->opcode = 439;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.44696 = inst->sreg3;
      inst->sreg2 = D.44696;
      D.44697 = inst->sreg2;
      inst->sreg1 = D.44697;
      D.44401 = cfg->ip;
      inst->cil_code = D.44401;
      inst->dreg = mult_reg;
      D.44383 = args + 4;
      D.44384 = *D.44383;
      D.44698 = D.44384->dreg;
      inst->sreg1 = D.44698;
      inst->data.op[1].const_val = 1;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.44699>; else goto <D.44700>;
      <D.44699>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.44405->next = inst;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      inst->prev = D.44405;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      goto <D.44701>;
      <D.44700>:
      D.44404 = cfg->cbb;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      D.44405 = D.44404->last_ins;
      D.44404->code = D.44405;
      <D.44701>:
    }
    {
      struct MonoInst * inst;

      D.44396 = cfg->mempool;
      inst = mono_mempool_alloc (D.44396, 56);
      inst->data.op[1].const_val = 0;
      D.44702 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.44702;
      inst->prev = 0B;
      D.44703 = inst->prev;
      inst->next = D.44703;
      inst->opcode = 565;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.44704 = inst->sreg3;
      inst->sreg2 = D.44704;
      D.44705 = inst->sreg2;
      inst->sreg1 = D.44705;
      D.44401 = cfg->ip;
      inst->cil_code = D.44401;
      inst->dreg = add_reg;
      inst->sreg1 = mult_reg;
      D.44402 = *args;
      D.44403 = D.44402->dreg;
      inst->sreg2 = D.44403;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.44706>; else goto <D.44707>;
      <D.44706>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.44405->next = inst;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      inst->prev = D.44405;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      goto <D.44708>;
      <D.44707>:
      D.44404 = cfg->cbb;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      D.44405 = D.44404->last_ins;
      D.44404->code = D.44405;
      <D.44708>:
    }
    {
      struct MonoInst * inst;

      D.44396 = cfg->mempool;
      inst = mono_mempool_alloc (D.44396, 56);
      inst->data.op[1].const_val = 0;
      D.44709 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.44709;
      inst->prev = 0B;
      D.44710 = inst->prev;
      inst->next = D.44710;
      inst->opcode = 376;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.44711 = inst->sreg3;
      inst->sreg2 = D.44711;
      D.44712 = inst->sreg2;
      inst->sreg1 = D.44712;
      D.44401 = cfg->ip;
      inst->cil_code = D.44401;
      D.44713 = args + 8;
      D.44714 = *D.44713;
      D.44715 = D.44714->dreg;
      inst->sreg1 = D.44715;
      inst->dreg = add_reg;
      inst->data.op[0].const_val = 12;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.44716>; else goto <D.44717>;
      <D.44716>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.44405->next = inst;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      inst->prev = D.44405;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      goto <D.44718>;
      <D.44717>:
      D.44404 = cfg->cbb;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      D.44405 = D.44404->last_ins;
      D.44404->code = D.44405;
      <D.44718>:
    }
    D.44404 = cfg->cbb;
    D.44601 = D.44404->last_ins;
    return D.44601;
  }
  <D.44691>:
  D.44601 = 0B;
  return D.44601;
  <D.44335>:
  D.44332 = cmethod->klass;
  D.44719 = mono_defaults.object_class;
  if (D.44332 == D.44719) goto <D.44720>; else goto <D.44721>;
  <D.44720>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.44725 = "GetType";
      D.44726 = MEM[(const unsigned char *)D.44725];
      D.44727 = (int) D.44726;
      D.44728 = *__s2;
      D.44729 = (int) D.44728;
      __result = D.44727 - D.44729;
      {
        D.44730 = __s2_len != 0;
        D.44731 = __result == 0;
        D.44732 = D.44730 & D.44731;
        if (D.44732 != 0) goto <D.44733>; else goto <D.44734>;
        <D.44733>:
        D.44735 = &MEM[(void *)"GetType" + 1B];
        D.44736 = *D.44735;
        D.44737 = (int) D.44736;
        D.44738 = __s2 + 1;
        D.44739 = *D.44738;
        D.44740 = (int) D.44739;
        __result = D.44737 - D.44740;
        D.44741 = __s2_len > 1;
        D.44731 = __result == 0;
        D.44742 = D.44741 & D.44731;
        if (D.44742 != 0) goto <D.44743>; else goto <D.44744>;
        <D.44743>:
        D.44745 = &MEM[(void *)"GetType" + 2B];
        D.44746 = *D.44745;
        D.44747 = (int) D.44746;
        D.44748 = __s2 + 2;
        D.44749 = *D.44748;
        D.44750 = (int) D.44749;
        __result = D.44747 - D.44750;
        D.44751 = __s2_len > 2;
        D.44731 = __result == 0;
        D.44752 = D.44751 & D.44731;
        if (D.44752 != 0) goto <D.44753>; else goto <D.44754>;
        <D.44753>:
        D.44755 = &MEM[(void *)"GetType" + 3B];
        D.44756 = *D.44755;
        D.44757 = (int) D.44756;
        D.44758 = __s2 + 3;
        D.44759 = *D.44758;
        D.44760 = (int) D.44759;
        __result = D.44757 - D.44760;
        <D.44754>:
        <D.44744>:
        <D.44734>:
      }
      D.29123 = __result;
    }
    iftmp.402 = -D.29123;
    goto <D.44761>;
    <D.44724>:
    D.44376 = cmethod->name;
    iftmp.402 = __builtin_strcmp (D.44376, "GetType");
    <D.44761>:
    D.29124 = iftmp.402;
  }
  if (D.29124 == 0) goto <D.44762>; else goto <D.44763>;
  <D.44762>:
  {
    int dreg;
    int vt_reg;

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

      __ins_flags = 32;
      D.44766 = __ins_flags & 32;
      if (D.44766 != 0) goto <D.44767>; else goto <D.44768>;
      <D.44767>:
      D.44392 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.44393 = D.44392 & 64;
      if (D.44393 != 0) goto <D.44769>; else goto <D.44770>;
      <D.44769>:
      {
        struct MonoInst * inst;

        D.44396 = cfg->mempool;
        inst = mono_mempool_alloc (D.44396, 56);
        inst->data.op[1].const_val = 0;
        D.44771 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.44771;
        inst->prev = 0B;
        D.44772 = inst->prev;
        inst->next = D.44772;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.44773 = inst->sreg3;
        inst->sreg2 = D.44773;
        D.44774 = inst->sreg2;
        inst->sreg1 = D.44774;
        D.44401 = cfg->ip;
        inst->cil_code = D.44401;
        inst->dreg = -1;
        D.44402 = *args;
        D.44403 = D.44402->dreg;
        inst->sreg1 = D.44403;
        inst->data.op[1].const_val = 0;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        if (D.44405 != 0B) goto <D.44775>; else goto <D.44776>;
        <D.44775>:
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        D.44405->next = inst;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        inst->prev = D.44405;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        goto <D.44777>;
        <D.44776>:
        D.44404 = cfg->cbb;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        D.44405 = D.44404->last_ins;
        D.44404->code = D.44405;
        <D.44777>:
      }
      {
        struct MonoInst * inst;

        D.44396 = cfg->mempool;
        inst = mono_mempool_alloc (D.44396, 56);
        inst->data.op[1].const_val = 0;
        D.44778 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.44778;
        inst->prev = 0B;
        D.44779 = inst->prev;
        inst->next = D.44779;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.44780 = inst->sreg3;
        inst->sreg2 = D.44780;
        D.44781 = inst->sreg2;
        inst->sreg1 = D.44781;
        D.44401 = cfg->ip;
        inst->cil_code = D.44401;
        inst->data.op[1].p = "NullReferenceException";
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        if (D.44405 != 0B) goto <D.44782>; else goto <D.44783>;
        <D.44782>:
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        D.44405->next = inst;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        inst->prev = D.44405;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        goto <D.44784>;
        <D.44783>:
        D.44404 = cfg->cbb;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        D.44405 = D.44404->last_ins;
        D.44404->code = D.44405;
        <D.44784>:
      }
      goto <D.44785>;
      <D.44770>:
      <D.44785>:
      <D.44768>:
      D.44396 = cfg->mempool;
      inst = mono_mempool_alloc (D.44396, 56);
      inst->data.op[1].const_val = 0;
      D.44786 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.44786;
      inst->prev = 0B;
      D.44787 = inst->prev;
      inst->next = D.44787;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.44788 = inst->sreg3;
      inst->sreg2 = D.44788;
      D.44789 = inst->sreg2;
      inst->sreg1 = D.44789;
      D.44401 = cfg->ip;
      inst->cil_code = D.44401;
      inst->dreg = vt_reg;
      D.44402 = *args;
      D.44403 = D.44402->dreg;
      inst->sreg1 = D.44403;
      inst->data.op[0].const_val = 0;
      inst->type = 1;
      D.44790 = (unsigned char) __ins_flags;
      inst->flags = D.44790;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.44791>; else goto <D.44792>;
      <D.44791>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.44405->next = inst;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      inst->prev = D.44405;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      goto <D.44793>;
      <D.44792>:
      D.44404 = cfg->cbb;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      D.44405 = D.44404->last_ins;
      D.44404->code = D.44405;
      <D.44793>:
    }
    D.44396 = cfg->mempool;
    ins = mono_mempool_alloc (D.44396, 56);
    ins->data.op[1].const_val = 0;
    D.44594 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.44594;
    ins->prev = 0B;
    D.44595 = ins->prev;
    ins->next = D.44595;
    ins->opcode = 388;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.44596 = ins->sreg3;
    ins->sreg2 = D.44596;
    D.44597 = ins->sreg2;
    ins->sreg1 = D.44597;
    D.44401 = cfg->ip;
    ins->cil_code = D.44401;
    ins->dreg = dreg;
    ins->sreg1 = vt_reg;
    ins->data.op[0].const_val = 12;
    ins->type = 1;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    if (D.44405 != 0B) goto <D.44794>; else goto <D.44795>;
    <D.44794>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.44405->next = ins;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    ins->prev = D.44405;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    goto <D.44796>;
    <D.44795>:
    D.44404 = cfg->cbb;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    D.44405 = D.44404->last_ins;
    D.44404->code = D.44405;
    <D.44796>:
    type_from_op (ins, 0B, 0B);
    D.44601 = ins;
    return D.44601;
  }
  <D.44763>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.44801 = "InternalGetHashCode";
      D.44802 = MEM[(const unsigned char *)D.44801];
      D.44803 = (int) D.44802;
      D.44804 = *__s2;
      D.44805 = (int) D.44804;
      __result = D.44803 - D.44805;
      {
        D.44806 = __s2_len != 0;
        D.44807 = __result == 0;
        D.44808 = D.44806 & D.44807;
        if (D.44808 != 0) goto <D.44809>; else goto <D.44810>;
        <D.44809>:
        D.44811 = &MEM[(void *)"InternalGetHashCode" + 1B];
        D.44812 = *D.44811;
        D.44813 = (int) D.44812;
        D.44814 = __s2 + 1;
        D.44815 = *D.44814;
        D.44816 = (int) D.44815;
        __result = D.44813 - D.44816;
        D.44817 = __s2_len > 1;
        D.44807 = __result == 0;
        D.44818 = D.44817 & D.44807;
        if (D.44818 != 0) goto <D.44819>; else goto <D.44820>;
        <D.44819>:
        D.44821 = &MEM[(void *)"InternalGetHashCode" + 2B];
        D.44822 = *D.44821;
        D.44823 = (int) D.44822;
        D.44824 = __s2 + 2;
        D.44825 = *D.44824;
        D.44826 = (int) D.44825;
        __result = D.44823 - D.44826;
        D.44827 = __s2_len > 2;
        D.44807 = __result == 0;
        D.44828 = D.44827 & D.44807;
        if (D.44828 != 0) goto <D.44829>; else goto <D.44830>;
        <D.44829>:
        D.44831 = &MEM[(void *)"InternalGetHashCode" + 3B];
        D.44832 = *D.44831;
        D.44833 = (int) D.44832;
        D.44834 = __s2 + 3;
        D.44835 = *D.44834;
        D.44836 = (int) D.44835;
        __result = D.44833 - D.44836;
        <D.44830>:
        <D.44820>:
        <D.44810>:
      }
      D.29138 = __result;
    }
    iftmp.403 = -D.29138;
    goto <D.44837>;
    <D.44800>:
    D.44376 = cmethod->name;
    iftmp.403 = __builtin_strcmp (D.44376, "InternalGetHashCode");
    <D.44837>:
    D.29139 = iftmp.403;
  }
  if (D.29139 == 0) goto <D.44838>; else goto <D.44797>;
  <D.44838>:
  D.44839 = mono_gc_is_moving ();
  if (D.44839 == 0) goto <D.44840>; else goto <D.44797>;
  <D.44840>:
  {
    int dreg;
    int t1;

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

      D.44396 = cfg->mempool;
      inst = mono_mempool_alloc (D.44396, 56);
      inst->data.op[1].const_val = 0;
      D.44843 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.44843;
      inst->prev = 0B;
      D.44844 = inst->prev;
      inst->next = D.44844;
      inst->opcode = 439;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.44845 = inst->sreg3;
      inst->sreg2 = D.44845;
      D.44846 = inst->sreg2;
      inst->sreg1 = D.44846;
      D.44401 = cfg->ip;
      inst->cil_code = D.44401;
      inst->dreg = t1;
      D.44402 = *args;
      D.44403 = D.44402->dreg;
      inst->sreg1 = D.44403;
      inst->data.op[1].const_val = 3;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.44847>; else goto <D.44848>;
      <D.44847>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.44405->next = inst;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      inst->prev = D.44405;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      goto <D.44849>;
      <D.44848>:
      D.44404 = cfg->cbb;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      D.44405 = D.44404->last_ins;
      D.44404->code = D.44405;
      <D.44849>:
    }
    D.44396 = cfg->mempool;
    ins = mono_mempool_alloc (D.44396, 56);
    ins->data.op[1].const_val = 0;
    D.44594 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.44594;
    ins->prev = 0B;
    D.44595 = ins->prev;
    ins->next = D.44595;
    ins->opcode = 431;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.44596 = ins->sreg3;
    ins->sreg2 = D.44596;
    D.44597 = ins->sreg2;
    ins->sreg1 = D.44597;
    D.44401 = cfg->ip;
    ins->cil_code = D.44401;
    ins->dreg = dreg;
    ins->sreg1 = t1;
    ins->data.op[1].const_val = -1640531535;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    if (D.44405 != 0B) goto <D.44850>; else goto <D.44851>;
    <D.44850>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.44405->next = ins;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    ins->prev = D.44405;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    goto <D.44852>;
    <D.44851>:
    D.44404 = cfg->cbb;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    D.44405 = D.44404->last_ins;
    D.44404->code = D.44405;
    <D.44852>:
    ins->type = 1;
    D.44601 = ins;
    return D.44601;
  }
  <D.44797>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.44856 = ".ctor";
      D.44857 = MEM[(const unsigned char *)D.44856];
      D.44858 = (int) D.44857;
      D.44859 = *__s2;
      D.44860 = (int) D.44859;
      __result = D.44858 - D.44860;
      {
        D.44861 = __s2_len != 0;
        D.44862 = __result == 0;
        D.44863 = D.44861 & D.44862;
        if (D.44863 != 0) goto <D.44864>; else goto <D.44865>;
        <D.44864>:
        D.44866 = &MEM[(void *)".ctor" + 1B];
        D.44867 = *D.44866;
        D.44868 = (int) D.44867;
        D.44869 = __s2 + 1;
        D.44870 = *D.44869;
        D.44871 = (int) D.44870;
        __result = D.44868 - D.44871;
        D.44872 = __s2_len > 1;
        D.44862 = __result == 0;
        D.44873 = D.44872 & D.44862;
        if (D.44873 != 0) goto <D.44874>; else goto <D.44875>;
        <D.44874>:
        D.44876 = &MEM[(void *)".ctor" + 2B];
        D.44877 = *D.44876;
        D.44878 = (int) D.44877;
        D.44879 = __s2 + 2;
        D.44880 = *D.44879;
        D.44881 = (int) D.44880;
        __result = D.44878 - D.44881;
        D.44882 = __s2_len > 2;
        D.44862 = __result == 0;
        D.44883 = D.44882 & D.44862;
        if (D.44883 != 0) goto <D.44884>; else goto <D.44885>;
        <D.44884>:
        D.44886 = &MEM[(void *)".ctor" + 3B];
        D.44887 = *D.44886;
        D.44888 = (int) D.44887;
        D.44889 = __s2 + 3;
        D.44890 = *D.44889;
        D.44891 = (int) D.44890;
        __result = D.44888 - D.44891;
        <D.44885>:
        <D.44875>:
        <D.44865>:
      }
      D.29150 = __result;
    }
    iftmp.404 = -D.29150;
    goto <D.44892>;
    <D.44855>:
    D.44376 = cmethod->name;
    iftmp.404 = __builtin_strcmp (D.44376, ".ctor");
    <D.44892>:
    D.29151 = iftmp.404;
  }
  if (D.29151 == 0) goto <D.44893>; else goto <D.44894>;
  <D.44893>:
  D.44396 = cfg->mempool;
  ins = mono_mempool_alloc (D.44396, 56);
  ins->data.op[1].const_val = 0;
  D.44594 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.44594;
  ins->prev = 0B;
  D.44595 = ins->prev;
  ins->next = D.44595;
  ins->opcode = 316;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.44596 = ins->sreg3;
  ins->sreg2 = D.44596;
  D.44597 = ins->sreg2;
  ins->sreg1 = D.44597;
  D.44401 = cfg->ip;
  ins->cil_code = D.44401;
  D.44404 = cfg->cbb;
  D.44405 = D.44404->last_ins;
  if (D.44405 != 0B) goto <D.44895>; else goto <D.44896>;
  <D.44895>:
  D.44404 = cfg->cbb;
  D.44405 = D.44404->last_ins;
  D.44405->next = ins;
  D.44404 = cfg->cbb;
  D.44405 = D.44404->last_ins;
  ins->prev = D.44405;
  D.44404 = cfg->cbb;
  D.44404->last_ins = ins;
  goto <D.44897>;
  <D.44896>:
  D.44404 = cfg->cbb;
  D.44404 = cfg->cbb;
  D.44404->last_ins = ins;
  D.44405 = D.44404->last_ins;
  D.44404->code = D.44405;
  <D.44897>:
  D.44601 = ins;
  return D.44601;
  <D.44894>:
  D.44601 = 0B;
  return D.44601;
  <D.44721>:
  D.44332 = cmethod->klass;
  D.44898 = mono_defaults.array_class;
  if (D.44332 == D.44898) goto <D.44899>; else goto <D.44900>;
  <D.44899>:
  D.44901 = cfg->gsharedvt;
  if (D.44901 == 0) goto <D.44902>; else goto <D.44903>;
  <D.44902>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.44376 = cmethod->name;
      __s2 = D.44376 + 1;
      D.44907 = "etGenericValueImpl";
      D.44908 = MEM[(const unsigned char *)D.44907];
      D.44909 = (int) D.44908;
      D.44910 = *__s2;
      D.44911 = (int) D.44910;
      __result = D.44909 - D.44911;
      {
        D.44912 = __s2_len != 0;
        D.44913 = __result == 0;
        D.44914 = D.44912 & D.44913;
        if (D.44914 != 0) goto <D.44915>; else goto <D.44916>;
        <D.44915>:
        D.44917 = &MEM[(void *)"etGenericValueImpl" + 1B];
        D.44918 = *D.44917;
        D.44919 = (int) D.44918;
        D.44920 = __s2 + 1;
        D.44921 = *D.44920;
        D.44922 = (int) D.44921;
        __result = D.44919 - D.44922;
        D.44923 = __s2_len > 1;
        D.44913 = __result == 0;
        D.44924 = D.44923 & D.44913;
        if (D.44924 != 0) goto <D.44925>; else goto <D.44926>;
        <D.44925>:
        D.44927 = &MEM[(void *)"etGenericValueImpl" + 2B];
        D.44928 = *D.44927;
        D.44929 = (int) D.44928;
        D.44930 = __s2 + 2;
        D.44931 = *D.44930;
        D.44932 = (int) D.44931;
        __result = D.44929 - D.44932;
        D.44933 = __s2_len > 2;
        D.44913 = __result == 0;
        D.44934 = D.44933 & D.44913;
        if (D.44934 != 0) goto <D.44935>; else goto <D.44936>;
        <D.44935>:
        D.44937 = &MEM[(void *)"etGenericValueImpl" + 3B];
        D.44938 = *D.44937;
        D.44939 = (int) D.44938;
        D.44940 = __s2 + 3;
        D.44941 = *D.44940;
        D.44942 = (int) D.44941;
        __result = D.44939 - D.44942;
        <D.44936>:
        <D.44926>:
        <D.44916>:
      }
      D.29159 = __result;
    }
    iftmp.405 = -D.29159;
    goto <D.44943>;
    <D.44906>:
    D.44376 = cmethod->name;
    D.44944 = D.44376 + 1;
    iftmp.405 = __builtin_strcmp (D.44944, "etGenericValueImpl");
    <D.44943>:
    D.29160 = iftmp.405;
  }
  if (D.29160 == 0) goto <D.44945>; else goto <D.44946>;
  <D.44945>:
  D.44376 = cmethod->name;
  D.44947 = *D.44376;
  D.44948 = D.44947 == 83;
  D.44949 = (int) D.44948;
  D.44601 = emit_array_generic_access (cfg, fsig, args, D.44949);
  return D.44601;
  <D.44946>:
  <D.44903>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.44955 = "GetLength";
      D.44956 = MEM[(const unsigned char *)D.44955];
      D.44957 = (int) D.44956;
      D.44958 = *__s2;
      D.44959 = (int) D.44958;
      __result = D.44957 - D.44959;
      {
        D.44960 = __s2_len != 0;
        D.44961 = __result == 0;
        D.44962 = D.44960 & D.44961;
        if (D.44962 != 0) goto <D.44963>; else goto <D.44964>;
        <D.44963>:
        D.44965 = &MEM[(void *)"GetLength" + 1B];
        D.44966 = *D.44965;
        D.44967 = (int) D.44966;
        D.44968 = __s2 + 1;
        D.44969 = *D.44968;
        D.44970 = (int) D.44969;
        __result = D.44967 - D.44970;
        D.44971 = __s2_len > 1;
        D.44961 = __result == 0;
        D.44972 = D.44971 & D.44961;
        if (D.44972 != 0) goto <D.44973>; else goto <D.44974>;
        <D.44973>:
        D.44975 = &MEM[(void *)"GetLength" + 2B];
        D.44976 = *D.44975;
        D.44977 = (int) D.44976;
        D.44978 = __s2 + 2;
        D.44979 = *D.44978;
        D.44980 = (int) D.44979;
        __result = D.44977 - D.44980;
        D.44981 = __s2_len > 2;
        D.44961 = __result == 0;
        D.44982 = D.44981 & D.44961;
        if (D.44982 != 0) goto <D.44983>; else goto <D.44984>;
        <D.44983>:
        D.44985 = &MEM[(void *)"GetLength" + 3B];
        D.44986 = *D.44985;
        D.44987 = (int) D.44986;
        D.44988 = __s2 + 3;
        D.44989 = *D.44988;
        D.44990 = (int) D.44989;
        __result = D.44987 - D.44990;
        <D.44984>:
        <D.44974>:
        <D.44964>:
      }
      D.29168 = __result;
    }
    iftmp.406 = -D.29168;
    goto <D.44991>;
    <D.44954>:
    D.44376 = cmethod->name;
    iftmp.406 = __builtin_strcmp (D.44376, "GetLength");
    <D.44991>:
    D.29169 = iftmp.406;
  }
  if (D.29169 == 0) goto <D.44950>; else goto <D.44992>;
  <D.44992>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.44996 = "GetLowerBound";
      D.44997 = MEM[(const unsigned char *)D.44996];
      D.44998 = (int) D.44997;
      D.44999 = *__s2;
      D.45000 = (int) D.44999;
      __result = D.44998 - D.45000;
      {
        D.45001 = __s2_len != 0;
        D.45002 = __result == 0;
        D.45003 = D.45001 & D.45002;
        if (D.45003 != 0) goto <D.45004>; else goto <D.45005>;
        <D.45004>:
        D.45006 = &MEM[(void *)"GetLowerBound" + 1B];
        D.45007 = *D.45006;
        D.45008 = (int) D.45007;
        D.45009 = __s2 + 1;
        D.45010 = *D.45009;
        D.45011 = (int) D.45010;
        __result = D.45008 - D.45011;
        D.45012 = __s2_len > 1;
        D.45002 = __result == 0;
        D.45013 = D.45012 & D.45002;
        if (D.45013 != 0) goto <D.45014>; else goto <D.45015>;
        <D.45014>:
        D.45016 = &MEM[(void *)"GetLowerBound" + 2B];
        D.45017 = *D.45016;
        D.45018 = (int) D.45017;
        D.45019 = __s2 + 2;
        D.45020 = *D.45019;
        D.45021 = (int) D.45020;
        __result = D.45018 - D.45021;
        D.45022 = __s2_len > 2;
        D.45002 = __result == 0;
        D.45023 = D.45022 & D.45002;
        if (D.45023 != 0) goto <D.45024>; else goto <D.45025>;
        <D.45024>:
        D.45026 = &MEM[(void *)"GetLowerBound" + 3B];
        D.45027 = *D.45026;
        D.45028 = (int) D.45027;
        D.45029 = __s2 + 3;
        D.45030 = *D.45029;
        D.45031 = (int) D.45030;
        __result = D.45028 - D.45031;
        <D.45025>:
        <D.45015>:
        <D.45005>:
      }
      D.29177 = __result;
    }
    iftmp.407 = -D.29177;
    goto <D.45032>;
    <D.44995>:
    D.44376 = cmethod->name;
    iftmp.407 = __builtin_strcmp (D.44376, "GetLowerBound");
    <D.45032>:
    D.29178 = iftmp.407;
  }
  if (D.29178 == 0) goto <D.44950>; else goto <D.44951>;
  <D.44950>:
  D.44383 = args + 4;
  D.44384 = *D.44383;
  D.45033 = D.44384->opcode;
  if (D.45033 == 362) goto <D.45034>; else goto <D.45035>;
  <D.45034>:
  D.44383 = args + 4;
  D.44384 = *D.44383;
  D.45036 = D.44384->data.op[0].const_val;
  if (D.45036 == 0) goto <D.45037>; else goto <D.45038>;
  <D.45037>:
  {
    int dreg;
    int bounds_reg;
    struct MonoBasicBlock * end_bb;
    struct MonoBasicBlock * szarray_bb;
    gboolean get_length;

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

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

        __s2 = cmethod->name;
        D.44955 = "GetLength";
        D.44956 = MEM[(const unsigned char *)D.44955];
        D.44957 = (int) D.44956;
        D.45044 = *__s2;
        D.45045 = (int) D.45044;
        __result = D.44957 - D.45045;
        {
          D.45046 = __s2_len != 0;
          D.45047 = __result == 0;
          D.45048 = D.45046 & D.45047;
          if (D.45048 != 0) goto <D.45049>; else goto <D.45050>;
          <D.45049>:
          D.44965 = &MEM[(void *)"GetLength" + 1B];
          D.44966 = *D.44965;
          D.44967 = (int) D.44966;
          D.45051 = __s2 + 1;
          D.45052 = *D.45051;
          D.45053 = (int) D.45052;
          __result = D.44967 - D.45053;
          D.45054 = __s2_len > 1;
          D.45047 = __result == 0;
          D.45055 = D.45054 & D.45047;
          if (D.45055 != 0) goto <D.45056>; else goto <D.45057>;
          <D.45056>:
          D.44975 = &MEM[(void *)"GetLength" + 2B];
          D.44976 = *D.44975;
          D.44977 = (int) D.44976;
          D.45058 = __s2 + 2;
          D.45059 = *D.45058;
          D.45060 = (int) D.45059;
          __result = D.44977 - D.45060;
          D.45061 = __s2_len > 2;
          D.45047 = __result == 0;
          D.45062 = D.45061 & D.45047;
          if (D.45062 != 0) goto <D.45063>; else goto <D.45064>;
          <D.45063>:
          D.44985 = &MEM[(void *)"GetLength" + 3B];
          D.44986 = *D.44985;
          D.44987 = (int) D.44986;
          D.45065 = __s2 + 3;
          D.45066 = *D.45065;
          D.45067 = (int) D.45066;
          __result = D.44987 - D.45067;
          <D.45064>:
          <D.45057>:
          <D.45050>:
        }
        D.29191 = __result;
      }
      iftmp.408 = -D.29191;
      goto <D.45068>;
      <D.45043>:
      D.44376 = cmethod->name;
      iftmp.408 = __builtin_strcmp (D.44376, "GetLength");
      <D.45068>:
      D.29192 = iftmp.408;
    }
    D.45069 = D.29192 == 0;
    get_length = (gboolean) D.45069;
    D.44396 = cfg->mempool;
    end_bb = mono_mempool_alloc0 (D.44396, 172);
    D.45070 = cfg->num_bblocks;
    D.45071 = D.45070;
    D.45072 = D.45071 + 1;
    cfg->num_bblocks = D.45072;
    D.45073 = (int) D.45071;
    end_bb->block_num = D.45073;
    D.44396 = cfg->mempool;
    szarray_bb = mono_mempool_alloc0 (D.44396, 172);
    D.45070 = cfg->num_bblocks;
    D.45074 = D.45070;
    D.45075 = D.45074 + 1;
    cfg->num_bblocks = D.45075;
    D.45076 = (int) D.45074;
    szarray_bb->block_num = D.45076;
    {
      int __ins_flags;

      __ins_flags = 32;
      D.45077 = __ins_flags & 32;
      if (D.45077 != 0) goto <D.45078>; else goto <D.45079>;
      <D.45078>:
      D.44392 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.44393 = D.44392 & 64;
      if (D.44393 != 0) goto <D.45080>; else goto <D.45081>;
      <D.45080>:
      {
        struct MonoInst * inst;

        D.44396 = cfg->mempool;
        inst = mono_mempool_alloc (D.44396, 56);
        inst->data.op[1].const_val = 0;
        D.45082 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.45082;
        inst->prev = 0B;
        D.45083 = inst->prev;
        inst->next = D.45083;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.45084 = inst->sreg3;
        inst->sreg2 = D.45084;
        D.45085 = inst->sreg2;
        inst->sreg1 = D.45085;
        D.44401 = cfg->ip;
        inst->cil_code = D.44401;
        inst->dreg = -1;
        D.44402 = *args;
        D.44403 = D.44402->dreg;
        inst->sreg1 = D.44403;
        inst->data.op[1].const_val = 0;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        if (D.44405 != 0B) goto <D.45086>; else goto <D.45087>;
        <D.45086>:
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        D.44405->next = inst;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        inst->prev = D.44405;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        goto <D.45088>;
        <D.45087>:
        D.44404 = cfg->cbb;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        D.44405 = D.44404->last_ins;
        D.44404->code = D.44405;
        <D.45088>:
      }
      {
        struct MonoInst * inst;

        D.44396 = cfg->mempool;
        inst = mono_mempool_alloc (D.44396, 56);
        inst->data.op[1].const_val = 0;
        D.45089 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.45089;
        inst->prev = 0B;
        D.45090 = inst->prev;
        inst->next = D.45090;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.45091 = inst->sreg3;
        inst->sreg2 = D.45091;
        D.45092 = inst->sreg2;
        inst->sreg1 = D.45092;
        D.44401 = cfg->ip;
        inst->cil_code = D.44401;
        inst->data.op[1].p = "NullReferenceException";
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        if (D.44405 != 0B) goto <D.45093>; else goto <D.45094>;
        <D.45093>:
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        D.44405->next = inst;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        inst->prev = D.44405;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        goto <D.45095>;
        <D.45094>:
        D.44404 = cfg->cbb;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        D.44405 = D.44404->last_ins;
        D.44404->code = D.44405;
        <D.45095>:
      }
      goto <D.45096>;
      <D.45081>:
      <D.45096>:
      <D.45079>:
      D.44396 = cfg->mempool;
      ins = mono_mempool_alloc (D.44396, 56);
      ins->data.op[1].const_val = 0;
      D.44594 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.44594;
      ins->prev = 0B;
      D.44595 = ins->prev;
      ins->next = D.44595;
      ins->opcode = 388;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.44596 = ins->sreg3;
      ins->sreg2 = D.44596;
      D.44597 = ins->sreg2;
      ins->sreg1 = D.44597;
      D.44401 = cfg->ip;
      ins->cil_code = D.44401;
      ins->dreg = bounds_reg;
      D.44402 = *args;
      D.44403 = D.44402->dreg;
      ins->sreg1 = D.44403;
      ins->data.op[0].const_val = 8;
      ins->type = 1;
      D.45097 = (unsigned char) __ins_flags;
      ins->flags = D.45097;
    }
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    if (D.44405 != 0B) goto <D.45098>; else goto <D.45099>;
    <D.45098>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.44405->next = ins;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    ins->prev = D.44405;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    goto <D.45100>;
    <D.45099>:
    D.44404 = cfg->cbb;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    D.44405 = D.44404->last_ins;
    D.44404->code = D.44405;
    <D.45100>:
    {
      struct MonoInst * inst;

      D.44396 = cfg->mempool;
      inst = mono_mempool_alloc (D.44396, 56);
      inst->data.op[1].const_val = 0;
      D.45101 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45101;
      inst->prev = 0B;
      D.45102 = inst->prev;
      inst->next = D.45102;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45103 = inst->sreg3;
      inst->sreg2 = D.45103;
      D.45104 = inst->sreg2;
      inst->sreg1 = D.45104;
      D.44401 = cfg->ip;
      inst->cil_code = D.44401;
      inst->dreg = -1;
      inst->sreg1 = bounds_reg;
      inst->data.op[1].const_val = 0;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.45105>; else goto <D.45106>;
      <D.45105>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.44405->next = inst;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      inst->prev = D.44405;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      goto <D.45107>;
      <D.45106>:
      D.44404 = cfg->cbb;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      D.44405 = D.44404->last_ins;
      D.44404->code = D.44405;
      <D.45107>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.44396 = cfg->mempool;
      ins = mono_mempool_alloc (D.44396, 56);
      ins->data.op[1].const_val = 0;
      D.45108 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.45108;
      ins->prev = 0B;
      D.45109 = ins->prev;
      ins->next = D.45109;
      ins->opcode = 648;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.45110 = ins->sreg3;
      ins->sreg2 = D.45110;
      D.45111 = ins->sreg2;
      ins->sreg1 = D.45111;
      D.44401 = cfg->ip;
      ins->cil_code = D.44401;
      if (0 != 0) goto <D.45112>; else goto <D.45113>;
      <D.45112>:
      D.44396 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.44396, 172);
      D.45070 = cfg->num_bblocks;
      D.45114 = D.45070;
      D.45115 = D.45114 + 1;
      cfg->num_bblocks = D.45115;
      D.45116 = (int) D.45114;
      falsebb->block_num = D.45116;
      ins->data.op[0].target_block = szarray_bb;
      D.44404 = cfg->cbb;
      mono_link_bblock (cfg, D.44404, szarray_bb);
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.45117>; else goto <D.45118>;
      <D.45117>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.44405->next = ins;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      ins->prev = D.44405;
      D.44404 = cfg->cbb;
      D.44404->last_ins = ins;
      goto <D.45119>;
      <D.45118>:
      D.44404 = cfg->cbb;
      D.44404 = cfg->cbb;
      D.44404->last_ins = ins;
      D.44405 = D.44404->last_ins;
      D.44404->code = D.44405;
      <D.45119>:
      D.45120 = falsebb->cil_code;
      if (D.45120 != 0B) goto <D.45121>; else goto <D.45122>;
      <D.45121>:
      D.45123 = cfg->cil_offset_to_bb;
      D.45120 = falsebb->cil_code;
      D.45124 = (int) D.45120;
      D.45125 = cfg->cil_start;
      D.45126 = (int) D.45125;
      D.45127 = D.45124 - D.45126;
      D.45128 = (unsigned int) D.45127;
      D.45129 = D.45128 * 4;
      D.45130 = D.45123 + D.45129;
      *D.45130 = falsebb;
      <D.45122>:
      D.45131 = cfg->real_offset;
      falsebb->real_offset = D.45131;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.45135>; else goto <D.45132>;
      <D.45135>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45136 = D.44405->opcode;
      D.45137 = D.45136 + 64985;
      D.45138 = D.45137 <= 9;
      D.45139 = D.45136 + 64878;
      D.45140 = D.45139 <= 9;
      D.45141 = D.45138 | D.45140;
      if (D.45141 != 0) goto <D.45133>; else goto <D.45142>;
      <D.45142>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45143 = D.44405->opcode;
      D.45144 = D.45143 + 64888;
      if (D.45144 <= 9) goto <D.45133>; else goto <D.45132>;
      <D.45133>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45145 = D.44405->data.op[1].many_blocks;
      D.45146 = D.45145 + 4;
      D.45147 = *D.45146;
      if (D.45147 == 0B) goto <D.45148>; else goto <D.45132>;
      <D.45148>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45145 = D.44405->data.op[1].many_blocks;
      D.45146 = D.45145 + 4;
      *D.45146 = falsebb;
      D.44404 = cfg->cbb;
      mono_link_bblock (cfg, D.44404, falsebb);
      goto <D.45134>;
      <D.45132>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 == 0B) goto <D.45149>; else goto <D.45151>;
      <D.45151>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45152 = D.44405->opcode;
      D.45153 = D.45152 != 442;
      D.45154 = D.45152 != 759;
      D.45155 = D.45153 & D.45154;
      if (D.45155 != 0) goto <D.45156>; else goto <D.45150>;
      <D.45156>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45157 = D.44405->opcode;
      D.45158 = D.45157 + 64985;
      D.45159 = D.45158 > 9;
      D.45160 = D.45157 + 64878;
      D.45161 = D.45160 > 9;
      D.45162 = D.45159 & D.45161;
      if (D.45162 != 0) goto <D.45163>; else goto <D.45150>;
      <D.45163>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45143 = D.44405->opcode;
      D.45144 = D.45143 + 64888;
      if (D.45144 > 9) goto <D.45149>; else goto <D.45150>;
      <D.45149>:
      D.44404 = cfg->cbb;
      mono_link_bblock (cfg, D.44404, falsebb);
      <D.45150>:
      <D.45134>:
      D.44404 = cfg->cbb;
      D.44404->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.45164>;
      <D.45113>:
      D.44396 = cfg->mempool;
      D.45165 = mono_mempool_alloc (D.44396, 8);
      ins->data.op[1].many_blocks = D.45165;
      D.45166 = ins->data.op[1].many_blocks;
      *D.45166 = szarray_bb;
      D.45166 = ins->data.op[1].many_blocks;
      D.45167 = D.45166 + 4;
      *D.45167 = 0B;
      D.44404 = cfg->cbb;
      mono_link_bblock (cfg, D.44404, szarray_bb);
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.45168>; else goto <D.45169>;
      <D.45168>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.44405->next = ins;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      ins->prev = D.44405;
      D.44404 = cfg->cbb;
      D.44404->last_ins = ins;
      goto <D.45170>;
      <D.45169>:
      D.44404 = cfg->cbb;
      D.44404 = cfg->cbb;
      D.44404->last_ins = ins;
      D.44405 = D.44404->last_ins;
      D.44404->code = D.44405;
      <D.45170>:
      D.45171 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.45172 = D.45171 & 8;
      if (D.45172 == 0) goto <D.45173>; else goto <D.45174>;
      <D.45173>:
      D.44396 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.44396, 172);
      D.45070 = cfg->num_bblocks;
      D.45175 = D.45070;
      D.45176 = D.45175 + 1;
      cfg->num_bblocks = D.45176;
      D.45177 = (int) D.45175;
      falsebb->block_num = D.45177;
      D.45166 = ins->data.op[1].many_blocks;
      D.45167 = D.45166 + 4;
      *D.45167 = falsebb;
      D.44404 = cfg->cbb;
      mono_link_bblock (cfg, D.44404, falsebb);
      D.45120 = falsebb->cil_code;
      if (D.45120 != 0B) goto <D.45178>; else goto <D.45179>;
      <D.45178>:
      D.45123 = cfg->cil_offset_to_bb;
      D.45120 = falsebb->cil_code;
      D.45124 = (int) D.45120;
      D.45125 = cfg->cil_start;
      D.45126 = (int) D.45125;
      D.45127 = D.45124 - D.45126;
      D.45128 = (unsigned int) D.45127;
      D.45129 = D.45128 * 4;
      D.45130 = D.45123 + D.45129;
      *D.45130 = falsebb;
      <D.45179>:
      D.45131 = cfg->real_offset;
      falsebb->real_offset = D.45131;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.45183>; else goto <D.45180>;
      <D.45183>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45184 = D.44405->opcode;
      D.45185 = D.45184 + 64985;
      D.45186 = D.45185 <= 9;
      D.45187 = D.45184 + 64878;
      D.45188 = D.45187 <= 9;
      D.45189 = D.45186 | D.45188;
      if (D.45189 != 0) goto <D.45181>; else goto <D.45190>;
      <D.45190>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45143 = D.44405->opcode;
      D.45144 = D.45143 + 64888;
      if (D.45144 <= 9) goto <D.45181>; else goto <D.45180>;
      <D.45181>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45145 = D.44405->data.op[1].many_blocks;
      D.45146 = D.45145 + 4;
      D.45147 = *D.45146;
      if (D.45147 == 0B) goto <D.45191>; else goto <D.45180>;
      <D.45191>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45145 = D.44405->data.op[1].many_blocks;
      D.45146 = D.45145 + 4;
      *D.45146 = falsebb;
      D.44404 = cfg->cbb;
      mono_link_bblock (cfg, D.44404, falsebb);
      goto <D.45182>;
      <D.45180>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 == 0B) goto <D.45192>; else goto <D.45194>;
      <D.45194>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45195 = D.44405->opcode;
      D.45196 = D.45195 != 442;
      D.45197 = D.45195 != 759;
      D.45198 = D.45196 & D.45197;
      if (D.45198 != 0) goto <D.45199>; else goto <D.45193>;
      <D.45199>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45200 = D.44405->opcode;
      D.45201 = D.45200 + 64985;
      D.45202 = D.45201 > 9;
      D.45203 = D.45200 + 64878;
      D.45204 = D.45203 > 9;
      D.45205 = D.45202 & D.45204;
      if (D.45205 != 0) goto <D.45206>; else goto <D.45193>;
      <D.45206>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45143 = D.44405->opcode;
      D.45144 = D.45143 + 64888;
      if (D.45144 > 9) goto <D.45192>; else goto <D.45193>;
      <D.45192>:
      D.44404 = cfg->cbb;
      mono_link_bblock (cfg, D.44404, falsebb);
      <D.45193>:
      <D.45182>:
      D.44404 = cfg->cbb;
      D.44404->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.45207>;
      <D.45174>:
      D.44404 = cfg->cbb;
      D.44404->extended = 1;
      <D.45207>:
      <D.45164>:
    }
    if (get_length != 0) goto <D.45208>; else goto <D.45209>;
    <D.45208>:
    D.44396 = cfg->mempool;
    ins = mono_mempool_alloc (D.44396, 56);
    ins->data.op[1].const_val = 0;
    D.44594 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.44594;
    ins->prev = 0B;
    D.44595 = ins->prev;
    ins->next = D.44595;
    ins->opcode = 393;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.44596 = ins->sreg3;
    ins->sreg2 = D.44596;
    D.44597 = ins->sreg2;
    ins->sreg1 = D.44597;
    D.44401 = cfg->ip;
    ins->cil_code = D.44401;
    ins->dreg = dreg;
    ins->sreg1 = bounds_reg;
    ins->data.op[0].const_val = 0;
    ins->type = 1;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    if (D.44405 != 0B) goto <D.45210>; else goto <D.45211>;
    <D.45210>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.44405->next = ins;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    ins->prev = D.44405;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    goto <D.45212>;
    <D.45211>:
    D.44404 = cfg->cbb;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    D.44405 = D.44404->last_ins;
    D.44404->code = D.44405;
    <D.45212>:
    goto <D.45213>;
    <D.45209>:
    D.44396 = cfg->mempool;
    ins = mono_mempool_alloc (D.44396, 56);
    ins->data.op[1].const_val = 0;
    D.44594 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.44594;
    ins->prev = 0B;
    D.44595 = ins->prev;
    ins->next = D.44595;
    ins->opcode = 393;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.44596 = ins->sreg3;
    ins->sreg2 = D.44596;
    D.44597 = ins->sreg2;
    ins->sreg1 = D.44597;
    D.44401 = cfg->ip;
    ins->cil_code = D.44401;
    ins->dreg = dreg;
    ins->sreg1 = bounds_reg;
    ins->data.op[0].const_val = 4;
    ins->type = 1;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    if (D.44405 != 0B) goto <D.45214>; else goto <D.45215>;
    <D.45214>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.44405->next = ins;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    ins->prev = D.44405;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    goto <D.45216>;
    <D.45215>:
    D.44404 = cfg->cbb;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    D.44405 = D.44404->last_ins;
    D.44404->code = D.44405;
    <D.45216>:
    <D.45213>:
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.44396 = cfg->mempool;
      ins = mono_mempool_alloc (D.44396, 56);
      ins->data.op[1].const_val = 0;
      D.45217 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.45217;
      ins->prev = 0B;
      D.45218 = ins->prev;
      ins->next = D.45218;
      ins->opcode = 442;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.45219 = ins->sreg3;
      ins->sreg2 = D.45219;
      D.45220 = ins->sreg2;
      ins->sreg1 = D.45220;
      D.44401 = cfg->ip;
      ins->cil_code = D.44401;
      if (1 != 0) goto <D.45221>; else goto <D.45222>;
      <D.45221>:
      D.44396 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.44396, 172);
      D.45070 = cfg->num_bblocks;
      D.45223 = D.45070;
      D.45224 = D.45223 + 1;
      cfg->num_bblocks = D.45224;
      D.45225 = (int) D.45223;
      falsebb->block_num = D.45225;
      ins->data.op[0].target_block = end_bb;
      D.44404 = cfg->cbb;
      mono_link_bblock (cfg, D.44404, end_bb);
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.45226>; else goto <D.45227>;
      <D.45226>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.44405->next = ins;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      ins->prev = D.44405;
      D.44404 = cfg->cbb;
      D.44404->last_ins = ins;
      goto <D.45228>;
      <D.45227>:
      D.44404 = cfg->cbb;
      D.44404 = cfg->cbb;
      D.44404->last_ins = ins;
      D.44405 = D.44404->last_ins;
      D.44404->code = D.44405;
      <D.45228>:
      D.45229 = falsebb->cil_code;
      if (D.45229 != 0B) goto <D.45230>; else goto <D.45231>;
      <D.45230>:
      D.45123 = cfg->cil_offset_to_bb;
      D.45229 = falsebb->cil_code;
      D.45232 = (int) D.45229;
      D.45125 = cfg->cil_start;
      D.45126 = (int) D.45125;
      D.45233 = D.45232 - D.45126;
      D.45234 = (unsigned int) D.45233;
      D.45235 = D.45234 * 4;
      D.45236 = D.45123 + D.45235;
      *D.45236 = falsebb;
      <D.45231>:
      D.45131 = cfg->real_offset;
      falsebb->real_offset = D.45131;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.45240>; else goto <D.45237>;
      <D.45240>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45241 = D.44405->opcode;
      D.45242 = D.45241 + 64985;
      D.45243 = D.45242 <= 9;
      D.45244 = D.45241 + 64878;
      D.45245 = D.45244 <= 9;
      D.45246 = D.45243 | D.45245;
      if (D.45246 != 0) goto <D.45238>; else goto <D.45247>;
      <D.45247>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45143 = D.44405->opcode;
      D.45144 = D.45143 + 64888;
      if (D.45144 <= 9) goto <D.45238>; else goto <D.45237>;
      <D.45238>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45145 = D.44405->data.op[1].many_blocks;
      D.45146 = D.45145 + 4;
      D.45147 = *D.45146;
      if (D.45147 == 0B) goto <D.45248>; else goto <D.45237>;
      <D.45248>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45145 = D.44405->data.op[1].many_blocks;
      D.45146 = D.45145 + 4;
      *D.45146 = falsebb;
      D.44404 = cfg->cbb;
      mono_link_bblock (cfg, D.44404, falsebb);
      goto <D.45239>;
      <D.45237>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 == 0B) goto <D.45249>; else goto <D.45251>;
      <D.45251>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45252 = D.44405->opcode;
      D.45253 = D.45252 != 442;
      D.45254 = D.45252 != 759;
      D.45255 = D.45253 & D.45254;
      if (D.45255 != 0) goto <D.45256>; else goto <D.45250>;
      <D.45256>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45257 = D.44405->opcode;
      D.45258 = D.45257 + 64985;
      D.45259 = D.45258 > 9;
      D.45260 = D.45257 + 64878;
      D.45261 = D.45260 > 9;
      D.45262 = D.45259 & D.45261;
      if (D.45262 != 0) goto <D.45263>; else goto <D.45250>;
      <D.45263>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45143 = D.44405->opcode;
      D.45144 = D.45143 + 64888;
      if (D.45144 > 9) goto <D.45249>; else goto <D.45250>;
      <D.45249>:
      D.44404 = cfg->cbb;
      mono_link_bblock (cfg, D.44404, falsebb);
      <D.45250>:
      <D.45239>:
      D.44404 = cfg->cbb;
      D.44404->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.45264>;
      <D.45222>:
      D.44396 = cfg->mempool;
      D.45265 = mono_mempool_alloc (D.44396, 8);
      ins->data.op[1].many_blocks = D.45265;
      D.45266 = ins->data.op[1].many_blocks;
      *D.45266 = end_bb;
      D.45266 = ins->data.op[1].many_blocks;
      D.45267 = D.45266 + 4;
      *D.45267 = 0B;
      D.44404 = cfg->cbb;
      mono_link_bblock (cfg, D.44404, end_bb);
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.45268>; else goto <D.45269>;
      <D.45268>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.44405->next = ins;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      ins->prev = D.44405;
      D.44404 = cfg->cbb;
      D.44404->last_ins = ins;
      goto <D.45270>;
      <D.45269>:
      D.44404 = cfg->cbb;
      D.44404 = cfg->cbb;
      D.44404->last_ins = ins;
      D.44405 = D.44404->last_ins;
      D.44404->code = D.44405;
      <D.45270>:
      D.45171 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.45172 = D.45171 & 8;
      if (D.45172 == 0) goto <D.45271>; else goto <D.45272>;
      <D.45271>:
      D.44396 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.44396, 172);
      D.45070 = cfg->num_bblocks;
      D.45273 = D.45070;
      D.45274 = D.45273 + 1;
      cfg->num_bblocks = D.45274;
      D.45275 = (int) D.45273;
      falsebb->block_num = D.45275;
      D.45266 = ins->data.op[1].many_blocks;
      D.45267 = D.45266 + 4;
      *D.45267 = falsebb;
      D.44404 = cfg->cbb;
      mono_link_bblock (cfg, D.44404, falsebb);
      D.45229 = falsebb->cil_code;
      if (D.45229 != 0B) goto <D.45276>; else goto <D.45277>;
      <D.45276>:
      D.45123 = cfg->cil_offset_to_bb;
      D.45229 = falsebb->cil_code;
      D.45232 = (int) D.45229;
      D.45125 = cfg->cil_start;
      D.45126 = (int) D.45125;
      D.45233 = D.45232 - D.45126;
      D.45234 = (unsigned int) D.45233;
      D.45235 = D.45234 * 4;
      D.45236 = D.45123 + D.45235;
      *D.45236 = falsebb;
      <D.45277>:
      D.45131 = cfg->real_offset;
      falsebb->real_offset = D.45131;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.45281>; else goto <D.45278>;
      <D.45281>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45282 = D.44405->opcode;
      D.45283 = D.45282 + 64985;
      D.45284 = D.45283 <= 9;
      D.45285 = D.45282 + 64878;
      D.45286 = D.45285 <= 9;
      D.45287 = D.45284 | D.45286;
      if (D.45287 != 0) goto <D.45279>; else goto <D.45288>;
      <D.45288>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45143 = D.44405->opcode;
      D.45144 = D.45143 + 64888;
      if (D.45144 <= 9) goto <D.45279>; else goto <D.45278>;
      <D.45279>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45145 = D.44405->data.op[1].many_blocks;
      D.45146 = D.45145 + 4;
      D.45147 = *D.45146;
      if (D.45147 == 0B) goto <D.45289>; else goto <D.45278>;
      <D.45289>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45145 = D.44405->data.op[1].many_blocks;
      D.45146 = D.45145 + 4;
      *D.45146 = falsebb;
      D.44404 = cfg->cbb;
      mono_link_bblock (cfg, D.44404, falsebb);
      goto <D.45280>;
      <D.45278>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 == 0B) goto <D.45290>; else goto <D.45292>;
      <D.45292>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45293 = D.44405->opcode;
      D.45294 = D.45293 != 442;
      D.45295 = D.45293 != 759;
      D.45296 = D.45294 & D.45295;
      if (D.45296 != 0) goto <D.45297>; else goto <D.45291>;
      <D.45297>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45298 = D.44405->opcode;
      D.45299 = D.45298 + 64985;
      D.45300 = D.45299 > 9;
      D.45301 = D.45298 + 64878;
      D.45302 = D.45301 > 9;
      D.45303 = D.45300 & D.45302;
      if (D.45303 != 0) goto <D.45304>; else goto <D.45291>;
      <D.45304>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.45143 = D.44405->opcode;
      D.45144 = D.45143 + 64888;
      if (D.45144 > 9) goto <D.45290>; else goto <D.45291>;
      <D.45290>:
      D.44404 = cfg->cbb;
      mono_link_bblock (cfg, D.44404, falsebb);
      <D.45291>:
      <D.45280>:
      D.44404 = cfg->cbb;
      D.44404->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.45305>;
      <D.45272>:
      D.44404 = cfg->cbb;
      D.44404->extended = 1;
      <D.45305>:
      <D.45264>:
    }
    D.45306 = szarray_bb->cil_code;
    if (D.45306 != 0B) goto <D.45307>; else goto <D.45308>;
    <D.45307>:
    D.45123 = cfg->cil_offset_to_bb;
    D.45306 = szarray_bb->cil_code;
    D.45309 = (int) D.45306;
    D.45125 = cfg->cil_start;
    D.45126 = (int) D.45125;
    D.45310 = D.45309 - D.45126;
    D.45311 = (unsigned int) D.45310;
    D.45312 = D.45311 * 4;
    D.45313 = D.45123 + D.45312;
    *D.45313 = szarray_bb;
    <D.45308>:
    D.45131 = cfg->real_offset;
    szarray_bb->real_offset = D.45131;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    if (D.44405 != 0B) goto <D.45317>; else goto <D.45314>;
    <D.45317>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.45318 = D.44405->opcode;
    D.45319 = D.45318 + 64985;
    D.45320 = D.45319 <= 9;
    D.45321 = D.45318 + 64878;
    D.45322 = D.45321 <= 9;
    D.45323 = D.45320 | D.45322;
    if (D.45323 != 0) goto <D.45315>; else goto <D.45324>;
    <D.45324>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.45143 = D.44405->opcode;
    D.45144 = D.45143 + 64888;
    if (D.45144 <= 9) goto <D.45315>; else goto <D.45314>;
    <D.45315>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.45145 = D.44405->data.op[1].many_blocks;
    D.45146 = D.45145 + 4;
    D.45147 = *D.45146;
    if (D.45147 == 0B) goto <D.45325>; else goto <D.45314>;
    <D.45325>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.45145 = D.44405->data.op[1].many_blocks;
    D.45146 = D.45145 + 4;
    *D.45146 = szarray_bb;
    D.44404 = cfg->cbb;
    mono_link_bblock (cfg, D.44404, szarray_bb);
    goto <D.45316>;
    <D.45314>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    if (D.44405 == 0B) goto <D.45326>; else goto <D.45328>;
    <D.45328>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.45329 = D.44405->opcode;
    D.45330 = D.45329 != 442;
    D.45331 = D.45329 != 759;
    D.45332 = D.45330 & D.45331;
    if (D.45332 != 0) goto <D.45333>; else goto <D.45327>;
    <D.45333>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.45334 = D.44405->opcode;
    D.45335 = D.45334 + 64985;
    D.45336 = D.45335 > 9;
    D.45337 = D.45334 + 64878;
    D.45338 = D.45337 > 9;
    D.45339 = D.45336 & D.45338;
    if (D.45339 != 0) goto <D.45340>; else goto <D.45327>;
    <D.45340>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.45143 = D.44405->opcode;
    D.45144 = D.45143 + 64888;
    if (D.45144 > 9) goto <D.45326>; else goto <D.45327>;
    <D.45326>:
    D.44404 = cfg->cbb;
    mono_link_bblock (cfg, D.44404, szarray_bb);
    <D.45327>:
    <D.45316>:
    D.44404 = cfg->cbb;
    D.44404->next_bb = szarray_bb;
    cfg->cbb = szarray_bb;
    if (get_length != 0) goto <D.45341>; else goto <D.45342>;
    <D.45341>:
    D.44396 = cfg->mempool;
    ins = mono_mempool_alloc (D.44396, 56);
    ins->data.op[1].const_val = 0;
    D.44594 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.44594;
    ins->prev = 0B;
    D.44595 = ins->prev;
    ins->next = D.44595;
    ins->opcode = 393;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.44596 = ins->sreg3;
    ins->sreg2 = D.44596;
    D.44597 = ins->sreg2;
    ins->sreg1 = D.44597;
    D.44401 = cfg->ip;
    ins->cil_code = D.44401;
    ins->dreg = dreg;
    D.44402 = *args;
    D.44403 = D.44402->dreg;
    ins->sreg1 = D.44403;
    ins->data.op[0].const_val = 12;
    ins->type = 1;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    if (D.44405 != 0B) goto <D.45343>; else goto <D.45344>;
    <D.45343>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.44405->next = ins;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    ins->prev = D.44405;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    goto <D.45345>;
    <D.45344>:
    D.44404 = cfg->cbb;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    D.44405 = D.44404->last_ins;
    D.44404->code = D.44405;
    <D.45345>:
    goto <D.45346>;
    <D.45342>:
    {
      struct MonoInst * inst;

      D.44396 = cfg->mempool;
      inst = mono_mempool_alloc (D.44396, 56);
      inst->data.op[1].const_val = 0;
      D.45347 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45347;
      inst->prev = 0B;
      D.45348 = inst->prev;
      inst->next = D.45348;
      inst->opcode = 362;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45349 = inst->sreg3;
      inst->sreg2 = D.45349;
      D.45350 = inst->sreg2;
      inst->sreg1 = D.45350;
      D.44401 = cfg->ip;
      inst->cil_code = D.44401;
      inst->dreg = dreg;
      inst->data.op[0].const_val = 0;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.45351>; else goto <D.45352>;
      <D.45351>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.44405->next = inst;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      inst->prev = D.44405;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      goto <D.45353>;
      <D.45352>:
      D.44404 = cfg->cbb;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      D.44405 = D.44404->last_ins;
      D.44404->code = D.44405;
      <D.45353>:
    }
    <D.45346>:
    D.45354 = end_bb->cil_code;
    if (D.45354 != 0B) goto <D.45355>; else goto <D.45356>;
    <D.45355>:
    D.45123 = cfg->cil_offset_to_bb;
    D.45354 = end_bb->cil_code;
    D.45357 = (int) D.45354;
    D.45125 = cfg->cil_start;
    D.45126 = (int) D.45125;
    D.45358 = D.45357 - D.45126;
    D.45359 = (unsigned int) D.45358;
    D.45360 = D.45359 * 4;
    D.45361 = D.45123 + D.45360;
    *D.45361 = end_bb;
    <D.45356>:
    D.45131 = cfg->real_offset;
    end_bb->real_offset = D.45131;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    if (D.44405 != 0B) goto <D.45365>; else goto <D.45362>;
    <D.45365>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.45366 = D.44405->opcode;
    D.45367 = D.45366 + 64985;
    D.45368 = D.45367 <= 9;
    D.45369 = D.45366 + 64878;
    D.45370 = D.45369 <= 9;
    D.45371 = D.45368 | D.45370;
    if (D.45371 != 0) goto <D.45363>; else goto <D.45372>;
    <D.45372>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.45143 = D.44405->opcode;
    D.45144 = D.45143 + 64888;
    if (D.45144 <= 9) goto <D.45363>; else goto <D.45362>;
    <D.45363>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.45145 = D.44405->data.op[1].many_blocks;
    D.45146 = D.45145 + 4;
    D.45147 = *D.45146;
    if (D.45147 == 0B) goto <D.45373>; else goto <D.45362>;
    <D.45373>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.45145 = D.44405->data.op[1].many_blocks;
    D.45146 = D.45145 + 4;
    *D.45146 = end_bb;
    D.44404 = cfg->cbb;
    mono_link_bblock (cfg, D.44404, end_bb);
    goto <D.45364>;
    <D.45362>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    if (D.44405 == 0B) goto <D.45374>; else goto <D.45376>;
    <D.45376>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.45377 = D.44405->opcode;
    D.45378 = D.45377 != 442;
    D.45379 = D.45377 != 759;
    D.45380 = D.45378 & D.45379;
    if (D.45380 != 0) goto <D.45381>; else goto <D.45375>;
    <D.45381>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.45382 = D.44405->opcode;
    D.45383 = D.45382 + 64985;
    D.45384 = D.45383 > 9;
    D.45385 = D.45382 + 64878;
    D.45386 = D.45385 > 9;
    D.45387 = D.45384 & D.45386;
    if (D.45387 != 0) goto <D.45388>; else goto <D.45375>;
    <D.45388>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.45143 = D.44405->opcode;
    D.45144 = D.45143 + 64888;
    if (D.45144 > 9) goto <D.45374>; else goto <D.45375>;
    <D.45374>:
    D.44404 = cfg->cbb;
    mono_link_bblock (cfg, D.44404, end_bb);
    <D.45375>:
    <D.45364>:
    D.44404 = cfg->cbb;
    D.44404->next_bb = end_bb;
    cfg->cbb = end_bb;
    D.44396 = cfg->mempool;
    ins = mono_mempool_alloc (D.44396, 56);
    ins->data.op[1].const_val = 0;
    D.44594 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.44594;
    ins->prev = 0B;
    D.44595 = ins->prev;
    ins->next = D.44595;
    ins->opcode = 424;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.44596 = ins->sreg3;
    ins->sreg2 = D.44596;
    D.44597 = ins->sreg2;
    ins->sreg1 = D.44597;
    D.44401 = cfg->ip;
    ins->cil_code = D.44401;
    ins->dreg = dreg;
    ins->sreg1 = dreg;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    if (D.44405 != 0B) goto <D.45389>; else goto <D.45390>;
    <D.45389>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.44405->next = ins;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    ins->prev = D.44405;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    goto <D.45391>;
    <D.45390>:
    D.44404 = cfg->cbb;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    D.44405 = D.44404->last_ins;
    D.44404->code = D.44405;
    <D.45391>:
    ins->type = 1;
    D.44601 = ins;
    return D.44601;
  }
  <D.45038>:
  <D.45035>:
  <D.44951>:
  D.44376 = cmethod->name;
  D.44947 = *D.44376;
  if (D.44947 != 103) goto <D.45392>; else goto <D.45393>;
  <D.45392>:
  D.44601 = 0B;
  return D.44601;
  <D.45393>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.45397 = "get_Rank";
      D.45398 = MEM[(const unsigned char *)D.45397];
      D.45399 = (int) D.45398;
      D.45400 = *__s2;
      D.45401 = (int) D.45400;
      __result = D.45399 - D.45401;
      {
        D.45402 = __s2_len != 0;
        D.45403 = __result == 0;
        D.45404 = D.45402 & D.45403;
        if (D.45404 != 0) goto <D.45405>; else goto <D.45406>;
        <D.45405>:
        D.45407 = &MEM[(void *)"get_Rank" + 1B];
        D.45408 = *D.45407;
        D.45409 = (int) D.45408;
        D.45410 = __s2 + 1;
        D.45411 = *D.45410;
        D.45412 = (int) D.45411;
        __result = D.45409 - D.45412;
        D.45413 = __s2_len > 1;
        D.45403 = __result == 0;
        D.45414 = D.45413 & D.45403;
        if (D.45414 != 0) goto <D.45415>; else goto <D.45416>;
        <D.45415>:
        D.45417 = &MEM[(void *)"get_Rank" + 2B];
        D.45418 = *D.45417;
        D.45419 = (int) D.45418;
        D.45420 = __s2 + 2;
        D.45421 = *D.45420;
        D.45422 = (int) D.45421;
        __result = D.45419 - D.45422;
        D.45423 = __s2_len > 2;
        D.45403 = __result == 0;
        D.45424 = D.45423 & D.45403;
        if (D.45424 != 0) goto <D.45425>; else goto <D.45426>;
        <D.45425>:
        D.45427 = &MEM[(void *)"get_Rank" + 3B];
        D.45428 = *D.45427;
        D.45429 = (int) D.45428;
        D.45430 = __s2 + 3;
        D.45431 = *D.45430;
        D.45432 = (int) D.45431;
        __result = D.45429 - D.45432;
        <D.45426>:
        <D.45416>:
        <D.45406>:
      }
      D.29209 = __result;
    }
    iftmp.409 = -D.29209;
    goto <D.45433>;
    <D.45396>:
    D.44376 = cmethod->name;
    iftmp.409 = __builtin_strcmp (D.44376, "get_Rank");
    <D.45433>:
    D.29210 = iftmp.409;
  }
  if (D.29210 == 0) goto <D.45434>; else goto <D.45435>;
  <D.45434>:
  {
    int dreg;
    int vtable_reg;

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

      __ins_flags = 32;
      D.45438 = __ins_flags & 32;
      if (D.45438 != 0) goto <D.45439>; else goto <D.45440>;
      <D.45439>:
      D.44392 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.44393 = D.44392 & 64;
      if (D.44393 != 0) goto <D.45441>; else goto <D.45442>;
      <D.45441>:
      {
        struct MonoInst * inst;

        D.44396 = cfg->mempool;
        inst = mono_mempool_alloc (D.44396, 56);
        inst->data.op[1].const_val = 0;
        D.45443 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.45443;
        inst->prev = 0B;
        D.45444 = inst->prev;
        inst->next = D.45444;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.45445 = inst->sreg3;
        inst->sreg2 = D.45445;
        D.45446 = inst->sreg2;
        inst->sreg1 = D.45446;
        D.44401 = cfg->ip;
        inst->cil_code = D.44401;
        inst->dreg = -1;
        D.44402 = *args;
        D.44403 = D.44402->dreg;
        inst->sreg1 = D.44403;
        inst->data.op[1].const_val = 0;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        if (D.44405 != 0B) goto <D.45447>; else goto <D.45448>;
        <D.45447>:
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        D.44405->next = inst;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        inst->prev = D.44405;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        goto <D.45449>;
        <D.45448>:
        D.44404 = cfg->cbb;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        D.44405 = D.44404->last_ins;
        D.44404->code = D.44405;
        <D.45449>:
      }
      {
        struct MonoInst * inst;

        D.44396 = cfg->mempool;
        inst = mono_mempool_alloc (D.44396, 56);
        inst->data.op[1].const_val = 0;
        D.45450 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.45450;
        inst->prev = 0B;
        D.45451 = inst->prev;
        inst->next = D.45451;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.45452 = inst->sreg3;
        inst->sreg2 = D.45452;
        D.45453 = inst->sreg2;
        inst->sreg1 = D.45453;
        D.44401 = cfg->ip;
        inst->cil_code = D.44401;
        inst->data.op[1].p = "NullReferenceException";
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        if (D.44405 != 0B) goto <D.45454>; else goto <D.45455>;
        <D.45454>:
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        D.44405->next = inst;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        inst->prev = D.44405;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        goto <D.45456>;
        <D.45455>:
        D.44404 = cfg->cbb;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        D.44405 = D.44404->last_ins;
        D.44404->code = D.44405;
        <D.45456>:
      }
      goto <D.45457>;
      <D.45442>:
      <D.45457>:
      <D.45440>:
      D.44396 = cfg->mempool;
      inst = mono_mempool_alloc (D.44396, 56);
      inst->data.op[1].const_val = 0;
      D.45458 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45458;
      inst->prev = 0B;
      D.45459 = inst->prev;
      inst->next = D.45459;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45460 = inst->sreg3;
      inst->sreg2 = D.45460;
      D.45461 = inst->sreg2;
      inst->sreg1 = D.45461;
      D.44401 = cfg->ip;
      inst->cil_code = D.44401;
      inst->dreg = vtable_reg;
      D.44402 = *args;
      D.44403 = D.44402->dreg;
      inst->sreg1 = D.44403;
      inst->data.op[0].const_val = 0;
      inst->type = 1;
      D.45462 = (unsigned char) __ins_flags;
      inst->flags = D.45462;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      if (D.44405 != 0B) goto <D.45463>; else goto <D.45464>;
      <D.45463>:
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      D.44405->next = inst;
      D.44404 = cfg->cbb;
      D.44405 = D.44404->last_ins;
      inst->prev = D.44405;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      goto <D.45465>;
      <D.45464>:
      D.44404 = cfg->cbb;
      D.44404 = cfg->cbb;
      D.44404->last_ins = inst;
      D.44405 = D.44404->last_ins;
      D.44404->code = D.44405;
      <D.45465>:
    }
    D.44396 = cfg->mempool;
    ins = mono_mempool_alloc (D.44396, 56);
    ins->data.op[1].const_val = 0;
    D.44594 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.44594;
    ins->prev = 0B;
    D.44595 = ins->prev;
    ins->next = D.44595;
    ins->opcode = 390;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.44596 = ins->sreg3;
    ins->sreg2 = D.44596;
    D.44597 = ins->sreg2;
    ins->sreg1 = D.44597;
    D.44401 = cfg->ip;
    ins->cil_code = D.44401;
    ins->dreg = dreg;
    ins->sreg1 = vtable_reg;
    ins->data.op[0].const_val = 22;
    ins->type = 1;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    if (D.44405 != 0B) goto <D.45466>; else goto <D.45467>;
    <D.45466>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.44405->next = ins;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    ins->prev = D.44405;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    goto <D.45468>;
    <D.45467>:
    D.44404 = cfg->cbb;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    D.44405 = D.44404->last_ins;
    D.44404->code = D.44405;
    <D.45468>:
    type_from_op (ins, 0B, 0B);
    D.44601 = ins;
    return D.44601;
  }
  <D.45435>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.44605 = "get_Length";
      D.44606 = MEM[(const unsigned char *)D.44605];
      D.44607 = (int) D.44606;
      D.45472 = *__s2;
      D.45473 = (int) D.45472;
      __result = D.44607 - D.45473;
      {
        D.45474 = __s2_len != 0;
        D.45475 = __result == 0;
        D.45476 = D.45474 & D.45475;
        if (D.45476 != 0) goto <D.45477>; else goto <D.45478>;
        <D.45477>:
        D.44615 = &MEM[(void *)"get_Length" + 1B];
        D.44616 = *D.44615;
        D.44617 = (int) D.44616;
        D.45479 = __s2 + 1;
        D.45480 = *D.45479;
        D.45481 = (int) D.45480;
        __result = D.44617 - D.45481;
        D.45482 = __s2_len > 1;
        D.45475 = __result == 0;
        D.45483 = D.45482 & D.45475;
        if (D.45483 != 0) goto <D.45484>; else goto <D.45485>;
        <D.45484>:
        D.44625 = &MEM[(void *)"get_Length" + 2B];
        D.44626 = *D.44625;
        D.44627 = (int) D.44626;
        D.45486 = __s2 + 2;
        D.45487 = *D.45486;
        D.45488 = (int) D.45487;
        __result = D.44627 - D.45488;
        D.45489 = __s2_len > 2;
        D.45475 = __result == 0;
        D.45490 = D.45489 & D.45475;
        if (D.45490 != 0) goto <D.45491>; else goto <D.45492>;
        <D.45491>:
        D.44635 = &MEM[(void *)"get_Length" + 3B];
        D.44636 = *D.44635;
        D.44637 = (int) D.44636;
        D.45493 = __s2 + 3;
        D.45494 = *D.45493;
        D.45495 = (int) D.45494;
        __result = D.44637 - D.45495;
        <D.45492>:
        <D.45485>:
        <D.45478>:
      }
      D.29224 = __result;
    }
    iftmp.410 = -D.29224;
    goto <D.45496>;
    <D.45471>:
    D.44376 = cmethod->name;
    iftmp.410 = __builtin_strcmp (D.44376, "get_Length");
    <D.45496>:
    D.29225 = iftmp.410;
  }
  if (D.29225 == 0) goto <D.45497>; else goto <D.45498>;
  <D.45497>:
  {
    int dreg;

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

      __ins_flags = 32;
      D.45500 = __ins_flags & 32;
      if (D.45500 != 0) goto <D.45501>; else goto <D.45502>;
      <D.45501>:
      D.44392 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.44393 = D.44392 & 64;
      if (D.44393 != 0) goto <D.45503>; else goto <D.45504>;
      <D.45503>:
      {
        struct MonoInst * inst;

        D.44396 = cfg->mempool;
        inst = mono_mempool_alloc (D.44396, 56);
        inst->data.op[1].const_val = 0;
        D.45505 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.45505;
        inst->prev = 0B;
        D.45506 = inst->prev;
        inst->next = D.45506;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.45507 = inst->sreg3;
        inst->sreg2 = D.45507;
        D.45508 = inst->sreg2;
        inst->sreg1 = D.45508;
        D.44401 = cfg->ip;
        inst->cil_code = D.44401;
        inst->dreg = -1;
        D.44402 = *args;
        D.44403 = D.44402->dreg;
        inst->sreg1 = D.44403;
        inst->data.op[1].const_val = 0;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        if (D.44405 != 0B) goto <D.45509>; else goto <D.45510>;
        <D.45509>:
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        D.44405->next = inst;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        inst->prev = D.44405;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        goto <D.45511>;
        <D.45510>:
        D.44404 = cfg->cbb;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        D.44405 = D.44404->last_ins;
        D.44404->code = D.44405;
        <D.45511>:
      }
      {
        struct MonoInst * inst;

        D.44396 = cfg->mempool;
        inst = mono_mempool_alloc (D.44396, 56);
        inst->data.op[1].const_val = 0;
        D.45512 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.45512;
        inst->prev = 0B;
        D.45513 = inst->prev;
        inst->next = D.45513;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.45514 = inst->sreg3;
        inst->sreg2 = D.45514;
        D.45515 = inst->sreg2;
        inst->sreg1 = D.45515;
        D.44401 = cfg->ip;
        inst->cil_code = D.44401;
        inst->data.op[1].p = "NullReferenceException";
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        if (D.44405 != 0B) goto <D.45516>; else goto <D.45517>;
        <D.45516>:
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        D.44405->next = inst;
        D.44404 = cfg->cbb;
        D.44405 = D.44404->last_ins;
        inst->prev = D.44405;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        goto <D.45518>;
        <D.45517>:
        D.44404 = cfg->cbb;
        D.44404 = cfg->cbb;
        D.44404->last_ins = inst;
        D.44405 = D.44404->last_ins;
        D.44404->code = D.44405;
        <D.45518>:
      }
      goto <D.45519>;
      <D.45504>:
      <D.45519>:
      <D.45502>:
      D.44396 = cfg->mempool;
      ins = mono_mempool_alloc (D.44396, 56);
      ins->data.op[1].const_val = 0;
      D.44594 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.44594;
      ins->prev = 0B;
      D.44595 = ins->prev;
      ins->next = D.44595;
      ins->opcode = 393;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.44596 = ins->sreg3;
      ins->sreg2 = D.44596;
      D.44597 = ins->sreg2;
      ins->sreg1 = D.44597;
      D.44401 = cfg->ip;
      ins->cil_code = D.44401;
      ins->dreg = dreg;
      D.44402 = *args;
      D.44403 = D.44402->dreg;
      ins->sreg1 = D.44403;
      ins->data.op[0].const_val = 12;
      ins->type = 1;
      D.45520 = (unsigned char) __ins_flags;
      ins->flags = D.45520;
    }
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    if (D.44405 != 0B) goto <D.45521>; else goto <D.45522>;
    <D.45521>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.44405->next = ins;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    ins->prev = D.44405;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    goto <D.45523>;
    <D.45522>:
    D.44404 = cfg->cbb;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    D.44405 = D.44404->last_ins;
    D.44404->code = D.44405;
    <D.45523>:
    type_from_op (ins, 0B, 0B);
    D.44601 = ins;
    return D.44601;
  }
  <D.45498>:
  D.44601 = 0B;
  return D.44601;
  <D.44900>:
  D.44332 = cmethod->klass;
  runtime_helpers_class.397 = runtime_helpers_class;
  if (D.44332 == runtime_helpers_class.397) goto <D.45524>; else goto <D.45525>;
  <D.45524>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.45529 = "get_OffsetToStringData";
      D.45530 = MEM[(const unsigned char *)D.45529];
      D.45531 = (int) D.45530;
      D.45532 = *__s2;
      D.45533 = (int) D.45532;
      __result = D.45531 - D.45533;
      {
        D.45534 = __s2_len != 0;
        D.45535 = __result == 0;
        D.45536 = D.45534 & D.45535;
        if (D.45536 != 0) goto <D.45537>; else goto <D.45538>;
        <D.45537>:
        D.45539 = &MEM[(void *)"get_OffsetToStringData" + 1B];
        D.45540 = *D.45539;
        D.45541 = (int) D.45540;
        D.45542 = __s2 + 1;
        D.45543 = *D.45542;
        D.45544 = (int) D.45543;
        __result = D.45541 - D.45544;
        D.45545 = __s2_len > 1;
        D.45535 = __result == 0;
        D.45546 = D.45545 & D.45535;
        if (D.45546 != 0) goto <D.45547>; else goto <D.45548>;
        <D.45547>:
        D.45549 = &MEM[(void *)"get_OffsetToStringData" + 2B];
        D.45550 = *D.45549;
        D.45551 = (int) D.45550;
        D.45552 = __s2 + 2;
        D.45553 = *D.45552;
        D.45554 = (int) D.45553;
        __result = D.45551 - D.45554;
        D.45555 = __s2_len > 2;
        D.45535 = __result == 0;
        D.45556 = D.45555 & D.45535;
        if (D.45556 != 0) goto <D.45557>; else goto <D.45558>;
        <D.45557>:
        D.45559 = &MEM[(void *)"get_OffsetToStringData" + 3B];
        D.45560 = *D.45559;
        D.45561 = (int) D.45560;
        D.45562 = __s2 + 3;
        D.45563 = *D.45562;
        D.45564 = (int) D.45563;
        __result = D.45561 - D.45564;
        <D.45558>:
        <D.45548>:
        <D.45538>:
      }
      D.29237 = __result;
    }
    iftmp.411 = -D.29237;
    goto <D.45565>;
    <D.45528>:
    D.44376 = cmethod->name;
    iftmp.411 = __builtin_strcmp (D.44376, "get_OffsetToStringData");
    <D.45565>:
    D.29238 = iftmp.411;
  }
  if (D.29238 == 0) goto <D.45566>; else goto <D.45567>;
  <D.45566>:
  D.44396 = cfg->mempool;
  ins = mono_mempool_alloc (D.44396, 56);
  ins->data.op[1].const_val = 0;
  D.44594 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.44594;
  ins->prev = 0B;
  D.44595 = ins->prev;
  ins->next = D.44595;
  ins->opcode = 362;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.44596 = ins->sreg3;
  ins->sreg2 = D.44596;
  D.44597 = ins->sreg2;
  ins->sreg1 = D.44597;
  D.44401 = cfg->ip;
  ins->cil_code = D.44401;
  ins->data.op[0].const_val = 12;
  ins->type = 1;
  D.45568 = alloc_dreg (cfg, 1);
  D.45569 = (int) D.45568;
  ins->dreg = D.45569;
  D.44404 = cfg->cbb;
  D.44405 = D.44404->last_ins;
  if (D.44405 != 0B) goto <D.45570>; else goto <D.45571>;
  <D.45570>:
  D.44404 = cfg->cbb;
  D.44405 = D.44404->last_ins;
  D.44405->next = ins;
  D.44404 = cfg->cbb;
  D.44405 = D.44404->last_ins;
  ins->prev = D.44405;
  D.44404 = cfg->cbb;
  D.44404->last_ins = ins;
  goto <D.45572>;
  <D.45571>:
  D.44404 = cfg->cbb;
  D.44404 = cfg->cbb;
  D.44404->last_ins = ins;
  D.44405 = D.44404->last_ins;
  D.44404->code = D.44405;
  <D.45572>:
  D.44601 = ins;
  return D.44601;
  <D.45567>:
  D.44601 = 0B;
  return D.44601;
  <D.45525>:
  D.44332 = cmethod->klass;
  D.45573 = mono_defaults.thread_class;
  if (D.44332 == D.45573) goto <D.45574>; else goto <D.45575>;
  <D.45574>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.45579 = "SpinWait_nop";
      D.45580 = MEM[(const unsigned char *)D.45579];
      D.45581 = (int) D.45580;
      D.45582 = *__s2;
      D.45583 = (int) D.45582;
      __result = D.45581 - D.45583;
      {
        D.45584 = __s2_len != 0;
        D.45585 = __result == 0;
        D.45586 = D.45584 & D.45585;
        if (D.45586 != 0) goto <D.45587>; else goto <D.45588>;
        <D.45587>:
        D.45589 = &MEM[(void *)"SpinWait_nop" + 1B];
        D.45590 = *D.45589;
        D.45591 = (int) D.45590;
        D.45592 = __s2 + 1;
        D.45593 = *D.45592;
        D.45594 = (int) D.45593;
        __result = D.45591 - D.45594;
        D.45595 = __s2_len > 1;
        D.45585 = __result == 0;
        D.45596 = D.45595 & D.45585;
        if (D.45596 != 0) goto <D.45597>; else goto <D.45598>;
        <D.45597>:
        D.45599 = &MEM[(void *)"SpinWait_nop" + 2B];
        D.45600 = *D.45599;
        D.45601 = (int) D.45600;
        D.45602 = __s2 + 2;
        D.45603 = *D.45602;
        D.45604 = (int) D.45603;
        __result = D.45601 - D.45604;
        D.45605 = __s2_len > 2;
        D.45585 = __result == 0;
        D.45606 = D.45605 & D.45585;
        if (D.45606 != 0) goto <D.45607>; else goto <D.45608>;
        <D.45607>:
        D.45609 = &MEM[(void *)"SpinWait_nop" + 3B];
        D.45610 = *D.45609;
        D.45611 = (int) D.45610;
        D.45612 = __s2 + 3;
        D.45613 = *D.45612;
        D.45614 = (int) D.45613;
        __result = D.45611 - D.45614;
        <D.45608>:
        <D.45598>:
        <D.45588>:
      }
      D.29246 = __result;
    }
    iftmp.412 = -D.29246;
    goto <D.45615>;
    <D.45578>:
    D.44376 = cmethod->name;
    iftmp.412 = __builtin_strcmp (D.44376, "SpinWait_nop");
    <D.45615>:
    D.29247 = iftmp.412;
  }
  if (D.29247 == 0) goto <D.45616>; else goto <D.45617>;
  <D.45616>:
  D.44396 = cfg->mempool;
  ins = mono_mempool_alloc (D.44396, 56);
  ins->data.op[1].const_val = 0;
  D.44594 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.44594;
  ins->prev = 0B;
  D.44595 = ins->prev;
  ins->next = D.44595;
  ins->opcode = 318;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.44596 = ins->sreg3;
  ins->sreg2 = D.44596;
  D.44597 = ins->sreg2;
  ins->sreg1 = D.44597;
  D.44401 = cfg->ip;
  ins->cil_code = D.44401;
  D.44404 = cfg->cbb;
  D.44405 = D.44404->last_ins;
  if (D.44405 != 0B) goto <D.45618>; else goto <D.45619>;
  <D.45618>:
  D.44404 = cfg->cbb;
  D.44405 = D.44404->last_ins;
  D.44405->next = ins;
  D.44404 = cfg->cbb;
  D.44405 = D.44404->last_ins;
  ins->prev = D.44405;
  D.44404 = cfg->cbb;
  D.44404->last_ins = ins;
  goto <D.45620>;
  <D.45619>:
  D.44404 = cfg->cbb;
  D.44404 = cfg->cbb;
  D.44404->last_ins = ins;
  D.44405 = D.44404->last_ins;
  D.44404->code = D.44405;
  <D.45620>:
  D.44601 = ins;
  return D.44601;
  <D.45617>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.45624 = "MemoryBarrier";
      D.45625 = MEM[(const unsigned char *)D.45624];
      D.45626 = (int) D.45625;
      D.45627 = *__s2;
      D.45628 = (int) D.45627;
      __result = D.45626 - D.45628;
      {
        D.45629 = __s2_len != 0;
        D.45630 = __result == 0;
        D.45631 = D.45629 & D.45630;
        if (D.45631 != 0) goto <D.45632>; else goto <D.45633>;
        <D.45632>:
        D.45634 = &MEM[(void *)"MemoryBarrier" + 1B];
        D.45635 = *D.45634;
        D.45636 = (int) D.45635;
        D.45637 = __s2 + 1;
        D.45638 = *D.45637;
        D.45639 = (int) D.45638;
        __result = D.45636 - D.45639;
        D.45640 = __s2_len > 1;
        D.45630 = __result == 0;
        D.45641 = D.45640 & D.45630;
        if (D.45641 != 0) goto <D.45642>; else goto <D.45643>;
        <D.45642>:
        D.45644 = &MEM[(void *)"MemoryBarrier" + 2B];
        D.45645 = *D.45644;
        D.45646 = (int) D.45645;
        D.45647 = __s2 + 2;
        D.45648 = *D.45647;
        D.45649 = (int) D.45648;
        __result = D.45646 - D.45649;
        D.45650 = __s2_len > 2;
        D.45630 = __result == 0;
        D.45651 = D.45650 & D.45630;
        if (D.45651 != 0) goto <D.45652>; else goto <D.45653>;
        <D.45652>:
        D.45654 = &MEM[(void *)"MemoryBarrier" + 3B];
        D.45655 = *D.45654;
        D.45656 = (int) D.45655;
        D.45657 = __s2 + 3;
        D.45658 = *D.45657;
        D.45659 = (int) D.45658;
        __result = D.45656 - D.45659;
        <D.45653>:
        <D.45643>:
        <D.45633>:
      }
      D.29255 = __result;
    }
    iftmp.413 = -D.29255;
    goto <D.45660>;
    <D.45623>:
    D.44376 = cmethod->name;
    iftmp.413 = __builtin_strcmp (D.44376, "MemoryBarrier");
    <D.45660>:
    D.29256 = iftmp.413;
  }
  if (D.29256 == 0) goto <D.45661>; else goto <D.45662>;
  <D.45661>:
  D.44601 = emit_memory_barrier (cfg, 4);
  return D.44601;
  <D.45662>:
  goto <D.45663>;
  <D.45575>:
  D.44332 = cmethod->klass;
  D.45664 = mono_defaults.monitor_class;
  if (D.44332 == D.45664) goto <D.45665>; else goto <D.45666>;
  <D.45665>:
  goto <D.45667>;
  <D.45666>:
  D.44332 = cmethod->klass;
  D.45670 = D.44332->image;
  D.44330 = mono_defaults.corlib;
  if (D.45670 == D.44330) goto <D.45671>; else goto <D.45668>;
  <D.45671>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.44332 = cmethod->klass;
      __s2 = D.44332->name_space;
      D.45675 = "System.Threading";
      D.45676 = MEM[(const unsigned char *)D.45675];
      D.45677 = (int) D.45676;
      D.45678 = *__s2;
      D.45679 = (int) D.45678;
      __result = D.45677 - D.45679;
      {
        D.45680 = __s2_len != 0;
        D.45681 = __result == 0;
        D.45682 = D.45680 & D.45681;
        if (D.45682 != 0) goto <D.45683>; else goto <D.45684>;
        <D.45683>:
        D.45685 = &MEM[(void *)"System.Threading" + 1B];
        D.45686 = *D.45685;
        D.45687 = (int) D.45686;
        D.45688 = __s2 + 1;
        D.45689 = *D.45688;
        D.45690 = (int) D.45689;
        __result = D.45687 - D.45690;
        D.45691 = __s2_len > 1;
        D.45681 = __result == 0;
        D.45692 = D.45691 & D.45681;
        if (D.45692 != 0) goto <D.45693>; else goto <D.45694>;
        <D.45693>:
        D.45695 = &MEM[(void *)"System.Threading" + 2B];
        D.45696 = *D.45695;
        D.45697 = (int) D.45696;
        D.45698 = __s2 + 2;
        D.45699 = *D.45698;
        D.45700 = (int) D.45699;
        __result = D.45697 - D.45700;
        D.45701 = __s2_len > 2;
        D.45681 = __result == 0;
        D.45702 = D.45701 & D.45681;
        if (D.45702 != 0) goto <D.45703>; else goto <D.45704>;
        <D.45703>:
        D.45705 = &MEM[(void *)"System.Threading" + 3B];
        D.45706 = *D.45705;
        D.45707 = (int) D.45706;
        D.45708 = __s2 + 3;
        D.45709 = *D.45708;
        D.45710 = (int) D.45709;
        __result = D.45707 - D.45710;
        <D.45704>:
        <D.45694>:
        <D.45684>:
      }
      D.29264 = __result;
    }
    iftmp.414 = -D.29264;
    goto <D.45711>;
    <D.45674>:
    D.44332 = cmethod->klass;
    D.45712 = D.44332->name_space;
    iftmp.414 = __builtin_strcmp (D.45712, "System.Threading");
    <D.45711>:
    D.29265 = iftmp.414;
  }
  if (D.29265 == 0) goto <D.45713>; else goto <D.45668>;
  <D.45713>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.44332 = cmethod->klass;
      __s2 = D.44332->name;
      D.45717 = "Interlocked";
      D.45718 = MEM[(const unsigned char *)D.45717];
      D.45719 = (int) D.45718;
      D.45720 = *__s2;
      D.45721 = (int) D.45720;
      __result = D.45719 - D.45721;
      {
        D.45722 = __s2_len != 0;
        D.45723 = __result == 0;
        D.45724 = D.45722 & D.45723;
        if (D.45724 != 0) goto <D.45725>; else goto <D.45726>;
        <D.45725>:
        D.45727 = &MEM[(void *)"Interlocked" + 1B];
        D.45728 = *D.45727;
        D.45729 = (int) D.45728;
        D.45730 = __s2 + 1;
        D.45731 = *D.45730;
        D.45732 = (int) D.45731;
        __result = D.45729 - D.45732;
        D.45733 = __s2_len > 1;
        D.45723 = __result == 0;
        D.45734 = D.45733 & D.45723;
        if (D.45734 != 0) goto <D.45735>; else goto <D.45736>;
        <D.45735>:
        D.45737 = &MEM[(void *)"Interlocked" + 2B];
        D.45738 = *D.45737;
        D.45739 = (int) D.45738;
        D.45740 = __s2 + 2;
        D.45741 = *D.45740;
        D.45742 = (int) D.45741;
        __result = D.45739 - D.45742;
        D.45743 = __s2_len > 2;
        D.45723 = __result == 0;
        D.45744 = D.45743 & D.45723;
        if (D.45744 != 0) goto <D.45745>; else goto <D.45746>;
        <D.45745>:
        D.45747 = &MEM[(void *)"Interlocked" + 3B];
        D.45748 = *D.45747;
        D.45749 = (int) D.45748;
        D.45750 = __s2 + 3;
        D.45751 = *D.45750;
        D.45752 = (int) D.45751;
        __result = D.45749 - D.45752;
        <D.45746>:
        <D.45736>:
        <D.45726>:
      }
      D.29273 = __result;
    }
    iftmp.415 = -D.29273;
    goto <D.45753>;
    <D.45716>:
    D.44332 = cmethod->klass;
    D.45754 = D.44332->name;
    iftmp.415 = __builtin_strcmp (D.45754, "Interlocked");
    <D.45753>:
    D.29274 = iftmp.415;
  }
  if (D.29274 == 0) goto <D.45755>; else goto <D.45668>;
  <D.45755>:
  ins = 0B;
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.45624 = "MemoryBarrier";
      D.45625 = MEM[(const unsigned char *)D.45624];
      D.45626 = (int) D.45625;
      D.45759 = *__s2;
      D.45760 = (int) D.45759;
      __result = D.45626 - D.45760;
      {
        D.45761 = __s2_len != 0;
        D.45762 = __result == 0;
        D.45763 = D.45761 & D.45762;
        if (D.45763 != 0) goto <D.45764>; else goto <D.45765>;
        <D.45764>:
        D.45634 = &MEM[(void *)"MemoryBarrier" + 1B];
        D.45635 = *D.45634;
        D.45636 = (int) D.45635;
        D.45766 = __s2 + 1;
        D.45767 = *D.45766;
        D.45768 = (int) D.45767;
        __result = D.45636 - D.45768;
        D.45769 = __s2_len > 1;
        D.45762 = __result == 0;
        D.45770 = D.45769 & D.45762;
        if (D.45770 != 0) goto <D.45771>; else goto <D.45772>;
        <D.45771>:
        D.45644 = &MEM[(void *)"MemoryBarrier" + 2B];
        D.45645 = *D.45644;
        D.45646 = (int) D.45645;
        D.45773 = __s2 + 2;
        D.45774 = *D.45773;
        D.45775 = (int) D.45774;
        __result = D.45646 - D.45775;
        D.45776 = __s2_len > 2;
        D.45762 = __result == 0;
        D.45777 = D.45776 & D.45762;
        if (D.45777 != 0) goto <D.45778>; else goto <D.45779>;
        <D.45778>:
        D.45654 = &MEM[(void *)"MemoryBarrier" + 3B];
        D.45655 = *D.45654;
        D.45656 = (int) D.45655;
        D.45780 = __s2 + 3;
        D.45781 = *D.45780;
        D.45782 = (int) D.45781;
        __result = D.45656 - D.45782;
        <D.45779>:
        <D.45772>:
        <D.45765>:
      }
      D.29282 = __result;
    }
    iftmp.416 = -D.29282;
    goto <D.45783>;
    <D.45758>:
    D.44376 = cmethod->name;
    iftmp.416 = __builtin_strcmp (D.44376, "MemoryBarrier");
    <D.45783>:
    D.29283 = iftmp.416;
  }
  if (D.29283 == 0) goto <D.45784>; else goto <D.45785>;
  <D.45784>:
  ins = emit_memory_barrier (cfg, 4);
  <D.45785>:
  if (ins != 0B) goto <D.45786>; else goto <D.45787>;
  <D.45786>:
  D.44601 = ins;
  return D.44601;
  <D.45787>:
  goto <D.45669>;
  <D.45668>:
  D.44332 = cmethod->klass;
  D.45670 = D.44332->image;
  D.44330 = mono_defaults.corlib;
  if (D.45670 == D.44330) goto <D.45788>; else goto <D.45789>;
  <D.45788>:
  D.44376 = cmethod->name;
  D.44947 = *D.44376;
  if (D.44947 == 66) goto <D.45790>; else goto <D.45791>;
  <D.45790>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.45795 = "Break";
      D.45796 = MEM[(const unsigned char *)D.45795];
      D.45797 = (int) D.45796;
      D.45798 = *__s2;
      D.45799 = (int) D.45798;
      __result = D.45797 - D.45799;
      {
        D.45800 = __s2_len != 0;
        D.45801 = __result == 0;
        D.45802 = D.45800 & D.45801;
        if (D.45802 != 0) goto <D.45803>; else goto <D.45804>;
        <D.45803>:
        D.45805 = &MEM[(void *)"Break" + 1B];
        D.45806 = *D.45805;
        D.45807 = (int) D.45806;
        D.45808 = __s2 + 1;
        D.45809 = *D.45808;
        D.45810 = (int) D.45809;
        __result = D.45807 - D.45810;
        D.45811 = __s2_len > 1;
        D.45801 = __result == 0;
        D.45812 = D.45811 & D.45801;
        if (D.45812 != 0) goto <D.45813>; else goto <D.45814>;
        <D.45813>:
        D.45815 = &MEM[(void *)"Break" + 2B];
        D.45816 = *D.45815;
        D.45817 = (int) D.45816;
        D.45818 = __s2 + 2;
        D.45819 = *D.45818;
        D.45820 = (int) D.45819;
        __result = D.45817 - D.45820;
        D.45821 = __s2_len > 2;
        D.45801 = __result == 0;
        D.45822 = D.45821 & D.45801;
        if (D.45822 != 0) goto <D.45823>; else goto <D.45824>;
        <D.45823>:
        D.45825 = &MEM[(void *)"Break" + 3B];
        D.45826 = *D.45825;
        D.45827 = (int) D.45826;
        D.45828 = __s2 + 3;
        D.45829 = *D.45828;
        D.45830 = (int) D.45829;
        __result = D.45827 - D.45830;
        <D.45824>:
        <D.45814>:
        <D.45804>:
      }
      D.29291 = __result;
    }
    iftmp.417 = -D.29291;
    goto <D.45831>;
    <D.45794>:
    D.44376 = cmethod->name;
    iftmp.417 = __builtin_strcmp (D.44376, "Break");
    <D.45831>:
    D.29292 = iftmp.417;
  }
  if (D.29292 == 0) goto <D.45832>; else goto <D.45833>;
  <D.45832>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.44332 = cmethod->klass;
      __s2 = D.44332->name;
      D.45837 = "Debugger";
      D.45838 = MEM[(const unsigned char *)D.45837];
      D.45839 = (int) D.45838;
      D.45840 = *__s2;
      D.45841 = (int) D.45840;
      __result = D.45839 - D.45841;
      {
        D.45842 = __s2_len != 0;
        D.45843 = __result == 0;
        D.45844 = D.45842 & D.45843;
        if (D.45844 != 0) goto <D.45845>; else goto <D.45846>;
        <D.45845>:
        D.45847 = &MEM[(void *)"Debugger" + 1B];
        D.45848 = *D.45847;
        D.45849 = (int) D.45848;
        D.45850 = __s2 + 1;
        D.45851 = *D.45850;
        D.45852 = (int) D.45851;
        __result = D.45849 - D.45852;
        D.45853 = __s2_len > 1;
        D.45843 = __result == 0;
        D.45854 = D.45853 & D.45843;
        if (D.45854 != 0) goto <D.45855>; else goto <D.45856>;
        <D.45855>:
        D.45857 = &MEM[(void *)"Debugger" + 2B];
        D.45858 = *D.45857;
        D.45859 = (int) D.45858;
        D.45860 = __s2 + 2;
        D.45861 = *D.45860;
        D.45862 = (int) D.45861;
        __result = D.45859 - D.45862;
        D.45863 = __s2_len > 2;
        D.45843 = __result == 0;
        D.45864 = D.45863 & D.45843;
        if (D.45864 != 0) goto <D.45865>; else goto <D.45866>;
        <D.45865>:
        D.45867 = &MEM[(void *)"Debugger" + 3B];
        D.45868 = *D.45867;
        D.45869 = (int) D.45868;
        D.45870 = __s2 + 3;
        D.45871 = *D.45870;
        D.45872 = (int) D.45871;
        __result = D.45869 - D.45872;
        <D.45866>:
        <D.45856>:
        <D.45846>:
      }
      D.29300 = __result;
    }
    iftmp.418 = -D.29300;
    goto <D.45873>;
    <D.45836>:
    D.44332 = cmethod->klass;
    D.45754 = D.44332->name;
    iftmp.418 = __builtin_strcmp (D.45754, "Debugger");
    <D.45873>:
    D.29301 = iftmp.418;
  }
  if (D.29301 == 0) goto <D.45874>; else goto <D.45875>;
  <D.45874>:
  D.45876 = cfg->method;
  D.45877 = should_insert_brekpoint (D.45876);
  if (D.45877 != 0) goto <D.45878>; else goto <D.45879>;
  <D.45878>:
  ins = mono_emit_jit_icall (cfg, mono_debugger_agent_user_break, 0B);
  goto <D.45880>;
  <D.45879>:
  D.44396 = cfg->mempool;
  ins = mono_mempool_alloc (D.44396, 56);
  ins->data.op[1].const_val = 0;
  D.44594 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.44594;
  ins->prev = 0B;
  D.44595 = ins->prev;
  ins->next = D.44595;
  ins->opcode = 316;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.44596 = ins->sreg3;
  ins->sreg2 = D.44596;
  D.44597 = ins->sreg2;
  ins->sreg1 = D.44597;
  D.44401 = cfg->ip;
  ins->cil_code = D.44401;
  D.44404 = cfg->cbb;
  D.44405 = D.44404->last_ins;
  if (D.44405 != 0B) goto <D.45881>; else goto <D.45882>;
  <D.45881>:
  D.44404 = cfg->cbb;
  D.44405 = D.44404->last_ins;
  D.44405->next = ins;
  D.44404 = cfg->cbb;
  D.44405 = D.44404->last_ins;
  ins->prev = D.44405;
  D.44404 = cfg->cbb;
  D.44404->last_ins = ins;
  goto <D.45883>;
  <D.45882>:
  D.44404 = cfg->cbb;
  D.44404 = cfg->cbb;
  D.44404->last_ins = ins;
  D.44405 = D.44404->last_ins;
  D.44404->code = D.44405;
  <D.45883>:
  <D.45880>:
  D.44601 = ins;
  return D.44601;
  <D.45875>:
  <D.45833>:
  <D.45791>:
  D.44376 = cmethod->name;
  D.44947 = *D.44376;
  if (D.44947 == 103) goto <D.45884>; else goto <D.45885>;
  <D.45884>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.45889 = "get_IsRunningOnWindows";
      D.45890 = MEM[(const unsigned char *)D.45889];
      D.45891 = (int) D.45890;
      D.45892 = *__s2;
      D.45893 = (int) D.45892;
      __result = D.45891 - D.45893;
      {
        D.45894 = __s2_len != 0;
        D.45895 = __result == 0;
        D.45896 = D.45894 & D.45895;
        if (D.45896 != 0) goto <D.45897>; else goto <D.45898>;
        <D.45897>:
        D.45899 = &MEM[(void *)"get_IsRunningOnWindows" + 1B];
        D.45900 = *D.45899;
        D.45901 = (int) D.45900;
        D.45902 = __s2 + 1;
        D.45903 = *D.45902;
        D.45904 = (int) D.45903;
        __result = D.45901 - D.45904;
        D.45905 = __s2_len > 1;
        D.45895 = __result == 0;
        D.45906 = D.45905 & D.45895;
        if (D.45906 != 0) goto <D.45907>; else goto <D.45908>;
        <D.45907>:
        D.45909 = &MEM[(void *)"get_IsRunningOnWindows" + 2B];
        D.45910 = *D.45909;
        D.45911 = (int) D.45910;
        D.45912 = __s2 + 2;
        D.45913 = *D.45912;
        D.45914 = (int) D.45913;
        __result = D.45911 - D.45914;
        D.45915 = __s2_len > 2;
        D.45895 = __result == 0;
        D.45916 = D.45915 & D.45895;
        if (D.45916 != 0) goto <D.45917>; else goto <D.45918>;
        <D.45917>:
        D.45919 = &MEM[(void *)"get_IsRunningOnWindows" + 3B];
        D.45920 = *D.45919;
        D.45921 = (int) D.45920;
        D.45922 = __s2 + 3;
        D.45923 = *D.45922;
        D.45924 = (int) D.45923;
        __result = D.45921 - D.45924;
        <D.45918>:
        <D.45908>:
        <D.45898>:
      }
      D.29309 = __result;
    }
    iftmp.419 = -D.29309;
    goto <D.45925>;
    <D.45888>:
    D.44376 = cmethod->name;
    iftmp.419 = __builtin_strcmp (D.44376, "get_IsRunningOnWindows");
    <D.45925>:
    D.29310 = iftmp.419;
  }
  if (D.29310 == 0) goto <D.45926>; else goto <D.45927>;
  <D.45926>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.44332 = cmethod->klass;
      __s2 = D.44332->name;
      D.45931 = "Environment";
      D.45932 = MEM[(const unsigned char *)D.45931];
      D.45933 = (int) D.45932;
      D.45934 = *__s2;
      D.45935 = (int) D.45934;
      __result = D.45933 - D.45935;
      {
        D.45936 = __s2_len != 0;
        D.45937 = __result == 0;
        D.45938 = D.45936 & D.45937;
        if (D.45938 != 0) goto <D.45939>; else goto <D.45940>;
        <D.45939>:
        D.45941 = &MEM[(void *)"Environment" + 1B];
        D.45942 = *D.45941;
        D.45943 = (int) D.45942;
        D.45944 = __s2 + 1;
        D.45945 = *D.45944;
        D.45946 = (int) D.45945;
        __result = D.45943 - D.45946;
        D.45947 = __s2_len > 1;
        D.45937 = __result == 0;
        D.45948 = D.45947 & D.45937;
        if (D.45948 != 0) goto <D.45949>; else goto <D.45950>;
        <D.45949>:
        D.45951 = &MEM[(void *)"Environment" + 2B];
        D.45952 = *D.45951;
        D.45953 = (int) D.45952;
        D.45954 = __s2 + 2;
        D.45955 = *D.45954;
        D.45956 = (int) D.45955;
        __result = D.45953 - D.45956;
        D.45957 = __s2_len > 2;
        D.45937 = __result == 0;
        D.45958 = D.45957 & D.45937;
        if (D.45958 != 0) goto <D.45959>; else goto <D.45960>;
        <D.45959>:
        D.45961 = &MEM[(void *)"Environment" + 3B];
        D.45962 = *D.45961;
        D.45963 = (int) D.45962;
        D.45964 = __s2 + 3;
        D.45965 = *D.45964;
        D.45966 = (int) D.45965;
        __result = D.45963 - D.45966;
        <D.45960>:
        <D.45950>:
        <D.45940>:
      }
      D.29318 = __result;
    }
    iftmp.420 = -D.29318;
    goto <D.45967>;
    <D.45930>:
    D.44332 = cmethod->klass;
    D.45754 = D.44332->name;
    iftmp.420 = __builtin_strcmp (D.45754, "Environment");
    <D.45967>:
    D.29319 = iftmp.420;
  }
  if (D.29319 == 0) goto <D.45968>; else goto <D.45969>;
  <D.45968>:
  D.44396 = cfg->mempool;
  ins = mono_mempool_alloc (D.44396, 56);
  ins->data.op[1].const_val = 0;
  D.44594 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.44594;
  ins->prev = 0B;
  D.44595 = ins->prev;
  ins->next = D.44595;
  ins->opcode = 362;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.44596 = ins->sreg3;
  ins->sreg2 = D.44596;
  D.44597 = ins->sreg2;
  ins->sreg1 = D.44597;
  D.44401 = cfg->ip;
  ins->cil_code = D.44401;
  ins->data.op[0].const_val = 0;
  ins->type = 1;
  D.45970 = alloc_dreg (cfg, 1);
  D.45971 = (int) D.45970;
  ins->dreg = D.45971;
  D.44404 = cfg->cbb;
  D.44405 = D.44404->last_ins;
  if (D.44405 != 0B) goto <D.45972>; else goto <D.45973>;
  <D.45972>:
  D.44404 = cfg->cbb;
  D.44405 = D.44404->last_ins;
  D.44405->next = ins;
  D.44404 = cfg->cbb;
  D.44405 = D.44404->last_ins;
  ins->prev = D.44405;
  D.44404 = cfg->cbb;
  D.44404->last_ins = ins;
  goto <D.45974>;
  <D.45973>:
  D.44404 = cfg->cbb;
  D.44404 = cfg->cbb;
  D.44404->last_ins = ins;
  D.44405 = D.44404->last_ins;
  D.44404->code = D.44405;
  <D.45974>:
  D.44601 = ins;
  return D.44601;
  <D.45969>:
  <D.45927>:
  <D.45885>:
  goto <D.45975>;
  <D.45789>:
  D.44332 = cmethod->klass;
  D.45976 = mono_defaults.math_class;
  if (D.44332 == D.45976) goto <D.45977>; else goto <D.45978>;
  <D.45977>:
  goto <D.45979>;
  <D.45978>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.44332 = cmethod->klass;
      D.45670 = D.44332->image;
      D.45985 = D.45670->assembly;
      __s2 = D.45985->aname.name;
      D.45986 = "MonoMac";
      D.45987 = MEM[(const unsigned char *)D.45986];
      D.45988 = (int) D.45987;
      D.45989 = *__s2;
      D.45990 = (int) D.45989;
      __result = D.45988 - D.45990;
      {
        D.45991 = __s2_len != 0;
        D.45992 = __result == 0;
        D.45993 = D.45991 & D.45992;
        if (D.45993 != 0) goto <D.45994>; else goto <D.45995>;
        <D.45994>:
        D.45996 = &MEM[(void *)"MonoMac" + 1B];
        D.45997 = *D.45996;
        D.45998 = (int) D.45997;
        D.45999 = __s2 + 1;
        D.46000 = *D.45999;
        D.46001 = (int) D.46000;
        __result = D.45998 - D.46001;
        D.46002 = __s2_len > 1;
        D.45992 = __result == 0;
        D.46003 = D.46002 & D.45992;
        if (D.46003 != 0) goto <D.46004>; else goto <D.46005>;
        <D.46004>:
        D.46006 = &MEM[(void *)"MonoMac" + 2B];
        D.46007 = *D.46006;
        D.46008 = (int) D.46007;
        D.46009 = __s2 + 2;
        D.46010 = *D.46009;
        D.46011 = (int) D.46010;
        __result = D.46008 - D.46011;
        D.46012 = __s2_len > 2;
        D.45992 = __result == 0;
        D.46013 = D.46012 & D.45992;
        if (D.46013 != 0) goto <D.46014>; else goto <D.46015>;
        <D.46014>:
        D.46016 = &MEM[(void *)"MonoMac" + 3B];
        D.46017 = *D.46016;
        D.46018 = (int) D.46017;
        D.46019 = __s2 + 3;
        D.46020 = *D.46019;
        D.46021 = (int) D.46020;
        __result = D.46018 - D.46021;
        <D.46015>:
        <D.46005>:
        <D.45995>:
      }
      D.29327 = __result;
    }
    iftmp.421 = -D.29327;
    goto <D.46022>;
    <D.45984>:
    D.44332 = cmethod->klass;
    D.45670 = D.44332->image;
    D.45985 = D.45670->assembly;
    D.46023 = D.45985->aname.name;
    iftmp.421 = __builtin_strcmp (D.46023, "MonoMac");
    <D.46022>:
    D.29328 = iftmp.421;
  }
  if (D.29328 == 0) goto <D.45980>; else goto <D.46024>;
  <D.46024>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.44332 = cmethod->klass;
      D.45670 = D.44332->image;
      D.45985 = D.45670->assembly;
      __s2 = D.45985->aname.name;
      D.46028 = "monotouch";
      D.46029 = MEM[(const unsigned char *)D.46028];
      D.46030 = (int) D.46029;
      D.46031 = *__s2;
      D.46032 = (int) D.46031;
      __result = D.46030 - D.46032;
      {
        D.46033 = __s2_len != 0;
        D.46034 = __result == 0;
        D.46035 = D.46033 & D.46034;
        if (D.46035 != 0) goto <D.46036>; else goto <D.46037>;
        <D.46036>:
        D.46038 = &MEM[(void *)"monotouch" + 1B];
        D.46039 = *D.46038;
        D.46040 = (int) D.46039;
        D.46041 = __s2 + 1;
        D.46042 = *D.46041;
        D.46043 = (int) D.46042;
        __result = D.46040 - D.46043;
        D.46044 = __s2_len > 1;
        D.46034 = __result == 0;
        D.46045 = D.46044 & D.46034;
        if (D.46045 != 0) goto <D.46046>; else goto <D.46047>;
        <D.46046>:
        D.46048 = &MEM[(void *)"monotouch" + 2B];
        D.46049 = *D.46048;
        D.46050 = (int) D.46049;
        D.46051 = __s2 + 2;
        D.46052 = *D.46051;
        D.46053 = (int) D.46052;
        __result = D.46050 - D.46053;
        D.46054 = __s2_len > 2;
        D.46034 = __result == 0;
        D.46055 = D.46054 & D.46034;
        if (D.46055 != 0) goto <D.46056>; else goto <D.46057>;
        <D.46056>:
        D.46058 = &MEM[(void *)"monotouch" + 3B];
        D.46059 = *D.46058;
        D.46060 = (int) D.46059;
        D.46061 = __s2 + 3;
        D.46062 = *D.46061;
        D.46063 = (int) D.46062;
        __result = D.46060 - D.46063;
        <D.46057>:
        <D.46047>:
        <D.46037>:
      }
      D.29336 = __result;
    }
    iftmp.422 = -D.29336;
    goto <D.46064>;
    <D.46027>:
    D.44332 = cmethod->klass;
    D.45670 = D.44332->image;
    D.45985 = D.45670->assembly;
    D.46023 = D.45985->aname.name;
    iftmp.422 = __builtin_strcmp (D.46023, "monotouch");
    <D.46064>:
    D.29337 = iftmp.422;
  }
  if (D.29337 == 0) goto <D.45980>; else goto <D.45981>;
  <D.45980>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.44332 = cmethod->klass;
      __s2 = D.44332->name;
      D.46068 = "Selector";
      D.46069 = MEM[(const unsigned char *)D.46068];
      D.46070 = (int) D.46069;
      D.46071 = *__s2;
      D.46072 = (int) D.46071;
      __result = D.46070 - D.46072;
      {
        D.46073 = __s2_len != 0;
        D.46074 = __result == 0;
        D.46075 = D.46073 & D.46074;
        if (D.46075 != 0) goto <D.46076>; else goto <D.46077>;
        <D.46076>:
        D.46078 = &MEM[(void *)"Selector" + 1B];
        D.46079 = *D.46078;
        D.46080 = (int) D.46079;
        D.46081 = __s2 + 1;
        D.46082 = *D.46081;
        D.46083 = (int) D.46082;
        __result = D.46080 - D.46083;
        D.46084 = __s2_len > 1;
        D.46074 = __result == 0;
        D.46085 = D.46084 & D.46074;
        if (D.46085 != 0) goto <D.46086>; else goto <D.46087>;
        <D.46086>:
        D.46088 = &MEM[(void *)"Selector" + 2B];
        D.46089 = *D.46088;
        D.46090 = (int) D.46089;
        D.46091 = __s2 + 2;
        D.46092 = *D.46091;
        D.46093 = (int) D.46092;
        __result = D.46090 - D.46093;
        D.46094 = __s2_len > 2;
        D.46074 = __result == 0;
        D.46095 = D.46094 & D.46074;
        if (D.46095 != 0) goto <D.46096>; else goto <D.46097>;
        <D.46096>:
        D.46098 = &MEM[(void *)"Selector" + 3B];
        D.46099 = *D.46098;
        D.46100 = (int) D.46099;
        D.46101 = __s2 + 3;
        D.46102 = *D.46101;
        D.46103 = (int) D.46102;
        __result = D.46100 - D.46103;
        <D.46097>:
        <D.46087>:
        <D.46077>:
      }
      D.29345 = __result;
    }
    iftmp.423 = -D.29345;
    goto <D.46104>;
    <D.46067>:
    D.44332 = cmethod->klass;
    D.45754 = D.44332->name;
    iftmp.423 = __builtin_strcmp (D.45754, "Selector");
    <D.46104>:
    D.29346 = iftmp.423;
  }
  if (D.29346 == 0) goto <D.46105>; else goto <D.46106>;
  <D.46105>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.46110 = "GetHandle";
      D.46111 = MEM[(const unsigned char *)D.46110];
      D.46112 = (int) D.46111;
      D.46113 = *__s2;
      D.46114 = (int) D.46113;
      __result = D.46112 - D.46114;
      {
        D.46115 = __s2_len != 0;
        D.46116 = __result == 0;
        D.46117 = D.46115 & D.46116;
        if (D.46117 != 0) goto <D.46118>; else goto <D.46119>;
        <D.46118>:
        D.46120 = &MEM[(void *)"GetHandle" + 1B];
        D.46121 = *D.46120;
        D.46122 = (int) D.46121;
        D.46123 = __s2 + 1;
        D.46124 = *D.46123;
        D.46125 = (int) D.46124;
        __result = D.46122 - D.46125;
        D.46126 = __s2_len > 1;
        D.46116 = __result == 0;
        D.46127 = D.46126 & D.46116;
        if (D.46127 != 0) goto <D.46128>; else goto <D.46129>;
        <D.46128>:
        D.46130 = &MEM[(void *)"GetHandle" + 2B];
        D.46131 = *D.46130;
        D.46132 = (int) D.46131;
        D.46133 = __s2 + 2;
        D.46134 = *D.46133;
        D.46135 = (int) D.46134;
        __result = D.46132 - D.46135;
        D.46136 = __s2_len > 2;
        D.46116 = __result == 0;
        D.46137 = D.46136 & D.46116;
        if (D.46137 != 0) goto <D.46138>; else goto <D.46139>;
        <D.46138>:
        D.46140 = &MEM[(void *)"GetHandle" + 3B];
        D.46141 = *D.46140;
        D.46142 = (int) D.46141;
        D.46143 = __s2 + 3;
        D.46144 = *D.46143;
        D.46145 = (int) D.46144;
        __result = D.46142 - D.46145;
        <D.46139>:
        <D.46129>:
        <D.46119>:
      }
      D.29354 = __result;
    }
    iftmp.424 = -D.29354;
    goto <D.46146>;
    <D.46109>:
    D.44376 = cmethod->name;
    iftmp.424 = __builtin_strcmp (D.44376, "GetHandle");
    <D.46146>:
    D.29355 = iftmp.424;
  }
  if (D.29355 == 0) goto <D.46147>; else goto <D.46148>;
  <D.46147>:
  D.45171 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.46149 = D.45171 & 64;
  if (D.46149 != 0) goto <D.46150>; else goto <D.46151>;
  <D.46150>:
  D.44402 = *args;
  D.46152 = D.44402->opcode;
  D.46153 = D.46152 == 734;
  D.46154 = D.46152 == 732;
  D.46155 = D.46153 | D.46154;
  if (D.46155 != 0) goto <D.46156>; else goto <D.46157>;
  <D.46156>:
  {
    struct MonoInst * pi;
    struct MonoJumpInfoToken * ji;
    struct MonoString * s;

    cfg->disable_llvm = 1;
    D.44402 = *args;
    D.46158 = D.44402->opcode;
    if (D.46158 == 734) goto <D.46159>; else goto <D.46160>;
    <D.46159>:
    D.44402 = *args;
    pi = D.44402->data.op[1].p;
    D.46161 = pi->opcode;
    D.46162 = D.46161 != 733;
    D.46163 = (long int) D.46162;
    D.46164 = __builtin_expect (D.46163, 0);
    if (D.46164 != 0) goto <D.46165>; else goto <D.46166>;
    <D.46165>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 5545, "pi->opcode == OP_PATCH_INFO");
    <D.46166>:
    D.46167 = pi->data.op[1].p;
    D.46168 = (int) D.46167;
    D.46169 = D.46168 != 17;
    D.46170 = (long int) D.46169;
    D.46171 = __builtin_expect (D.46170, 0);
    if (D.46171 != 0) goto <D.46172>; else goto <D.46173>;
    <D.46172>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 5546, "(int)pi->inst_p1 == MONO_PATCH_INFO_LDSTR");
    <D.46173>:
    ji = pi->data.op[0].p;
    goto <D.46174>;
    <D.46160>:
    D.44402 = *args;
    D.46175 = D.44402->data.op[1].p;
    D.46176 = (int) D.46175;
    D.46177 = D.46176 != 17;
    D.46178 = (long int) D.46177;
    D.46179 = __builtin_expect (D.46178, 0);
    if (D.46179 != 0) goto <D.46180>; else goto <D.46181>;
    <D.46180>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 5549, "(int)args [0]->inst_p1 == MONO_PATCH_INFO_LDSTR");
    <D.46181>:
    D.44402 = *args;
    ji = D.44402->data.op[0].p;
    <D.46174>:
    D.44402 = *args;
    D.44402->opcode = 316;
    D.44402 = *args;
    D.44402->dreg = -1;
    D.44402 = *args;
    D.44402 = *args;
    D.44402 = *args;
    D.44402->sreg3 = -1;
    D.46182 = D.44402->sreg3;
    D.44402->sreg2 = D.46182;
    D.46183 = D.44402->sreg2;
    D.44402->sreg1 = D.46183;
    D.46184 = cfg->domain;
    D.46185 = ji->image;
    D.46186 = ji->token;
    D.46187 = D.46186 & 16777215;
    s = mono_ldstr (D.46184, D.46185, D.46187);
    D.44396 = cfg->mempool;
    ins = mono_mempool_alloc (D.44396, 56);
    ins->data.op[1].const_val = 0;
    D.44594 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.44594;
    ins->prev = 0B;
    D.44595 = ins->prev;
    ins->next = D.44595;
    ins->opcode = 845;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.44596 = ins->sreg3;
    ins->sreg2 = D.44596;
    D.44597 = ins->sreg2;
    ins->sreg1 = D.44597;
    D.44401 = cfg->ip;
    ins->cil_code = D.44401;
    D.46188 = mono_alloc_ireg (cfg);
    D.46189 = (int) D.46188;
    ins->dreg = D.46189;
    D.46190 = mono_string_to_utf8 (s);
    ins->data.op[0].p = D.46190;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    if (D.44405 != 0B) goto <D.46191>; else goto <D.46192>;
    <D.46191>:
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    D.44405->next = ins;
    D.44404 = cfg->cbb;
    D.44405 = D.44404->last_ins;
    ins->prev = D.44405;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    goto <D.46193>;
    <D.46192>:
    D.44404 = cfg->cbb;
    D.44404 = cfg->cbb;
    D.44404->last_ins = ins;
    D.44405 = D.44404->last_ins;
    D.44404->code = D.44405;
    <D.46193>:
    D.44601 = ins;
    return D.44601;
  }
  <D.46157>:
  <D.46151>:
  <D.46148>:
  <D.46106>:
  <D.45981>:
  <D.45979>:
  <D.45975>:
  <D.45669>:
  <D.45667>:
  <D.45663>:
  if (0 != 0) goto <D.46194>; else goto <D.46195>;
  <D.46194>:
  ins = llvm_emit_inst_for_method (cfg, cmethod, fsig, args);
  if (ins != 0B) goto <D.46196>; else goto <D.46197>;
  <D.46196>:
  D.44601 = ins;
  return D.44601;
  <D.46197>:
  <D.46195>:
  D.44601 = mono_arch_emit_inst_for_method (cfg, cmethod, fsig, args);
  return D.44601;
}


emit_array_generic_access (struct MonoCompile * cfg, struct MonoMethodSignature * fsig, struct MonoInst * * args, int is_set)
{
  struct MonoType * D.46199;
  struct MonoInst * D.46200;
  struct MonoInst * * D.46201;
  struct MonoInst * D.46202;
  struct MonoMemPool * D.46205;
  int D.46206;
  struct MonoInst * D.46207;
  struct MonoType * D.46208;
  unsigned int D.46209;
  short unsigned int D.46210;
  int D.46211;
  int D.46212;
  const unsigned char * D.46213;
  struct MonoInst * * D.46214;
  struct MonoInst * D.46215;
  int D.46216;
  unsigned char D.46217;
  <unnamed type> D.46218;
  unsigned int D.46219;
  int D.46220;
  struct MonoBasicBlock * D.46221;
  struct MonoInst * D.46222;
  int D.46226;
  struct MonoInst * D.46227;
  unsigned int D.46228;
  short unsigned int D.46229;
  int D.46230;
  int D.46231;
  int D.46232;
  int D.46233;
  struct MonoClass * D.46234;
  int D.46238;
  unsigned int D.46242;
  short unsigned int D.46243;
  unsigned int D.46244;
  int D.46245;
  unsigned int D.46249;
  short unsigned int D.46250;
  struct MonoClass * D.46251;
  struct MonoInst * D.46255;
  struct MonoInst * addr;
  struct MonoInst * store;
  struct MonoInst * load;
  struct MonoClass * eklass;

  D.46199 = fsig->params[2];
  eklass = mono_class_from_mono_type (D.46199);
  D.46200 = *args;
  D.46201 = args + 4;
  D.46202 = *D.46201;
  addr = mini_emit_ldelema_1_ins (cfg, eklass, D.46200, D.46202, 0);
  if (is_set != 0) goto <D.46203>; else goto <D.46204>;
  <D.46203>:
  D.46205 = cfg->mempool;
  load = mono_mempool_alloc (D.46205, 56);
  load->data.op[1].const_val = 0;
  D.46206 = load->data.op[1].const_val;
  load->data.op[0].const_val = D.46206;
  load->prev = 0B;
  D.46207 = load->prev;
  load->next = D.46207;
  D.46208 = &eklass->byval_arg;
  D.46209 = mono_type_to_load_membase (cfg, D.46208);
  D.46210 = (short unsigned int) D.46209;
  load->opcode = D.46210;
  load->flags = 0;
  load->type = 0;
  load->dreg = -1;
  load->sreg3 = -1;
  D.46211 = load->sreg3;
  load->sreg2 = D.46211;
  D.46212 = load->sreg2;
  load->sreg1 = D.46212;
  D.46213 = cfg->ip;
  load->cil_code = D.46213;
  load->dreg = 0;
  D.46214 = args + 8;
  D.46215 = *D.46214;
  D.46216 = D.46215->dreg;
  load->sreg1 = D.46216;
  load->data.op[0].const_val = 0;
  load->type = 1;
  D.46208 = &eklass->byval_arg;
  type_to_eval_stack_type (cfg, D.46208, load);
  D.46217 = load->type;
  D.46218 = (<unnamed type>) D.46217;
  D.46219 = alloc_dreg (cfg, D.46218);
  D.46220 = (int) D.46219;
  load->dreg = D.46220;
  D.46221 = cfg->cbb;
  D.46222 = D.46221->last_ins;
  if (D.46222 != 0B) goto <D.46223>; else goto <D.46224>;
  <D.46223>:
  D.46221 = cfg->cbb;
  D.46222 = D.46221->last_ins;
  D.46222->next = load;
  D.46221 = cfg->cbb;
  D.46222 = D.46221->last_ins;
  load->prev = D.46222;
  D.46221 = cfg->cbb;
  D.46221->last_ins = load;
  goto <D.46225>;
  <D.46224>:
  D.46221 = cfg->cbb;
  D.46221 = cfg->cbb;
  D.46221->last_ins = load;
  D.46222 = D.46221->last_ins;
  D.46221->code = D.46222;
  <D.46225>:
  D.46205 = cfg->mempool;
  store = mono_mempool_alloc (D.46205, 56);
  store->data.op[1].const_val = 0;
  D.46226 = store->data.op[1].const_val;
  store->data.op[0].const_val = D.46226;
  store->prev = 0B;
  D.46227 = store->prev;
  store->next = D.46227;
  D.46208 = &eklass->byval_arg;
  D.46228 = mono_type_to_store_membase (cfg, D.46208);
  D.46229 = (short unsigned int) D.46228;
  store->opcode = D.46229;
  store->flags = 0;
  store->type = 0;
  store->dreg = -1;
  store->sreg3 = -1;
  D.46230 = store->sreg3;
  store->sreg2 = D.46230;
  D.46231 = store->sreg2;
  store->sreg1 = D.46231;
  D.46213 = cfg->ip;
  store->cil_code = D.46213;
  D.46232 = load->dreg;
  store->sreg1 = D.46232;
  D.46233 = addr->dreg;
  store->dreg = D.46233;
  store->data.op[0].const_val = 0;
  D.46208 = &eklass->byval_arg;
  type_to_eval_stack_type (cfg, D.46208, store);
  D.46208 = &eklass->byval_arg;
  D.46234 = mono_class_from_mono_type (D.46208);
  store->klass = D.46234;
  D.46221 = cfg->cbb;
  D.46222 = D.46221->last_ins;
  if (D.46222 != 0B) goto <D.46235>; else goto <D.46236>;
  <D.46235>:
  D.46221 = cfg->cbb;
  D.46222 = D.46221->last_ins;
  D.46222->next = store;
  D.46221 = cfg->cbb;
  D.46222 = D.46221->last_ins;
  store->prev = D.46222;
  D.46221 = cfg->cbb;
  D.46221->last_ins = store;
  goto <D.46237>;
  <D.46236>:
  D.46221 = cfg->cbb;
  D.46221 = cfg->cbb;
  D.46221->last_ins = store;
  D.46222 = D.46221->last_ins;
  D.46221->code = D.46222;
  <D.46237>:
  D.46199 = fsig->params[2];
  D.46238 = mini_type_is_reference (cfg, D.46199);
  if (D.46238 != 0) goto <D.46239>; else goto <D.46240>;
  <D.46239>:
  emit_write_barrier (cfg, addr, load);
  <D.46240>:
  goto <D.46241>;
  <D.46204>:
  D.46205 = cfg->mempool;
  load = mono_mempool_alloc (D.46205, 56);
  load->data.op[1].const_val = 0;
  D.46206 = load->data.op[1].const_val;
  load->data.op[0].const_val = D.46206;
  load->prev = 0B;
  D.46207 = load->prev;
  load->next = D.46207;
  D.46208 = &eklass->byval_arg;
  D.46242 = mono_type_to_load_membase (cfg, D.46208);
  D.46243 = (short unsigned int) D.46242;
  load->opcode = D.46243;
  load->flags = 0;
  load->type = 0;
  load->dreg = -1;
  load->sreg3 = -1;
  D.46211 = load->sreg3;
  load->sreg2 = D.46211;
  D.46212 = load->sreg2;
  load->sreg1 = D.46212;
  D.46213 = cfg->ip;
  load->cil_code = D.46213;
  load->dreg = 0;
  D.46233 = addr->dreg;
  load->sreg1 = D.46233;
  load->data.op[0].const_val = 0;
  load->type = 1;
  D.46208 = &eklass->byval_arg;
  type_to_eval_stack_type (cfg, D.46208, load);
  D.46217 = load->type;
  D.46218 = (<unnamed type>) D.46217;
  D.46244 = alloc_dreg (cfg, D.46218);
  D.46245 = (int) D.46244;
  load->dreg = D.46245;
  D.46221 = cfg->cbb;
  D.46222 = D.46221->last_ins;
  if (D.46222 != 0B) goto <D.46246>; else goto <D.46247>;
  <D.46246>:
  D.46221 = cfg->cbb;
  D.46222 = D.46221->last_ins;
  D.46222->next = load;
  D.46221 = cfg->cbb;
  D.46222 = D.46221->last_ins;
  load->prev = D.46222;
  D.46221 = cfg->cbb;
  D.46221->last_ins = load;
  goto <D.46248>;
  <D.46247>:
  D.46221 = cfg->cbb;
  D.46221 = cfg->cbb;
  D.46221->last_ins = load;
  D.46222 = D.46221->last_ins;
  D.46221->code = D.46222;
  <D.46248>:
  D.46205 = cfg->mempool;
  store = mono_mempool_alloc (D.46205, 56);
  store->data.op[1].const_val = 0;
  D.46226 = store->data.op[1].const_val;
  store->data.op[0].const_val = D.46226;
  store->prev = 0B;
  D.46227 = store->prev;
  store->next = D.46227;
  D.46208 = &eklass->byval_arg;
  D.46249 = mono_type_to_store_membase (cfg, D.46208);
  D.46250 = (short unsigned int) D.46249;
  store->opcode = D.46250;
  store->flags = 0;
  store->type = 0;
  store->dreg = -1;
  store->sreg3 = -1;
  D.46230 = store->sreg3;
  store->sreg2 = D.46230;
  D.46231 = store->sreg2;
  store->sreg1 = D.46231;
  D.46213 = cfg->ip;
  store->cil_code = D.46213;
  D.46232 = load->dreg;
  store->sreg1 = D.46232;
  D.46214 = args + 8;
  D.46215 = *D.46214;
  D.46216 = D.46215->dreg;
  store->dreg = D.46216;
  store->data.op[0].const_val = 0;
  D.46208 = &eklass->byval_arg;
  type_to_eval_stack_type (cfg, D.46208, store);
  D.46208 = &eklass->byval_arg;
  D.46251 = mono_class_from_mono_type (D.46208);
  store->klass = D.46251;
  D.46221 = cfg->cbb;
  D.46222 = D.46221->last_ins;
  if (D.46222 != 0B) goto <D.46252>; else goto <D.46253>;
  <D.46252>:
  D.46221 = cfg->cbb;
  D.46222 = D.46221->last_ins;
  D.46222->next = store;
  D.46221 = cfg->cbb;
  D.46222 = D.46221->last_ins;
  store->prev = D.46222;
  D.46221 = cfg->cbb;
  D.46221->last_ins = store;
  goto <D.46254>;
  <D.46253>:
  D.46221 = cfg->cbb;
  D.46221 = cfg->cbb;
  D.46221->last_ins = store;
  D.46222 = D.46221->last_ins;
  D.46221->code = D.46222;
  <D.46254>:
  <D.46241>:
  D.46255 = store;
  return D.46255;
}


emit_get_rgctx_sig (struct MonoCompile * cfg, int context_used, struct MonoMethodSignature * sig, MonoRgctxInfoType rgctx_type)
{
  struct MonoMemPool * D.46257;
  struct MonoMethod * D.46258;
  int D.46259;
  struct MonoInst * D.46260;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.46257 = cfg->mempool;
  D.46258 = cfg->current_method;
  D.46259 = context_used & 2;
  entry = mono_patch_info_rgctx_entry_new (D.46257, D.46258, D.46259, 44, sig, rgctx_type);
  D.46258 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.46258, context_used);
  D.46260 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.46260;
}


mini_emit_ldelema_ins (struct MonoCompile * cfg, struct MonoMethod * cmethod, struct MonoInst * * sp, unsigned char * ip, gboolean is_set)
{
  struct MonoMethodSignature * D.46262;
  short unsigned int D.46263;
  int D.46264;
  _Bool D.46265;
  int D.46266;
  struct MonoInst * D.46269;
  struct MonoClass * D.46270;
  struct MonoClass * D.46271;
  struct MonoInst * D.46272;
  struct MonoInst * * D.46273;
  struct MonoInst * D.46274;
  unsigned int D.46277;
  unsigned int D.46278;
  struct MonoInst * * D.46281;
  struct MonoInst * D.46282;
  int rank;
  struct MonoInst * addr;
  struct MonoMethod * addr_method;
  int element_size;

  D.46262 = mono_method_signature (cmethod);
  D.46263 = D.46262->param_count;
  D.46264 = (int) D.46263;
  D.46265 = is_set != 0;
  D.46266 = (int) D.46265;
  rank = D.46264 - D.46266;
  if (rank == 1) goto <D.46267>; else goto <D.46268>;
  <D.46267>:
  D.46270 = cmethod->klass;
  D.46271 = D.46270->element_class;
  D.46272 = *sp;
  D.46273 = sp + 4;
  D.46274 = *D.46273;
  D.46269 = mini_emit_ldelema_1_ins (cfg, D.46271, D.46272, D.46274, 1);
  return D.46269;
  <D.46268>:
  if (rank == 2) goto <D.46275>; else goto <D.46276>;
  <D.46275>:
  D.46277 = cfg->opt;
  D.46278 = D.46277 & 2048;
  if (D.46278 != 0) goto <D.46279>; else goto <D.46280>;
  <D.46279>:
  D.46270 = cmethod->klass;
  D.46271 = D.46270->element_class;
  D.46272 = *sp;
  D.46273 = sp + 4;
  D.46274 = *D.46273;
  D.46281 = sp + 8;
  D.46282 = *D.46281;
  D.46269 = mini_emit_ldelema_2_ins (cfg, D.46271, D.46272, D.46274, D.46282);
  return D.46269;
  <D.46280>:
  <D.46276>:
  D.46270 = cmethod->klass;
  D.46271 = D.46270->element_class;
  element_size = mono_class_array_element_size (D.46271);
  addr_method = mono_marshal_get_array_address (rank, element_size);
  addr = mono_emit_method_call (cfg, addr_method, sp, 0B);
  D.46269 = addr;
  return D.46269;
}


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.46284;
  unsigned int D.46285;
  unsigned int D.46286;
  unsigned int D.46287;
  unsigned int D.46288;
  unsigned int D.46289;
  unsigned int D.46290;
  unsigned int D.46291;
  unsigned int D.46292;
  unsigned int D.46293;
  unsigned int D.46294;
  int D.46295;
  struct MonoMemPool * D.46296;
  int D.46297;
  struct MonoInst * D.46298;
  int D.46299;
  int D.46300;
  const unsigned char * D.46301;
  int D.46302;
  struct MonoBasicBlock * D.46303;
  struct MonoInst * D.46304;
  int D.46308;
  struct MonoInst * D.46309;
  int D.46310;
  int D.46311;
  int D.46315;
  struct MonoInst * D.46316;
  int D.46317;
  int D.46318;
  int D.46322;
  struct MonoInst * D.46323;
  int D.46324;
  int D.46325;
  int D.46329;
  struct MonoInst * D.46330;
  int D.46331;
  int D.46332;
  int D.46336;
  struct MonoInst * D.46337;
  int D.46338;
  int D.46339;
  int D.46343;
  struct MonoInst * D.46344;
  int D.46345;
  int D.46346;
  int D.46350;
  struct MonoInst * D.46351;
  int D.46352;
  int D.46353;
  int D.46357;
  struct MonoInst * D.46358;
  int D.46359;
  int D.46360;
  int D.46364;
  struct MonoInst * D.46365;
  int D.46366;
  int D.46367;
  int D.46371;
  struct MonoInst * D.46372;
  int D.46373;
  int D.46374;
  int D.46378;
  struct MonoInst * D.46379;
  int D.46380;
  int D.46381;
  int D.46385;
  struct MonoInst * D.46386;
  int D.46387;
  int D.46388;
  int D.46392;
  struct MonoInst * D.46393;
  int D.46394;
  int D.46395;
  int size.425;
  int D.46400;
  struct MonoInst * D.46401;
  int D.46402;
  int D.46403;
  int D.46407;
  struct MonoInst * D.46408;
  int D.46409;
  int D.46410;
  struct MonoInst * D.46414;
  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.46284 = alloc_preg (cfg);
  bounds_reg = (int) D.46284;
  D.46285 = alloc_ireg_mp (cfg);
  add_reg = (int) D.46285;
  D.46286 = alloc_preg (cfg);
  mult_reg = (int) D.46286;
  D.46287 = alloc_preg (cfg);
  mult2_reg = (int) D.46287;
  D.46288 = alloc_preg (cfg);
  low1_reg = (int) D.46288;
  D.46289 = alloc_preg (cfg);
  low2_reg = (int) D.46289;
  D.46290 = alloc_preg (cfg);
  high1_reg = (int) D.46290;
  D.46291 = alloc_preg (cfg);
  high2_reg = (int) D.46291;
  D.46292 = alloc_preg (cfg);
  realidx1_reg = (int) D.46292;
  D.46293 = alloc_preg (cfg);
  realidx2_reg = (int) D.46293;
  D.46294 = alloc_preg (cfg);
  sum_reg = (int) D.46294;
  mono_class_init (klass);
  D.46295 = mono_class_array_element_size (klass);
  size = (guint32) D.46295;
  index1 = index_ins1->dreg;
  index2 = index_ins2->dreg;
  tmpreg = -1;
  {
    struct MonoInst * inst;

    D.46296 = cfg->mempool;
    inst = mono_mempool_alloc (D.46296, 56);
    inst->data.op[1].const_val = 0;
    D.46297 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46297;
    inst->prev = 0B;
    D.46298 = inst->prev;
    inst->next = D.46298;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46299 = inst->sreg3;
    inst->sreg2 = D.46299;
    D.46300 = inst->sreg2;
    inst->sreg1 = D.46300;
    D.46301 = cfg->ip;
    inst->cil_code = D.46301;
    inst->dreg = bounds_reg;
    D.46302 = arr->dreg;
    inst->sreg1 = D.46302;
    inst->data.op[0].const_val = 8;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    if (D.46304 != 0B) goto <D.46305>; else goto <D.46306>;
    <D.46305>:
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    D.46304->next = inst;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    inst->prev = D.46304;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    goto <D.46307>;
    <D.46306>:
    D.46303 = cfg->cbb;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    D.46304 = D.46303->last_ins;
    D.46303->code = D.46304;
    <D.46307>:
  }
  {
    struct MonoInst * inst;

    D.46296 = cfg->mempool;
    inst = mono_mempool_alloc (D.46296, 56);
    inst->data.op[1].const_val = 0;
    D.46308 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46308;
    inst->prev = 0B;
    D.46309 = inst->prev;
    inst->next = D.46309;
    inst->opcode = 393;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46310 = inst->sreg3;
    inst->sreg2 = D.46310;
    D.46311 = inst->sreg2;
    inst->sreg1 = D.46311;
    D.46301 = cfg->ip;
    inst->cil_code = D.46301;
    inst->dreg = low1_reg;
    inst->sreg1 = bounds_reg;
    inst->data.op[0].const_val = 4;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    if (D.46304 != 0B) goto <D.46312>; else goto <D.46313>;
    <D.46312>:
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    D.46304->next = inst;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    inst->prev = D.46304;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    goto <D.46314>;
    <D.46313>:
    D.46303 = cfg->cbb;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    D.46304 = D.46303->last_ins;
    D.46303->code = D.46304;
    <D.46314>:
  }
  {
    struct MonoInst * inst;

    D.46296 = cfg->mempool;
    inst = mono_mempool_alloc (D.46296, 56);
    inst->data.op[1].const_val = 0;
    D.46315 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46315;
    inst->prev = 0B;
    D.46316 = inst->prev;
    inst->next = D.46316;
    inst->opcode = 566;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46317 = inst->sreg3;
    inst->sreg2 = D.46317;
    D.46318 = inst->sreg2;
    inst->sreg1 = D.46318;
    D.46301 = cfg->ip;
    inst->cil_code = D.46301;
    inst->dreg = realidx1_reg;
    inst->sreg1 = index1;
    inst->sreg2 = low1_reg;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    if (D.46304 != 0B) goto <D.46319>; else goto <D.46320>;
    <D.46319>:
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    D.46304->next = inst;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    inst->prev = D.46304;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    goto <D.46321>;
    <D.46320>:
    D.46303 = cfg->cbb;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    D.46304 = D.46303->last_ins;
    D.46303->code = D.46304;
    <D.46321>:
  }
  {
    struct MonoInst * inst;

    D.46296 = cfg->mempool;
    inst = mono_mempool_alloc (D.46296, 56);
    inst->data.op[1].const_val = 0;
    D.46322 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46322;
    inst->prev = 0B;
    D.46323 = inst->prev;
    inst->next = D.46323;
    inst->opcode = 393;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46324 = inst->sreg3;
    inst->sreg2 = D.46324;
    D.46325 = inst->sreg2;
    inst->sreg1 = D.46325;
    D.46301 = cfg->ip;
    inst->cil_code = D.46301;
    inst->dreg = high1_reg;
    inst->sreg1 = bounds_reg;
    inst->data.op[0].const_val = 0;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    if (D.46304 != 0B) goto <D.46326>; else goto <D.46327>;
    <D.46326>:
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    D.46304->next = inst;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    inst->prev = D.46304;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    goto <D.46328>;
    <D.46327>:
    D.46303 = cfg->cbb;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    D.46304 = D.46303->last_ins;
    D.46303->code = D.46304;
    <D.46328>:
  }
  {
    struct MonoInst * inst;

    D.46296 = cfg->mempool;
    inst = mono_mempool_alloc (D.46296, 56);
    inst->data.op[1].const_val = 0;
    D.46329 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46329;
    inst->prev = 0B;
    D.46330 = inst->prev;
    inst->next = D.46330;
    inst->opcode = 322;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46331 = inst->sreg3;
    inst->sreg2 = D.46331;
    D.46332 = inst->sreg2;
    inst->sreg1 = D.46332;
    D.46301 = cfg->ip;
    inst->cil_code = D.46301;
    inst->dreg = -1;
    inst->sreg1 = high1_reg;
    inst->sreg2 = realidx1_reg;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    if (D.46304 != 0B) goto <D.46333>; else goto <D.46334>;
    <D.46333>:
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    D.46304->next = inst;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    inst->prev = D.46304;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    goto <D.46335>;
    <D.46334>:
    D.46303 = cfg->cbb;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    D.46304 = D.46303->last_ins;
    D.46303->code = D.46304;
    <D.46335>:
  }
  {
    struct MonoInst * inst;

    D.46296 = cfg->mempool;
    inst = mono_mempool_alloc (D.46296, 56);
    inst->data.op[1].const_val = 0;
    D.46336 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46336;
    inst->prev = 0B;
    D.46337 = inst->prev;
    inst->next = D.46337;
    inst->opcode = 459;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46338 = inst->sreg3;
    inst->sreg2 = D.46338;
    D.46339 = inst->sreg2;
    inst->sreg1 = D.46339;
    D.46301 = cfg->ip;
    inst->cil_code = D.46301;
    inst->data.op[1].p = "IndexOutOfRangeException";
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    if (D.46304 != 0B) goto <D.46340>; else goto <D.46341>;
    <D.46340>:
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    D.46304->next = inst;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    inst->prev = D.46304;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    goto <D.46342>;
    <D.46341>:
    D.46303 = cfg->cbb;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    D.46304 = D.46303->last_ins;
    D.46303->code = D.46304;
    <D.46342>:
  }
  {
    struct MonoInst * inst;

    D.46296 = cfg->mempool;
    inst = mono_mempool_alloc (D.46296, 56);
    inst->data.op[1].const_val = 0;
    D.46343 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46343;
    inst->prev = 0B;
    D.46344 = inst->prev;
    inst->next = D.46344;
    inst->opcode = 393;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46345 = inst->sreg3;
    inst->sreg2 = D.46345;
    D.46346 = inst->sreg2;
    inst->sreg1 = D.46346;
    D.46301 = cfg->ip;
    inst->cil_code = D.46301;
    inst->dreg = low2_reg;
    inst->sreg1 = bounds_reg;
    inst->data.op[0].const_val = 12;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    if (D.46304 != 0B) goto <D.46347>; else goto <D.46348>;
    <D.46347>:
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    D.46304->next = inst;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    inst->prev = D.46304;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    goto <D.46349>;
    <D.46348>:
    D.46303 = cfg->cbb;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    D.46304 = D.46303->last_ins;
    D.46303->code = D.46304;
    <D.46349>:
  }
  {
    struct MonoInst * inst;

    D.46296 = cfg->mempool;
    inst = mono_mempool_alloc (D.46296, 56);
    inst->data.op[1].const_val = 0;
    D.46350 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46350;
    inst->prev = 0B;
    D.46351 = inst->prev;
    inst->next = D.46351;
    inst->opcode = 566;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46352 = inst->sreg3;
    inst->sreg2 = D.46352;
    D.46353 = inst->sreg2;
    inst->sreg1 = D.46353;
    D.46301 = cfg->ip;
    inst->cil_code = D.46301;
    inst->dreg = realidx2_reg;
    inst->sreg1 = index2;
    inst->sreg2 = low2_reg;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    if (D.46304 != 0B) goto <D.46354>; else goto <D.46355>;
    <D.46354>:
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    D.46304->next = inst;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    inst->prev = D.46304;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    goto <D.46356>;
    <D.46355>:
    D.46303 = cfg->cbb;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    D.46304 = D.46303->last_ins;
    D.46303->code = D.46304;
    <D.46356>:
  }
  {
    struct MonoInst * inst;

    D.46296 = cfg->mempool;
    inst = mono_mempool_alloc (D.46296, 56);
    inst->data.op[1].const_val = 0;
    D.46357 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46357;
    inst->prev = 0B;
    D.46358 = inst->prev;
    inst->next = D.46358;
    inst->opcode = 393;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46359 = inst->sreg3;
    inst->sreg2 = D.46359;
    D.46360 = inst->sreg2;
    inst->sreg1 = D.46360;
    D.46301 = cfg->ip;
    inst->cil_code = D.46301;
    inst->dreg = high2_reg;
    inst->sreg1 = bounds_reg;
    inst->data.op[0].const_val = 8;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    if (D.46304 != 0B) goto <D.46361>; else goto <D.46362>;
    <D.46361>:
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    D.46304->next = inst;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    inst->prev = D.46304;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    goto <D.46363>;
    <D.46362>:
    D.46303 = cfg->cbb;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    D.46304 = D.46303->last_ins;
    D.46303->code = D.46304;
    <D.46363>:
  }
  {
    struct MonoInst * inst;

    D.46296 = cfg->mempool;
    inst = mono_mempool_alloc (D.46296, 56);
    inst->data.op[1].const_val = 0;
    D.46364 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46364;
    inst->prev = 0B;
    D.46365 = inst->prev;
    inst->next = D.46365;
    inst->opcode = 322;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46366 = inst->sreg3;
    inst->sreg2 = D.46366;
    D.46367 = inst->sreg2;
    inst->sreg1 = D.46367;
    D.46301 = cfg->ip;
    inst->cil_code = D.46301;
    inst->dreg = -1;
    inst->sreg1 = high2_reg;
    inst->sreg2 = realidx2_reg;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    if (D.46304 != 0B) goto <D.46368>; else goto <D.46369>;
    <D.46368>:
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    D.46304->next = inst;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    inst->prev = D.46304;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    goto <D.46370>;
    <D.46369>:
    D.46303 = cfg->cbb;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    D.46304 = D.46303->last_ins;
    D.46303->code = D.46304;
    <D.46370>:
  }
  {
    struct MonoInst * inst;

    D.46296 = cfg->mempool;
    inst = mono_mempool_alloc (D.46296, 56);
    inst->data.op[1].const_val = 0;
    D.46371 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46371;
    inst->prev = 0B;
    D.46372 = inst->prev;
    inst->next = D.46372;
    inst->opcode = 459;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46373 = inst->sreg3;
    inst->sreg2 = D.46373;
    D.46374 = inst->sreg2;
    inst->sreg1 = D.46374;
    D.46301 = cfg->ip;
    inst->cil_code = D.46301;
    inst->data.op[1].p = "IndexOutOfRangeException";
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    if (D.46304 != 0B) goto <D.46375>; else goto <D.46376>;
    <D.46375>:
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    D.46304->next = inst;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    inst->prev = D.46304;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    goto <D.46377>;
    <D.46376>:
    D.46303 = cfg->cbb;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    D.46304 = D.46303->last_ins;
    D.46303->code = D.46304;
    <D.46377>:
  }
  {
    struct MonoInst * inst;

    D.46296 = cfg->mempool;
    inst = mono_mempool_alloc (D.46296, 56);
    inst->data.op[1].const_val = 0;
    D.46378 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46378;
    inst->prev = 0B;
    D.46379 = inst->prev;
    inst->next = D.46379;
    inst->opcode = 567;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46380 = inst->sreg3;
    inst->sreg2 = D.46380;
    D.46381 = inst->sreg2;
    inst->sreg1 = D.46381;
    D.46301 = cfg->ip;
    inst->cil_code = D.46301;
    inst->dreg = mult_reg;
    inst->sreg1 = high2_reg;
    inst->sreg2 = realidx1_reg;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    if (D.46304 != 0B) goto <D.46382>; else goto <D.46383>;
    <D.46382>:
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    D.46304->next = inst;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    inst->prev = D.46304;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    goto <D.46384>;
    <D.46383>:
    D.46303 = cfg->cbb;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    D.46304 = D.46303->last_ins;
    D.46303->code = D.46304;
    <D.46384>:
  }
  {
    struct MonoInst * inst;

    D.46296 = cfg->mempool;
    inst = mono_mempool_alloc (D.46296, 56);
    inst->data.op[1].const_val = 0;
    D.46385 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46385;
    inst->prev = 0B;
    D.46386 = inst->prev;
    inst->next = D.46386;
    inst->opcode = 565;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46387 = inst->sreg3;
    inst->sreg2 = D.46387;
    D.46388 = inst->sreg2;
    inst->sreg1 = D.46388;
    D.46301 = cfg->ip;
    inst->cil_code = D.46301;
    inst->dreg = sum_reg;
    inst->sreg1 = mult_reg;
    inst->sreg2 = realidx2_reg;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    if (D.46304 != 0B) goto <D.46389>; else goto <D.46390>;
    <D.46389>:
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    D.46304->next = inst;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    inst->prev = D.46304;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    goto <D.46391>;
    <D.46390>:
    D.46303 = cfg->cbb;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    D.46304 = D.46303->last_ins;
    D.46303->code = D.46304;
    <D.46391>:
  }
  {
    struct MonoInst * inst;

    D.46296 = cfg->mempool;
    inst = mono_mempool_alloc (D.46296, 56);
    inst->data.op[1].const_val = 0;
    D.46392 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46392;
    inst->prev = 0B;
    D.46393 = inst->prev;
    inst->next = D.46393;
    inst->opcode = 627;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46394 = inst->sreg3;
    inst->sreg2 = D.46394;
    D.46395 = inst->sreg2;
    inst->sreg1 = D.46395;
    D.46301 = cfg->ip;
    inst->cil_code = D.46301;
    inst->dreg = mult2_reg;
    inst->sreg1 = sum_reg;
    size.425 = (int) size;
    inst->data.op[1].const_val = size.425;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    if (D.46304 != 0B) goto <D.46397>; else goto <D.46398>;
    <D.46397>:
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    D.46304->next = inst;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    inst->prev = D.46304;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    goto <D.46399>;
    <D.46398>:
    D.46303 = cfg->cbb;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    D.46304 = D.46303->last_ins;
    D.46303->code = D.46304;
    <D.46399>:
  }
  {
    struct MonoInst * inst;

    D.46296 = cfg->mempool;
    inst = mono_mempool_alloc (D.46296, 56);
    inst->data.op[1].const_val = 0;
    D.46400 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46400;
    inst->prev = 0B;
    D.46401 = inst->prev;
    inst->next = D.46401;
    inst->opcode = 565;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46402 = inst->sreg3;
    inst->sreg2 = D.46402;
    D.46403 = inst->sreg2;
    inst->sreg1 = D.46403;
    D.46301 = cfg->ip;
    inst->cil_code = D.46301;
    inst->dreg = add_reg;
    inst->sreg1 = mult2_reg;
    D.46302 = arr->dreg;
    inst->sreg2 = D.46302;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    if (D.46304 != 0B) goto <D.46404>; else goto <D.46405>;
    <D.46404>:
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    D.46304->next = inst;
    D.46303 = cfg->cbb;
    D.46304 = D.46303->last_ins;
    inst->prev = D.46304;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    goto <D.46406>;
    <D.46405>:
    D.46303 = cfg->cbb;
    D.46303 = cfg->cbb;
    D.46303->last_ins = inst;
    D.46304 = D.46303->last_ins;
    D.46303->code = D.46304;
    <D.46406>:
  }
  D.46296 = cfg->mempool;
  ins = mono_mempool_alloc (D.46296, 56);
  ins->data.op[1].const_val = 0;
  D.46407 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.46407;
  ins->prev = 0B;
  D.46408 = ins->prev;
  ins->next = D.46408;
  ins->opcode = 625;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.46409 = ins->sreg3;
  ins->sreg2 = D.46409;
  D.46410 = ins->sreg2;
  ins->sreg1 = D.46410;
  D.46301 = cfg->ip;
  ins->cil_code = D.46301;
  ins->dreg = add_reg;
  ins->sreg1 = add_reg;
  ins->data.op[1].const_val = 16;
  ins->type = 5;
  ins->klass = klass;
  D.46303 = cfg->cbb;
  D.46304 = D.46303->last_ins;
  if (D.46304 != 0B) goto <D.46411>; else goto <D.46412>;
  <D.46411>:
  D.46303 = cfg->cbb;
  D.46304 = D.46303->last_ins;
  D.46304->next = ins;
  D.46303 = cfg->cbb;
  D.46304 = D.46303->last_ins;
  ins->prev = D.46304;
  D.46303 = cfg->cbb;
  D.46303->last_ins = ins;
  goto <D.46413>;
  <D.46412>:
  D.46303 = cfg->cbb;
  D.46303 = cfg->cbb;
  D.46303->last_ins = ins;
  D.46304 = D.46303->last_ins;
  D.46303->code = D.46304;
  <D.46413>:
  D.46414 = ins;
  return D.46414;
}


mini_redirect_call (struct MonoCompile * cfg, struct MonoMethod * method, struct MonoMethodSignature * signature, struct MonoInst * * args, struct MonoInst * this)
{
  struct MonoClass * D.46416;
  struct MonoClass * D.46417;
  int D.29374;
  int iftmp.426;
  int D.29373;
  const char[20] * D.46423;
  unsigned char D.46424;
  int D.46425;
  unsigned char D.46426;
  int D.46427;
  _Bool D.46428;
  _Bool D.46429;
  _Bool D.46430;
  const unsigned char * D.46433;
  unsigned char D.46434;
  int D.46435;
  const unsigned char * D.46436;
  unsigned char D.46437;
  int D.46438;
  _Bool D.46439;
  _Bool D.46440;
  const unsigned char * D.46443;
  unsigned char D.46444;
  int D.46445;
  const unsigned char * D.46446;
  unsigned char D.46447;
  int D.46448;
  _Bool D.46449;
  _Bool D.46450;
  const unsigned char * D.46453;
  unsigned char D.46454;
  int D.46455;
  const unsigned char * D.46456;
  unsigned char D.46457;
  int D.46458;
  const char * D.46460;
  <unnamed type> mono_profiler_events.427;
  unsigned int D.46464;
  unsigned int D.46467;
  unsigned int D.46468;
  struct MonoDomain * D.46471;
  _Bool D.46472;
  long int D.46473;
  long int D.46474;
  struct MonoInst * D.46479;
  struct MonoMemPool * D.46480;
  void * D.46481;
  struct MonoInst * D.46482;
  int D.46483;
  struct MonoInst * D.46484;
  guint16 iftmp.428;
  unsigned char D.46486;
  unsigned char D.46487;
  int D.46491;
  int D.46492;
  const unsigned char * D.46493;
  void * iftmp.429;
  unsigned int D.46498;
  int D.46499;
  struct MonoBasicBlock * D.46500;
  struct MonoInst * D.46501;
  struct MonoInst * D.46505;

  D.46416 = method->klass;
  D.46417 = mono_defaults.string_class;
  if (D.46416 == D.46417) goto <D.46418>; else goto <D.46419>;
  <D.46418>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = method->name;
      D.46423 = "InternalAllocateStr";
      D.46424 = MEM[(const unsigned char *)D.46423];
      D.46425 = (int) D.46424;
      D.46426 = *__s2;
      D.46427 = (int) D.46426;
      __result = D.46425 - D.46427;
      {
        D.46428 = __s2_len != 0;
        D.46429 = __result == 0;
        D.46430 = D.46428 & D.46429;
        if (D.46430 != 0) goto <D.46431>; else goto <D.46432>;
        <D.46431>:
        D.46433 = &MEM[(void *)"InternalAllocateStr" + 1B];
        D.46434 = *D.46433;
        D.46435 = (int) D.46434;
        D.46436 = __s2 + 1;
        D.46437 = *D.46436;
        D.46438 = (int) D.46437;
        __result = D.46435 - D.46438;
        D.46439 = __s2_len > 1;
        D.46429 = __result == 0;
        D.46440 = D.46439 & D.46429;
        if (D.46440 != 0) goto <D.46441>; else goto <D.46442>;
        <D.46441>:
        D.46443 = &MEM[(void *)"InternalAllocateStr" + 2B];
        D.46444 = *D.46443;
        D.46445 = (int) D.46444;
        D.46446 = __s2 + 2;
        D.46447 = *D.46446;
        D.46448 = (int) D.46447;
        __result = D.46445 - D.46448;
        D.46449 = __s2_len > 2;
        D.46429 = __result == 0;
        D.46450 = D.46449 & D.46429;
        if (D.46450 != 0) goto <D.46451>; else goto <D.46452>;
        <D.46451>:
        D.46453 = &MEM[(void *)"InternalAllocateStr" + 3B];
        D.46454 = *D.46453;
        D.46455 = (int) D.46454;
        D.46456 = __s2 + 3;
        D.46457 = *D.46456;
        D.46458 = (int) D.46457;
        __result = D.46455 - D.46458;
        <D.46452>:
        <D.46442>:
        <D.46432>:
      }
      D.29373 = __result;
    }
    iftmp.426 = -D.29373;
    goto <D.46459>;
    <D.46422>:
    D.46460 = method->name;
    iftmp.426 = __builtin_strcmp (D.46460, "InternalAllocateStr");
    <D.46459>:
    D.29374 = iftmp.426;
  }
  if (D.29374 == 0) goto <D.46461>; else goto <D.46462>;
  <D.46461>:
  mono_profiler_events.427 = mono_profiler_events;
  D.46464 = mono_profiler_events.427 & 128;
  if (D.46464 == 0) goto <D.46465>; else goto <D.46466>;
  <D.46465>:
  D.46467 = cfg->opt;
  D.46468 = D.46467 & 512;
  if (D.46468 == 0) goto <D.46469>; else goto <D.46470>;
  <D.46469>:
  {
    struct MonoInst * iargs[2];
    struct MonoVTable * vtable;
    struct MonoMethod * managed_alloc;

    try
      {
        D.46471 = cfg->domain;
        D.46416 = method->klass;
        vtable = mono_class_vtable (D.46471, D.46416);
        managed_alloc = 0B;
        D.46472 = vtable == 0B;
        D.46473 = (long int) D.46472;
        D.46474 = __builtin_expect (D.46473, 0);
        if (D.46474 != 0) goto <D.46475>; else goto <D.46476>;
        <D.46475>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 5598, "vtable");
        <D.46476>:
        D.46416 = method->klass;
        managed_alloc = mono_gc_get_managed_allocator (D.46416, 0);
        if (managed_alloc == 0B) goto <D.46477>; else goto <D.46478>;
        <D.46477>:
        D.46479 = 0B;
        return D.46479;
        <D.46478>:
        D.46480 = cfg->mempool;
        D.46481 = mono_mempool_alloc (D.46480, 56);
        iargs[0] = D.46481;
        D.46482 = iargs[0];
        D.46482 = iargs[0];
        D.46482->data.op[1].const_val = 0;
        D.46483 = D.46482->data.op[1].const_val;
        D.46482->data.op[0].const_val = D.46483;
        D.46482 = iargs[0];
        D.46482 = iargs[0];
        D.46482->prev = 0B;
        D.46484 = D.46482->prev;
        D.46482->next = D.46484;
        D.46482 = iargs[0];
        D.46486 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.46487 = D.46486 & 64;
        if (D.46487 != 0) goto <D.46488>; else goto <D.46489>;
        <D.46488>:
        iftmp.428 = 732;
        goto <D.46490>;
        <D.46489>:
        iftmp.428 = 362;
        <D.46490>:
        D.46482->opcode = iftmp.428;
        D.46482 = iargs[0];
        D.46482->flags = 0;
        D.46482 = iargs[0];
        D.46482->type = 0;
        D.46482 = iargs[0];
        D.46482->dreg = -1;
        D.46482 = iargs[0];
        D.46482 = iargs[0];
        D.46482 = iargs[0];
        D.46482->sreg3 = -1;
        D.46491 = D.46482->sreg3;
        D.46482->sreg2 = D.46491;
        D.46492 = D.46482->sreg2;
        D.46482->sreg1 = D.46492;
        D.46482 = iargs[0];
        D.46493 = cfg->ip;
        D.46482->cil_code = D.46493;
        D.46482 = iargs[0];
        D.46486 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.46487 = D.46486 & 64;
        if (D.46487 != 0) goto <D.46495>; else goto <D.46496>;
        <D.46495>:
        iftmp.429 = vtable->klass;
        goto <D.46497>;
        <D.46496>:
        iftmp.429 = vtable;
        <D.46497>:
        D.46482->data.op[0].p = iftmp.429;
        D.46482 = iargs[0];
        D.46482->data.op[1].src = 14B;
        D.46482 = iargs[0];
        D.46482->type = 3;
        D.46482 = iargs[0];
        D.46498 = alloc_dreg (cfg, 3);
        D.46499 = (int) D.46498;
        D.46482->dreg = D.46499;
        D.46500 = cfg->cbb;
        D.46501 = D.46500->last_ins;
        if (D.46501 != 0B) goto <D.46502>; else goto <D.46503>;
        <D.46502>:
        D.46500 = cfg->cbb;
        D.46501 = D.46500->last_ins;
        D.46482 = iargs[0];
        D.46501->next = D.46482;
        D.46482 = iargs[0];
        D.46500 = cfg->cbb;
        D.46501 = D.46500->last_ins;
        D.46482->prev = D.46501;
        D.46500 = cfg->cbb;
        D.46482 = iargs[0];
        D.46500->last_ins = D.46482;
        goto <D.46504>;
        <D.46503>:
        D.46500 = cfg->cbb;
        D.46500 = cfg->cbb;
        D.46482 = iargs[0];
        D.46500->last_ins = D.46482;
        D.46501 = D.46500->last_ins;
        D.46500->code = D.46501;
        <D.46504>:
        D.46505 = *args;
        iargs[1] = D.46505;
        D.46479 = mono_emit_method_call (cfg, managed_alloc, &iargs, this);
        return D.46479;
      }
    finally
      {
        iargs = {CLOBBER};
      }
  }
  <D.46470>:
  <D.46466>:
  <D.46462>:
  <D.46419>:
  D.46479 = 0B;
  return D.46479;
}


is_supported_tail_call (struct MonoCompile * cfg, struct MonoMethod * method, struct MonoMethod * cmethod, struct MonoMethodSignature * fsig, int call_opcode)
{
  int iftmp.430;
  struct MonoMethodSignature * D.46511;
  struct MonoMethodSignature * D.46512;
  int D.46513;
  struct MonoMethodSignature * D.46515;
  struct MonoType * D.46516;
  int D.46517;
  struct MonoType * D.46521;
  unsigned char D.46522;
  unsigned char D.46523;
  unsigned char D.46525;
  short unsigned int D.46527;
  int D.46528;
  unsigned char D.46529;
  unsigned char D.46530;
  struct MonoClass * D.46533;
  unsigned char D.46534;
  unsigned char D.46535;
  short unsigned int D.46538;
  int D.46539;
  int D.46540;
  struct MonoMethod * D.46543;
  unsigned char D.46544;
  unsigned char D.46545;
  unsigned char D.46548;
  unsigned char D.46549;
  _Bool D.46550;
  _Bool D.46551;
  _Bool D.46552;
  gboolean D.46557;
  gboolean supported_tail_call;
  int i;

  D.46511 = mono_method_signature (method);
  D.46512 = mono_method_signature (cmethod);
  D.46513 = mono_metadata_signature_equal (D.46511, D.46512);
  if (D.46513 != 0) goto <D.46514>; else goto <D.46509>;
  <D.46514>:
  D.46515 = mono_method_signature (cmethod);
  D.46516 = D.46515->ret;
  D.46517 = mono_type_is_struct (D.46516);
  if (D.46517 == 0) goto <D.46518>; else goto <D.46509>;
  <D.46518>:
  iftmp.430 = 1;
  goto <D.46510>;
  <D.46509>:
  iftmp.430 = 0;
  <D.46510>:
  supported_tail_call = iftmp.430;
  i = 0;
  goto <D.29718>;
  <D.29717>:
  D.46521 = fsig->params[i];
  D.46522 = BIT_FIELD_REF <*D.46521, 8, 56>;
  D.46523 = D.46522 & 64;
  if (D.46523 != 0) goto <D.46519>; else goto <D.46524>;
  <D.46524>:
  D.46521 = fsig->params[i];
  D.46525 = D.46521->type;
  if (D.46525 == 15) goto <D.46519>; else goto <D.46526>;
  <D.46526>:
  D.46521 = fsig->params[i];
  D.46525 = D.46521->type;
  if (D.46525 == 27) goto <D.46519>; else goto <D.46520>;
  <D.46519>:
  supported_tail_call = 0;
  <D.46520>:
  i = i + 1;
  <D.29718>:
  D.46527 = fsig->param_count;
  D.46528 = (int) D.46527;
  if (D.46528 > i) goto <D.29717>; else goto <D.29719>;
  <D.29719>:
  D.46529 = BIT_FIELD_REF <*fsig, 8, 80>;
  D.46530 = D.46529 & 64;
  if (D.46530 != 0) goto <D.46531>; else goto <D.46532>;
  <D.46531>:
  D.46533 = cmethod->klass;
  D.46534 = BIT_FIELD_REF <*D.46533, 8, 160>;
  D.46535 = D.46534 & 8;
  if (D.46535 != 0) goto <D.46536>; else goto <D.46537>;
  <D.46536>:
  supported_tail_call = 0;
  <D.46537>:
  <D.46532>:
  D.46538 = cmethod->flags;
  D.46539 = (int) D.46538;
  D.46540 = D.46539 & 8192;
  if (D.46540 != 0) goto <D.46541>; else goto <D.46542>;
  <D.46541>:
  supported_tail_call = 0;
  <D.46542>:
  D.46543 = cfg->method;
  D.46544 = BIT_FIELD_REF <*D.46543, 8, 168>;
  D.46545 = D.46544 & 1;
  if (D.46545 != 0) goto <D.46546>; else goto <D.46547>;
  <D.46546>:
  supported_tail_call = 0;
  <D.46547>:
  D.46548 = BIT_FIELD_REF <*cmethod, 8, 160>;
  D.46549 = D.46548 & 124;
  D.46550 = D.46549 != 0;
  D.46551 = D.46549 != 68;
  D.46552 = D.46550 & D.46551;
  if (D.46552 != 0) goto <D.46553>; else goto <D.46554>;
  <D.46553>:
  supported_tail_call = 0;
  <D.46554>:
  if (call_opcode != 40) goto <D.46555>; else goto <D.46556>;
  <D.46555>:
  supported_tail_call = 0;
  <D.46556>:
  D.46557 = supported_tail_call;
  return D.46557;
}


mono_emit_widen_call_res (struct MonoCompile * cfg, struct MonoInst * ins, struct MonoMethodSignature * fsig)
{
  struct MonoType * D.46559;
  int D.46560;
  unsigned char D.46563;
  unsigned char D.46564;
  unsigned char D.46567;
  unsigned char D.46568;
  unsigned int D.46571;
  unsigned int D.46574;
  struct MonoMemPool * D.46575;
  int D.46576;
  struct MonoInst * D.46577;
  short unsigned int D.46578;
  int D.46579;
  int D.46580;
  const unsigned char * D.46581;
  int D.46582;
  struct MonoBasicBlock * D.46583;
  struct MonoInst * D.46584;
  unsigned char D.46588;
  struct MonoInst * D.46589;

  D.46559 = fsig->ret;
  D.46560 = mono_type_is_void (D.46559);
  if (D.46560 == 0) goto <D.46561>; else goto <D.46562>;
  <D.46561>:
  D.46563 = BIT_FIELD_REF <*fsig, 8, 88>;
  D.46564 = D.46563 & 1;
  if (D.46564 != 0) goto <D.46565>; else goto <D.46566>;
  <D.46565>:
  D.46559 = fsig->ret;
  D.46567 = BIT_FIELD_REF <*D.46559, 8, 56>;
  D.46568 = D.46567 & 64;
  if (D.46568 == 0) goto <D.46569>; else goto <D.46570>;
  <D.46569>:
  {
    int widen_op;

    widen_op = -1;
    D.46559 = fsig->ret;
    D.46571 = mono_type_to_load_membase (cfg, D.46559);
    switch (D.46571) <default: <D.28128>, case 389: <D.28123>, case 390: <D.28125>, case 391: <D.28126>, case 392: <D.28127>>
    <D.28123>:
    widen_op = 580;
    goto <D.28124>;
    <D.28125>:
    widen_op = 591;
    goto <D.28124>;
    <D.28126>:
    widen_op = 581;
    goto <D.28124>;
    <D.28127>:
    widen_op = 590;
    goto <D.28124>;
    <D.28128>:
    goto <D.28124>;
    <D.28124>:
    if (widen_op != -1) goto <D.46572>; else goto <D.46573>;
    <D.46572>:
    {
      int dreg;
      struct MonoInst * widen;

      D.46574 = alloc_preg (cfg);
      dreg = (int) D.46574;
      D.46575 = cfg->mempool;
      widen = mono_mempool_alloc (D.46575, 56);
      widen->data.op[1].const_val = 0;
      D.46576 = widen->data.op[1].const_val;
      widen->data.op[0].const_val = D.46576;
      widen->prev = 0B;
      D.46577 = widen->prev;
      widen->next = D.46577;
      D.46578 = (short unsigned int) widen_op;
      widen->opcode = D.46578;
      widen->flags = 0;
      widen->type = 0;
      widen->dreg = -1;
      widen->sreg3 = -1;
      D.46579 = widen->sreg3;
      widen->sreg2 = D.46579;
      D.46580 = widen->sreg2;
      widen->sreg1 = D.46580;
      D.46581 = cfg->ip;
      widen->cil_code = D.46581;
      widen->dreg = dreg;
      D.46582 = ins->dreg;
      widen->sreg1 = D.46582;
      D.46583 = cfg->cbb;
      D.46584 = D.46583->last_ins;
      if (D.46584 != 0B) goto <D.46585>; else goto <D.46586>;
      <D.46585>:
      D.46583 = cfg->cbb;
      D.46584 = D.46583->last_ins;
      D.46584->next = widen;
      D.46583 = cfg->cbb;
      D.46584 = D.46583->last_ins;
      widen->prev = D.46584;
      D.46583 = cfg->cbb;
      D.46583->last_ins = widen;
      goto <D.46587>;
      <D.46586>:
      D.46583 = cfg->cbb;
      D.46583 = cfg->cbb;
      D.46583->last_ins = widen;
      D.46584 = D.46583->last_ins;
      D.46583->code = D.46584;
      <D.46587>:
      D.46588 = ins->type;
      widen->type = D.46588;
      ins = widen;
    }
    <D.46573>:
  }
  <D.46570>:
  <D.46566>:
  <D.46562>:
  D.46589 = ins;
  return D.46589;
}


emit_pop_lmf (struct MonoCompile * cfg)
{
  unsigned char D.46592;
  unsigned char D.46593;
  struct MonoMemPool * D.46596;
  int D.46597;
  struct MonoInst * D.46598;
  int D.46599;
  int D.46600;
  const unsigned char * D.46601;
  struct MonoInst * D.46602;
  unsigned char D.46603;
  unsigned char D.46604;
  struct MonoClass * D.46605;
  unsigned int D.46606;
  int D.46607;
  int D.46608;
  _Bool D.46609;
  long int D.46610;
  long int D.46611;
  struct MonoType * D.46614;
  int D.46615;
  _Bool iftmp.431;
  int D.46619;
  unsigned char D.46622;
  _Bool D.46623;
  _Bool D.46624;
  _Bool D.46625;
  int D.46626;
  unsigned char D.46628;
  struct MonoInst * iftmp.432;
  int D.46632;
  int D.46633;
  unsigned int D.46634;
  unsigned int D.46635;
  struct MonoInst * * D.46638;
  sizetype D.46639;
  sizetype D.46640;
  sizetype D.46641;
  struct MonoInst * * D.46642;
  struct MonoInst * iftmp.433;
  int D.46645;
  unsigned int D.46646;
  sizetype D.46649;
  sizetype D.46650;
  struct MonoInst * * D.46651;
  _Bool D.46653;
  long int D.46654;
  long int D.46655;
  _Bool D.46658;
  long int D.46659;
  long int D.46660;
  unsigned char D.46663;
  unsigned char D.46664;
  unsigned char D.46665;
  unsigned char D.46666;
  struct MonoBasicBlock * D.46667;
  struct MonoInst * D.46668;
  unsigned char D.46674;
  int D.46676;
  unsigned int D.46678;
  struct MonoInst * D.46682;
  struct MonoClass * D.46685;
  struct MonoType * D.46686;
  struct MonoInst * D.46687;
  unsigned int D.46688;
  int lmf_reg;
  int lmf_addr_reg;
  int prev_lmf_reg;
  struct MonoInst * ins;

  D.46592 = BIT_FIELD_REF <*cfg, 8, 3416>;
  D.46593 = D.46592 & 4;
  if (D.46593 == 0) goto <D.46594>; else goto <D.46595>;
  <D.46594>:
  return;
  <D.46595>:
  D.46596 = cfg->mempool;
  ins = mono_mempool_alloc (D.46596, 56);
  ins->data.op[1].const_val = 0;
  D.46597 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.46597;
  ins->prev = 0B;
  D.46598 = ins->prev;
  ins->next = D.46598;
  ins->opcode = 314;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.46599 = ins->sreg3;
  ins->sreg2 = D.46599;
  D.46600 = ins->sreg2;
  ins->sreg1 = D.46600;
  D.46601 = cfg->ip;
  ins->cil_code = D.46601;
  D.46602 = cfg->lmf_var;
  ins->data.op[0].p = D.46602;
  D.46602 = cfg->lmf_var;
  D.46602 = cfg->lmf_var;
  D.46603 = D.46602->flags;
  D.46604 = D.46603 | 16;
  D.46602->flags = D.46604;
  ins->type = 5;
  D.46602 = cfg->lmf_var;
  D.46605 = D.46602->klass;
  ins->klass = D.46605;
  D.46606 = alloc_dreg (cfg, 5);
  D.46607 = (int) D.46606;
  ins->dreg = D.46607;
  cfg->has_indirection = 1;
  D.46608 = cfg->gsharedvt;
  D.46609 = D.46608 != 0;
  D.46610 = (long int) D.46609;
  D.46611 = __builtin_expect (D.46610, 0);
  if (D.46611 != 0) goto <D.46612>; else goto <D.46613>;
  <D.46612>:
  D.46602 = cfg->lmf_var;
  D.46614 = D.46602->data.op[1].vtype;
  D.46615 = mini_is_gsharedvt_variable_type (cfg, D.46614);
  if (D.46615 != 0) goto <D.46616>; else goto <D.46617>;
  <D.46616>:
  handle_gsharedvt_ldaddr (cfg);
  <D.46617>:
  <D.46613>:
  D.46619 = mono_arch_is_soft_float ();
  if (D.46619 != 0) goto <D.46620>; else goto <D.46621>;
  <D.46620>:
  D.46602 = cfg->lmf_var;
  D.46622 = D.46602->type;
  D.46623 = D.46622 == 2;
  D.46624 = D.46622 == 4;
  D.46625 = D.46623 | D.46624;
  D.46626 = (int) D.46625;
  iftmp.431 = (_Bool) D.46626;
  goto <D.46627>;
  <D.46621>:
  D.46602 = cfg->lmf_var;
  D.46628 = D.46602->type;
  iftmp.431 = D.46628 == 2;
  <D.46627>:
  if (iftmp.431 != 0) goto <D.46629>; else goto <D.46630>;
  <D.46629>:
  {
    struct MonoInst * var1;
    struct MonoInst * var2;

    D.46602 = cfg->lmf_var;
    D.46632 = D.46602->dreg;
    D.46633 = D.46632 + 1;
    D.46634 = (unsigned int) D.46633;
    D.46635 = cfg->vreg_to_inst_len;
    if (D.46634 < D.46635) goto <D.46636>; else goto <D.46637>;
    <D.46636>:
    D.46638 = cfg->vreg_to_inst;
    D.46602 = cfg->lmf_var;
    D.46632 = D.46602->dreg;
    D.46639 = (sizetype) D.46632;
    D.46640 = D.46639 + 1;
    D.46641 = D.46640 * 4;
    D.46642 = D.46638 + D.46641;
    iftmp.432 = *D.46642;
    goto <D.46643>;
    <D.46637>:
    iftmp.432 = 0B;
    <D.46643>:
    var1 = iftmp.432;
    D.46602 = cfg->lmf_var;
    D.46632 = D.46602->dreg;
    D.46645 = D.46632 + 2;
    D.46646 = (unsigned int) D.46645;
    D.46635 = cfg->vreg_to_inst_len;
    if (D.46646 < D.46635) goto <D.46647>; else goto <D.46648>;
    <D.46647>:
    D.46638 = cfg->vreg_to_inst;
    D.46602 = cfg->lmf_var;
    D.46632 = D.46602->dreg;
    D.46639 = (sizetype) D.46632;
    D.46649 = D.46639 + 2;
    D.46650 = D.46649 * 4;
    D.46651 = D.46638 + D.46650;
    iftmp.433 = *D.46651;
    goto <D.46652>;
    <D.46648>:
    iftmp.433 = 0B;
    <D.46652>:
    var2 = iftmp.433;
    D.46653 = var1 == 0B;
    D.46654 = (long int) D.46653;
    D.46655 = __builtin_expect (D.46654, 0);
    if (D.46655 != 0) goto <D.46656>; else goto <D.46657>;
    <D.46656>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1970, "var1");
    <D.46657>:
    D.46658 = var2 == 0B;
    D.46659 = (long int) D.46658;
    D.46660 = __builtin_expect (D.46659, 0);
    if (D.46660 != 0) goto <D.46661>; else goto <D.46662>;
    <D.46661>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1970, "var2");
    <D.46662>:
    D.46663 = var1->flags;
    D.46664 = D.46663 | 16;
    var1->flags = D.46664;
    D.46665 = var2->flags;
    D.46666 = D.46665 | 16;
    var2->flags = D.46666;
  }
  <D.46630>:
  D.46667 = cfg->cbb;
  D.46668 = D.46667->last_ins;
  if (D.46668 != 0B) goto <D.46669>; else goto <D.46670>;
  <D.46669>:
  D.46667 = cfg->cbb;
  D.46668 = D.46667->last_ins;
  D.46668->next = ins;
  D.46667 = cfg->cbb;
  D.46668 = D.46667->last_ins;
  ins->prev = D.46668;
  D.46667 = cfg->cbb;
  D.46667->last_ins = ins;
  goto <D.46671>;
  <D.46670>:
  D.46667 = cfg->cbb;
  D.46667 = cfg->cbb;
  D.46667->last_ins = ins;
  D.46668 = D.46667->last_ins;
  D.46667->code = D.46668;
  <D.46671>:
  lmf_reg = ins->dreg;
  D.46592 = BIT_FIELD_REF <*cfg, 8, 3416>;
  D.46674 = D.46592 & 8;
  if (D.46674 != 0) goto <D.46675>; else goto <D.46672>;
  <D.46675>:
  D.46676 = mini_tls_get_supported (cfg, 3);
  if (D.46676 != 0) goto <D.46677>; else goto <D.46672>;
  <D.46677>:
  D.46678 = alloc_preg (cfg);
  prev_lmf_reg = (int) D.46678;
  D.46596 = cfg->mempool;
  ins = mono_mempool_alloc (D.46596, 56);
  ins->data.op[1].const_val = 0;
  D.46597 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.46597;
  ins->prev = 0B;
  D.46598 = ins->prev;
  ins->next = D.46598;
  ins->opcode = 388;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.46599 = ins->sreg3;
  ins->sreg2 = D.46599;
  D.46600 = ins->sreg2;
  ins->sreg1 = D.46600;
  D.46601 = cfg->ip;
  ins->cil_code = D.46601;
  ins->dreg = prev_lmf_reg;
  ins->sreg1 = lmf_reg;
  ins->data.op[0].const_val = 0;
  ins->type = 1;
  D.46667 = cfg->cbb;
  D.46668 = D.46667->last_ins;
  if (D.46668 != 0B) goto <D.46679>; else goto <D.46680>;
  <D.46679>:
  D.46667 = cfg->cbb;
  D.46668 = D.46667->last_ins;
  D.46668->next = ins;
  D.46667 = cfg->cbb;
  D.46668 = D.46667->last_ins;
  ins->prev = D.46668;
  D.46667 = cfg->cbb;
  D.46667->last_ins = ins;
  goto <D.46681>;
  <D.46680>:
  D.46667 = cfg->cbb;
  D.46667 = cfg->cbb;
  D.46667->last_ins = ins;
  D.46668 = D.46667->last_ins;
  D.46667->code = D.46668;
  <D.46681>:
  emit_tls_set (cfg, prev_lmf_reg, 3);
  goto <D.46673>;
  <D.46672>:
  D.46682 = cfg->lmf_addr_var;
  if (D.46682 == 0B) goto <D.46683>; else goto <D.46684>;
  <D.46683>:
  D.46685 = mono_defaults.int_class;
  D.46686 = &D.46685->byval_arg;
  D.46687 = mono_compile_create_var (cfg, D.46686, 329);
  cfg->lmf_addr_var = D.46687;
  <D.46684>:
  D.46682 = cfg->lmf_addr_var;
  lmf_addr_reg = D.46682->dreg;
  D.46688 = alloc_preg (cfg);
  prev_lmf_reg = (int) D.46688;
  D.46596 = cfg->mempool;
  ins = mono_mempool_alloc (D.46596, 56);
  ins->data.op[1].const_val = 0;
  D.46597 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.46597;
  ins->prev = 0B;
  D.46598 = ins->prev;
  ins->next = D.46598;
  ins->opcode = 388;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.46599 = ins->sreg3;
  ins->sreg2 = D.46599;
  D.46600 = ins->sreg2;
  ins->sreg1 = D.46600;
  D.46601 = cfg->ip;
  ins->cil_code = D.46601;
  ins->dreg = prev_lmf_reg;
  ins->sreg1 = lmf_reg;
  ins->data.op[0].const_val = 0;
  ins->type = 1;
  D.46667 = cfg->cbb;
  D.46668 = D.46667->last_ins;
  if (D.46668 != 0B) goto <D.46689>; else goto <D.46690>;
  <D.46689>:
  D.46667 = cfg->cbb;
  D.46668 = D.46667->last_ins;
  D.46668->next = ins;
  D.46667 = cfg->cbb;
  D.46668 = D.46667->last_ins;
  ins->prev = D.46668;
  D.46667 = cfg->cbb;
  D.46667->last_ins = ins;
  goto <D.46691>;
  <D.46690>:
  D.46667 = cfg->cbb;
  D.46667 = cfg->cbb;
  D.46667->last_ins = ins;
  D.46668 = D.46667->last_ins;
  D.46667->code = D.46668;
  <D.46691>:
  D.46596 = cfg->mempool;
  ins = mono_mempool_alloc (D.46596, 56);
  ins->data.op[1].const_val = 0;
  D.46597 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.46597;
  ins->prev = 0B;
  D.46598 = ins->prev;
  ins->next = D.46598;
  ins->opcode = 374;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.46599 = ins->sreg3;
  ins->sreg2 = D.46599;
  D.46600 = ins->sreg2;
  ins->sreg1 = D.46600;
  D.46601 = cfg->ip;
  ins->cil_code = D.46601;
  ins->sreg1 = prev_lmf_reg;
  ins->dreg = lmf_addr_reg;
  ins->data.op[0].const_val = 0;
  D.46667 = cfg->cbb;
  D.46668 = D.46667->last_ins;
  if (D.46668 != 0B) goto <D.46692>; else goto <D.46693>;
  <D.46692>:
  D.46667 = cfg->cbb;
  D.46668 = D.46667->last_ins;
  D.46668->next = ins;
  D.46667 = cfg->cbb;
  D.46668 = D.46667->last_ins;
  ins->prev = D.46668;
  D.46667 = cfg->cbb;
  D.46667->last_ins = ins;
  goto <D.46694>;
  <D.46693>:
  D.46667 = cfg->cbb;
  D.46667 = cfg->cbb;
  D.46667->last_ins = ins;
  D.46668 = D.46667->last_ins;
  D.46667->code = D.46668;
  <D.46694>:
  <D.46673>:
}


emit_tls_set (struct MonoCompile * cfg, int sreg1, int tls_key)
{
  unsigned char D.46696;
  unsigned char D.46697;
  struct MonoMemPool * D.46702;
  int D.46703;
  struct MonoInst * D.46704;
  guint16 iftmp.434;
  int D.46709;
  int D.46710;
  const unsigned char * D.46711;
  void * tls_key.435;
  unsigned int D.46713;
  int D.46714;
  <unnamed type> tls_key.436;
  void * _offset.437;
  unsigned int D.46718;
  int D.46719;
  struct MonoBasicBlock * D.46720;
  struct MonoInst * D.46721;
  int D.46725;
  struct MonoInst * D.46726;
  int D.46727;
  int D.46728;
  int D.46729;
  int D.46734;
  struct MonoInst * ins;
  struct MonoInst * c;

  D.46696 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.46697 = D.46696 & 64;
  if (D.46697 != 0) goto <D.46698>; else goto <D.46699>;
  <D.46698>:
  D.46696 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.46697 = D.46696 & 64;
  if (D.46697 != 0) goto <D.46700>; else goto <D.46701>;
  <D.46700>:
  D.46702 = cfg->mempool;
  c = mono_mempool_alloc (D.46702, 56);
  c->data.op[1].const_val = 0;
  D.46703 = c->data.op[1].const_val;
  c->data.op[0].const_val = D.46703;
  c->prev = 0B;
  D.46704 = c->prev;
  c->next = D.46704;
  D.46696 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.46697 = D.46696 & 64;
  if (D.46697 != 0) goto <D.46706>; else goto <D.46707>;
  <D.46706>:
  iftmp.434 = 732;
  goto <D.46708>;
  <D.46707>:
  iftmp.434 = 362;
  <D.46708>:
  c->opcode = iftmp.434;
  c->flags = 0;
  c->type = 0;
  c->dreg = -1;
  c->sreg3 = -1;
  D.46709 = c->sreg3;
  c->sreg2 = D.46709;
  D.46710 = c->sreg2;
  c->sreg1 = D.46710;
  D.46711 = cfg->ip;
  c->cil_code = D.46711;
  tls_key.435 = (void *) tls_key;
  c->data.op[0].p = tls_key.435;
  c->data.op[1].src = 48B;
  c->type = 3;
  D.46713 = alloc_dreg (cfg, 3);
  D.46714 = (int) D.46713;
  c->dreg = D.46714;
  goto <D.46715>;
  <D.46701>:
  {
    int _offset;

    tls_key.436 = (<unnamed type>) tls_key;
    _offset = mini_get_tls_offset (tls_key.436);
    D.46702 = cfg->mempool;
    c = mono_mempool_alloc (D.46702, 56);
    c->data.op[1].const_val = 0;
    D.46703 = c->data.op[1].const_val;
    c->data.op[0].const_val = D.46703;
    c->prev = 0B;
    D.46704 = c->prev;
    c->next = D.46704;
    c->opcode = 362;
    c->flags = 0;
    c->type = 0;
    c->dreg = -1;
    c->sreg3 = -1;
    D.46709 = c->sreg3;
    c->sreg2 = D.46709;
    D.46710 = c->sreg2;
    c->sreg1 = D.46710;
    D.46711 = cfg->ip;
    c->cil_code = D.46711;
    _offset.437 = (void *) _offset;
    c->data.op[0].p = _offset.437;
    c->type = 3;
    D.46718 = alloc_dreg (cfg, 3);
    D.46719 = (int) D.46718;
    c->dreg = D.46719;
  }
  <D.46715>:
  D.46720 = cfg->cbb;
  D.46721 = D.46720->last_ins;
  if (D.46721 != 0B) goto <D.46722>; else goto <D.46723>;
  <D.46722>:
  D.46720 = cfg->cbb;
  D.46721 = D.46720->last_ins;
  D.46721->next = c;
  D.46720 = cfg->cbb;
  D.46721 = D.46720->last_ins;
  c->prev = D.46721;
  D.46720 = cfg->cbb;
  D.46720->last_ins = c;
  goto <D.46724>;
  <D.46723>:
  D.46720 = cfg->cbb;
  D.46720 = cfg->cbb;
  D.46720->last_ins = c;
  D.46721 = D.46720->last_ins;
  D.46720->code = D.46721;
  <D.46724>:
  D.46702 = cfg->mempool;
  ins = mono_mempool_alloc (D.46702, 56);
  ins->data.op[1].const_val = 0;
  D.46725 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.46725;
  ins->prev = 0B;
  D.46726 = ins->prev;
  ins->next = D.46726;
  ins->opcode = 794;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.46727 = ins->sreg3;
  ins->sreg2 = D.46727;
  D.46728 = ins->sreg2;
  ins->sreg1 = D.46728;
  D.46711 = cfg->ip;
  ins->cil_code = D.46711;
  ins->sreg1 = sreg1;
  D.46729 = c->dreg;
  ins->sreg2 = D.46729;
  D.46720 = cfg->cbb;
  D.46721 = D.46720->last_ins;
  if (D.46721 != 0B) goto <D.46730>; else goto <D.46731>;
  <D.46730>:
  D.46720 = cfg->cbb;
  D.46721 = D.46720->last_ins;
  D.46721->next = ins;
  D.46720 = cfg->cbb;
  D.46721 = D.46720->last_ins;
  ins->prev = D.46721;
  D.46720 = cfg->cbb;
  D.46720->last_ins = ins;
  goto <D.46732>;
  <D.46731>:
  D.46720 = cfg->cbb;
  D.46720 = cfg->cbb;
  D.46720->last_ins = ins;
  D.46721 = D.46720->last_ins;
  D.46720->code = D.46721;
  <D.46732>:
  goto <D.46733>;
  <D.46699>:
  D.46702 = cfg->mempool;
  ins = mono_mempool_alloc (D.46702, 56);
  ins->data.op[1].const_val = 0;
  D.46725 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.46725;
  ins->prev = 0B;
  D.46726 = ins->prev;
  ins->next = D.46726;
  ins->opcode = 793;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.46727 = ins->sreg3;
  ins->sreg2 = D.46727;
  D.46728 = ins->sreg2;
  ins->sreg1 = D.46728;
  D.46711 = cfg->ip;
  ins->cil_code = D.46711;
  ins->sreg1 = sreg1;
  tls_key.436 = (<unnamed type>) tls_key;
  D.46734 = mini_get_tls_offset (tls_key.436);
  ins->data.op[0].const_val = D.46734;
  D.46720 = cfg->cbb;
  D.46721 = D.46720->last_ins;
  if (D.46721 != 0B) goto <D.46735>; else goto <D.46736>;
  <D.46735>:
  D.46720 = cfg->cbb;
  D.46721 = D.46720->last_ins;
  D.46721->next = ins;
  D.46720 = cfg->cbb;
  D.46721 = D.46720->last_ins;
  ins->prev = D.46721;
  D.46720 = cfg->cbb;
  D.46720->last_ins = ins;
  goto <D.46737>;
  <D.46736>:
  D.46720 = cfg->cbb;
  D.46720 = cfg->cbb;
  D.46720->last_ins = ins;
  D.46721 = D.46720->last_ins;
  D.46720->code = D.46721;
  <D.46737>:
  <D.46733>:
}


ldind_to_load_membase (int opcode)
{
  int D.46738;

  switch (opcode) <default: <D.30813>, case 70: <D.30802>, case 71: <D.30803>, case 72: <D.30804>, case 73: <D.30805>, case 74: <D.30806>, case 75: <D.30807>, case 76: <D.30810>, case 77: <D.30808>, case 78: <D.30811>, case 79: <D.30812>, case 80: <D.30809>>
  <D.30802>:
  D.46738 = 389;
  return D.46738;
  <D.30803>:
  D.46738 = 390;
  return D.46738;
  <D.30804>:
  D.46738 = 391;
  return D.46738;
  <D.30805>:
  D.46738 = 392;
  return D.46738;
  <D.30806>:
  D.46738 = 393;
  return D.46738;
  <D.30807>:
  D.46738 = 394;
  return D.46738;
  <D.30808>:
  D.46738 = 388;
  return D.46738;
  <D.30809>:
  D.46738 = 388;
  return D.46738;
  <D.30810>:
  D.46738 = 395;
  return D.46738;
  <D.30811>:
  D.46738 = 396;
  return D.46738;
  <D.30812>:
  D.46738 = 397;
  return D.46738;
  <D.30813>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12163);
  D.46738 = -1;
  return D.46738;
}


stind_to_store_membase (int opcode)
{
  int D.46740;

  switch (opcode) <default: <D.30825>, case 81: <D.30821>, case 82: <D.30817>, case 83: <D.30818>, case 84: <D.30819>, case 85: <D.30822>, case 86: <D.30823>, case 87: <D.30824>, case 223: <D.30820>>
  <D.30817>:
  D.46740 = 375;
  return D.46740;
  <D.30818>:
  D.46740 = 376;
  return D.46740;
  <D.30819>:
  D.46740 = 377;
  return D.46740;
  <D.30820>:
  <D.30821>:
  D.46740 = 374;
  return D.46740;
  <D.30822>:
  D.46740 = 378;
  return D.46740;
  <D.30823>:
  D.46740 = 379;
  return D.46740;
  <D.30824>:
  D.46740 = 380;
  return D.46740;
  <D.30825>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12189);
  D.46740 = -1;
  return D.46740;
}


is_exception_class (struct MonoClass * class)
{
  struct MonoClass * D.46742;
  gboolean D.46745;

  goto <D.29690>;
  <D.29689>:
  D.46742 = mono_defaults.exception_class;
  if (D.46742 == class) goto <D.46743>; else goto <D.46744>;
  <D.46743>:
  D.46745 = 1;
  return D.46745;
  <D.46744>:
  class = class->parent;
  <D.29690>:
  if (class != 0B) goto <D.29689>; else goto <D.29691>;
  <D.29691>:
  D.46745 = 0;
  return D.46745;
}


check_call_signature (struct MonoCompile * cfg, struct MonoMethodSignature * sig, struct MonoInst * * args)
{
  unsigned char D.46747;
  unsigned char D.46748;
  struct MonoInst * D.46751;
  unsigned char D.46752;
  unsigned char D.46753;
  _Bool D.46754;
  _Bool D.46755;
  _Bool D.46756;
  int D.46759;
  struct MonoType * D.46760;
  unsigned char D.46761;
  unsigned char D.46762;
  unsigned int i.438;
  unsigned int D.46766;
  struct MonoInst * * D.46767;
  struct MonoInst * D.46768;
  unsigned char D.46769;
  _Bool D.46770;
  _Bool D.46771;
  _Bool D.46772;
  struct MonoGenericSharingContext * D.46775;
  unsigned char D.46776;
  int D.46777;
  unsigned char D.46778;
  _Bool D.46779;
  _Bool D.46780;
  _Bool D.46781;
  unsigned char D.46784;
  _Bool D.46785;
  _Bool D.46786;
  _Bool D.46787;
  unsigned char D.46790;
  struct MonoClass * D.46801;
  unsigned char D.46802;
  unsigned char D.46803;
  struct MonoGenericClass * D.46810;
  struct MonoClass * D.46811;
  short unsigned int D.46814;
  int D.46815;
  struct MonoType * simple_type;
  int i;
  void handle_enum = <<< error >>>;

  D.46747 = BIT_FIELD_REF <*sig, 8, 80>;
  D.46748 = D.46747 & 64;
  if (D.46748 != 0) goto <D.46749>; else goto <D.46750>;
  <D.46749>:
  D.46751 = *args;
  D.46752 = D.46751->type;
  D.46753 = D.46752 + 251;
  D.46754 = D.46753 > 1;
  D.46755 = D.46752 != 3;
  D.46756 = D.46754 & D.46755;
  if (D.46756 != 0) goto <D.46757>; else goto <D.46758>;
  <D.46757>:
  D.46759 = 1;
  return D.46759;
  <D.46758>:
  args = args + 4;
  <D.46750>:
  i = 0;
  goto <D.27944>;
  <D.27943>:
  D.46760 = sig->params[i];
  D.46761 = BIT_FIELD_REF <*D.46760, 8, 56>;
  D.46762 = D.46761 & 64;
  if (D.46762 != 0) goto <D.46763>; else goto <D.46764>;
  <D.46763>:
  i.438 = (unsigned int) i;
  D.46766 = i.438 * 4;
  D.46767 = args + D.46766;
  D.46768 = *D.46767;
  D.46769 = D.46768->type;
  D.46770 = D.46769 != 5;
  D.46771 = D.46769 != 3;
  D.46772 = D.46770 & D.46771;
  if (D.46772 != 0) goto <D.46773>; else goto <D.46774>;
  <D.46773>:
  D.46759 = 1;
  return D.46759;
  <D.46774>:
  // predicted unlikely by continue predictor.
  goto <D.27912>;
  <D.46764>:
  simple_type = sig->params[i];
  D.46775 = cfg->generic_sharing_context;
  simple_type = mini_get_basic_type_from_generic (D.46775, simple_type);
  handle_enum:
  D.46776 = simple_type->type;
  D.46777 = (int) D.46776;
  switch (D.46777) <default: <D.27941>, case 1: <D.27914>, case 2: <D.27917>, case 3: <D.27920>, case 4: <D.27915>, case 5: <D.27916>, case 6: <D.27918>, case 7: <D.27919>, case 8: <D.27921>, case 9: <D.27922>, case 10: <D.27932>, case 11: <D.27933>, case 12: <D.27934>, case 13: <D.27935>, case 14: <D.27928>, case 15: <D.27925>, case 17: <D.27936>, case 18: <D.27927>, case 19: <D.27939>, case 20: <D.27931>, case 21: <D.27938>, case 22: <D.27937>, case 24: <D.27923>, case 25: <D.27924>, case 27: <D.27926>, case 28: <D.27929>, case 29: <D.27930>, case 30: <D.27940>>
  <D.27914>:
  D.46759 = 1;
  return D.46759;
  <D.27915>:
  <D.27916>:
  <D.27917>:
  <D.27918>:
  <D.27919>:
  <D.27920>:
  <D.27921>:
  <D.27922>:
  i.438 = (unsigned int) i;
  D.46766 = i.438 * 4;
  D.46767 = args + D.46766;
  D.46768 = *D.46767;
  D.46778 = D.46768->type;
  D.46779 = D.46778 != 1;
  D.46780 = D.46778 != 3;
  D.46781 = D.46779 & D.46780;
  if (D.46781 != 0) goto <D.46782>; else goto <D.46783>;
  <D.46782>:
  D.46759 = 1;
  return D.46759;
  <D.46783>:
  // predicted unlikely by continue predictor.
  goto <D.27912>;
  <D.27923>:
  <D.27924>:
  <D.27925>:
  <D.27926>:
  i.438 = (unsigned int) i;
  D.46766 = i.438 * 4;
  D.46767 = args + D.46766;
  D.46768 = *D.46767;
  D.46784 = D.46768->type;
  D.46785 = D.46784 != 1;
  D.46786 = D.46784 != 3;
  D.46787 = D.46785 & D.46786;
  if (D.46787 != 0) goto <D.46788>; else goto <D.46789>;
  <D.46788>:
  i.438 = (unsigned int) i;
  D.46766 = i.438 * 4;
  D.46767 = args + D.46766;
  D.46768 = *D.46767;
  D.46790 = D.46768->type;
  if (D.46790 != 5) goto <D.46791>; else goto <D.46792>;
  <D.46791>:
  i.438 = (unsigned int) i;
  D.46766 = i.438 * 4;
  D.46767 = args + D.46766;
  D.46768 = *D.46767;
  D.46790 = D.46768->type;
  if (D.46790 != 6) goto <D.46793>; else goto <D.46794>;
  <D.46793>:
  D.46759 = 1;
  return D.46759;
  <D.46794>:
  <D.46792>:
  <D.46789>:
  // predicted unlikely by continue predictor.
  goto <D.27912>;
  <D.27927>:
  <D.27928>:
  <D.27929>:
  <D.27930>:
  <D.27931>:
  i.438 = (unsigned int) i;
  D.46766 = i.438 * 4;
  D.46767 = args + D.46766;
  D.46768 = *D.46767;
  D.46790 = D.46768->type;
  if (D.46790 != 6) goto <D.46795>; else goto <D.46796>;
  <D.46795>:
  D.46759 = 1;
  return D.46759;
  <D.46796>:
  // predicted unlikely by continue predictor.
  goto <D.27912>;
  <D.27932>:
  <D.27933>:
  i.438 = (unsigned int) i;
  D.46766 = i.438 * 4;
  D.46767 = args + D.46766;
  D.46768 = *D.46767;
  D.46790 = D.46768->type;
  if (D.46790 != 2) goto <D.46797>; else goto <D.46798>;
  <D.46797>:
  D.46759 = 1;
  return D.46759;
  <D.46798>:
  // predicted unlikely by continue predictor.
  goto <D.27912>;
  <D.27934>:
  <D.27935>:
  i.438 = (unsigned int) i;
  D.46766 = i.438 * 4;
  D.46767 = args + D.46766;
  D.46768 = *D.46767;
  D.46790 = D.46768->type;
  if (D.46790 != 4) goto <D.46799>; else goto <D.46800>;
  <D.46799>:
  D.46759 = 1;
  return D.46759;
  <D.46800>:
  // predicted unlikely by continue predictor.
  goto <D.27912>;
  <D.27936>:
  D.46801 = simple_type->data.klass;
  D.46802 = BIT_FIELD_REF <*D.46801, 8, 160>;
  D.46803 = D.46802 & 16;
  if (D.46803 != 0) goto <D.46804>; else goto <D.46805>;
  <D.46804>:
  D.46801 = simple_type->data.klass;
  simple_type = mono_class_enum_basetype (D.46801);
  goto handle_enum;
  <D.46805>:
  i.438 = (unsigned int) i;
  D.46766 = i.438 * 4;
  D.46767 = args + D.46766;
  D.46768 = *D.46767;
  D.46790 = D.46768->type;
  if (D.46790 != 7) goto <D.46806>; else goto <D.46807>;
  <D.46806>:
  D.46759 = 1;
  return D.46759;
  <D.46807>:
  // predicted unlikely by continue predictor.
  goto <D.27912>;
  <D.27937>:
  i.438 = (unsigned int) i;
  D.46766 = i.438 * 4;
  D.46767 = args + D.46766;
  D.46768 = *D.46767;
  D.46790 = D.46768->type;
  if (D.46790 != 7) goto <D.46808>; else goto <D.46809>;
  <D.46808>:
  D.46759 = 1;
  return D.46759;
  <D.46809>:
  // predicted unlikely by continue predictor.
  goto <D.27912>;
  <D.27938>:
  D.46810 = simple_type->data.generic_class;
  D.46811 = D.46810->container_class;
  simple_type = &D.46811->byval_arg;
  goto handle_enum;
  <D.27939>:
  <D.27940>:
  i.438 = (unsigned int) i;
  D.46766 = i.438 * 4;
  D.46767 = args + D.46766;
  D.46768 = *D.46767;
  D.46790 = D.46768->type;
  if (D.46790 != 7) goto <D.46812>; else goto <D.46813>;
  <D.46812>:
  D.46759 = 1;
  return D.46759;
  <D.46813>:
  // predicted unlikely by continue predictor.
  goto <D.27912>;
  <D.27941>:
  D.46776 = simple_type->type;
  D.46777 = (int) D.46776;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in check_call_signature", D.46777);
  <D.27942>:
  goto <D.27942>;
  <D.27912>:
  i = i + 1;
  <D.27944>:
  D.46814 = sig->param_count;
  D.46815 = (int) D.46814;
  if (D.46815 > i) goto <D.27943>; else goto <D.27945>;
  <D.27945>:
  D.46759 = 0;
  return D.46759;
}


handle_array_new (struct MonoCompile * cfg, int rank, struct MonoInst * * sp, unsigned char * ip)
{
  unsigned int D.46817;
  unsigned int D.46818;
  struct MonoInst * D.46819;
  const void * D.46820;
  struct MonoMethodSignature * D.46821;
  struct MonoJitICallInfo * info;

  info = mono_get_array_new_va_icall (rank);
  D.46817 = cfg->flags;
  D.46818 = D.46817 | 8;
  cfg->flags = D.46818;
  cfg->disable_llvm = 1;
  D.46820 = mono_icall_get_wrapper (info);
  D.46821 = info->sig;
  D.46819 = mono_emit_native_call (cfg, D.46820, D.46821, sp);
  return D.46819;
}


emit_init_rvar (struct MonoCompile * cfg, int dreg, struct MonoType * rtype)
{
  unsigned char D.46823;
  unsigned char D.46824;
  unsigned char D.46825;
  struct MonoMemPool * D.46828;
  int D.46829;
  struct MonoInst * D.46830;
  int D.46831;
  int D.46832;
  const unsigned char * D.46833;
  struct MonoBasicBlock * D.46834;
  struct MonoInst * D.46835;
  unsigned int t.439;
  unsigned int D.46841;
  int D.46844;
  struct MonoInst * D.46845;
  int D.46846;
  int D.46847;
  unsigned int D.46852;
  int D.46855;
  struct MonoInst * D.46856;
  int D.46857;
  int D.46858;
  unsigned int D.46863;
  int D.46866;
  struct MonoInst * D.46867;
  int D.46868;
  int D.46869;
  _Bool D.46877;
  _Bool D.46878;
  _Bool D.46879;
  int D.46882;
  int D.46883;
  struct MonoInst * D.46884;
  int D.46885;
  int D.46886;
  struct MonoClass * D.46887;
  _Bool D.46893;
  _Bool D.46894;
  _Bool D.46895;
  int D.46897;
  int D.46899;
  struct MonoInst * D.46900;
  int D.46901;
  int D.46902;
  struct MonoClass * D.46903;
  int D.46907;
  struct MonoInst * D.46908;
  int D.46909;
  int D.46910;
  static double r8_0 = 0.0;
  struct MonoInst * ins;
  int t;

  rtype = mini_replace_type (rtype);
  D.46823 = rtype->type;
  t = (int) D.46823;
  D.46824 = BIT_FIELD_REF <*rtype, 8, 56>;
  D.46825 = D.46824 & 64;
  if (D.46825 != 0) goto <D.46826>; else goto <D.46827>;
  <D.46826>:
  {
    struct MonoInst * inst;

    D.46828 = cfg->mempool;
    inst = mono_mempool_alloc (D.46828, 56);
    inst->data.op[1].const_val = 0;
    D.46829 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46829;
    inst->prev = 0B;
    D.46830 = inst->prev;
    inst->next = D.46830;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46831 = inst->sreg3;
    inst->sreg2 = D.46831;
    D.46832 = inst->sreg2;
    inst->sreg1 = D.46832;
    D.46833 = cfg->ip;
    inst->cil_code = D.46833;
    inst->dreg = dreg;
    inst->data.op[0].p = 0B;
    inst->type = 3;
    D.46834 = cfg->cbb;
    D.46835 = D.46834->last_ins;
    if (D.46835 != 0B) goto <D.46836>; else goto <D.46837>;
    <D.46836>:
    D.46834 = cfg->cbb;
    D.46835 = D.46834->last_ins;
    D.46835->next = inst;
    D.46834 = cfg->cbb;
    D.46835 = D.46834->last_ins;
    inst->prev = D.46835;
    D.46834 = cfg->cbb;
    D.46834->last_ins = inst;
    goto <D.46838>;
    <D.46837>:
    D.46834 = cfg->cbb;
    D.46834 = cfg->cbb;
    D.46834->last_ins = inst;
    D.46835 = D.46834->last_ins;
    D.46834->code = D.46835;
    <D.46838>:
  }
  goto <D.46839>;
  <D.46827>:
  t.439 = (unsigned int) t;
  D.46841 = t.439 + 4294967294;
  if (D.46841 <= 7) goto <D.46842>; else goto <D.46843>;
  <D.46842>:
  {
    struct MonoInst * inst;

    D.46828 = cfg->mempool;
    inst = mono_mempool_alloc (D.46828, 56);
    inst->data.op[1].const_val = 0;
    D.46844 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46844;
    inst->prev = 0B;
    D.46845 = inst->prev;
    inst->next = D.46845;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46846 = inst->sreg3;
    inst->sreg2 = D.46846;
    D.46847 = inst->sreg2;
    inst->sreg1 = D.46847;
    D.46833 = cfg->ip;
    inst->cil_code = D.46833;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 0;
    D.46834 = cfg->cbb;
    D.46835 = D.46834->last_ins;
    if (D.46835 != 0B) goto <D.46848>; else goto <D.46849>;
    <D.46848>:
    D.46834 = cfg->cbb;
    D.46835 = D.46834->last_ins;
    D.46835->next = inst;
    D.46834 = cfg->cbb;
    D.46835 = D.46834->last_ins;
    inst->prev = D.46835;
    D.46834 = cfg->cbb;
    D.46834->last_ins = inst;
    goto <D.46850>;
    <D.46849>:
    D.46834 = cfg->cbb;
    D.46834 = cfg->cbb;
    D.46834->last_ins = inst;
    D.46835 = D.46834->last_ins;
    D.46834->code = D.46835;
    <D.46850>:
  }
  goto <D.46851>;
  <D.46843>:
  t.439 = (unsigned int) t;
  D.46852 = t.439 + 4294967286;
  if (D.46852 <= 1) goto <D.46853>; else goto <D.46854>;
  <D.46853>:
  {
    struct MonoInst * inst;

    D.46828 = cfg->mempool;
    inst = mono_mempool_alloc (D.46828, 56);
    inst->data.op[1].const_val = 0;
    D.46855 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46855;
    inst->prev = 0B;
    D.46856 = inst->prev;
    inst->next = D.46856;
    inst->opcode = 363;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46857 = inst->sreg3;
    inst->sreg2 = D.46857;
    D.46858 = inst->sreg2;
    inst->sreg1 = D.46858;
    D.46833 = cfg->ip;
    inst->cil_code = D.46833;
    inst->dreg = dreg;
    inst->data.i8const = 0;
    D.46834 = cfg->cbb;
    D.46835 = D.46834->last_ins;
    if (D.46835 != 0B) goto <D.46859>; else goto <D.46860>;
    <D.46859>:
    D.46834 = cfg->cbb;
    D.46835 = D.46834->last_ins;
    D.46835->next = inst;
    D.46834 = cfg->cbb;
    D.46835 = D.46834->last_ins;
    inst->prev = D.46835;
    D.46834 = cfg->cbb;
    D.46834->last_ins = inst;
    goto <D.46861>;
    <D.46860>:
    D.46834 = cfg->cbb;
    D.46834 = cfg->cbb;
    D.46834->last_ins = inst;
    D.46835 = D.46834->last_ins;
    D.46834->code = D.46835;
    <D.46861>:
  }
  goto <D.46862>;
  <D.46854>:
  t.439 = (unsigned int) t;
  D.46863 = t.439 + 4294967284;
  if (D.46863 <= 1) goto <D.46864>; else goto <D.46865>;
  <D.46864>:
  D.46828 = cfg->mempool;
  ins = mono_mempool_alloc (D.46828, 56);
  ins->data.op[1].const_val = 0;
  D.46866 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.46866;
  ins->prev = 0B;
  D.46867 = ins->prev;
  ins->next = D.46867;
  ins->opcode = 365;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.46868 = ins->sreg3;
  ins->sreg2 = D.46868;
  D.46869 = ins->sreg2;
  ins->sreg1 = D.46869;
  D.46833 = cfg->ip;
  ins->cil_code = D.46833;
  ins->type = 4;
  ins->data.op[0].p = &r8_0;
  ins->dreg = dreg;
  D.46834 = cfg->cbb;
  D.46835 = D.46834->last_ins;
  if (D.46835 != 0B) goto <D.46870>; else goto <D.46871>;
  <D.46870>:
  D.46834 = cfg->cbb;
  D.46835 = D.46834->last_ins;
  D.46835->next = ins;
  D.46834 = cfg->cbb;
  D.46835 = D.46834->last_ins;
  ins->prev = D.46835;
  D.46834 = cfg->cbb;
  D.46834->last_ins = ins;
  goto <D.46872>;
  <D.46871>:
  D.46834 = cfg->cbb;
  D.46834 = cfg->cbb;
  D.46834->last_ins = ins;
  D.46835 = D.46834->last_ins;
  D.46834->code = D.46835;
  <D.46872>:
  goto <D.46873>;
  <D.46865>:
  D.46877 = t == 17;
  D.46878 = t == 22;
  D.46879 = D.46877 | D.46878;
  if (D.46879 != 0) goto <D.46874>; else goto <D.46880>;
  <D.46880>:
  if (t == 21) goto <D.46881>; else goto <D.46875>;
  <D.46881>:
  D.46882 = mono_type_generic_inst_is_valuetype (rtype);
  if (D.46882 != 0) goto <D.46874>; else goto <D.46875>;
  <D.46874>:
  {
    struct MonoInst * inst;

    D.46828 = cfg->mempool;
    inst = mono_mempool_alloc (D.46828, 56);
    inst->data.op[1].const_val = 0;
    D.46883 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46883;
    inst->prev = 0B;
    D.46884 = inst->prev;
    inst->next = D.46884;
    inst->opcode = 428;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46885 = inst->sreg3;
    inst->sreg2 = D.46885;
    D.46886 = inst->sreg2;
    inst->sreg1 = D.46886;
    D.46833 = cfg->ip;
    inst->cil_code = D.46833;
    inst->dreg = dreg;
    inst->type = 7;
    D.46887 = mono_class_from_mono_type (rtype);
    inst->klass = D.46887;
    D.46834 = cfg->cbb;
    D.46835 = D.46834->last_ins;
    if (D.46835 != 0B) goto <D.46888>; else goto <D.46889>;
    <D.46888>:
    D.46834 = cfg->cbb;
    D.46835 = D.46834->last_ins;
    D.46835->next = inst;
    D.46834 = cfg->cbb;
    D.46835 = D.46834->last_ins;
    inst->prev = D.46835;
    D.46834 = cfg->cbb;
    D.46834->last_ins = inst;
    goto <D.46890>;
    <D.46889>:
    D.46834 = cfg->cbb;
    D.46834 = cfg->cbb;
    D.46834->last_ins = inst;
    D.46835 = D.46834->last_ins;
    D.46834->code = D.46835;
    <D.46890>:
  }
  goto <D.46876>;
  <D.46875>:
  D.46893 = t == 19;
  D.46894 = t == 30;
  D.46895 = D.46893 | D.46894;
  if (D.46895 != 0) goto <D.46896>; else goto <D.46891>;
  <D.46896>:
  D.46897 = mini_type_var_is_vt (cfg, rtype);
  if (D.46897 != 0) goto <D.46898>; else goto <D.46891>;
  <D.46898>:
  {
    struct MonoInst * inst;

    D.46828 = cfg->mempool;
    inst = mono_mempool_alloc (D.46828, 56);
    inst->data.op[1].const_val = 0;
    D.46899 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46899;
    inst->prev = 0B;
    D.46900 = inst->prev;
    inst->next = D.46900;
    inst->opcode = 428;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46901 = inst->sreg3;
    inst->sreg2 = D.46901;
    D.46902 = inst->sreg2;
    inst->sreg1 = D.46902;
    D.46833 = cfg->ip;
    inst->cil_code = D.46833;
    inst->dreg = dreg;
    inst->type = 7;
    D.46903 = mono_class_from_mono_type (rtype);
    inst->klass = D.46903;
    D.46834 = cfg->cbb;
    D.46835 = D.46834->last_ins;
    if (D.46835 != 0B) goto <D.46904>; else goto <D.46905>;
    <D.46904>:
    D.46834 = cfg->cbb;
    D.46835 = D.46834->last_ins;
    D.46835->next = inst;
    D.46834 = cfg->cbb;
    D.46835 = D.46834->last_ins;
    inst->prev = D.46835;
    D.46834 = cfg->cbb;
    D.46834->last_ins = inst;
    goto <D.46906>;
    <D.46905>:
    D.46834 = cfg->cbb;
    D.46834 = cfg->cbb;
    D.46834->last_ins = inst;
    D.46835 = D.46834->last_ins;
    D.46834->code = D.46835;
    <D.46906>:
  }
  goto <D.46892>;
  <D.46891>:
  {
    struct MonoInst * inst;

    D.46828 = cfg->mempool;
    inst = mono_mempool_alloc (D.46828, 56);
    inst->data.op[1].const_val = 0;
    D.46907 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46907;
    inst->prev = 0B;
    D.46908 = inst->prev;
    inst->next = D.46908;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46909 = inst->sreg3;
    inst->sreg2 = D.46909;
    D.46910 = inst->sreg2;
    inst->sreg1 = D.46910;
    D.46833 = cfg->ip;
    inst->cil_code = D.46833;
    inst->dreg = dreg;
    inst->data.op[0].p = 0B;
    inst->type = 3;
    D.46834 = cfg->cbb;
    D.46835 = D.46834->last_ins;
    if (D.46835 != 0B) goto <D.46911>; else goto <D.46912>;
    <D.46911>:
    D.46834 = cfg->cbb;
    D.46835 = D.46834->last_ins;
    D.46835->next = inst;
    D.46834 = cfg->cbb;
    D.46835 = D.46834->last_ins;
    inst->prev = D.46835;
    D.46834 = cfg->cbb;
    D.46834->last_ins = inst;
    goto <D.46913>;
    <D.46912>:
    D.46834 = cfg->cbb;
    D.46834 = cfg->cbb;
    D.46834->last_ins = inst;
    D.46835 = D.46834->last_ins;
    D.46834->code = D.46835;
    <D.46913>:
  }
  <D.46892>:
  <D.46876>:
  <D.46873>:
  <D.46862>:
  <D.46851>:
  <D.46839>:
}


handle_alloc (struct MonoCompile * cfg, struct MonoClass * klass, gboolean for_box, int context_used)
{
  unsigned int D.46916;
  unsigned int D.46917;
  <unnamed type> rgctx_info.440;
  unsigned char D.46928;
  unsigned char D.46929;
  struct MonoMemPool * D.46930;
  void * D.46931;
  struct MonoInst * D.46932;
  int D.46933;
  struct MonoInst * D.46934;
  int D.46935;
  int D.46936;
  const unsigned char * D.46937;
  struct MonoInst * * D.46938;
  int D.46939;
  unsigned int D.46940;
  unsigned int D.46941;
  struct MonoInst * * D.46942;
  struct MonoInst * D.46943;
  struct MonoType * D.46944;
  unsigned int D.46945;
  short unsigned int D.46946;
  struct MonoClass * D.46947;
  int D.46948;
  unsigned char D.46949;
  <unnamed type> D.46950;
  unsigned int D.46951;
  int D.46952;
  short unsigned int D.46953;
  struct MonoClass * D.46956;
  void * D.46957;
  struct MonoDomain * D.46958;
  unsigned int D.46959;
  int D.46960;
  struct MonoBasicBlock * D.46961;
  struct MonoInst * D.46962;
  struct MonoInst * D.46971;
  void * D.46978;
  struct MonoInst * D.46979;
  int D.46980;
  struct MonoInst * D.46981;
  int D.46982;
  int D.46983;
  int D.46984;
  unsigned int D.46985;
  unsigned int D.46986;
  struct MonoInst * * D.46987;
  struct MonoInst * D.46988;
  struct MonoType * D.46989;
  unsigned int D.46990;
  short unsigned int D.46991;
  struct MonoClass * D.46992;
  int D.46993;
  unsigned char D.46994;
  <unnamed type> D.46995;
  unsigned int D.46996;
  int D.46997;
  short unsigned int D.46998;
  struct MonoClass * D.47001;
  void * D.47002;
  unsigned int D.47003;
  int D.47004;
  void * D.47008;
  struct MonoInst * D.47009;
  int D.47010;
  struct MonoInst * D.47011;
  guint16 iftmp.441;
  int D.47016;
  int D.47017;
  unsigned int D.47018;
  int D.47019;
  unsigned char D.47026;
  unsigned char D.47027;
  unsigned int D.47029;
  struct MonoImage * D.47031;
  struct MonoImage * D.47032;
  struct MonoGenericClass * D.47034;
  void * D.47036;
  int D.47037;
  int D.47038;
  unsigned int D.47039;
  int D.47040;
  void * D.47048;
  guint16 iftmp.442;
  void * iftmp.443;
  unsigned int D.47057;
  int D.47058;
  int pass_lw.444;
  struct MonoClass * D.47065;
  int D.47066;
  unsigned int D.47067;
  unsigned int D.47068;
  void * D.47069;
  int lw.445;
  unsigned int D.47071;
  int D.47072;
  void * D.47076;
  guint16 iftmp.446;
  void * iftmp.447;
  unsigned int D.47085;
  int D.47086;
  void * D.47091;
  guint16 iftmp.448;
  void * iftmp.449;
  unsigned int D.47100;
  int D.47101;
  struct MonoInst * iargs[2];
  void * alloc_ftn;

  try
    {
      if (context_used != 0) goto <D.46914>; else goto <D.46915>;
      <D.46914>:
      {
        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.46916 = cfg->opt;
            D.46917 = D.46916 & 512;
            if (D.46917 != 0) goto <D.46918>; else goto <D.46919>;
            <D.46918>:
            rgctx_info = 1;
            goto <D.46920>;
            <D.46919>:
            rgctx_info = 2;
            <D.46920>:
            rgctx_info.440 = (<unnamed type>) rgctx_info;
            data = emit_get_rgctx_klass (cfg, context_used, klass, rgctx_info.440);
            D.46916 = cfg->opt;
            D.46917 = D.46916 & 512;
            if (D.46917 != 0) goto <D.46922>; else goto <D.46923>;
            <D.46922>:
            D.46916 = cfg->opt;
            D.46917 = D.46916 & 512;
            if (D.46917 != 0) goto <D.46924>; else goto <D.46927>;
            <D.46927>:
            D.46928 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.46929 = D.46928 & 64;
            if (D.46929 != 0) goto <D.46924>; else goto <D.46925>;
            <D.46924>:
            {
              struct MonoInst * __domain_var;

              __domain_var = mono_get_domainvar (cfg);
              D.46930 = cfg->mempool;
              D.46931 = mono_mempool_alloc (D.46930, 56);
              iargs[0] = D.46931;
              D.46932 = iargs[0];
              D.46932 = iargs[0];
              D.46932->data.op[1].const_val = 0;
              D.46933 = D.46932->data.op[1].const_val;
              D.46932->data.op[0].const_val = D.46933;
              D.46932 = iargs[0];
              D.46932 = iargs[0];
              D.46932->prev = 0B;
              D.46934 = D.46932->prev;
              D.46932->next = D.46934;
              D.46932 = iargs[0];
              D.46932->opcode = 424;
              D.46932 = iargs[0];
              D.46932->flags = 0;
              D.46932 = iargs[0];
              D.46932->type = 0;
              D.46932 = iargs[0];
              D.46932->dreg = -1;
              D.46932 = iargs[0];
              D.46932 = iargs[0];
              D.46932 = iargs[0];
              D.46932->sreg3 = -1;
              D.46935 = D.46932->sreg3;
              D.46932->sreg2 = D.46935;
              D.46936 = D.46932->sreg2;
              D.46932->sreg1 = D.46936;
              D.46932 = iargs[0];
              D.46937 = cfg->ip;
              D.46932->cil_code = D.46937;
              D.46932 = iargs[0];
              D.46938 = cfg->varinfo;
              D.46939 = __domain_var->data.op[0].const_val;
              D.46940 = (unsigned int) D.46939;
              D.46941 = D.46940 * 4;
              D.46942 = D.46938 + D.46941;
              D.46943 = *D.46942;
              D.46944 = D.46943->data.op[1].vtype;
              D.46945 = mono_type_to_regmove (cfg, D.46944);
              D.46946 = (short unsigned int) D.46945;
              D.46932->opcode = D.46946;
              D.46938 = cfg->varinfo;
              D.46939 = __domain_var->data.op[0].const_val;
              D.46940 = (unsigned int) D.46939;
              D.46941 = D.46940 * 4;
              D.46942 = D.46938 + D.46941;
              D.46943 = *D.46942;
              D.46944 = D.46943->data.op[1].vtype;
              D.46932 = iargs[0];
              type_to_eval_stack_type (cfg, D.46944, D.46932);
              D.46932 = iargs[0];
              D.46938 = cfg->varinfo;
              D.46939 = __domain_var->data.op[0].const_val;
              D.46940 = (unsigned int) D.46939;
              D.46941 = D.46940 * 4;
              D.46942 = D.46938 + D.46941;
              D.46943 = *D.46942;
              D.46947 = D.46943->klass;
              D.46932->klass = D.46947;
              D.46932 = iargs[0];
              D.46938 = cfg->varinfo;
              D.46939 = __domain_var->data.op[0].const_val;
              D.46940 = (unsigned int) D.46939;
              D.46941 = D.46940 * 4;
              D.46942 = D.46938 + D.46941;
              D.46943 = *D.46942;
              D.46948 = D.46943->dreg;
              D.46932->sreg1 = D.46948;
              D.46932 = iargs[0];
              D.46932 = iargs[0];
              D.46949 = D.46932->type;
              D.46950 = (<unnamed type>) D.46949;
              D.46951 = alloc_dreg (cfg, D.46950);
              D.46952 = (int) D.46951;
              D.46932->dreg = D.46952;
              D.46932 = iargs[0];
              D.46953 = D.46932->opcode;
              if (D.46953 == 427) goto <D.46954>; else goto <D.46955>;
              <D.46954>:
              D.46932 = iargs[0];
              D.46938 = cfg->varinfo;
              D.46939 = __domain_var->data.op[0].const_val;
              D.46940 = (unsigned int) D.46939;
              D.46941 = D.46940 * 4;
              D.46942 = D.46938 + D.46941;
              D.46943 = *D.46942;
              D.46944 = D.46943->data.op[1].vtype;
              D.46956 = mono_class_from_mono_type (D.46944);
              D.46932->klass = D.46956;
              <D.46955>:
            }
            goto <D.46926>;
            <D.46925>:
            D.46930 = cfg->mempool;
            D.46957 = mono_mempool_alloc (D.46930, 56);
            iargs[0] = D.46957;
            D.46932 = iargs[0];
            D.46932 = iargs[0];
            D.46932->data.op[1].const_val = 0;
            D.46933 = D.46932->data.op[1].const_val;
            D.46932->data.op[0].const_val = D.46933;
            D.46932 = iargs[0];
            D.46932 = iargs[0];
            D.46932->prev = 0B;
            D.46934 = D.46932->prev;
            D.46932->next = D.46934;
            D.46932 = iargs[0];
            D.46932->opcode = 362;
            D.46932 = iargs[0];
            D.46932->flags = 0;
            D.46932 = iargs[0];
            D.46932->type = 0;
            D.46932 = iargs[0];
            D.46932->dreg = -1;
            D.46932 = iargs[0];
            D.46932 = iargs[0];
            D.46932 = iargs[0];
            D.46932->sreg3 = -1;
            D.46935 = D.46932->sreg3;
            D.46932->sreg2 = D.46935;
            D.46936 = D.46932->sreg2;
            D.46932->sreg1 = D.46936;
            D.46932 = iargs[0];
            D.46937 = cfg->ip;
            D.46932->cil_code = D.46937;
            D.46932 = iargs[0];
            D.46958 = cfg->domain;
            D.46932->data.op[0].p = D.46958;
            D.46932 = iargs[0];
            D.46932->type = 3;
            D.46932 = iargs[0];
            D.46959 = alloc_dreg (cfg, 3);
            D.46960 = (int) D.46959;
            D.46932->dreg = D.46960;
            <D.46926>:
            D.46961 = cfg->cbb;
            D.46962 = D.46961->last_ins;
            if (D.46962 != 0B) goto <D.46963>; else goto <D.46964>;
            <D.46963>:
            D.46961 = cfg->cbb;
            D.46962 = D.46961->last_ins;
            D.46932 = iargs[0];
            D.46962->next = D.46932;
            D.46932 = iargs[0];
            D.46961 = cfg->cbb;
            D.46962 = D.46961->last_ins;
            D.46932->prev = D.46962;
            D.46961 = cfg->cbb;
            D.46932 = iargs[0];
            D.46961->last_ins = D.46932;
            goto <D.46965>;
            <D.46964>:
            D.46961 = cfg->cbb;
            D.46961 = cfg->cbb;
            D.46932 = iargs[0];
            D.46961->last_ins = D.46932;
            D.46962 = D.46961->last_ins;
            D.46961->code = D.46962;
            <D.46965>:
            iargs[1] = data;
            alloc_ftn = mono_object_new;
            goto <D.46966>;
            <D.46923>:
            iargs[0] = data;
            alloc_ftn = mono_object_new_specific;
            <D.46966>:
            if (managed_alloc != 0B) goto <D.46967>; else goto <D.46968>;
            <D.46967>:
            D.46916 = cfg->opt;
            D.46917 = D.46916 & 512;
            if (D.46917 == 0) goto <D.46969>; else goto <D.46970>;
            <D.46969>:
            D.46971 = mono_emit_method_call (cfg, managed_alloc, &iargs, 0B);
            return D.46971;
            <D.46970>:
            <D.46968>:
            D.46971 = mono_emit_jit_icall (cfg, alloc_ftn, &iargs);
            return D.46971;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      <D.46915>:
      D.46916 = cfg->opt;
      D.46917 = D.46916 & 512;
      if (D.46917 != 0) goto <D.46972>; else goto <D.46973>;
      <D.46972>:
      D.46916 = cfg->opt;
      D.46917 = D.46916 & 512;
      if (D.46917 != 0) goto <D.46974>; else goto <D.46977>;
      <D.46977>:
      D.46928 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.46929 = D.46928 & 64;
      if (D.46929 != 0) goto <D.46974>; else goto <D.46975>;
      <D.46974>:
      {
        struct MonoInst * __domain_var;

        __domain_var = mono_get_domainvar (cfg);
        D.46930 = cfg->mempool;
        D.46978 = mono_mempool_alloc (D.46930, 56);
        iargs[0] = D.46978;
        D.46979 = iargs[0];
        D.46979 = iargs[0];
        D.46979->data.op[1].const_val = 0;
        D.46980 = D.46979->data.op[1].const_val;
        D.46979->data.op[0].const_val = D.46980;
        D.46979 = iargs[0];
        D.46979 = iargs[0];
        D.46979->prev = 0B;
        D.46981 = D.46979->prev;
        D.46979->next = D.46981;
        D.46979 = iargs[0];
        D.46979->opcode = 424;
        D.46979 = iargs[0];
        D.46979->flags = 0;
        D.46979 = iargs[0];
        D.46979->type = 0;
        D.46979 = iargs[0];
        D.46979->dreg = -1;
        D.46979 = iargs[0];
        D.46979 = iargs[0];
        D.46979 = iargs[0];
        D.46979->sreg3 = -1;
        D.46982 = D.46979->sreg3;
        D.46979->sreg2 = D.46982;
        D.46983 = D.46979->sreg2;
        D.46979->sreg1 = D.46983;
        D.46979 = iargs[0];
        D.46937 = cfg->ip;
        D.46979->cil_code = D.46937;
        D.46979 = iargs[0];
        D.46938 = cfg->varinfo;
        D.46984 = __domain_var->data.op[0].const_val;
        D.46985 = (unsigned int) D.46984;
        D.46986 = D.46985 * 4;
        D.46987 = D.46938 + D.46986;
        D.46988 = *D.46987;
        D.46989 = D.46988->data.op[1].vtype;
        D.46990 = mono_type_to_regmove (cfg, D.46989);
        D.46991 = (short unsigned int) D.46990;
        D.46979->opcode = D.46991;
        D.46938 = cfg->varinfo;
        D.46984 = __domain_var->data.op[0].const_val;
        D.46985 = (unsigned int) D.46984;
        D.46986 = D.46985 * 4;
        D.46987 = D.46938 + D.46986;
        D.46988 = *D.46987;
        D.46989 = D.46988->data.op[1].vtype;
        D.46979 = iargs[0];
        type_to_eval_stack_type (cfg, D.46989, D.46979);
        D.46979 = iargs[0];
        D.46938 = cfg->varinfo;
        D.46984 = __domain_var->data.op[0].const_val;
        D.46985 = (unsigned int) D.46984;
        D.46986 = D.46985 * 4;
        D.46987 = D.46938 + D.46986;
        D.46988 = *D.46987;
        D.46992 = D.46988->klass;
        D.46979->klass = D.46992;
        D.46979 = iargs[0];
        D.46938 = cfg->varinfo;
        D.46984 = __domain_var->data.op[0].const_val;
        D.46985 = (unsigned int) D.46984;
        D.46986 = D.46985 * 4;
        D.46987 = D.46938 + D.46986;
        D.46988 = *D.46987;
        D.46993 = D.46988->dreg;
        D.46979->sreg1 = D.46993;
        D.46979 = iargs[0];
        D.46979 = iargs[0];
        D.46994 = D.46979->type;
        D.46995 = (<unnamed type>) D.46994;
        D.46996 = alloc_dreg (cfg, D.46995);
        D.46997 = (int) D.46996;
        D.46979->dreg = D.46997;
        D.46979 = iargs[0];
        D.46998 = D.46979->opcode;
        if (D.46998 == 427) goto <D.46999>; else goto <D.47000>;
        <D.46999>:
        D.46979 = iargs[0];
        D.46938 = cfg->varinfo;
        D.46984 = __domain_var->data.op[0].const_val;
        D.46985 = (unsigned int) D.46984;
        D.46986 = D.46985 * 4;
        D.46987 = D.46938 + D.46986;
        D.46988 = *D.46987;
        D.46989 = D.46988->data.op[1].vtype;
        D.47001 = mono_class_from_mono_type (D.46989);
        D.46979->klass = D.47001;
        <D.47000>:
      }
      goto <D.46976>;
      <D.46975>:
      D.46930 = cfg->mempool;
      D.47002 = mono_mempool_alloc (D.46930, 56);
      iargs[0] = D.47002;
      D.46979 = iargs[0];
      D.46979 = iargs[0];
      D.46979->data.op[1].const_val = 0;
      D.46980 = D.46979->data.op[1].const_val;
      D.46979->data.op[0].const_val = D.46980;
      D.46979 = iargs[0];
      D.46979 = iargs[0];
      D.46979->prev = 0B;
      D.46981 = D.46979->prev;
      D.46979->next = D.46981;
      D.46979 = iargs[0];
      D.46979->opcode = 362;
      D.46979 = iargs[0];
      D.46979->flags = 0;
      D.46979 = iargs[0];
      D.46979->type = 0;
      D.46979 = iargs[0];
      D.46979->dreg = -1;
      D.46979 = iargs[0];
      D.46979 = iargs[0];
      D.46979 = iargs[0];
      D.46979->sreg3 = -1;
      D.46982 = D.46979->sreg3;
      D.46979->sreg2 = D.46982;
      D.46983 = D.46979->sreg2;
      D.46979->sreg1 = D.46983;
      D.46979 = iargs[0];
      D.46937 = cfg->ip;
      D.46979->cil_code = D.46937;
      D.46979 = iargs[0];
      D.46958 = cfg->domain;
      D.46979->data.op[0].p = D.46958;
      D.46979 = iargs[0];
      D.46979->type = 3;
      D.46979 = iargs[0];
      D.47003 = alloc_dreg (cfg, 3);
      D.47004 = (int) D.47003;
      D.46979->dreg = D.47004;
      <D.46976>:
      D.46961 = cfg->cbb;
      D.46962 = D.46961->last_ins;
      if (D.46962 != 0B) goto <D.47005>; else goto <D.47006>;
      <D.47005>:
      D.46961 = cfg->cbb;
      D.46962 = D.46961->last_ins;
      D.46979 = iargs[0];
      D.46962->next = D.46979;
      D.46979 = iargs[0];
      D.46961 = cfg->cbb;
      D.46962 = D.46961->last_ins;
      D.46979->prev = D.46962;
      D.46961 = cfg->cbb;
      D.46979 = iargs[0];
      D.46961->last_ins = D.46979;
      goto <D.47007>;
      <D.47006>:
      D.46961 = cfg->cbb;
      D.46961 = cfg->cbb;
      D.46979 = iargs[0];
      D.46961->last_ins = D.46979;
      D.46962 = D.46961->last_ins;
      D.46961->code = D.46962;
      <D.47007>:
      D.46930 = cfg->mempool;
      D.47008 = mono_mempool_alloc (D.46930, 56);
      iargs[1] = D.47008;
      D.47009 = iargs[1];
      D.47009 = iargs[1];
      D.47009->data.op[1].const_val = 0;
      D.47010 = D.47009->data.op[1].const_val;
      D.47009->data.op[0].const_val = D.47010;
      D.47009 = iargs[1];
      D.47009 = iargs[1];
      D.47009->prev = 0B;
      D.47011 = D.47009->prev;
      D.47009->next = D.47011;
      D.47009 = iargs[1];
      D.46928 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.46929 = D.46928 & 64;
      if (D.46929 != 0) goto <D.47013>; else goto <D.47014>;
      <D.47013>:
      iftmp.441 = 732;
      goto <D.47015>;
      <D.47014>:
      iftmp.441 = 362;
      <D.47015>:
      D.47009->opcode = iftmp.441;
      D.47009 = iargs[1];
      D.47009->flags = 0;
      D.47009 = iargs[1];
      D.47009->type = 0;
      D.47009 = iargs[1];
      D.47009->dreg = -1;
      D.47009 = iargs[1];
      D.47009 = iargs[1];
      D.47009 = iargs[1];
      D.47009->sreg3 = -1;
      D.47016 = D.47009->sreg3;
      D.47009->sreg2 = D.47016;
      D.47017 = D.47009->sreg2;
      D.47009->sreg1 = D.47017;
      D.47009 = iargs[1];
      D.46937 = cfg->ip;
      D.47009->cil_code = D.46937;
      D.47009 = iargs[1];
      D.47009->data.op[0].p = klass;
      D.47009 = iargs[1];
      D.47009->data.op[1].src = 11B;
      D.47009 = iargs[1];
      D.47009->type = 3;
      D.47009 = iargs[1];
      D.47018 = alloc_dreg (cfg, 3);
      D.47019 = (int) D.47018;
      D.47009->dreg = D.47019;
      D.46961 = cfg->cbb;
      D.46962 = D.46961->last_ins;
      if (D.46962 != 0B) goto <D.47020>; else goto <D.47021>;
      <D.47020>:
      D.46961 = cfg->cbb;
      D.46962 = D.46961->last_ins;
      D.47009 = iargs[1];
      D.46962->next = D.47009;
      D.47009 = iargs[1];
      D.46961 = cfg->cbb;
      D.46962 = D.46961->last_ins;
      D.47009->prev = D.46962;
      D.46961 = cfg->cbb;
      D.47009 = iargs[1];
      D.46961->last_ins = D.47009;
      goto <D.47022>;
      <D.47021>:
      D.46961 = cfg->cbb;
      D.46961 = cfg->cbb;
      D.47009 = iargs[1];
      D.46961->last_ins = D.47009;
      D.46962 = D.46961->last_ins;
      D.46961->code = D.46962;
      <D.47022>:
      alloc_ftn = mono_object_new;
      goto <D.47023>;
      <D.46973>:
      D.46928 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.46929 = D.46928 & 64;
      if (D.46929 != 0) goto <D.47025>; else goto <D.47024>;
      <D.47025>:
      D.46961 = cfg->cbb;
      D.47026 = BIT_FIELD_REF <*D.46961, 8, 912>;
      D.47027 = D.47026 & 1;
      if (D.47027 != 0) goto <D.47028>; else goto <D.47024>;
      <D.47028>:
      D.47029 = klass->type_token;
      if (D.47029 != 0) goto <D.47030>; else goto <D.47024>;
      <D.47030>:
      D.47031 = klass->image;
      D.47032 = mono_defaults.corlib;
      if (D.47031 == D.47032) goto <D.47033>; else goto <D.47024>;
      <D.47033>:
      D.47034 = klass->generic_class;
      if (D.47034 == 0B) goto <D.47035>; else goto <D.47024>;
      <D.47035>:
      D.46930 = cfg->mempool;
      D.47036 = mono_mempool_alloc (D.46930, 56);
      iargs[0] = D.47036;
      D.46979 = iargs[0];
      D.46979 = iargs[0];
      D.46979->data.op[1].const_val = 0;
      D.46980 = D.46979->data.op[1].const_val;
      D.46979->data.op[0].const_val = D.46980;
      D.46979 = iargs[0];
      D.46979 = iargs[0];
      D.46979->prev = 0B;
      D.46981 = D.46979->prev;
      D.46979->next = D.46981;
      D.46979 = iargs[0];
      D.46979->opcode = 362;
      D.46979 = iargs[0];
      D.46979->flags = 0;
      D.46979 = iargs[0];
      D.46979->type = 0;
      D.46979 = iargs[0];
      D.46979->dreg = -1;
      D.46979 = iargs[0];
      D.46979 = iargs[0];
      D.46979 = iargs[0];
      D.46979->sreg3 = -1;
      D.46982 = D.46979->sreg3;
      D.46979->sreg2 = D.46982;
      D.46983 = D.46979->sreg2;
      D.46979->sreg1 = D.46983;
      D.46979 = iargs[0];
      D.46937 = cfg->ip;
      D.46979->cil_code = D.46937;
      D.46979 = iargs[0];
      D.47029 = klass->type_token;
      D.47037 = (int) D.47029;
      D.47038 = D.47037 & 16777215;
      D.46979->data.op[0].const_val = D.47038;
      D.46979 = iargs[0];
      D.46979->type = 1;
      D.46979 = iargs[0];
      D.47039 = alloc_dreg (cfg, 1);
      D.47040 = (int) D.47039;
      D.46979->dreg = D.47040;
      D.46961 = cfg->cbb;
      D.46962 = D.46961->last_ins;
      if (D.46962 != 0B) goto <D.47041>; else goto <D.47042>;
      <D.47041>:
      D.46961 = cfg->cbb;
      D.46962 = D.46961->last_ins;
      D.46979 = iargs[0];
      D.46962->next = D.46979;
      D.46979 = iargs[0];
      D.46961 = cfg->cbb;
      D.46962 = D.46961->last_ins;
      D.46979->prev = D.46962;
      D.46961 = cfg->cbb;
      D.46979 = iargs[0];
      D.46961->last_ins = D.46979;
      goto <D.47043>;
      <D.47042>:
      D.46961 = cfg->cbb;
      D.46961 = cfg->cbb;
      D.46979 = iargs[0];
      D.46961->last_ins = D.46979;
      D.46962 = D.46961->last_ins;
      D.46961->code = D.46962;
      <D.47043>:
      D.46971 = mono_emit_jit_icall (cfg, mono_helper_newobj_mscorlib, &iargs);
      return D.46971;
      <D.47024>:
      {
        struct MonoVTable * vtable;
        struct MonoMethod * managed_alloc;
        gboolean pass_lw;

        try
          {
            D.46958 = cfg->domain;
            vtable = mono_class_vtable (D.46958, klass);
            managed_alloc = 0B;
            if (vtable == 0B) goto <D.47044>; else goto <D.47045>;
            <D.47044>:
            mono_cfg_set_exception (cfg, 7);
            cfg->exception_ptr = klass;
            D.46971 = 0B;
            return D.46971;
            <D.47045>:
            managed_alloc = mono_gc_get_managed_allocator (klass, for_box);
            if (managed_alloc != 0B) goto <D.47046>; else goto <D.47047>;
            <D.47046>:
            D.46930 = cfg->mempool;
            D.47048 = mono_mempool_alloc (D.46930, 56);
            iargs[0] = D.47048;
            D.46979 = iargs[0];
            D.46979 = iargs[0];
            D.46979->data.op[1].const_val = 0;
            D.46980 = D.46979->data.op[1].const_val;
            D.46979->data.op[0].const_val = D.46980;
            D.46979 = iargs[0];
            D.46979 = iargs[0];
            D.46979->prev = 0B;
            D.46981 = D.46979->prev;
            D.46979->next = D.46981;
            D.46979 = iargs[0];
            D.46928 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.46929 = D.46928 & 64;
            if (D.46929 != 0) goto <D.47050>; else goto <D.47051>;
            <D.47050>:
            iftmp.442 = 732;
            goto <D.47052>;
            <D.47051>:
            iftmp.442 = 362;
            <D.47052>:
            D.46979->opcode = iftmp.442;
            D.46979 = iargs[0];
            D.46979->flags = 0;
            D.46979 = iargs[0];
            D.46979->type = 0;
            D.46979 = iargs[0];
            D.46979->dreg = -1;
            D.46979 = iargs[0];
            D.46979 = iargs[0];
            D.46979 = iargs[0];
            D.46979->sreg3 = -1;
            D.46982 = D.46979->sreg3;
            D.46979->sreg2 = D.46982;
            D.46983 = D.46979->sreg2;
            D.46979->sreg1 = D.46983;
            D.46979 = iargs[0];
            D.46937 = cfg->ip;
            D.46979->cil_code = D.46937;
            D.46979 = iargs[0];
            D.46928 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.46929 = D.46928 & 64;
            if (D.46929 != 0) goto <D.47054>; else goto <D.47055>;
            <D.47054>:
            iftmp.443 = vtable->klass;
            goto <D.47056>;
            <D.47055>:
            iftmp.443 = vtable;
            <D.47056>:
            D.46979->data.op[0].p = iftmp.443;
            D.46979 = iargs[0];
            D.46979->data.op[1].src = 14B;
            D.46979 = iargs[0];
            D.46979->type = 3;
            D.46979 = iargs[0];
            D.47057 = alloc_dreg (cfg, 3);
            D.47058 = (int) D.47057;
            D.46979->dreg = D.47058;
            D.46961 = cfg->cbb;
            D.46962 = D.46961->last_ins;
            if (D.46962 != 0B) goto <D.47059>; else goto <D.47060>;
            <D.47059>:
            D.46961 = cfg->cbb;
            D.46962 = D.46961->last_ins;
            D.46979 = iargs[0];
            D.46962->next = D.46979;
            D.46979 = iargs[0];
            D.46961 = cfg->cbb;
            D.46962 = D.46961->last_ins;
            D.46979->prev = D.46962;
            D.46961 = cfg->cbb;
            D.46979 = iargs[0];
            D.46961->last_ins = D.46979;
            goto <D.47061>;
            <D.47060>:
            D.46961 = cfg->cbb;
            D.46961 = cfg->cbb;
            D.46979 = iargs[0];
            D.46961->last_ins = D.46979;
            D.46962 = D.46961->last_ins;
            D.46961->code = D.46962;
            <D.47061>:
            D.46971 = mono_emit_method_call (cfg, managed_alloc, &iargs, 0B);
            return D.46971;
            <D.47047>:
            alloc_ftn = mono_class_get_allocation_ftn (vtable, for_box, &pass_lw);
            pass_lw.444 = pass_lw;
            if (pass_lw.444 != 0) goto <D.47063>; else goto <D.47064>;
            <D.47063>:
            {
              guint32 lw;

              D.47065 = vtable->klass;
              D.47066 = D.47065->instance_size;
              lw = (guint32) D.47066;
              D.47067 = lw + 3;
              D.47068 = D.47067 & 4294967292;
              lw = D.47068 / 4;
              D.46930 = cfg->mempool;
              D.47069 = mono_mempool_alloc (D.46930, 56);
              iargs[0] = D.47069;
              D.46979 = iargs[0];
              D.46979 = iargs[0];
              D.46979->data.op[1].const_val = 0;
              D.46980 = D.46979->data.op[1].const_val;
              D.46979->data.op[0].const_val = D.46980;
              D.46979 = iargs[0];
              D.46979 = iargs[0];
              D.46979->prev = 0B;
              D.46981 = D.46979->prev;
              D.46979->next = D.46981;
              D.46979 = iargs[0];
              D.46979->opcode = 362;
              D.46979 = iargs[0];
              D.46979->flags = 0;
              D.46979 = iargs[0];
              D.46979->type = 0;
              D.46979 = iargs[0];
              D.46979->dreg = -1;
              D.46979 = iargs[0];
              D.46979 = iargs[0];
              D.46979 = iargs[0];
              D.46979->sreg3 = -1;
              D.46982 = D.46979->sreg3;
              D.46979->sreg2 = D.46982;
              D.46983 = D.46979->sreg2;
              D.46979->sreg1 = D.46983;
              D.46979 = iargs[0];
              D.46937 = cfg->ip;
              D.46979->cil_code = D.46937;
              D.46979 = iargs[0];
              lw.445 = (int) lw;
              D.46979->data.op[0].const_val = lw.445;
              D.46979 = iargs[0];
              D.46979->type = 1;
              D.46979 = iargs[0];
              D.47071 = alloc_dreg (cfg, 1);
              D.47072 = (int) D.47071;
              D.46979->dreg = D.47072;
              D.46961 = cfg->cbb;
              D.46962 = D.46961->last_ins;
              if (D.46962 != 0B) goto <D.47073>; else goto <D.47074>;
              <D.47073>:
              D.46961 = cfg->cbb;
              D.46962 = D.46961->last_ins;
              D.46979 = iargs[0];
              D.46962->next = D.46979;
              D.46979 = iargs[0];
              D.46961 = cfg->cbb;
              D.46962 = D.46961->last_ins;
              D.46979->prev = D.46962;
              D.46961 = cfg->cbb;
              D.46979 = iargs[0];
              D.46961->last_ins = D.46979;
              goto <D.47075>;
              <D.47074>:
              D.46961 = cfg->cbb;
              D.46961 = cfg->cbb;
              D.46979 = iargs[0];
              D.46961->last_ins = D.46979;
              D.46962 = D.46961->last_ins;
              D.46961->code = D.46962;
              <D.47075>:
              D.46930 = cfg->mempool;
              D.47076 = mono_mempool_alloc (D.46930, 56);
              iargs[1] = D.47076;
              D.47009 = iargs[1];
              D.47009 = iargs[1];
              D.47009->data.op[1].const_val = 0;
              D.47010 = D.47009->data.op[1].const_val;
              D.47009->data.op[0].const_val = D.47010;
              D.47009 = iargs[1];
              D.47009 = iargs[1];
              D.47009->prev = 0B;
              D.47011 = D.47009->prev;
              D.47009->next = D.47011;
              D.47009 = iargs[1];
              D.46928 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.46929 = D.46928 & 64;
              if (D.46929 != 0) goto <D.47078>; else goto <D.47079>;
              <D.47078>:
              iftmp.446 = 732;
              goto <D.47080>;
              <D.47079>:
              iftmp.446 = 362;
              <D.47080>:
              D.47009->opcode = iftmp.446;
              D.47009 = iargs[1];
              D.47009->flags = 0;
              D.47009 = iargs[1];
              D.47009->type = 0;
              D.47009 = iargs[1];
              D.47009->dreg = -1;
              D.47009 = iargs[1];
              D.47009 = iargs[1];
              D.47009 = iargs[1];
              D.47009->sreg3 = -1;
              D.47016 = D.47009->sreg3;
              D.47009->sreg2 = D.47016;
              D.47017 = D.47009->sreg2;
              D.47009->sreg1 = D.47017;
              D.47009 = iargs[1];
              D.46937 = cfg->ip;
              D.47009->cil_code = D.46937;
              D.47009 = iargs[1];
              D.46928 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.46929 = D.46928 & 64;
              if (D.46929 != 0) goto <D.47082>; else goto <D.47083>;
              <D.47082>:
              iftmp.447 = vtable->klass;
              goto <D.47084>;
              <D.47083>:
              iftmp.447 = vtable;
              <D.47084>:
              D.47009->data.op[0].p = iftmp.447;
              D.47009 = iargs[1];
              D.47009->data.op[1].src = 14B;
              D.47009 = iargs[1];
              D.47009->type = 3;
              D.47009 = iargs[1];
              D.47085 = alloc_dreg (cfg, 3);
              D.47086 = (int) D.47085;
              D.47009->dreg = D.47086;
              D.46961 = cfg->cbb;
              D.46962 = D.46961->last_ins;
              if (D.46962 != 0B) goto <D.47087>; else goto <D.47088>;
              <D.47087>:
              D.46961 = cfg->cbb;
              D.46962 = D.46961->last_ins;
              D.47009 = iargs[1];
              D.46962->next = D.47009;
              D.47009 = iargs[1];
              D.46961 = cfg->cbb;
              D.46962 = D.46961->last_ins;
              D.47009->prev = D.46962;
              D.46961 = cfg->cbb;
              D.47009 = iargs[1];
              D.46961->last_ins = D.47009;
              goto <D.47089>;
              <D.47088>:
              D.46961 = cfg->cbb;
              D.46961 = cfg->cbb;
              D.47009 = iargs[1];
              D.46961->last_ins = D.47009;
              D.46962 = D.46961->last_ins;
              D.46961->code = D.46962;
              <D.47089>:
            }
            goto <D.47090>;
            <D.47064>:
            D.46930 = cfg->mempool;
            D.47091 = mono_mempool_alloc (D.46930, 56);
            iargs[0] = D.47091;
            D.46979 = iargs[0];
            D.46979 = iargs[0];
            D.46979->data.op[1].const_val = 0;
            D.46980 = D.46979->data.op[1].const_val;
            D.46979->data.op[0].const_val = D.46980;
            D.46979 = iargs[0];
            D.46979 = iargs[0];
            D.46979->prev = 0B;
            D.46981 = D.46979->prev;
            D.46979->next = D.46981;
            D.46979 = iargs[0];
            D.46928 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.46929 = D.46928 & 64;
            if (D.46929 != 0) goto <D.47093>; else goto <D.47094>;
            <D.47093>:
            iftmp.448 = 732;
            goto <D.47095>;
            <D.47094>:
            iftmp.448 = 362;
            <D.47095>:
            D.46979->opcode = iftmp.448;
            D.46979 = iargs[0];
            D.46979->flags = 0;
            D.46979 = iargs[0];
            D.46979->type = 0;
            D.46979 = iargs[0];
            D.46979->dreg = -1;
            D.46979 = iargs[0];
            D.46979 = iargs[0];
            D.46979 = iargs[0];
            D.46979->sreg3 = -1;
            D.46982 = D.46979->sreg3;
            D.46979->sreg2 = D.46982;
            D.46983 = D.46979->sreg2;
            D.46979->sreg1 = D.46983;
            D.46979 = iargs[0];
            D.46937 = cfg->ip;
            D.46979->cil_code = D.46937;
            D.46979 = iargs[0];
            D.46928 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.46929 = D.46928 & 64;
            if (D.46929 != 0) goto <D.47097>; else goto <D.47098>;
            <D.47097>:
            iftmp.449 = vtable->klass;
            goto <D.47099>;
            <D.47098>:
            iftmp.449 = vtable;
            <D.47099>:
            D.46979->data.op[0].p = iftmp.449;
            D.46979 = iargs[0];
            D.46979->data.op[1].src = 14B;
            D.46979 = iargs[0];
            D.46979->type = 3;
            D.46979 = iargs[0];
            D.47100 = alloc_dreg (cfg, 3);
            D.47101 = (int) D.47100;
            D.46979->dreg = D.47101;
            D.46961 = cfg->cbb;
            D.46962 = D.46961->last_ins;
            if (D.46962 != 0B) goto <D.47102>; else goto <D.47103>;
            <D.47102>:
            D.46961 = cfg->cbb;
            D.46962 = D.46961->last_ins;
            D.46979 = iargs[0];
            D.46962->next = D.46979;
            D.46979 = iargs[0];
            D.46961 = cfg->cbb;
            D.46962 = D.46961->last_ins;
            D.46979->prev = D.46962;
            D.46961 = cfg->cbb;
            D.46979 = iargs[0];
            D.46961->last_ins = D.46979;
            goto <D.47104>;
            <D.47103>:
            D.46961 = cfg->cbb;
            D.46961 = cfg->cbb;
            D.46979 = iargs[0];
            D.46961->last_ins = D.46979;
            D.46962 = D.46961->last_ins;
            D.46961->code = D.46962;
            <D.47104>:
            <D.47090>:
          }
        finally
          {
            pass_lw = {CLOBBER};
          }
      }
      <D.47023>:
      D.46971 = mono_emit_jit_icall (cfg, alloc_ftn, &iargs);
      return D.46971;
    }
  finally
    {
      iargs = {CLOBBER};
    }
}


mini_emit_inst_for_ctor (struct MonoCompile * cfg, struct MonoMethod * cmethod, struct MonoMethodSignature * fsig, struct MonoInst * * args)
{
  struct MonoInst * D.47110;
  struct MonoInst * ins;

  ins = 0B;
  D.47110 = ins;
  return D.47110;
}


mono_method_check_inlining (struct MonoCompile * cfg, struct MonoMethod * method)
{
  struct MonoGenericSharingContext * D.47112;
  gboolean D.47115;
  unsigned int D.47116;
  int D.47119;
  short unsigned int D.47124;
  unsigned int D.47125;
  unsigned int D.47126;
  struct MonoClass * D.47128;
  unsigned char D.47129;
  unsigned char D.47130;
  int D.47132;
  int inline_limit_inited.450;
  const gchar * D.47136;
  const gchar * D.47139;
  int inline_limit.451;
  unsigned int D.47142;
  int inline_limit.452;
  unsigned int inline_limit.453;
  int D.47147;
  int D.47148;
  unsigned int D.47151;
  unsigned int D.47152;
  struct MonoDomain * D.47157;
  unsigned char D.47160;
  unsigned char D.47161;
  int D.47164;
  unsigned int D.47168;
  unsigned int D.47169;
  unsigned char D.47172;
  unsigned char D.47175;
  unsigned char D.47176;
  struct MonoClassRuntimeInfo * D.47179;
  unsigned char D.47184;
  unsigned char D.47185;
  int D.47189;
  int D.47199;
  unsigned char D.47204;
  struct MonoMethodHeaderSummary header;
  struct MonoVTable * vtable;

  try
    {
      D.47112 = cfg->generic_sharing_context;
      if (D.47112 != 0B) goto <D.47113>; else goto <D.47114>;
      <D.47113>:
      D.47115 = 0;
      return D.47115;
      <D.47114>:
      D.47116 = cfg->inline_depth;
      if (D.47116 > 10) goto <D.47117>; else goto <D.47118>;
      <D.47117>:
      D.47115 = 0;
      return D.47115;
      <D.47118>:
      D.47119 = mono_method_get_header_summary (method, &header);
      if (D.47119 == 0) goto <D.47120>; else goto <D.47121>;
      <D.47120>:
      D.47115 = 0;
      return D.47115;
      <D.47121>:
      D.47124 = method->iflags;
      D.47125 = (unsigned int) D.47124;
      D.47126 = D.47125 & 40;
      if (D.47126 != 0) goto <D.47122>; else goto <D.47127>;
      <D.47127>:
      D.47128 = method->klass;
      D.47129 = BIT_FIELD_REF <*D.47128, 8, 176>;
      D.47130 = D.47129 & 64;
      if (D.47130 != 0) goto <D.47122>; else goto <D.47131>;
      <D.47131>:
      D.47132 = header.has_clauses;
      if (D.47132 != 0) goto <D.47122>; else goto <D.47123>;
      <D.47122>:
      D.47115 = 0;
      return D.47115;
      <D.47123>:
      inline_limit_inited.450 = inline_limit_inited;
      if (inline_limit_inited.450 == 0) goto <D.47134>; else goto <D.47135>;
      <D.47134>:
      D.47136 = monoeg_g_getenv ("MONO_INLINELIMIT");
      if (D.47136 != 0B) goto <D.47137>; else goto <D.47138>;
      <D.47137>:
      D.47139 = monoeg_g_getenv ("MONO_INLINELIMIT");
      inline_limit.451 = atoi (D.47139);
      inline_limit = inline_limit.451;
      goto <D.47141>;
      <D.47138>:
      inline_limit = 20;
      <D.47141>:
      inline_limit_inited = 1;
      <D.47135>:
      D.47142 = header.code_size;
      inline_limit.452 = inline_limit;
      inline_limit.453 = (unsigned int) inline_limit.452;
      if (D.47142 >= inline_limit.453) goto <D.47145>; else goto <D.47146>;
      <D.47145>:
      D.47124 = method->iflags;
      D.47147 = (int) D.47124;
      D.47148 = D.47147 & 256;
      if (D.47148 == 0) goto <D.47149>; else goto <D.47150>;
      <D.47149>:
      D.47115 = 0;
      return D.47115;
      <D.47150>:
      <D.47146>:
      D.47151 = cfg->opt;
      D.47152 = D.47151 & 512;
      if (D.47152 == 0) goto <D.47153>; else goto <D.47154>;
      <D.47153>:
      D.47124 = method->iflags;
      D.47147 = (int) D.47124;
      D.47148 = D.47147 & 256;
      if (D.47148 != 0) goto <D.47155>; else goto <D.47156>;
      <D.47155>:
      D.47157 = cfg->domain;
      D.47128 = method->klass;
      vtable = mono_class_vtable (D.47157, D.47128);
      if (vtable == 0B) goto <D.47158>; else goto <D.47159>;
      <D.47158>:
      D.47115 = 0;
      return D.47115;
      <D.47159>:
      D.47160 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.47161 = D.47160 & 64;
      if (D.47161 != 0) goto <D.47162>; else goto <D.47163>;
      <D.47162>:
      D.47128 = method->klass;
      D.47164 = mono_class_needs_cctor_run (D.47128, 0B);
      if (D.47164 != 0) goto <D.47165>; else goto <D.47166>;
      <D.47165>:
      D.47115 = 0;
      return D.47115;
      <D.47166>:
      <D.47163>:
      mono_runtime_class_init (vtable);
      goto <D.47167>;
      <D.47156>:
      D.47128 = method->klass;
      D.47168 = D.47128->flags;
      D.47169 = D.47168 & 1048576;
      if (D.47169 != 0) goto <D.47170>; else goto <D.47171>;
      <D.47170>:
      D.47160 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.47172 = D.47160 & 16;
      if (D.47172 != 0) goto <D.47173>; else goto <D.47174>;
      <D.47173>:
      D.47128 = method->klass;
      D.47175 = BIT_FIELD_REF <*D.47128, 8, 184>;
      D.47176 = D.47175 & 4;
      if (D.47176 != 0) goto <D.47177>; else goto <D.47178>;
      <D.47177>:
      D.47128 = method->klass;
      D.47179 = D.47128->runtime_info;
      if (D.47179 == 0B) goto <D.47180>; else goto <D.47181>;
      <D.47180>:
      D.47115 = 0;
      return D.47115;
      <D.47181>:
      D.47157 = cfg->domain;
      D.47128 = method->klass;
      vtable = mono_class_vtable (D.47157, D.47128);
      if (vtable == 0B) goto <D.47182>; else goto <D.47183>;
      <D.47182>:
      D.47115 = 0;
      return D.47115;
      <D.47183>:
      D.47184 = BIT_FIELD_REF <*vtable, 8, 184>;
      D.47185 = D.47184 & 2;
      if (D.47185 == 0) goto <D.47186>; else goto <D.47187>;
      <D.47186>:
      D.47115 = 0;
      return D.47115;
      <D.47187>:
      mono_runtime_class_init (vtable);
      <D.47178>:
      <D.47174>:
      goto <D.47188>;
      <D.47171>:
      D.47128 = method->klass;
      D.47189 = mono_class_needs_cctor_run (D.47128, 0B);
      if (D.47189 != 0) goto <D.47190>; else goto <D.47191>;
      <D.47190>:
      D.47128 = method->klass;
      D.47179 = D.47128->runtime_info;
      if (D.47179 == 0B) goto <D.47192>; else goto <D.47193>;
      <D.47192>:
      D.47115 = 0;
      return D.47115;
      <D.47193>:
      D.47157 = cfg->domain;
      D.47128 = method->klass;
      vtable = mono_class_vtable (D.47157, D.47128);
      if (vtable == 0B) goto <D.47194>; else goto <D.47195>;
      <D.47194>:
      D.47115 = 0;
      return D.47115;
      <D.47195>:
      D.47184 = BIT_FIELD_REF <*vtable, 8, 184>;
      D.47185 = D.47184 & 2;
      if (D.47185 == 0) goto <D.47196>; else goto <D.47197>;
      <D.47196>:
      D.47115 = 0;
      return D.47115;
      <D.47197>:
      <D.47191>:
      <D.47188>:
      <D.47167>:
      goto <D.47198>;
      <D.47154>:
      D.47128 = method->klass;
      D.47199 = mono_class_needs_cctor_run (D.47128, 0B);
      if (D.47199 != 0) goto <D.47200>; else goto <D.47201>;
      <D.47200>:
      D.47128 = method->klass;
      D.47168 = D.47128->flags;
      D.47169 = D.47168 & 1048576;
      if (D.47169 == 0) goto <D.47202>; else goto <D.47203>;
      <D.47202>:
      D.47115 = 0;
      return D.47115;
      <D.47203>:
      <D.47201>:
      <D.47198>:
      D.47204 = mono_method_has_declsec (method);
      if (D.47204 != 0) goto <D.47205>; else goto <D.47206>;
      <D.47205>:
      D.47115 = 0;
      return D.47115;
      <D.47206>:
      D.47115 = 1;
      return D.47115;
    }
  finally
    {
      header = {CLOBBER};
    }
}


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

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


emit_get_rgctx_gsharedvt_call (struct MonoCompile * cfg, int context_used, struct MonoMethodSignature * sig, struct MonoMethod * cmethod, MonoRgctxInfoType rgctx_type)
{
  struct MonoMemPool * D.47211;
  struct MonoMethod * D.47212;
  int D.47213;
  struct MonoInst * D.47214;
  struct MonoJumpInfoGSharedVtCall * call_info;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.47211 = cfg->mempool;
  call_info = mono_mempool_alloc0 (D.47211, 8);
  call_info->sig = sig;
  call_info->method = cmethod;
  D.47211 = cfg->mempool;
  D.47212 = cfg->current_method;
  D.47213 = context_used & 2;
  entry = mono_patch_info_rgctx_entry_new (D.47211, D.47212, D.47213, 45, call_info, rgctx_type);
  D.47212 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.47212, context_used);
  D.47214 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.47214;
}


save_cast_details (struct MonoCompile * cfg, struct MonoClass * klass, int obj_reg, gboolean null_check, struct MonoBasicBlock * * out_bblock)
{
  struct MonoDebugOptions * D.47216;
  int D.47217;
  unsigned int D.47220;
  unsigned int D.47221;
  unsigned int D.47222;
  struct MonoMemPool * D.47225;
  unsigned int D.47226;
  unsigned int D.47227;
  unsigned int D.47228;
  int D.47229;
  int D.47230;
  struct MonoInst * D.47231;
  int D.47232;
  int D.47233;
  const unsigned char * D.47234;
  struct MonoBasicBlock * D.47235;
  struct MonoInst * D.47236;
  int D.47240;
  struct MonoInst * D.47241;
  int D.47242;
  int D.47243;
  unsigned int D.47246;
  unsigned int D.47247;
  int D.47248;
  unsigned char * D.47252;
  struct MonoBasicBlock * * D.47255;
  int D.47256;
  unsigned char * D.47257;
  int D.47258;
  int D.47259;
  unsigned int D.47260;
  unsigned int D.47261;
  struct MonoBasicBlock * * D.47262;
  unsigned int D.47263;
  short unsigned int D.47268;
  short unsigned int D.47269;
  _Bool D.47270;
  short unsigned int D.47271;
  _Bool D.47272;
  _Bool D.47273;
  short unsigned int D.47275;
  short unsigned int D.47276;
  struct MonoBasicBlock * * D.47277;
  struct MonoBasicBlock * * D.47278;
  struct MonoBasicBlock * D.47279;
  short unsigned int D.47284;
  _Bool D.47285;
  _Bool D.47286;
  _Bool D.47287;
  short unsigned int D.47289;
  short unsigned int D.47290;
  _Bool D.47291;
  short unsigned int D.47292;
  _Bool D.47293;
  _Bool D.47294;
  void * D.47297;
  struct MonoBasicBlock * * D.47298;
  struct MonoBasicBlock * * D.47299;
  unsigned char D.47303;
  unsigned char D.47304;
  unsigned int D.47307;
  unsigned int D.47308;
  int D.47309;
  short unsigned int D.47316;
  short unsigned int D.47317;
  _Bool D.47318;
  short unsigned int D.47319;
  _Bool D.47320;
  _Bool D.47321;
  short unsigned int D.47327;
  _Bool D.47328;
  _Bool D.47329;
  _Bool D.47330;
  short unsigned int D.47332;
  short unsigned int D.47333;
  _Bool D.47334;
  short unsigned int D.47335;
  _Bool D.47336;
  _Bool D.47337;
  struct _IO_FILE * stderr.454;
  int D.47346;
  struct MonoInst * D.47347;
  int D.47348;
  int D.47349;
  int D.47353;
  struct MonoInst * D.47354;
  int D.47355;
  int D.47356;
  int D.47360;
  struct MonoInst * D.47361;
  int D.47362;
  int D.47363;
  int D.47364;
  int D.47368;
  struct MonoInst * D.47369;
  int D.47370;
  int D.47371;
  int D.47375;
  struct MonoInst * D.47376;
  int D.47377;
  int D.47378;
  unsigned char * D.47384;
  int D.47387;
  int D.47388;
  unsigned int D.47389;
  unsigned int D.47390;
  struct MonoBasicBlock * * D.47391;
  short unsigned int D.47396;
  short unsigned int D.47397;
  _Bool D.47398;
  short unsigned int D.47399;
  _Bool D.47400;
  _Bool D.47401;
  short unsigned int D.47407;
  _Bool D.47408;
  _Bool D.47409;
  _Bool D.47410;
  short unsigned int D.47412;
  short unsigned int D.47413;
  _Bool D.47414;
  short unsigned int D.47415;
  _Bool D.47416;
  _Bool D.47417;

  D.47216 = mini_get_debug_options ();
  D.47217 = D.47216->better_cast_details;
  if (D.47217 != 0) goto <D.47218>; else goto <D.47219>;
  <D.47218>:
  {
    int to_klass_reg;
    int vtable_reg;
    int klass_reg;
    struct MonoBasicBlock * is_null_bb;
    struct MonoInst * tls_get;

    D.47220 = alloc_preg (cfg);
    to_klass_reg = (int) D.47220;
    D.47221 = alloc_preg (cfg);
    vtable_reg = (int) D.47221;
    D.47222 = alloc_preg (cfg);
    klass_reg = (int) D.47222;
    is_null_bb = 0B;
    if (null_check != 0) goto <D.47223>; else goto <D.47224>;
    <D.47223>:
    D.47225 = cfg->mempool;
    is_null_bb = mono_mempool_alloc0 (D.47225, 172);
    D.47226 = cfg->num_bblocks;
    D.47227 = D.47226;
    D.47228 = D.47227 + 1;
    cfg->num_bblocks = D.47228;
    D.47229 = (int) D.47227;
    is_null_bb->block_num = D.47229;
    {
      struct MonoInst * inst;

      D.47225 = cfg->mempool;
      inst = mono_mempool_alloc (D.47225, 56);
      inst->data.op[1].const_val = 0;
      D.47230 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47230;
      inst->prev = 0B;
      D.47231 = inst->prev;
      inst->next = D.47231;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47232 = inst->sreg3;
      inst->sreg2 = D.47232;
      D.47233 = inst->sreg2;
      inst->sreg1 = D.47233;
      D.47234 = cfg->ip;
      inst->cil_code = D.47234;
      inst->dreg = -1;
      inst->sreg1 = obj_reg;
      inst->data.op[1].const_val = 0;
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      if (D.47236 != 0B) goto <D.47237>; else goto <D.47238>;
      <D.47237>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47236->next = inst;
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      inst->prev = D.47236;
      D.47235 = cfg->cbb;
      D.47235->last_ins = inst;
      goto <D.47239>;
      <D.47238>:
      D.47235 = cfg->cbb;
      D.47235 = cfg->cbb;
      D.47235->last_ins = inst;
      D.47236 = D.47235->last_ins;
      D.47235->code = D.47236;
      <D.47239>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.47225 = cfg->mempool;
      ins = mono_mempool_alloc (D.47225, 56);
      ins->data.op[1].const_val = 0;
      D.47240 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.47240;
      ins->prev = 0B;
      D.47241 = ins->prev;
      ins->next = D.47241;
      ins->opcode = 648;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.47242 = ins->sreg3;
      ins->sreg2 = D.47242;
      D.47243 = ins->sreg2;
      ins->sreg1 = D.47243;
      D.47234 = cfg->ip;
      ins->cil_code = D.47234;
      if (0 != 0) goto <D.47244>; else goto <D.47245>;
      <D.47244>:
      D.47225 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.47225, 172);
      D.47226 = cfg->num_bblocks;
      D.47246 = D.47226;
      D.47247 = D.47246 + 1;
      cfg->num_bblocks = D.47247;
      D.47248 = (int) D.47246;
      falsebb->block_num = D.47248;
      ins->data.op[0].target_block = is_null_bb;
      D.47235 = cfg->cbb;
      mono_link_bblock (cfg, D.47235, is_null_bb);
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      if (D.47236 != 0B) goto <D.47249>; else goto <D.47250>;
      <D.47249>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47236->next = ins;
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      ins->prev = D.47236;
      D.47235 = cfg->cbb;
      D.47235->last_ins = ins;
      goto <D.47251>;
      <D.47250>:
      D.47235 = cfg->cbb;
      D.47235 = cfg->cbb;
      D.47235->last_ins = ins;
      D.47236 = D.47235->last_ins;
      D.47235->code = D.47236;
      <D.47251>:
      D.47252 = falsebb->cil_code;
      if (D.47252 != 0B) goto <D.47253>; else goto <D.47254>;
      <D.47253>:
      D.47255 = cfg->cil_offset_to_bb;
      D.47252 = falsebb->cil_code;
      D.47256 = (int) D.47252;
      D.47257 = cfg->cil_start;
      D.47258 = (int) D.47257;
      D.47259 = D.47256 - D.47258;
      D.47260 = (unsigned int) D.47259;
      D.47261 = D.47260 * 4;
      D.47262 = D.47255 + D.47261;
      *D.47262 = falsebb;
      <D.47254>:
      D.47263 = cfg->real_offset;
      falsebb->real_offset = D.47263;
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      if (D.47236 != 0B) goto <D.47267>; else goto <D.47264>;
      <D.47267>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47268 = D.47236->opcode;
      D.47269 = D.47268 + 64985;
      D.47270 = D.47269 <= 9;
      D.47271 = D.47268 + 64878;
      D.47272 = D.47271 <= 9;
      D.47273 = D.47270 | D.47272;
      if (D.47273 != 0) goto <D.47265>; else goto <D.47274>;
      <D.47274>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47275 = D.47236->opcode;
      D.47276 = D.47275 + 64888;
      if (D.47276 <= 9) goto <D.47265>; else goto <D.47264>;
      <D.47265>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47277 = D.47236->data.op[1].many_blocks;
      D.47278 = D.47277 + 4;
      D.47279 = *D.47278;
      if (D.47279 == 0B) goto <D.47280>; else goto <D.47264>;
      <D.47280>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47277 = D.47236->data.op[1].many_blocks;
      D.47278 = D.47277 + 4;
      *D.47278 = falsebb;
      D.47235 = cfg->cbb;
      mono_link_bblock (cfg, D.47235, falsebb);
      goto <D.47266>;
      <D.47264>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      if (D.47236 == 0B) goto <D.47281>; else goto <D.47283>;
      <D.47283>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47284 = D.47236->opcode;
      D.47285 = D.47284 != 442;
      D.47286 = D.47284 != 759;
      D.47287 = D.47285 & D.47286;
      if (D.47287 != 0) goto <D.47288>; else goto <D.47282>;
      <D.47288>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47289 = D.47236->opcode;
      D.47290 = D.47289 + 64985;
      D.47291 = D.47290 > 9;
      D.47292 = D.47289 + 64878;
      D.47293 = D.47292 > 9;
      D.47294 = D.47291 & D.47293;
      if (D.47294 != 0) goto <D.47295>; else goto <D.47282>;
      <D.47295>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47275 = D.47236->opcode;
      D.47276 = D.47275 + 64888;
      if (D.47276 > 9) goto <D.47281>; else goto <D.47282>;
      <D.47281>:
      D.47235 = cfg->cbb;
      mono_link_bblock (cfg, D.47235, falsebb);
      <D.47282>:
      <D.47266>:
      D.47235 = cfg->cbb;
      D.47235->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.47296>;
      <D.47245>:
      D.47225 = cfg->mempool;
      D.47297 = mono_mempool_alloc (D.47225, 8);
      ins->data.op[1].many_blocks = D.47297;
      D.47298 = ins->data.op[1].many_blocks;
      *D.47298 = is_null_bb;
      D.47298 = ins->data.op[1].many_blocks;
      D.47299 = D.47298 + 4;
      *D.47299 = 0B;
      D.47235 = cfg->cbb;
      mono_link_bblock (cfg, D.47235, is_null_bb);
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      if (D.47236 != 0B) goto <D.47300>; else goto <D.47301>;
      <D.47300>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47236->next = ins;
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      ins->prev = D.47236;
      D.47235 = cfg->cbb;
      D.47235->last_ins = ins;
      goto <D.47302>;
      <D.47301>:
      D.47235 = cfg->cbb;
      D.47235 = cfg->cbb;
      D.47235->last_ins = ins;
      D.47236 = D.47235->last_ins;
      D.47235->code = D.47236;
      <D.47302>:
      D.47303 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.47304 = D.47303 & 8;
      if (D.47304 == 0) goto <D.47305>; else goto <D.47306>;
      <D.47305>:
      D.47225 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.47225, 172);
      D.47226 = cfg->num_bblocks;
      D.47307 = D.47226;
      D.47308 = D.47307 + 1;
      cfg->num_bblocks = D.47308;
      D.47309 = (int) D.47307;
      falsebb->block_num = D.47309;
      D.47298 = ins->data.op[1].many_blocks;
      D.47299 = D.47298 + 4;
      *D.47299 = falsebb;
      D.47235 = cfg->cbb;
      mono_link_bblock (cfg, D.47235, falsebb);
      D.47252 = falsebb->cil_code;
      if (D.47252 != 0B) goto <D.47310>; else goto <D.47311>;
      <D.47310>:
      D.47255 = cfg->cil_offset_to_bb;
      D.47252 = falsebb->cil_code;
      D.47256 = (int) D.47252;
      D.47257 = cfg->cil_start;
      D.47258 = (int) D.47257;
      D.47259 = D.47256 - D.47258;
      D.47260 = (unsigned int) D.47259;
      D.47261 = D.47260 * 4;
      D.47262 = D.47255 + D.47261;
      *D.47262 = falsebb;
      <D.47311>:
      D.47263 = cfg->real_offset;
      falsebb->real_offset = D.47263;
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      if (D.47236 != 0B) goto <D.47315>; else goto <D.47312>;
      <D.47315>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47316 = D.47236->opcode;
      D.47317 = D.47316 + 64985;
      D.47318 = D.47317 <= 9;
      D.47319 = D.47316 + 64878;
      D.47320 = D.47319 <= 9;
      D.47321 = D.47318 | D.47320;
      if (D.47321 != 0) goto <D.47313>; else goto <D.47322>;
      <D.47322>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47275 = D.47236->opcode;
      D.47276 = D.47275 + 64888;
      if (D.47276 <= 9) goto <D.47313>; else goto <D.47312>;
      <D.47313>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47277 = D.47236->data.op[1].many_blocks;
      D.47278 = D.47277 + 4;
      D.47279 = *D.47278;
      if (D.47279 == 0B) goto <D.47323>; else goto <D.47312>;
      <D.47323>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47277 = D.47236->data.op[1].many_blocks;
      D.47278 = D.47277 + 4;
      *D.47278 = falsebb;
      D.47235 = cfg->cbb;
      mono_link_bblock (cfg, D.47235, falsebb);
      goto <D.47314>;
      <D.47312>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      if (D.47236 == 0B) goto <D.47324>; else goto <D.47326>;
      <D.47326>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47327 = D.47236->opcode;
      D.47328 = D.47327 != 442;
      D.47329 = D.47327 != 759;
      D.47330 = D.47328 & D.47329;
      if (D.47330 != 0) goto <D.47331>; else goto <D.47325>;
      <D.47331>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47332 = D.47236->opcode;
      D.47333 = D.47332 + 64985;
      D.47334 = D.47333 > 9;
      D.47335 = D.47332 + 64878;
      D.47336 = D.47335 > 9;
      D.47337 = D.47334 & D.47336;
      if (D.47337 != 0) goto <D.47338>; else goto <D.47325>;
      <D.47338>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47275 = D.47236->opcode;
      D.47276 = D.47275 + 64888;
      if (D.47276 > 9) goto <D.47324>; else goto <D.47325>;
      <D.47324>:
      D.47235 = cfg->cbb;
      mono_link_bblock (cfg, D.47235, falsebb);
      <D.47325>:
      <D.47314>:
      D.47235 = cfg->cbb;
      D.47235->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.47339>;
      <D.47306>:
      D.47235 = cfg->cbb;
      D.47235->extended = 1;
      <D.47339>:
      <D.47296>:
    }
    <D.47224>:
    tls_get = mono_get_jit_tls_intrinsic (cfg);
    if (tls_get == 0B) goto <D.47340>; else goto <D.47341>;
    <D.47340>:
    stderr.454 = stderr;
    fprintf (stderr.454, "error: --debug=casts not supported on this platform.\n.");
    exit (1);
    <D.47341>:
    D.47235 = cfg->cbb;
    D.47236 = D.47235->last_ins;
    if (D.47236 != 0B) goto <D.47343>; else goto <D.47344>;
    <D.47343>:
    D.47235 = cfg->cbb;
    D.47236 = D.47235->last_ins;
    D.47236->next = tls_get;
    D.47235 = cfg->cbb;
    D.47236 = D.47235->last_ins;
    tls_get->prev = D.47236;
    D.47235 = cfg->cbb;
    D.47235->last_ins = tls_get;
    goto <D.47345>;
    <D.47344>:
    D.47235 = cfg->cbb;
    D.47235 = cfg->cbb;
    D.47235->last_ins = tls_get;
    D.47236 = D.47235->last_ins;
    D.47235->code = D.47236;
    <D.47345>:
    {
      struct MonoInst * inst;

      D.47225 = cfg->mempool;
      inst = mono_mempool_alloc (D.47225, 56);
      inst->data.op[1].const_val = 0;
      D.47346 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47346;
      inst->prev = 0B;
      D.47347 = inst->prev;
      inst->next = D.47347;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47348 = inst->sreg3;
      inst->sreg2 = D.47348;
      D.47349 = inst->sreg2;
      inst->sreg1 = D.47349;
      D.47234 = cfg->ip;
      inst->cil_code = D.47234;
      inst->dreg = vtable_reg;
      inst->sreg1 = obj_reg;
      inst->data.op[0].const_val = 0;
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      if (D.47236 != 0B) goto <D.47350>; else goto <D.47351>;
      <D.47350>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47236->next = inst;
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      inst->prev = D.47236;
      D.47235 = cfg->cbb;
      D.47235->last_ins = inst;
      goto <D.47352>;
      <D.47351>:
      D.47235 = cfg->cbb;
      D.47235 = cfg->cbb;
      D.47235->last_ins = inst;
      D.47236 = D.47235->last_ins;
      D.47235->code = D.47236;
      <D.47352>:
    }
    {
      struct MonoInst * inst;

      D.47225 = cfg->mempool;
      inst = mono_mempool_alloc (D.47225, 56);
      inst->data.op[1].const_val = 0;
      D.47353 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47353;
      inst->prev = 0B;
      D.47354 = inst->prev;
      inst->next = D.47354;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47355 = inst->sreg3;
      inst->sreg2 = D.47355;
      D.47356 = inst->sreg2;
      inst->sreg1 = D.47356;
      D.47234 = cfg->ip;
      inst->cil_code = D.47234;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      if (D.47236 != 0B) goto <D.47357>; else goto <D.47358>;
      <D.47357>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47236->next = inst;
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      inst->prev = D.47236;
      D.47235 = cfg->cbb;
      D.47235->last_ins = inst;
      goto <D.47359>;
      <D.47358>:
      D.47235 = cfg->cbb;
      D.47235 = cfg->cbb;
      D.47235->last_ins = inst;
      D.47236 = D.47235->last_ins;
      D.47235->code = D.47236;
      <D.47359>:
    }
    {
      struct MonoInst * inst;

      D.47225 = cfg->mempool;
      inst = mono_mempool_alloc (D.47225, 56);
      inst->data.op[1].const_val = 0;
      D.47360 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47360;
      inst->prev = 0B;
      D.47361 = inst->prev;
      inst->next = D.47361;
      inst->opcode = 374;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47362 = inst->sreg3;
      inst->sreg2 = D.47362;
      D.47363 = inst->sreg2;
      inst->sreg1 = D.47363;
      D.47234 = cfg->ip;
      inst->cil_code = D.47234;
      inst->sreg1 = klass_reg;
      D.47364 = tls_get->dreg;
      inst->dreg = D.47364;
      inst->data.op[0].const_val = 48;
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      if (D.47236 != 0B) goto <D.47365>; else goto <D.47366>;
      <D.47365>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47236->next = inst;
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      inst->prev = D.47236;
      D.47235 = cfg->cbb;
      D.47235->last_ins = inst;
      goto <D.47367>;
      <D.47366>:
      D.47235 = cfg->cbb;
      D.47235 = cfg->cbb;
      D.47235->last_ins = inst;
      D.47236 = D.47235->last_ins;
      D.47235->code = D.47236;
      <D.47367>:
    }
    {
      struct MonoInst * inst;

      D.47225 = cfg->mempool;
      inst = mono_mempool_alloc (D.47225, 56);
      inst->data.op[1].const_val = 0;
      D.47368 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47368;
      inst->prev = 0B;
      D.47369 = inst->prev;
      inst->next = D.47369;
      inst->opcode = 362;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47370 = inst->sreg3;
      inst->sreg2 = D.47370;
      D.47371 = inst->sreg2;
      inst->sreg1 = D.47371;
      D.47234 = cfg->ip;
      inst->cil_code = D.47234;
      inst->dreg = to_klass_reg;
      inst->data.op[0].p = klass;
      inst->type = 3;
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      if (D.47236 != 0B) goto <D.47372>; else goto <D.47373>;
      <D.47372>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47236->next = inst;
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      inst->prev = D.47236;
      D.47235 = cfg->cbb;
      D.47235->last_ins = inst;
      goto <D.47374>;
      <D.47373>:
      D.47235 = cfg->cbb;
      D.47235 = cfg->cbb;
      D.47235->last_ins = inst;
      D.47236 = D.47235->last_ins;
      D.47235->code = D.47236;
      <D.47374>:
    }
    {
      struct MonoInst * inst;

      D.47225 = cfg->mempool;
      inst = mono_mempool_alloc (D.47225, 56);
      inst->data.op[1].const_val = 0;
      D.47375 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47375;
      inst->prev = 0B;
      D.47376 = inst->prev;
      inst->next = D.47376;
      inst->opcode = 374;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47377 = inst->sreg3;
      inst->sreg2 = D.47377;
      D.47378 = inst->sreg2;
      inst->sreg1 = D.47378;
      D.47234 = cfg->ip;
      inst->cil_code = D.47234;
      inst->sreg1 = to_klass_reg;
      D.47364 = tls_get->dreg;
      inst->dreg = D.47364;
      inst->data.op[0].const_val = 52;
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      if (D.47236 != 0B) goto <D.47379>; else goto <D.47380>;
      <D.47379>:
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      D.47236->next = inst;
      D.47235 = cfg->cbb;
      D.47236 = D.47235->last_ins;
      inst->prev = D.47236;
      D.47235 = cfg->cbb;
      D.47235->last_ins = inst;
      goto <D.47381>;
      <D.47380>:
      D.47235 = cfg->cbb;
      D.47235 = cfg->cbb;
      D.47235->last_ins = inst;
      D.47236 = D.47235->last_ins;
      D.47235->code = D.47236;
      <D.47381>:
    }
    if (null_check != 0) goto <D.47382>; else goto <D.47383>;
    <D.47382>:
    D.47384 = is_null_bb->cil_code;
    if (D.47384 != 0B) goto <D.47385>; else goto <D.47386>;
    <D.47385>:
    D.47255 = cfg->cil_offset_to_bb;
    D.47384 = is_null_bb->cil_code;
    D.47387 = (int) D.47384;
    D.47257 = cfg->cil_start;
    D.47258 = (int) D.47257;
    D.47388 = D.47387 - D.47258;
    D.47389 = (unsigned int) D.47388;
    D.47390 = D.47389 * 4;
    D.47391 = D.47255 + D.47390;
    *D.47391 = is_null_bb;
    <D.47386>:
    D.47263 = cfg->real_offset;
    is_null_bb->real_offset = D.47263;
    D.47235 = cfg->cbb;
    D.47236 = D.47235->last_ins;
    if (D.47236 != 0B) goto <D.47395>; else goto <D.47392>;
    <D.47395>:
    D.47235 = cfg->cbb;
    D.47236 = D.47235->last_ins;
    D.47396 = D.47236->opcode;
    D.47397 = D.47396 + 64985;
    D.47398 = D.47397 <= 9;
    D.47399 = D.47396 + 64878;
    D.47400 = D.47399 <= 9;
    D.47401 = D.47398 | D.47400;
    if (D.47401 != 0) goto <D.47393>; else goto <D.47402>;
    <D.47402>:
    D.47235 = cfg->cbb;
    D.47236 = D.47235->last_ins;
    D.47275 = D.47236->opcode;
    D.47276 = D.47275 + 64888;
    if (D.47276 <= 9) goto <D.47393>; else goto <D.47392>;
    <D.47393>:
    D.47235 = cfg->cbb;
    D.47236 = D.47235->last_ins;
    D.47277 = D.47236->data.op[1].many_blocks;
    D.47278 = D.47277 + 4;
    D.47279 = *D.47278;
    if (D.47279 == 0B) goto <D.47403>; else goto <D.47392>;
    <D.47403>:
    D.47235 = cfg->cbb;
    D.47236 = D.47235->last_ins;
    D.47277 = D.47236->data.op[1].many_blocks;
    D.47278 = D.47277 + 4;
    *D.47278 = is_null_bb;
    D.47235 = cfg->cbb;
    mono_link_bblock (cfg, D.47235, is_null_bb);
    goto <D.47394>;
    <D.47392>:
    D.47235 = cfg->cbb;
    D.47236 = D.47235->last_ins;
    if (D.47236 == 0B) goto <D.47404>; else goto <D.47406>;
    <D.47406>:
    D.47235 = cfg->cbb;
    D.47236 = D.47235->last_ins;
    D.47407 = D.47236->opcode;
    D.47408 = D.47407 != 442;
    D.47409 = D.47407 != 759;
    D.47410 = D.47408 & D.47409;
    if (D.47410 != 0) goto <D.47411>; else goto <D.47405>;
    <D.47411>:
    D.47235 = cfg->cbb;
    D.47236 = D.47235->last_ins;
    D.47412 = D.47236->opcode;
    D.47413 = D.47412 + 64985;
    D.47414 = D.47413 > 9;
    D.47415 = D.47412 + 64878;
    D.47416 = D.47415 > 9;
    D.47417 = D.47414 & D.47416;
    if (D.47417 != 0) goto <D.47418>; else goto <D.47405>;
    <D.47418>:
    D.47235 = cfg->cbb;
    D.47236 = D.47235->last_ins;
    D.47275 = D.47236->opcode;
    D.47276 = D.47275 + 64888;
    if (D.47276 > 9) goto <D.47404>; else goto <D.47405>;
    <D.47404>:
    D.47235 = cfg->cbb;
    mono_link_bblock (cfg, D.47235, is_null_bb);
    <D.47405>:
    <D.47394>:
    D.47235 = cfg->cbb;
    D.47235->next_bb = is_null_bb;
    cfg->cbb = is_null_bb;
    if (out_bblock != 0B) goto <D.47419>; else goto <D.47420>;
    <D.47419>:
    D.47235 = cfg->cbb;
    *out_bblock = D.47235;
    <D.47420>:
    <D.47383>:
  }
  <D.47219>:
}


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

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


reset_cast_details (struct MonoCompile * cfg)
{
  struct MonoDebugOptions * D.47423;
  int D.47424;
  struct MonoBasicBlock * D.47427;
  struct MonoInst * D.47428;
  struct MonoMemPool * D.47432;
  int D.47433;
  struct MonoInst * D.47434;
  int D.47435;
  int D.47436;
  const unsigned char * D.47437;
  int D.47438;

  D.47423 = mini_get_debug_options ();
  D.47424 = D.47423->better_cast_details;
  if (D.47424 != 0) goto <D.47425>; else goto <D.47426>;
  <D.47425>:
  {
    struct MonoInst * tls_get;

    tls_get = mono_get_jit_tls_intrinsic (cfg);
    D.47427 = cfg->cbb;
    D.47428 = D.47427->last_ins;
    if (D.47428 != 0B) goto <D.47429>; else goto <D.47430>;
    <D.47429>:
    D.47427 = cfg->cbb;
    D.47428 = D.47427->last_ins;
    D.47428->next = tls_get;
    D.47427 = cfg->cbb;
    D.47428 = D.47427->last_ins;
    tls_get->prev = D.47428;
    D.47427 = cfg->cbb;
    D.47427->last_ins = tls_get;
    goto <D.47431>;
    <D.47430>:
    D.47427 = cfg->cbb;
    D.47427 = cfg->cbb;
    D.47427->last_ins = tls_get;
    D.47428 = D.47427->last_ins;
    D.47427->code = D.47428;
    <D.47431>:
    {
      struct MonoInst * inst;

      D.47432 = cfg->mempool;
      inst = mono_mempool_alloc (D.47432, 56);
      inst->data.op[1].const_val = 0;
      D.47433 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47433;
      inst->prev = 0B;
      D.47434 = inst->prev;
      inst->next = D.47434;
      inst->opcode = 381;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47435 = inst->sreg3;
      inst->sreg2 = D.47435;
      D.47436 = inst->sreg2;
      inst->sreg1 = D.47436;
      D.47437 = cfg->ip;
      inst->cil_code = D.47437;
      D.47438 = tls_get->dreg;
      inst->dreg = D.47438;
      inst->data.op[0].const_val = 48;
      inst->data.op[1].const_val = 0;
      D.47427 = cfg->cbb;
      D.47428 = D.47427->last_ins;
      if (D.47428 != 0B) goto <D.47439>; else goto <D.47440>;
      <D.47439>:
      D.47427 = cfg->cbb;
      D.47428 = D.47427->last_ins;
      D.47428->next = inst;
      D.47427 = cfg->cbb;
      D.47428 = D.47427->last_ins;
      inst->prev = D.47428;
      D.47427 = cfg->cbb;
      D.47427->last_ins = inst;
      goto <D.47441>;
      <D.47440>:
      D.47427 = cfg->cbb;
      D.47427 = cfg->cbb;
      D.47427->last_ins = inst;
      D.47428 = D.47427->last_ins;
      D.47427->code = D.47428;
      <D.47441>:
    }
  }
  <D.47426>:
}


handle_isinst (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * src, int context_used)
{
  unsigned int D.47442;
  unsigned int D.47443;
  struct MonoMemPool * D.47448;
  void * D.47449;
  struct MonoInst * D.47450;
  int D.47451;
  struct MonoInst * D.47452;
  int D.47453;
  int D.47454;
  const unsigned char * D.47455;
  unsigned int D.47456;
  int D.47457;
  int D.47458;
  struct MonoBasicBlock * D.47459;
  struct MonoInst * D.47460;
  struct MonoInst * D.47464;
  unsigned int D.47465;
  unsigned int D.47466;
  unsigned int D.47467;
  int D.47468;
  unsigned int D.47469;
  unsigned int D.47470;
  int D.47471;
  unsigned int D.47472;
  unsigned int D.47473;
  int D.47474;
  int D.47475;
  struct MonoInst * D.47476;
  int D.47477;
  int D.47478;
  int D.47482;
  struct MonoInst * D.47483;
  int D.47484;
  int D.47485;
  int D.47489;
  struct MonoInst * D.47490;
  int D.47491;
  int D.47492;
  unsigned int D.47495;
  unsigned int D.47496;
  int D.47497;
  unsigned char * D.47501;
  struct MonoBasicBlock * * D.47504;
  int D.47505;
  unsigned char * D.47506;
  int D.47507;
  int D.47508;
  unsigned int D.47509;
  unsigned int D.47510;
  struct MonoBasicBlock * * D.47511;
  unsigned int D.47512;
  short unsigned int D.47517;
  short unsigned int D.47518;
  _Bool D.47519;
  short unsigned int D.47520;
  _Bool D.47521;
  _Bool D.47522;
  short unsigned int D.47524;
  short unsigned int D.47525;
  struct MonoBasicBlock * * D.47526;
  struct MonoBasicBlock * * D.47527;
  struct MonoBasicBlock * D.47528;
  short unsigned int D.47533;
  _Bool D.47534;
  _Bool D.47535;
  _Bool D.47536;
  short unsigned int D.47538;
  short unsigned int D.47539;
  _Bool D.47540;
  short unsigned int D.47541;
  _Bool D.47542;
  _Bool D.47543;
  void * D.47546;
  struct MonoBasicBlock * * D.47547;
  struct MonoBasicBlock * * D.47548;
  unsigned char D.47552;
  unsigned char D.47553;
  unsigned int D.47556;
  unsigned int D.47557;
  int D.47558;
  short unsigned int D.47565;
  short unsigned int D.47566;
  _Bool D.47567;
  short unsigned int D.47568;
  _Bool D.47569;
  _Bool D.47570;
  short unsigned int D.47576;
  _Bool D.47577;
  _Bool D.47578;
  _Bool D.47579;
  short unsigned int D.47581;
  short unsigned int D.47582;
  _Bool D.47583;
  short unsigned int D.47584;
  _Bool D.47585;
  _Bool D.47586;
  int D.47589;
  struct MonoInst * D.47590;
  int D.47591;
  int D.47592;
  unsigned int D.47596;
  unsigned int D.47597;
  _Bool D.47600;
  long int D.47601;
  long int D.47602;
  unsigned int D.47606;
  unsigned char D.47607;
  unsigned int D.47610;
  unsigned int D.47611;
  int D.47614;
  struct MonoInst * D.47615;
  int D.47616;
  int D.47617;
  int D.47621;
  struct MonoInst * D.47622;
  int D.47623;
  int D.47624;
  int D.47625;
  int D.47629;
  struct MonoInst * D.47630;
  int D.47631;
  int D.47632;
  unsigned int D.47635;
  unsigned int D.47636;
  int D.47637;
  unsigned char * D.47641;
  int D.47644;
  int D.47645;
  unsigned int D.47646;
  unsigned int D.47647;
  struct MonoBasicBlock * * D.47648;
  short unsigned int D.47653;
  short unsigned int D.47654;
  _Bool D.47655;
  short unsigned int D.47656;
  _Bool D.47657;
  _Bool D.47658;
  short unsigned int D.47664;
  _Bool D.47665;
  _Bool D.47666;
  _Bool D.47667;
  short unsigned int D.47669;
  short unsigned int D.47670;
  _Bool D.47671;
  short unsigned int D.47672;
  _Bool D.47673;
  _Bool D.47674;
  void * D.47677;
  struct MonoBasicBlock * * D.47678;
  struct MonoBasicBlock * * D.47679;
  unsigned int D.47685;
  unsigned int D.47686;
  int D.47687;
  short unsigned int D.47694;
  short unsigned int D.47695;
  _Bool D.47696;
  short unsigned int D.47697;
  _Bool D.47698;
  _Bool D.47699;
  short unsigned int D.47705;
  _Bool D.47706;
  _Bool D.47707;
  _Bool D.47708;
  short unsigned int D.47710;
  short unsigned int D.47711;
  _Bool D.47712;
  short unsigned int D.47713;
  _Bool D.47714;
  _Bool D.47715;
  int D.47718;
  struct MonoInst * D.47719;
  int D.47720;
  int D.47721;
  int D.47725;
  struct MonoInst * D.47726;
  int D.47727;
  int D.47728;
  struct MonoClass * D.47732;
  struct MonoClass * D.47733;
  unsigned int D.47736;
  int D.47737;
  struct MonoInst * D.47738;
  int D.47739;
  int D.47740;
  struct MonoClass * D.47744;
  struct MonoClass * D.47745;
  int D.47746;
  struct MonoInst * D.47747;
  int D.47748;
  int D.47749;
  unsigned int D.47752;
  unsigned int D.47753;
  int D.47754;
  unsigned char * D.47758;
  int D.47761;
  int D.47762;
  unsigned int D.47763;
  unsigned int D.47764;
  struct MonoBasicBlock * * D.47765;
  short unsigned int D.47770;
  short unsigned int D.47771;
  _Bool D.47772;
  short unsigned int D.47773;
  _Bool D.47774;
  _Bool D.47775;
  short unsigned int D.47781;
  _Bool D.47782;
  _Bool D.47783;
  _Bool D.47784;
  short unsigned int D.47786;
  short unsigned int D.47787;
  _Bool D.47788;
  short unsigned int D.47789;
  _Bool D.47790;
  _Bool D.47791;
  void * D.47794;
  struct MonoBasicBlock * * D.47795;
  struct MonoBasicBlock * * D.47796;
  unsigned int D.47802;
  unsigned int D.47803;
  int D.47804;
  short unsigned int D.47811;
  short unsigned int D.47812;
  _Bool D.47813;
  short unsigned int D.47814;
  _Bool D.47815;
  _Bool D.47816;
  short unsigned int D.47822;
  _Bool D.47823;
  _Bool D.47824;
  _Bool D.47825;
  short unsigned int D.47827;
  short unsigned int D.47828;
  _Bool D.47829;
  short unsigned int D.47830;
  _Bool D.47831;
  _Bool D.47832;
  int D.47838;
  struct MonoInst * D.47839;
  int D.47840;
  int D.47841;
  unsigned int D.47844;
  unsigned int D.47845;
  int D.47846;
  unsigned char * D.47850;
  int D.47853;
  int D.47854;
  unsigned int D.47855;
  unsigned int D.47856;
  struct MonoBasicBlock * * D.47857;
  short unsigned int D.47862;
  short unsigned int D.47863;
  _Bool D.47864;
  short unsigned int D.47865;
  _Bool D.47866;
  _Bool D.47867;
  short unsigned int D.47873;
  _Bool D.47874;
  _Bool D.47875;
  _Bool D.47876;
  short unsigned int D.47878;
  short unsigned int D.47879;
  _Bool D.47880;
  short unsigned int D.47881;
  _Bool D.47882;
  _Bool D.47883;
  void * D.47886;
  struct MonoBasicBlock * * D.47887;
  struct MonoBasicBlock * * D.47888;
  unsigned int D.47894;
  unsigned int D.47895;
  int D.47896;
  short unsigned int D.47903;
  short unsigned int D.47904;
  _Bool D.47905;
  short unsigned int D.47906;
  _Bool D.47907;
  _Bool D.47908;
  short unsigned int D.47914;
  _Bool D.47915;
  _Bool D.47916;
  _Bool D.47917;
  short unsigned int D.47919;
  short unsigned int D.47920;
  _Bool D.47921;
  short unsigned int D.47922;
  _Bool D.47923;
  _Bool D.47924;
  int D.47930;
  struct MonoInst * D.47931;
  int D.47932;
  int D.47933;
  unsigned int D.47936;
  unsigned int D.47937;
  int D.47938;
  unsigned char * D.47942;
  int D.47945;
  int D.47946;
  unsigned int D.47947;
  unsigned int D.47948;
  struct MonoBasicBlock * * D.47949;
  short unsigned int D.47954;
  short unsigned int D.47955;
  _Bool D.47956;
  short unsigned int D.47957;
  _Bool D.47958;
  _Bool D.47959;
  short unsigned int D.47965;
  _Bool D.47966;
  _Bool D.47967;
  _Bool D.47968;
  short unsigned int D.47970;
  short unsigned int D.47971;
  _Bool D.47972;
  short unsigned int D.47973;
  _Bool D.47974;
  _Bool D.47975;
  void * D.47978;
  struct MonoBasicBlock * * D.47979;
  struct MonoBasicBlock * * D.47980;
  unsigned int D.47986;
  unsigned int D.47987;
  int D.47988;
  short unsigned int D.47995;
  short unsigned int D.47996;
  _Bool D.47997;
  short unsigned int D.47998;
  _Bool D.47999;
  _Bool D.48000;
  short unsigned int D.48006;
  _Bool D.48007;
  _Bool D.48008;
  _Bool D.48009;
  short unsigned int D.48011;
  short unsigned int D.48012;
  _Bool D.48013;
  short unsigned int D.48014;
  _Bool D.48015;
  _Bool D.48016;
  unsigned int D.48020;
  unsigned int D.48021;
  unsigned char D.48027;
  unsigned int D.48030;
  int D.48031;
  struct MonoInst * D.48032;
  int D.48033;
  int D.48034;
  int D.48038;
  struct MonoInst * D.48039;
  int D.48040;
  int D.48041;
  int D.48045;
  struct MonoInst * D.48046;
  int D.48047;
  int D.48048;
  unsigned int D.48051;
  unsigned int D.48052;
  int D.48053;
  unsigned char * D.48057;
  int D.48060;
  int D.48061;
  unsigned int D.48062;
  unsigned int D.48063;
  struct MonoBasicBlock * * D.48064;
  short unsigned int D.48069;
  short unsigned int D.48070;
  _Bool D.48071;
  short unsigned int D.48072;
  _Bool D.48073;
  _Bool D.48074;
  short unsigned int D.48080;
  _Bool D.48081;
  _Bool D.48082;
  _Bool D.48083;
  short unsigned int D.48085;
  short unsigned int D.48086;
  _Bool D.48087;
  short unsigned int D.48088;
  _Bool D.48089;
  _Bool D.48090;
  void * D.48093;
  struct MonoBasicBlock * * D.48094;
  struct MonoBasicBlock * * D.48095;
  unsigned int D.48101;
  unsigned int D.48102;
  int D.48103;
  short unsigned int D.48110;
  short unsigned int D.48111;
  _Bool D.48112;
  short unsigned int D.48113;
  _Bool D.48114;
  _Bool D.48115;
  short unsigned int D.48121;
  _Bool D.48122;
  _Bool D.48123;
  _Bool D.48124;
  short unsigned int D.48126;
  short unsigned int D.48127;
  _Bool D.48128;
  short unsigned int D.48129;
  _Bool D.48130;
  _Bool D.48131;
  int D.48135;
  int D.48140;
  struct MonoInst * D.48141;
  int D.48142;
  int D.48143;
  unsigned char D.48150;
  unsigned int D.48152;
  unsigned int D.48153;
  unsigned int D.48155;
  struct MonoDomain * D.48161;
  int D.48164;
  struct MonoInst * D.48165;
  int D.48166;
  int D.48167;
  int vt.455;
  int D.48173;
  struct MonoInst * D.48174;
  int D.48175;
  int D.48176;
  int D.48180;
  struct MonoInst * D.48181;
  int D.48182;
  int D.48183;
  int klass.456;
  int D.48188;
  struct MonoInst * D.48189;
  int D.48190;
  int D.48191;
  unsigned int D.48194;
  unsigned int D.48195;
  int D.48196;
  unsigned char * D.48200;
  int D.48203;
  int D.48204;
  unsigned int D.48205;
  unsigned int D.48206;
  struct MonoBasicBlock * * D.48207;
  short unsigned int D.48212;
  short unsigned int D.48213;
  _Bool D.48214;
  short unsigned int D.48215;
  _Bool D.48216;
  _Bool D.48217;
  short unsigned int D.48223;
  _Bool D.48224;
  _Bool D.48225;
  _Bool D.48226;
  short unsigned int D.48228;
  short unsigned int D.48229;
  _Bool D.48230;
  short unsigned int D.48231;
  _Bool D.48232;
  _Bool D.48233;
  void * D.48236;
  struct MonoBasicBlock * * D.48237;
  struct MonoBasicBlock * * D.48238;
  unsigned int D.48244;
  unsigned int D.48245;
  int D.48246;
  short unsigned int D.48253;
  short unsigned int D.48254;
  _Bool D.48255;
  short unsigned int D.48256;
  _Bool D.48257;
  _Bool D.48258;
  short unsigned int D.48264;
  _Bool D.48265;
  _Bool D.48266;
  _Bool D.48267;
  short unsigned int D.48269;
  short unsigned int D.48270;
  _Bool D.48271;
  short unsigned int D.48272;
  _Bool D.48273;
  _Bool D.48274;
  int D.48277;
  struct MonoInst * D.48278;
  int D.48279;
  int D.48280;
  unsigned int D.48283;
  unsigned int D.48284;
  int D.48285;
  unsigned char * D.48289;
  int D.48292;
  int D.48293;
  unsigned int D.48294;
  unsigned int D.48295;
  struct MonoBasicBlock * * D.48296;
  short unsigned int D.48301;
  short unsigned int D.48302;
  _Bool D.48303;
  short unsigned int D.48304;
  _Bool D.48305;
  _Bool D.48306;
  short unsigned int D.48312;
  _Bool D.48313;
  _Bool D.48314;
  _Bool D.48315;
  short unsigned int D.48317;
  short unsigned int D.48318;
  _Bool D.48319;
  short unsigned int D.48320;
  _Bool D.48321;
  _Bool D.48322;
  void * D.48325;
  struct MonoBasicBlock * * D.48326;
  struct MonoBasicBlock * * D.48327;
  unsigned int D.48333;
  unsigned int D.48334;
  int D.48335;
  short unsigned int D.48342;
  short unsigned int D.48343;
  _Bool D.48344;
  short unsigned int D.48345;
  _Bool D.48346;
  _Bool D.48347;
  short unsigned int D.48353;
  _Bool D.48354;
  _Bool D.48355;
  _Bool D.48356;
  short unsigned int D.48358;
  short unsigned int D.48359;
  _Bool D.48360;
  short unsigned int D.48361;
  _Bool D.48362;
  _Bool D.48363;
  int D.48366;
  struct MonoInst * D.48367;
  int D.48368;
  int D.48369;
  unsigned char * D.48373;
  int D.48376;
  int D.48377;
  unsigned int D.48378;
  unsigned int D.48379;
  struct MonoBasicBlock * * D.48380;
  short unsigned int D.48385;
  short unsigned int D.48386;
  _Bool D.48387;
  short unsigned int D.48388;
  _Bool D.48389;
  _Bool D.48390;
  short unsigned int D.48396;
  _Bool D.48397;
  _Bool D.48398;
  _Bool D.48399;
  short unsigned int D.48401;
  short unsigned int D.48402;
  _Bool D.48403;
  short unsigned int D.48404;
  _Bool D.48405;
  _Bool D.48406;
  int D.48408;
  struct MonoInst * D.48409;
  int D.48410;
  int D.48411;
  int D.48415;
  struct MonoInst * D.48416;
  int D.48417;
  int D.48418;
  unsigned int D.48421;
  unsigned int D.48422;
  int D.48423;
  unsigned char * D.48427;
  int D.48430;
  int D.48431;
  unsigned int D.48432;
  unsigned int D.48433;
  struct MonoBasicBlock * * D.48434;
  short unsigned int D.48439;
  short unsigned int D.48440;
  _Bool D.48441;
  short unsigned int D.48442;
  _Bool D.48443;
  _Bool D.48444;
  short unsigned int D.48450;
  _Bool D.48451;
  _Bool D.48452;
  _Bool D.48453;
  short unsigned int D.48455;
  short unsigned int D.48456;
  _Bool D.48457;
  short unsigned int D.48458;
  _Bool D.48459;
  _Bool D.48460;
  void * D.48463;
  struct MonoBasicBlock * * D.48464;
  struct MonoBasicBlock * * D.48465;
  unsigned int D.48471;
  unsigned int D.48472;
  int D.48473;
  short unsigned int D.48480;
  short unsigned int D.48481;
  _Bool D.48482;
  short unsigned int D.48483;
  _Bool D.48484;
  _Bool D.48485;
  short unsigned int D.48491;
  _Bool D.48492;
  _Bool D.48493;
  _Bool D.48494;
  short unsigned int D.48496;
  short unsigned int D.48497;
  _Bool D.48498;
  short unsigned int D.48499;
  _Bool D.48500;
  _Bool D.48501;
  unsigned char * D.48504;
  int D.48507;
  int D.48508;
  unsigned int D.48509;
  unsigned int D.48510;
  struct MonoBasicBlock * * D.48511;
  short unsigned int D.48516;
  short unsigned int D.48517;
  _Bool D.48518;
  short unsigned int D.48519;
  _Bool D.48520;
  _Bool D.48521;
  short unsigned int D.48527;
  _Bool D.48528;
  _Bool D.48529;
  _Bool D.48530;
  short unsigned int D.48532;
  short unsigned int D.48533;
  _Bool D.48534;
  short unsigned int D.48535;
  _Bool D.48536;
  _Bool D.48537;
  unsigned char * D.48539;
  int D.48542;
  int D.48543;
  unsigned int D.48544;
  unsigned int D.48545;
  struct MonoBasicBlock * * D.48546;
  short unsigned int D.48551;
  short unsigned int D.48552;
  _Bool D.48553;
  short unsigned int D.48554;
  _Bool D.48555;
  _Bool D.48556;
  short unsigned int D.48562;
  _Bool D.48563;
  _Bool D.48564;
  _Bool D.48565;
  short unsigned int D.48567;
  short unsigned int D.48568;
  _Bool D.48569;
  short unsigned int D.48570;
  _Bool D.48571;
  _Bool D.48572;
  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.47442 = alloc_preg (cfg);
  vtable_reg = (int) D.47442;
  D.47443 = alloc_ireg_ref (cfg);
  res_reg = (int) D.47443;
  klass_inst = 0B;
  if (context_used != 0) goto <D.47444>; else goto <D.47445>;
  <D.47444>:
  {
    struct MonoInst * args[3];

    try
      {
        mini_class_has_reference_variant_generic_argument (cfg, klass, context_used);
        if (1 != 0) goto <D.47446>; else goto <D.47447>;
        <D.47446>:
        {
          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.47448 = cfg->mempool;
          D.47449 = mono_mempool_alloc (D.47448, 56);
          args[1] = D.47449;
          D.47450 = args[1];
          D.47450 = args[1];
          D.47450->data.op[1].const_val = 0;
          D.47451 = D.47450->data.op[1].const_val;
          D.47450->data.op[0].const_val = D.47451;
          D.47450 = args[1];
          D.47450 = args[1];
          D.47450->prev = 0B;
          D.47452 = D.47450->prev;
          D.47450->next = D.47452;
          D.47450 = args[1];
          D.47450->opcode = 388;
          D.47450 = args[1];
          D.47450->flags = 0;
          D.47450 = args[1];
          D.47450->type = 0;
          D.47450 = args[1];
          D.47450->dreg = -1;
          D.47450 = args[1];
          D.47450 = args[1];
          D.47450 = args[1];
          D.47450->sreg3 = -1;
          D.47453 = D.47450->sreg3;
          D.47450->sreg2 = D.47453;
          D.47454 = D.47450->sreg2;
          D.47450->sreg1 = D.47454;
          D.47450 = args[1];
          D.47455 = cfg->ip;
          D.47450->cil_code = D.47455;
          D.47450 = args[1];
          D.47456 = alloc_preg (cfg);
          D.47457 = (int) D.47456;
          D.47450->dreg = D.47457;
          D.47450 = args[1];
          D.47458 = cache_ins->dreg;
          D.47450->sreg1 = D.47458;
          D.47450 = args[1];
          D.47450->data.op[0].const_val = 4;
          D.47450 = args[1];
          D.47450->type = 1;
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          if (D.47460 != 0B) goto <D.47461>; else goto <D.47462>;
          <D.47461>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47450 = args[1];
          D.47460->next = D.47450;
          D.47450 = args[1];
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47450->prev = D.47460;
          D.47459 = cfg->cbb;
          D.47450 = args[1];
          D.47459->last_ins = D.47450;
          goto <D.47463>;
          <D.47462>:
          D.47459 = cfg->cbb;
          D.47459 = cfg->cbb;
          D.47450 = args[1];
          D.47459->last_ins = D.47450;
          D.47460 = D.47459->last_ins;
          D.47459->code = D.47460;
          <D.47463>:
          args[2] = cache_ins;
          D.47464 = mono_emit_method_call (cfg, mono_isinst, &args, 0B);
          return D.47464;
        }
        <D.47447>:
        klass_inst = emit_get_rgctx_klass (cfg, context_used, klass, 1);
      }
    finally
      {
        args = {CLOBBER};
      }
  }
  <D.47445>:
  D.47448 = cfg->mempool;
  is_null_bb = mono_mempool_alloc0 (D.47448, 172);
  D.47465 = cfg->num_bblocks;
  D.47466 = D.47465;
  D.47467 = D.47466 + 1;
  cfg->num_bblocks = D.47467;
  D.47468 = (int) D.47466;
  is_null_bb->block_num = D.47468;
  D.47448 = cfg->mempool;
  false_bb = mono_mempool_alloc0 (D.47448, 172);
  D.47465 = cfg->num_bblocks;
  D.47469 = D.47465;
  D.47470 = D.47469 + 1;
  cfg->num_bblocks = D.47470;
  D.47471 = (int) D.47469;
  false_bb->block_num = D.47471;
  D.47448 = cfg->mempool;
  end_bb = mono_mempool_alloc0 (D.47448, 172);
  D.47465 = cfg->num_bblocks;
  D.47472 = D.47465;
  D.47473 = D.47472 + 1;
  cfg->num_bblocks = D.47473;
  D.47474 = (int) D.47472;
  end_bb->block_num = D.47474;
  D.47448 = cfg->mempool;
  ins = mono_mempool_alloc (D.47448, 56);
  ins->data.op[1].const_val = 0;
  D.47475 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.47475;
  ins->prev = 0B;
  D.47476 = ins->prev;
  ins->next = D.47476;
  ins->opcode = 424;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.47477 = ins->sreg3;
  ins->sreg2 = D.47477;
  D.47478 = ins->sreg2;
  ins->sreg1 = D.47478;
  D.47455 = cfg->ip;
  ins->cil_code = D.47455;
  ins->dreg = res_reg;
  ins->sreg1 = obj_reg;
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  if (D.47460 != 0B) goto <D.47479>; else goto <D.47480>;
  <D.47479>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.47460->next = ins;
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  ins->prev = D.47460;
  D.47459 = cfg->cbb;
  D.47459->last_ins = ins;
  goto <D.47481>;
  <D.47480>:
  D.47459 = cfg->cbb;
  D.47459 = cfg->cbb;
  D.47459->last_ins = ins;
  D.47460 = D.47459->last_ins;
  D.47459->code = D.47460;
  <D.47481>:
  ins->type = 6;
  ins->klass = klass;
  {
    struct MonoInst * inst;

    D.47448 = cfg->mempool;
    inst = mono_mempool_alloc (D.47448, 56);
    inst->data.op[1].const_val = 0;
    D.47482 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47482;
    inst->prev = 0B;
    D.47483 = inst->prev;
    inst->next = D.47483;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47484 = inst->sreg3;
    inst->sreg2 = D.47484;
    D.47485 = inst->sreg2;
    inst->sreg1 = D.47485;
    D.47455 = cfg->ip;
    inst->cil_code = D.47455;
    inst->dreg = -1;
    inst->sreg1 = obj_reg;
    inst->data.op[1].const_val = 0;
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    if (D.47460 != 0B) goto <D.47486>; else goto <D.47487>;
    <D.47486>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47460->next = inst;
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    inst->prev = D.47460;
    D.47459 = cfg->cbb;
    D.47459->last_ins = inst;
    goto <D.47488>;
    <D.47487>:
    D.47459 = cfg->cbb;
    D.47459 = cfg->cbb;
    D.47459->last_ins = inst;
    D.47460 = D.47459->last_ins;
    D.47459->code = D.47460;
    <D.47488>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.47448 = cfg->mempool;
    ins = mono_mempool_alloc (D.47448, 56);
    ins->data.op[1].const_val = 0;
    D.47489 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.47489;
    ins->prev = 0B;
    D.47490 = ins->prev;
    ins->next = D.47490;
    ins->opcode = 648;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.47491 = ins->sreg3;
    ins->sreg2 = D.47491;
    D.47492 = ins->sreg2;
    ins->sreg1 = D.47492;
    D.47455 = cfg->ip;
    ins->cil_code = D.47455;
    if (0 != 0) goto <D.47493>; else goto <D.47494>;
    <D.47493>:
    D.47448 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47448, 172);
    D.47465 = cfg->num_bblocks;
    D.47495 = D.47465;
    D.47496 = D.47495 + 1;
    cfg->num_bblocks = D.47496;
    D.47497 = (int) D.47495;
    falsebb->block_num = D.47497;
    ins->data.op[0].target_block = is_null_bb;
    D.47459 = cfg->cbb;
    mono_link_bblock (cfg, D.47459, is_null_bb);
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    if (D.47460 != 0B) goto <D.47498>; else goto <D.47499>;
    <D.47498>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47460->next = ins;
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    ins->prev = D.47460;
    D.47459 = cfg->cbb;
    D.47459->last_ins = ins;
    goto <D.47500>;
    <D.47499>:
    D.47459 = cfg->cbb;
    D.47459 = cfg->cbb;
    D.47459->last_ins = ins;
    D.47460 = D.47459->last_ins;
    D.47459->code = D.47460;
    <D.47500>:
    D.47501 = falsebb->cil_code;
    if (D.47501 != 0B) goto <D.47502>; else goto <D.47503>;
    <D.47502>:
    D.47504 = cfg->cil_offset_to_bb;
    D.47501 = falsebb->cil_code;
    D.47505 = (int) D.47501;
    D.47506 = cfg->cil_start;
    D.47507 = (int) D.47506;
    D.47508 = D.47505 - D.47507;
    D.47509 = (unsigned int) D.47508;
    D.47510 = D.47509 * 4;
    D.47511 = D.47504 + D.47510;
    *D.47511 = falsebb;
    <D.47503>:
    D.47512 = cfg->real_offset;
    falsebb->real_offset = D.47512;
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    if (D.47460 != 0B) goto <D.47516>; else goto <D.47513>;
    <D.47516>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47517 = D.47460->opcode;
    D.47518 = D.47517 + 64985;
    D.47519 = D.47518 <= 9;
    D.47520 = D.47517 + 64878;
    D.47521 = D.47520 <= 9;
    D.47522 = D.47519 | D.47521;
    if (D.47522 != 0) goto <D.47514>; else goto <D.47523>;
    <D.47523>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47524 = D.47460->opcode;
    D.47525 = D.47524 + 64888;
    if (D.47525 <= 9) goto <D.47514>; else goto <D.47513>;
    <D.47514>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47526 = D.47460->data.op[1].many_blocks;
    D.47527 = D.47526 + 4;
    D.47528 = *D.47527;
    if (D.47528 == 0B) goto <D.47529>; else goto <D.47513>;
    <D.47529>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47526 = D.47460->data.op[1].many_blocks;
    D.47527 = D.47526 + 4;
    *D.47527 = falsebb;
    D.47459 = cfg->cbb;
    mono_link_bblock (cfg, D.47459, falsebb);
    goto <D.47515>;
    <D.47513>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    if (D.47460 == 0B) goto <D.47530>; else goto <D.47532>;
    <D.47532>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47533 = D.47460->opcode;
    D.47534 = D.47533 != 442;
    D.47535 = D.47533 != 759;
    D.47536 = D.47534 & D.47535;
    if (D.47536 != 0) goto <D.47537>; else goto <D.47531>;
    <D.47537>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47538 = D.47460->opcode;
    D.47539 = D.47538 + 64985;
    D.47540 = D.47539 > 9;
    D.47541 = D.47538 + 64878;
    D.47542 = D.47541 > 9;
    D.47543 = D.47540 & D.47542;
    if (D.47543 != 0) goto <D.47544>; else goto <D.47531>;
    <D.47544>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47524 = D.47460->opcode;
    D.47525 = D.47524 + 64888;
    if (D.47525 > 9) goto <D.47530>; else goto <D.47531>;
    <D.47530>:
    D.47459 = cfg->cbb;
    mono_link_bblock (cfg, D.47459, falsebb);
    <D.47531>:
    <D.47515>:
    D.47459 = cfg->cbb;
    D.47459->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47545>;
    <D.47494>:
    D.47448 = cfg->mempool;
    D.47546 = mono_mempool_alloc (D.47448, 8);
    ins->data.op[1].many_blocks = D.47546;
    D.47547 = ins->data.op[1].many_blocks;
    *D.47547 = is_null_bb;
    D.47547 = ins->data.op[1].many_blocks;
    D.47548 = D.47547 + 4;
    *D.47548 = 0B;
    D.47459 = cfg->cbb;
    mono_link_bblock (cfg, D.47459, is_null_bb);
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    if (D.47460 != 0B) goto <D.47549>; else goto <D.47550>;
    <D.47549>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47460->next = ins;
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    ins->prev = D.47460;
    D.47459 = cfg->cbb;
    D.47459->last_ins = ins;
    goto <D.47551>;
    <D.47550>:
    D.47459 = cfg->cbb;
    D.47459 = cfg->cbb;
    D.47459->last_ins = ins;
    D.47460 = D.47459->last_ins;
    D.47459->code = D.47460;
    <D.47551>:
    D.47552 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.47553 = D.47552 & 8;
    if (D.47553 == 0) goto <D.47554>; else goto <D.47555>;
    <D.47554>:
    D.47448 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47448, 172);
    D.47465 = cfg->num_bblocks;
    D.47556 = D.47465;
    D.47557 = D.47556 + 1;
    cfg->num_bblocks = D.47557;
    D.47558 = (int) D.47556;
    falsebb->block_num = D.47558;
    D.47547 = ins->data.op[1].many_blocks;
    D.47548 = D.47547 + 4;
    *D.47548 = falsebb;
    D.47459 = cfg->cbb;
    mono_link_bblock (cfg, D.47459, falsebb);
    D.47501 = falsebb->cil_code;
    if (D.47501 != 0B) goto <D.47559>; else goto <D.47560>;
    <D.47559>:
    D.47504 = cfg->cil_offset_to_bb;
    D.47501 = falsebb->cil_code;
    D.47505 = (int) D.47501;
    D.47506 = cfg->cil_start;
    D.47507 = (int) D.47506;
    D.47508 = D.47505 - D.47507;
    D.47509 = (unsigned int) D.47508;
    D.47510 = D.47509 * 4;
    D.47511 = D.47504 + D.47510;
    *D.47511 = falsebb;
    <D.47560>:
    D.47512 = cfg->real_offset;
    falsebb->real_offset = D.47512;
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    if (D.47460 != 0B) goto <D.47564>; else goto <D.47561>;
    <D.47564>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47565 = D.47460->opcode;
    D.47566 = D.47565 + 64985;
    D.47567 = D.47566 <= 9;
    D.47568 = D.47565 + 64878;
    D.47569 = D.47568 <= 9;
    D.47570 = D.47567 | D.47569;
    if (D.47570 != 0) goto <D.47562>; else goto <D.47571>;
    <D.47571>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47524 = D.47460->opcode;
    D.47525 = D.47524 + 64888;
    if (D.47525 <= 9) goto <D.47562>; else goto <D.47561>;
    <D.47562>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47526 = D.47460->data.op[1].many_blocks;
    D.47527 = D.47526 + 4;
    D.47528 = *D.47527;
    if (D.47528 == 0B) goto <D.47572>; else goto <D.47561>;
    <D.47572>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47526 = D.47460->data.op[1].many_blocks;
    D.47527 = D.47526 + 4;
    *D.47527 = falsebb;
    D.47459 = cfg->cbb;
    mono_link_bblock (cfg, D.47459, falsebb);
    goto <D.47563>;
    <D.47561>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    if (D.47460 == 0B) goto <D.47573>; else goto <D.47575>;
    <D.47575>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47576 = D.47460->opcode;
    D.47577 = D.47576 != 442;
    D.47578 = D.47576 != 759;
    D.47579 = D.47577 & D.47578;
    if (D.47579 != 0) goto <D.47580>; else goto <D.47574>;
    <D.47580>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47581 = D.47460->opcode;
    D.47582 = D.47581 + 64985;
    D.47583 = D.47582 > 9;
    D.47584 = D.47581 + 64878;
    D.47585 = D.47584 > 9;
    D.47586 = D.47583 & D.47585;
    if (D.47586 != 0) goto <D.47587>; else goto <D.47574>;
    <D.47587>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47524 = D.47460->opcode;
    D.47525 = D.47524 + 64888;
    if (D.47525 > 9) goto <D.47573>; else goto <D.47574>;
    <D.47573>:
    D.47459 = cfg->cbb;
    mono_link_bblock (cfg, D.47459, falsebb);
    <D.47574>:
    <D.47563>:
    D.47459 = cfg->cbb;
    D.47459->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47588>;
    <D.47555>:
    D.47459 = cfg->cbb;
    D.47459->extended = 1;
    <D.47588>:
    <D.47545>:
  }
  {
    struct MonoInst * inst;

    D.47448 = cfg->mempool;
    inst = mono_mempool_alloc (D.47448, 56);
    inst->data.op[1].const_val = 0;
    D.47589 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47589;
    inst->prev = 0B;
    D.47590 = inst->prev;
    inst->next = D.47590;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47591 = inst->sreg3;
    inst->sreg2 = D.47591;
    D.47592 = inst->sreg2;
    inst->sreg1 = D.47592;
    D.47455 = cfg->ip;
    inst->cil_code = D.47455;
    inst->dreg = vtable_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    if (D.47460 != 0B) goto <D.47593>; else goto <D.47594>;
    <D.47593>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47460->next = inst;
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    inst->prev = D.47460;
    D.47459 = cfg->cbb;
    D.47459->last_ins = inst;
    goto <D.47595>;
    <D.47594>:
    D.47459 = cfg->cbb;
    D.47459 = cfg->cbb;
    D.47459->last_ins = inst;
    D.47460 = D.47459->last_ins;
    D.47459->code = D.47460;
    <D.47595>:
  }
  D.47596 = klass->flags;
  D.47597 = D.47596 & 32;
  if (D.47597 != 0) goto <D.47598>; else goto <D.47599>;
  <D.47598>:
  D.47600 = context_used != 0;
  D.47601 = (long int) D.47600;
  D.47602 = __builtin_expect (D.47601, 0);
  if (D.47602 != 0) goto <D.47603>; else goto <D.47604>;
  <D.47603>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4086, "!context_used");
  <D.47604>:
  mini_emit_iface_cast (cfg, vtable_reg, klass, false_bb, is_null_bb);
  goto <D.47605>;
  <D.47599>:
  {
    int klass_reg;

    D.47606 = alloc_preg (cfg);
    klass_reg = (int) D.47606;
    D.47607 = klass->rank;
    if (D.47607 != 0) goto <D.47608>; else goto <D.47609>;
    <D.47608>:
    {
      int rank_reg;
      int eclass_reg;

      D.47610 = alloc_preg (cfg);
      rank_reg = (int) D.47610;
      D.47611 = alloc_preg (cfg);
      eclass_reg = (int) D.47611;
      D.47600 = context_used != 0;
      D.47601 = (long int) D.47600;
      D.47602 = __builtin_expect (D.47601, 0);
      if (D.47602 != 0) goto <D.47612>; else goto <D.47613>;
      <D.47612>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4096, "!context_used");
      <D.47613>:
      {
        struct MonoInst * inst;

        D.47448 = cfg->mempool;
        inst = mono_mempool_alloc (D.47448, 56);
        inst->data.op[1].const_val = 0;
        D.47614 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.47614;
        inst->prev = 0B;
        D.47615 = inst->prev;
        inst->next = D.47615;
        inst->opcode = 390;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.47616 = inst->sreg3;
        inst->sreg2 = D.47616;
        D.47617 = inst->sreg2;
        inst->sreg1 = D.47617;
        D.47455 = cfg->ip;
        inst->cil_code = D.47455;
        inst->dreg = rank_reg;
        inst->sreg1 = vtable_reg;
        inst->data.op[0].const_val = 22;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 != 0B) goto <D.47618>; else goto <D.47619>;
        <D.47618>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47460->next = inst;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        inst->prev = D.47460;
        D.47459 = cfg->cbb;
        D.47459->last_ins = inst;
        goto <D.47620>;
        <D.47619>:
        D.47459 = cfg->cbb;
        D.47459 = cfg->cbb;
        D.47459->last_ins = inst;
        D.47460 = D.47459->last_ins;
        D.47459->code = D.47460;
        <D.47620>:
      }
      {
        struct MonoInst * inst;

        D.47448 = cfg->mempool;
        inst = mono_mempool_alloc (D.47448, 56);
        inst->data.op[1].const_val = 0;
        D.47621 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.47621;
        inst->prev = 0B;
        D.47622 = inst->prev;
        inst->next = D.47622;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.47623 = inst->sreg3;
        inst->sreg2 = D.47623;
        D.47624 = inst->sreg2;
        inst->sreg1 = D.47624;
        D.47455 = cfg->ip;
        inst->cil_code = D.47455;
        inst->dreg = -1;
        inst->sreg1 = rank_reg;
        D.47607 = klass->rank;
        D.47625 = (int) D.47607;
        inst->data.op[1].const_val = D.47625;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 != 0B) goto <D.47626>; else goto <D.47627>;
        <D.47626>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47460->next = inst;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        inst->prev = D.47460;
        D.47459 = cfg->cbb;
        D.47459->last_ins = inst;
        goto <D.47628>;
        <D.47627>:
        D.47459 = cfg->cbb;
        D.47459 = cfg->cbb;
        D.47459->last_ins = inst;
        D.47460 = D.47459->last_ins;
        D.47459->code = D.47460;
        <D.47628>:
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.47448 = cfg->mempool;
        ins = mono_mempool_alloc (D.47448, 56);
        ins->data.op[1].const_val = 0;
        D.47629 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.47629;
        ins->prev = 0B;
        D.47630 = ins->prev;
        ins->next = D.47630;
        ins->opcode = 653;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.47631 = ins->sreg3;
        ins->sreg2 = D.47631;
        D.47632 = ins->sreg2;
        ins->sreg1 = D.47632;
        D.47455 = cfg->ip;
        ins->cil_code = D.47455;
        if (0 != 0) goto <D.47633>; else goto <D.47634>;
        <D.47633>:
        D.47448 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47448, 172);
        D.47465 = cfg->num_bblocks;
        D.47635 = D.47465;
        D.47636 = D.47635 + 1;
        cfg->num_bblocks = D.47636;
        D.47637 = (int) D.47635;
        falsebb->block_num = D.47637;
        ins->data.op[0].target_block = false_bb;
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, false_bb);
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 != 0B) goto <D.47638>; else goto <D.47639>;
        <D.47638>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47460->next = ins;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        ins->prev = D.47460;
        D.47459 = cfg->cbb;
        D.47459->last_ins = ins;
        goto <D.47640>;
        <D.47639>:
        D.47459 = cfg->cbb;
        D.47459 = cfg->cbb;
        D.47459->last_ins = ins;
        D.47460 = D.47459->last_ins;
        D.47459->code = D.47460;
        <D.47640>:
        D.47641 = falsebb->cil_code;
        if (D.47641 != 0B) goto <D.47642>; else goto <D.47643>;
        <D.47642>:
        D.47504 = cfg->cil_offset_to_bb;
        D.47641 = falsebb->cil_code;
        D.47644 = (int) D.47641;
        D.47506 = cfg->cil_start;
        D.47507 = (int) D.47506;
        D.47645 = D.47644 - D.47507;
        D.47646 = (unsigned int) D.47645;
        D.47647 = D.47646 * 4;
        D.47648 = D.47504 + D.47647;
        *D.47648 = falsebb;
        <D.47643>:
        D.47512 = cfg->real_offset;
        falsebb->real_offset = D.47512;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 != 0B) goto <D.47652>; else goto <D.47649>;
        <D.47652>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47653 = D.47460->opcode;
        D.47654 = D.47653 + 64985;
        D.47655 = D.47654 <= 9;
        D.47656 = D.47653 + 64878;
        D.47657 = D.47656 <= 9;
        D.47658 = D.47655 | D.47657;
        if (D.47658 != 0) goto <D.47650>; else goto <D.47659>;
        <D.47659>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47524 = D.47460->opcode;
        D.47525 = D.47524 + 64888;
        if (D.47525 <= 9) goto <D.47650>; else goto <D.47649>;
        <D.47650>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47526 = D.47460->data.op[1].many_blocks;
        D.47527 = D.47526 + 4;
        D.47528 = *D.47527;
        if (D.47528 == 0B) goto <D.47660>; else goto <D.47649>;
        <D.47660>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47526 = D.47460->data.op[1].many_blocks;
        D.47527 = D.47526 + 4;
        *D.47527 = falsebb;
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, falsebb);
        goto <D.47651>;
        <D.47649>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 == 0B) goto <D.47661>; else goto <D.47663>;
        <D.47663>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47664 = D.47460->opcode;
        D.47665 = D.47664 != 442;
        D.47666 = D.47664 != 759;
        D.47667 = D.47665 & D.47666;
        if (D.47667 != 0) goto <D.47668>; else goto <D.47662>;
        <D.47668>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47669 = D.47460->opcode;
        D.47670 = D.47669 + 64985;
        D.47671 = D.47670 > 9;
        D.47672 = D.47669 + 64878;
        D.47673 = D.47672 > 9;
        D.47674 = D.47671 & D.47673;
        if (D.47674 != 0) goto <D.47675>; else goto <D.47662>;
        <D.47675>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47524 = D.47460->opcode;
        D.47525 = D.47524 + 64888;
        if (D.47525 > 9) goto <D.47661>; else goto <D.47662>;
        <D.47661>:
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, falsebb);
        <D.47662>:
        <D.47651>:
        D.47459 = cfg->cbb;
        D.47459->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.47676>;
        <D.47634>:
        D.47448 = cfg->mempool;
        D.47677 = mono_mempool_alloc (D.47448, 8);
        ins->data.op[1].many_blocks = D.47677;
        D.47678 = ins->data.op[1].many_blocks;
        *D.47678 = false_bb;
        D.47678 = ins->data.op[1].many_blocks;
        D.47679 = D.47678 + 4;
        *D.47679 = 0B;
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, false_bb);
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 != 0B) goto <D.47680>; else goto <D.47681>;
        <D.47680>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47460->next = ins;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        ins->prev = D.47460;
        D.47459 = cfg->cbb;
        D.47459->last_ins = ins;
        goto <D.47682>;
        <D.47681>:
        D.47459 = cfg->cbb;
        D.47459 = cfg->cbb;
        D.47459->last_ins = ins;
        D.47460 = D.47459->last_ins;
        D.47459->code = D.47460;
        <D.47682>:
        D.47552 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.47553 = D.47552 & 8;
        if (D.47553 == 0) goto <D.47683>; else goto <D.47684>;
        <D.47683>:
        D.47448 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47448, 172);
        D.47465 = cfg->num_bblocks;
        D.47685 = D.47465;
        D.47686 = D.47685 + 1;
        cfg->num_bblocks = D.47686;
        D.47687 = (int) D.47685;
        falsebb->block_num = D.47687;
        D.47678 = ins->data.op[1].many_blocks;
        D.47679 = D.47678 + 4;
        *D.47679 = falsebb;
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, falsebb);
        D.47641 = falsebb->cil_code;
        if (D.47641 != 0B) goto <D.47688>; else goto <D.47689>;
        <D.47688>:
        D.47504 = cfg->cil_offset_to_bb;
        D.47641 = falsebb->cil_code;
        D.47644 = (int) D.47641;
        D.47506 = cfg->cil_start;
        D.47507 = (int) D.47506;
        D.47645 = D.47644 - D.47507;
        D.47646 = (unsigned int) D.47645;
        D.47647 = D.47646 * 4;
        D.47648 = D.47504 + D.47647;
        *D.47648 = falsebb;
        <D.47689>:
        D.47512 = cfg->real_offset;
        falsebb->real_offset = D.47512;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 != 0B) goto <D.47693>; else goto <D.47690>;
        <D.47693>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47694 = D.47460->opcode;
        D.47695 = D.47694 + 64985;
        D.47696 = D.47695 <= 9;
        D.47697 = D.47694 + 64878;
        D.47698 = D.47697 <= 9;
        D.47699 = D.47696 | D.47698;
        if (D.47699 != 0) goto <D.47691>; else goto <D.47700>;
        <D.47700>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47524 = D.47460->opcode;
        D.47525 = D.47524 + 64888;
        if (D.47525 <= 9) goto <D.47691>; else goto <D.47690>;
        <D.47691>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47526 = D.47460->data.op[1].many_blocks;
        D.47527 = D.47526 + 4;
        D.47528 = *D.47527;
        if (D.47528 == 0B) goto <D.47701>; else goto <D.47690>;
        <D.47701>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47526 = D.47460->data.op[1].many_blocks;
        D.47527 = D.47526 + 4;
        *D.47527 = falsebb;
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, falsebb);
        goto <D.47692>;
        <D.47690>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 == 0B) goto <D.47702>; else goto <D.47704>;
        <D.47704>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47705 = D.47460->opcode;
        D.47706 = D.47705 != 442;
        D.47707 = D.47705 != 759;
        D.47708 = D.47706 & D.47707;
        if (D.47708 != 0) goto <D.47709>; else goto <D.47703>;
        <D.47709>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47710 = D.47460->opcode;
        D.47711 = D.47710 + 64985;
        D.47712 = D.47711 > 9;
        D.47713 = D.47710 + 64878;
        D.47714 = D.47713 > 9;
        D.47715 = D.47712 & D.47714;
        if (D.47715 != 0) goto <D.47716>; else goto <D.47703>;
        <D.47716>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47524 = D.47460->opcode;
        D.47525 = D.47524 + 64888;
        if (D.47525 > 9) goto <D.47702>; else goto <D.47703>;
        <D.47702>:
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, falsebb);
        <D.47703>:
        <D.47692>:
        D.47459 = cfg->cbb;
        D.47459->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.47717>;
        <D.47684>:
        D.47459 = cfg->cbb;
        D.47459->extended = 1;
        <D.47717>:
        <D.47676>:
      }
      {
        struct MonoInst * inst;

        D.47448 = cfg->mempool;
        inst = mono_mempool_alloc (D.47448, 56);
        inst->data.op[1].const_val = 0;
        D.47718 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.47718;
        inst->prev = 0B;
        D.47719 = inst->prev;
        inst->next = D.47719;
        inst->opcode = 388;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.47720 = inst->sreg3;
        inst->sreg2 = D.47720;
        D.47721 = inst->sreg2;
        inst->sreg1 = D.47721;
        D.47455 = cfg->ip;
        inst->cil_code = D.47455;
        inst->dreg = klass_reg;
        inst->sreg1 = vtable_reg;
        inst->data.op[0].const_val = 0;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 != 0B) goto <D.47722>; else goto <D.47723>;
        <D.47722>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47460->next = inst;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        inst->prev = D.47460;
        D.47459 = cfg->cbb;
        D.47459->last_ins = inst;
        goto <D.47724>;
        <D.47723>:
        D.47459 = cfg->cbb;
        D.47459 = cfg->cbb;
        D.47459->last_ins = inst;
        D.47460 = D.47459->last_ins;
        D.47459->code = D.47460;
        <D.47724>:
      }
      {
        struct MonoInst * inst;

        D.47448 = cfg->mempool;
        inst = mono_mempool_alloc (D.47448, 56);
        inst->data.op[1].const_val = 0;
        D.47725 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.47725;
        inst->prev = 0B;
        D.47726 = inst->prev;
        inst->next = D.47726;
        inst->opcode = 388;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.47727 = inst->sreg3;
        inst->sreg2 = D.47727;
        D.47728 = inst->sreg2;
        inst->sreg1 = D.47728;
        D.47455 = cfg->ip;
        inst->cil_code = D.47455;
        inst->dreg = eclass_reg;
        inst->sreg1 = klass_reg;
        inst->data.op[0].const_val = 4;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 != 0B) goto <D.47729>; else goto <D.47730>;
        <D.47729>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47460->next = inst;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        inst->prev = D.47460;
        D.47459 = cfg->cbb;
        D.47459->last_ins = inst;
        goto <D.47731>;
        <D.47730>:
        D.47459 = cfg->cbb;
        D.47459 = cfg->cbb;
        D.47459->last_ins = inst;
        D.47460 = D.47459->last_ins;
        D.47459->code = D.47460;
        <D.47731>:
      }
      D.47732 = klass->cast_class;
      D.47733 = mono_defaults.object_class;
      if (D.47732 == D.47733) goto <D.47734>; else goto <D.47735>;
      <D.47734>:
      {
        int parent_reg;

        D.47736 = alloc_preg (cfg);
        parent_reg = (int) D.47736;
        {
          struct MonoInst * inst;

          D.47448 = cfg->mempool;
          inst = mono_mempool_alloc (D.47448, 56);
          inst->data.op[1].const_val = 0;
          D.47737 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.47737;
          inst->prev = 0B;
          D.47738 = inst->prev;
          inst->next = D.47738;
          inst->opcode = 388;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.47739 = inst->sreg3;
          inst->sreg2 = D.47739;
          D.47740 = inst->sreg2;
          inst->sreg1 = D.47740;
          D.47455 = cfg->ip;
          inst->cil_code = D.47455;
          inst->dreg = parent_reg;
          inst->sreg1 = eclass_reg;
          inst->data.op[0].const_val = 28;
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          if (D.47460 != 0B) goto <D.47741>; else goto <D.47742>;
          <D.47741>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47460->next = inst;
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          inst->prev = D.47460;
          D.47459 = cfg->cbb;
          D.47459->last_ins = inst;
          goto <D.47743>;
          <D.47742>:
          D.47459 = cfg->cbb;
          D.47459 = cfg->cbb;
          D.47459->last_ins = inst;
          D.47460 = D.47459->last_ins;
          D.47459->code = D.47460;
          <D.47743>:
        }
        D.47744 = mono_defaults.enum_class;
        D.47745 = D.47744->parent;
        mini_emit_class_check_branch (cfg, parent_reg, D.47745, 653, is_null_bb);
        D.47744 = mono_defaults.enum_class;
        mini_emit_class_check_branch (cfg, eclass_reg, D.47744, 648, is_null_bb);
        {
          struct MonoInst * ins;
          struct MonoBasicBlock * falsebb;

          D.47448 = cfg->mempool;
          ins = mono_mempool_alloc (D.47448, 56);
          ins->data.op[1].const_val = 0;
          D.47746 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.47746;
          ins->prev = 0B;
          D.47747 = ins->prev;
          ins->next = D.47747;
          ins->opcode = 442;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.47748 = ins->sreg3;
          ins->sreg2 = D.47748;
          D.47749 = ins->sreg2;
          ins->sreg1 = D.47749;
          D.47455 = cfg->ip;
          ins->cil_code = D.47455;
          if (1 != 0) goto <D.47750>; else goto <D.47751>;
          <D.47750>:
          D.47448 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.47448, 172);
          D.47465 = cfg->num_bblocks;
          D.47752 = D.47465;
          D.47753 = D.47752 + 1;
          cfg->num_bblocks = D.47753;
          D.47754 = (int) D.47752;
          falsebb->block_num = D.47754;
          ins->data.op[0].target_block = false_bb;
          D.47459 = cfg->cbb;
          mono_link_bblock (cfg, D.47459, false_bb);
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          if (D.47460 != 0B) goto <D.47755>; else goto <D.47756>;
          <D.47755>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47460->next = ins;
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          ins->prev = D.47460;
          D.47459 = cfg->cbb;
          D.47459->last_ins = ins;
          goto <D.47757>;
          <D.47756>:
          D.47459 = cfg->cbb;
          D.47459 = cfg->cbb;
          D.47459->last_ins = ins;
          D.47460 = D.47459->last_ins;
          D.47459->code = D.47460;
          <D.47757>:
          D.47758 = falsebb->cil_code;
          if (D.47758 != 0B) goto <D.47759>; else goto <D.47760>;
          <D.47759>:
          D.47504 = cfg->cil_offset_to_bb;
          D.47758 = falsebb->cil_code;
          D.47761 = (int) D.47758;
          D.47506 = cfg->cil_start;
          D.47507 = (int) D.47506;
          D.47762 = D.47761 - D.47507;
          D.47763 = (unsigned int) D.47762;
          D.47764 = D.47763 * 4;
          D.47765 = D.47504 + D.47764;
          *D.47765 = falsebb;
          <D.47760>:
          D.47512 = cfg->real_offset;
          falsebb->real_offset = D.47512;
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          if (D.47460 != 0B) goto <D.47769>; else goto <D.47766>;
          <D.47769>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47770 = D.47460->opcode;
          D.47771 = D.47770 + 64985;
          D.47772 = D.47771 <= 9;
          D.47773 = D.47770 + 64878;
          D.47774 = D.47773 <= 9;
          D.47775 = D.47772 | D.47774;
          if (D.47775 != 0) goto <D.47767>; else goto <D.47776>;
          <D.47776>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47524 = D.47460->opcode;
          D.47525 = D.47524 + 64888;
          if (D.47525 <= 9) goto <D.47767>; else goto <D.47766>;
          <D.47767>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47526 = D.47460->data.op[1].many_blocks;
          D.47527 = D.47526 + 4;
          D.47528 = *D.47527;
          if (D.47528 == 0B) goto <D.47777>; else goto <D.47766>;
          <D.47777>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47526 = D.47460->data.op[1].many_blocks;
          D.47527 = D.47526 + 4;
          *D.47527 = falsebb;
          D.47459 = cfg->cbb;
          mono_link_bblock (cfg, D.47459, falsebb);
          goto <D.47768>;
          <D.47766>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          if (D.47460 == 0B) goto <D.47778>; else goto <D.47780>;
          <D.47780>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47781 = D.47460->opcode;
          D.47782 = D.47781 != 442;
          D.47783 = D.47781 != 759;
          D.47784 = D.47782 & D.47783;
          if (D.47784 != 0) goto <D.47785>; else goto <D.47779>;
          <D.47785>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47786 = D.47460->opcode;
          D.47787 = D.47786 + 64985;
          D.47788 = D.47787 > 9;
          D.47789 = D.47786 + 64878;
          D.47790 = D.47789 > 9;
          D.47791 = D.47788 & D.47790;
          if (D.47791 != 0) goto <D.47792>; else goto <D.47779>;
          <D.47792>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47524 = D.47460->opcode;
          D.47525 = D.47524 + 64888;
          if (D.47525 > 9) goto <D.47778>; else goto <D.47779>;
          <D.47778>:
          D.47459 = cfg->cbb;
          mono_link_bblock (cfg, D.47459, falsebb);
          <D.47779>:
          <D.47768>:
          D.47459 = cfg->cbb;
          D.47459->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.47793>;
          <D.47751>:
          D.47448 = cfg->mempool;
          D.47794 = mono_mempool_alloc (D.47448, 8);
          ins->data.op[1].many_blocks = D.47794;
          D.47795 = ins->data.op[1].many_blocks;
          *D.47795 = false_bb;
          D.47795 = ins->data.op[1].many_blocks;
          D.47796 = D.47795 + 4;
          *D.47796 = 0B;
          D.47459 = cfg->cbb;
          mono_link_bblock (cfg, D.47459, false_bb);
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          if (D.47460 != 0B) goto <D.47797>; else goto <D.47798>;
          <D.47797>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47460->next = ins;
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          ins->prev = D.47460;
          D.47459 = cfg->cbb;
          D.47459->last_ins = ins;
          goto <D.47799>;
          <D.47798>:
          D.47459 = cfg->cbb;
          D.47459 = cfg->cbb;
          D.47459->last_ins = ins;
          D.47460 = D.47459->last_ins;
          D.47459->code = D.47460;
          <D.47799>:
          D.47552 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.47553 = D.47552 & 8;
          if (D.47553 == 0) goto <D.47800>; else goto <D.47801>;
          <D.47800>:
          D.47448 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.47448, 172);
          D.47465 = cfg->num_bblocks;
          D.47802 = D.47465;
          D.47803 = D.47802 + 1;
          cfg->num_bblocks = D.47803;
          D.47804 = (int) D.47802;
          falsebb->block_num = D.47804;
          D.47795 = ins->data.op[1].many_blocks;
          D.47796 = D.47795 + 4;
          *D.47796 = falsebb;
          D.47459 = cfg->cbb;
          mono_link_bblock (cfg, D.47459, falsebb);
          D.47758 = falsebb->cil_code;
          if (D.47758 != 0B) goto <D.47805>; else goto <D.47806>;
          <D.47805>:
          D.47504 = cfg->cil_offset_to_bb;
          D.47758 = falsebb->cil_code;
          D.47761 = (int) D.47758;
          D.47506 = cfg->cil_start;
          D.47507 = (int) D.47506;
          D.47762 = D.47761 - D.47507;
          D.47763 = (unsigned int) D.47762;
          D.47764 = D.47763 * 4;
          D.47765 = D.47504 + D.47764;
          *D.47765 = falsebb;
          <D.47806>:
          D.47512 = cfg->real_offset;
          falsebb->real_offset = D.47512;
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          if (D.47460 != 0B) goto <D.47810>; else goto <D.47807>;
          <D.47810>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47811 = D.47460->opcode;
          D.47812 = D.47811 + 64985;
          D.47813 = D.47812 <= 9;
          D.47814 = D.47811 + 64878;
          D.47815 = D.47814 <= 9;
          D.47816 = D.47813 | D.47815;
          if (D.47816 != 0) goto <D.47808>; else goto <D.47817>;
          <D.47817>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47524 = D.47460->opcode;
          D.47525 = D.47524 + 64888;
          if (D.47525 <= 9) goto <D.47808>; else goto <D.47807>;
          <D.47808>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47526 = D.47460->data.op[1].many_blocks;
          D.47527 = D.47526 + 4;
          D.47528 = *D.47527;
          if (D.47528 == 0B) goto <D.47818>; else goto <D.47807>;
          <D.47818>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47526 = D.47460->data.op[1].many_blocks;
          D.47527 = D.47526 + 4;
          *D.47527 = falsebb;
          D.47459 = cfg->cbb;
          mono_link_bblock (cfg, D.47459, falsebb);
          goto <D.47809>;
          <D.47807>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          if (D.47460 == 0B) goto <D.47819>; else goto <D.47821>;
          <D.47821>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47822 = D.47460->opcode;
          D.47823 = D.47822 != 442;
          D.47824 = D.47822 != 759;
          D.47825 = D.47823 & D.47824;
          if (D.47825 != 0) goto <D.47826>; else goto <D.47820>;
          <D.47826>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47827 = D.47460->opcode;
          D.47828 = D.47827 + 64985;
          D.47829 = D.47828 > 9;
          D.47830 = D.47827 + 64878;
          D.47831 = D.47830 > 9;
          D.47832 = D.47829 & D.47831;
          if (D.47832 != 0) goto <D.47833>; else goto <D.47820>;
          <D.47833>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47524 = D.47460->opcode;
          D.47525 = D.47524 + 64888;
          if (D.47525 > 9) goto <D.47819>; else goto <D.47820>;
          <D.47819>:
          D.47459 = cfg->cbb;
          mono_link_bblock (cfg, D.47459, falsebb);
          <D.47820>:
          <D.47809>:
          D.47459 = cfg->cbb;
          D.47459->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.47834>;
          <D.47801>:
          D.47459 = cfg->cbb;
          D.47459->extended = 1;
          <D.47834>:
          <D.47793>:
        }
      }
      goto <D.47835>;
      <D.47735>:
      D.47732 = klass->cast_class;
      D.47744 = mono_defaults.enum_class;
      D.47745 = D.47744->parent;
      if (D.47732 == D.47745) goto <D.47836>; else goto <D.47837>;
      <D.47836>:
      D.47744 = mono_defaults.enum_class;
      D.47745 = D.47744->parent;
      mini_emit_class_check_branch (cfg, eclass_reg, D.47745, 648, is_null_bb);
      D.47744 = mono_defaults.enum_class;
      mini_emit_class_check_branch (cfg, eclass_reg, D.47744, 648, is_null_bb);
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.47448 = cfg->mempool;
        ins = mono_mempool_alloc (D.47448, 56);
        ins->data.op[1].const_val = 0;
        D.47838 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.47838;
        ins->prev = 0B;
        D.47839 = ins->prev;
        ins->next = D.47839;
        ins->opcode = 442;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.47840 = ins->sreg3;
        ins->sreg2 = D.47840;
        D.47841 = ins->sreg2;
        ins->sreg1 = D.47841;
        D.47455 = cfg->ip;
        ins->cil_code = D.47455;
        if (1 != 0) goto <D.47842>; else goto <D.47843>;
        <D.47842>:
        D.47448 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47448, 172);
        D.47465 = cfg->num_bblocks;
        D.47844 = D.47465;
        D.47845 = D.47844 + 1;
        cfg->num_bblocks = D.47845;
        D.47846 = (int) D.47844;
        falsebb->block_num = D.47846;
        ins->data.op[0].target_block = false_bb;
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, false_bb);
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 != 0B) goto <D.47847>; else goto <D.47848>;
        <D.47847>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47460->next = ins;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        ins->prev = D.47460;
        D.47459 = cfg->cbb;
        D.47459->last_ins = ins;
        goto <D.47849>;
        <D.47848>:
        D.47459 = cfg->cbb;
        D.47459 = cfg->cbb;
        D.47459->last_ins = ins;
        D.47460 = D.47459->last_ins;
        D.47459->code = D.47460;
        <D.47849>:
        D.47850 = falsebb->cil_code;
        if (D.47850 != 0B) goto <D.47851>; else goto <D.47852>;
        <D.47851>:
        D.47504 = cfg->cil_offset_to_bb;
        D.47850 = falsebb->cil_code;
        D.47853 = (int) D.47850;
        D.47506 = cfg->cil_start;
        D.47507 = (int) D.47506;
        D.47854 = D.47853 - D.47507;
        D.47855 = (unsigned int) D.47854;
        D.47856 = D.47855 * 4;
        D.47857 = D.47504 + D.47856;
        *D.47857 = falsebb;
        <D.47852>:
        D.47512 = cfg->real_offset;
        falsebb->real_offset = D.47512;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 != 0B) goto <D.47861>; else goto <D.47858>;
        <D.47861>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47862 = D.47460->opcode;
        D.47863 = D.47862 + 64985;
        D.47864 = D.47863 <= 9;
        D.47865 = D.47862 + 64878;
        D.47866 = D.47865 <= 9;
        D.47867 = D.47864 | D.47866;
        if (D.47867 != 0) goto <D.47859>; else goto <D.47868>;
        <D.47868>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47524 = D.47460->opcode;
        D.47525 = D.47524 + 64888;
        if (D.47525 <= 9) goto <D.47859>; else goto <D.47858>;
        <D.47859>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47526 = D.47460->data.op[1].many_blocks;
        D.47527 = D.47526 + 4;
        D.47528 = *D.47527;
        if (D.47528 == 0B) goto <D.47869>; else goto <D.47858>;
        <D.47869>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47526 = D.47460->data.op[1].many_blocks;
        D.47527 = D.47526 + 4;
        *D.47527 = falsebb;
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, falsebb);
        goto <D.47860>;
        <D.47858>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 == 0B) goto <D.47870>; else goto <D.47872>;
        <D.47872>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47873 = D.47460->opcode;
        D.47874 = D.47873 != 442;
        D.47875 = D.47873 != 759;
        D.47876 = D.47874 & D.47875;
        if (D.47876 != 0) goto <D.47877>; else goto <D.47871>;
        <D.47877>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47878 = D.47460->opcode;
        D.47879 = D.47878 + 64985;
        D.47880 = D.47879 > 9;
        D.47881 = D.47878 + 64878;
        D.47882 = D.47881 > 9;
        D.47883 = D.47880 & D.47882;
        if (D.47883 != 0) goto <D.47884>; else goto <D.47871>;
        <D.47884>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47524 = D.47460->opcode;
        D.47525 = D.47524 + 64888;
        if (D.47525 > 9) goto <D.47870>; else goto <D.47871>;
        <D.47870>:
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, falsebb);
        <D.47871>:
        <D.47860>:
        D.47459 = cfg->cbb;
        D.47459->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.47885>;
        <D.47843>:
        D.47448 = cfg->mempool;
        D.47886 = mono_mempool_alloc (D.47448, 8);
        ins->data.op[1].many_blocks = D.47886;
        D.47887 = ins->data.op[1].many_blocks;
        *D.47887 = false_bb;
        D.47887 = ins->data.op[1].many_blocks;
        D.47888 = D.47887 + 4;
        *D.47888 = 0B;
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, false_bb);
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 != 0B) goto <D.47889>; else goto <D.47890>;
        <D.47889>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47460->next = ins;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        ins->prev = D.47460;
        D.47459 = cfg->cbb;
        D.47459->last_ins = ins;
        goto <D.47891>;
        <D.47890>:
        D.47459 = cfg->cbb;
        D.47459 = cfg->cbb;
        D.47459->last_ins = ins;
        D.47460 = D.47459->last_ins;
        D.47459->code = D.47460;
        <D.47891>:
        D.47552 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.47553 = D.47552 & 8;
        if (D.47553 == 0) goto <D.47892>; else goto <D.47893>;
        <D.47892>:
        D.47448 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47448, 172);
        D.47465 = cfg->num_bblocks;
        D.47894 = D.47465;
        D.47895 = D.47894 + 1;
        cfg->num_bblocks = D.47895;
        D.47896 = (int) D.47894;
        falsebb->block_num = D.47896;
        D.47887 = ins->data.op[1].many_blocks;
        D.47888 = D.47887 + 4;
        *D.47888 = falsebb;
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, falsebb);
        D.47850 = falsebb->cil_code;
        if (D.47850 != 0B) goto <D.47897>; else goto <D.47898>;
        <D.47897>:
        D.47504 = cfg->cil_offset_to_bb;
        D.47850 = falsebb->cil_code;
        D.47853 = (int) D.47850;
        D.47506 = cfg->cil_start;
        D.47507 = (int) D.47506;
        D.47854 = D.47853 - D.47507;
        D.47855 = (unsigned int) D.47854;
        D.47856 = D.47855 * 4;
        D.47857 = D.47504 + D.47856;
        *D.47857 = falsebb;
        <D.47898>:
        D.47512 = cfg->real_offset;
        falsebb->real_offset = D.47512;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 != 0B) goto <D.47902>; else goto <D.47899>;
        <D.47902>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47903 = D.47460->opcode;
        D.47904 = D.47903 + 64985;
        D.47905 = D.47904 <= 9;
        D.47906 = D.47903 + 64878;
        D.47907 = D.47906 <= 9;
        D.47908 = D.47905 | D.47907;
        if (D.47908 != 0) goto <D.47900>; else goto <D.47909>;
        <D.47909>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47524 = D.47460->opcode;
        D.47525 = D.47524 + 64888;
        if (D.47525 <= 9) goto <D.47900>; else goto <D.47899>;
        <D.47900>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47526 = D.47460->data.op[1].many_blocks;
        D.47527 = D.47526 + 4;
        D.47528 = *D.47527;
        if (D.47528 == 0B) goto <D.47910>; else goto <D.47899>;
        <D.47910>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47526 = D.47460->data.op[1].many_blocks;
        D.47527 = D.47526 + 4;
        *D.47527 = falsebb;
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, falsebb);
        goto <D.47901>;
        <D.47899>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 == 0B) goto <D.47911>; else goto <D.47913>;
        <D.47913>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47914 = D.47460->opcode;
        D.47915 = D.47914 != 442;
        D.47916 = D.47914 != 759;
        D.47917 = D.47915 & D.47916;
        if (D.47917 != 0) goto <D.47918>; else goto <D.47912>;
        <D.47918>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47919 = D.47460->opcode;
        D.47920 = D.47919 + 64985;
        D.47921 = D.47920 > 9;
        D.47922 = D.47919 + 64878;
        D.47923 = D.47922 > 9;
        D.47924 = D.47921 & D.47923;
        if (D.47924 != 0) goto <D.47925>; else goto <D.47912>;
        <D.47925>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47524 = D.47460->opcode;
        D.47525 = D.47524 + 64888;
        if (D.47525 > 9) goto <D.47911>; else goto <D.47912>;
        <D.47911>:
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, falsebb);
        <D.47912>:
        <D.47901>:
        D.47459 = cfg->cbb;
        D.47459->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.47926>;
        <D.47893>:
        D.47459 = cfg->cbb;
        D.47459->extended = 1;
        <D.47926>:
        <D.47885>:
      }
      goto <D.47927>;
      <D.47837>:
      D.47732 = klass->cast_class;
      D.47744 = mono_defaults.enum_class;
      if (D.47732 == D.47744) goto <D.47928>; else goto <D.47929>;
      <D.47928>:
      D.47744 = mono_defaults.enum_class;
      mini_emit_class_check_branch (cfg, eclass_reg, D.47744, 648, is_null_bb);
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.47448 = cfg->mempool;
        ins = mono_mempool_alloc (D.47448, 56);
        ins->data.op[1].const_val = 0;
        D.47930 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.47930;
        ins->prev = 0B;
        D.47931 = ins->prev;
        ins->next = D.47931;
        ins->opcode = 442;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.47932 = ins->sreg3;
        ins->sreg2 = D.47932;
        D.47933 = ins->sreg2;
        ins->sreg1 = D.47933;
        D.47455 = cfg->ip;
        ins->cil_code = D.47455;
        if (1 != 0) goto <D.47934>; else goto <D.47935>;
        <D.47934>:
        D.47448 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47448, 172);
        D.47465 = cfg->num_bblocks;
        D.47936 = D.47465;
        D.47937 = D.47936 + 1;
        cfg->num_bblocks = D.47937;
        D.47938 = (int) D.47936;
        falsebb->block_num = D.47938;
        ins->data.op[0].target_block = false_bb;
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, false_bb);
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 != 0B) goto <D.47939>; else goto <D.47940>;
        <D.47939>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47460->next = ins;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        ins->prev = D.47460;
        D.47459 = cfg->cbb;
        D.47459->last_ins = ins;
        goto <D.47941>;
        <D.47940>:
        D.47459 = cfg->cbb;
        D.47459 = cfg->cbb;
        D.47459->last_ins = ins;
        D.47460 = D.47459->last_ins;
        D.47459->code = D.47460;
        <D.47941>:
        D.47942 = falsebb->cil_code;
        if (D.47942 != 0B) goto <D.47943>; else goto <D.47944>;
        <D.47943>:
        D.47504 = cfg->cil_offset_to_bb;
        D.47942 = falsebb->cil_code;
        D.47945 = (int) D.47942;
        D.47506 = cfg->cil_start;
        D.47507 = (int) D.47506;
        D.47946 = D.47945 - D.47507;
        D.47947 = (unsigned int) D.47946;
        D.47948 = D.47947 * 4;
        D.47949 = D.47504 + D.47948;
        *D.47949 = falsebb;
        <D.47944>:
        D.47512 = cfg->real_offset;
        falsebb->real_offset = D.47512;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 != 0B) goto <D.47953>; else goto <D.47950>;
        <D.47953>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47954 = D.47460->opcode;
        D.47955 = D.47954 + 64985;
        D.47956 = D.47955 <= 9;
        D.47957 = D.47954 + 64878;
        D.47958 = D.47957 <= 9;
        D.47959 = D.47956 | D.47958;
        if (D.47959 != 0) goto <D.47951>; else goto <D.47960>;
        <D.47960>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47524 = D.47460->opcode;
        D.47525 = D.47524 + 64888;
        if (D.47525 <= 9) goto <D.47951>; else goto <D.47950>;
        <D.47951>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47526 = D.47460->data.op[1].many_blocks;
        D.47527 = D.47526 + 4;
        D.47528 = *D.47527;
        if (D.47528 == 0B) goto <D.47961>; else goto <D.47950>;
        <D.47961>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47526 = D.47460->data.op[1].many_blocks;
        D.47527 = D.47526 + 4;
        *D.47527 = falsebb;
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, falsebb);
        goto <D.47952>;
        <D.47950>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 == 0B) goto <D.47962>; else goto <D.47964>;
        <D.47964>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47965 = D.47460->opcode;
        D.47966 = D.47965 != 442;
        D.47967 = D.47965 != 759;
        D.47968 = D.47966 & D.47967;
        if (D.47968 != 0) goto <D.47969>; else goto <D.47963>;
        <D.47969>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47970 = D.47460->opcode;
        D.47971 = D.47970 + 64985;
        D.47972 = D.47971 > 9;
        D.47973 = D.47970 + 64878;
        D.47974 = D.47973 > 9;
        D.47975 = D.47972 & D.47974;
        if (D.47975 != 0) goto <D.47976>; else goto <D.47963>;
        <D.47976>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47524 = D.47460->opcode;
        D.47525 = D.47524 + 64888;
        if (D.47525 > 9) goto <D.47962>; else goto <D.47963>;
        <D.47962>:
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, falsebb);
        <D.47963>:
        <D.47952>:
        D.47459 = cfg->cbb;
        D.47459->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.47977>;
        <D.47935>:
        D.47448 = cfg->mempool;
        D.47978 = mono_mempool_alloc (D.47448, 8);
        ins->data.op[1].many_blocks = D.47978;
        D.47979 = ins->data.op[1].many_blocks;
        *D.47979 = false_bb;
        D.47979 = ins->data.op[1].many_blocks;
        D.47980 = D.47979 + 4;
        *D.47980 = 0B;
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, false_bb);
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 != 0B) goto <D.47981>; else goto <D.47982>;
        <D.47981>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47460->next = ins;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        ins->prev = D.47460;
        D.47459 = cfg->cbb;
        D.47459->last_ins = ins;
        goto <D.47983>;
        <D.47982>:
        D.47459 = cfg->cbb;
        D.47459 = cfg->cbb;
        D.47459->last_ins = ins;
        D.47460 = D.47459->last_ins;
        D.47459->code = D.47460;
        <D.47983>:
        D.47552 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.47553 = D.47552 & 8;
        if (D.47553 == 0) goto <D.47984>; else goto <D.47985>;
        <D.47984>:
        D.47448 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47448, 172);
        D.47465 = cfg->num_bblocks;
        D.47986 = D.47465;
        D.47987 = D.47986 + 1;
        cfg->num_bblocks = D.47987;
        D.47988 = (int) D.47986;
        falsebb->block_num = D.47988;
        D.47979 = ins->data.op[1].many_blocks;
        D.47980 = D.47979 + 4;
        *D.47980 = falsebb;
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, falsebb);
        D.47942 = falsebb->cil_code;
        if (D.47942 != 0B) goto <D.47989>; else goto <D.47990>;
        <D.47989>:
        D.47504 = cfg->cil_offset_to_bb;
        D.47942 = falsebb->cil_code;
        D.47945 = (int) D.47942;
        D.47506 = cfg->cil_start;
        D.47507 = (int) D.47506;
        D.47946 = D.47945 - D.47507;
        D.47947 = (unsigned int) D.47946;
        D.47948 = D.47947 * 4;
        D.47949 = D.47504 + D.47948;
        *D.47949 = falsebb;
        <D.47990>:
        D.47512 = cfg->real_offset;
        falsebb->real_offset = D.47512;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 != 0B) goto <D.47994>; else goto <D.47991>;
        <D.47994>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47995 = D.47460->opcode;
        D.47996 = D.47995 + 64985;
        D.47997 = D.47996 <= 9;
        D.47998 = D.47995 + 64878;
        D.47999 = D.47998 <= 9;
        D.48000 = D.47997 | D.47999;
        if (D.48000 != 0) goto <D.47992>; else goto <D.48001>;
        <D.48001>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47524 = D.47460->opcode;
        D.47525 = D.47524 + 64888;
        if (D.47525 <= 9) goto <D.47992>; else goto <D.47991>;
        <D.47992>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47526 = D.47460->data.op[1].many_blocks;
        D.47527 = D.47526 + 4;
        D.47528 = *D.47527;
        if (D.47528 == 0B) goto <D.48002>; else goto <D.47991>;
        <D.48002>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47526 = D.47460->data.op[1].many_blocks;
        D.47527 = D.47526 + 4;
        *D.47527 = falsebb;
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, falsebb);
        goto <D.47993>;
        <D.47991>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 == 0B) goto <D.48003>; else goto <D.48005>;
        <D.48005>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.48006 = D.47460->opcode;
        D.48007 = D.48006 != 442;
        D.48008 = D.48006 != 759;
        D.48009 = D.48007 & D.48008;
        if (D.48009 != 0) goto <D.48010>; else goto <D.48004>;
        <D.48010>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.48011 = D.47460->opcode;
        D.48012 = D.48011 + 64985;
        D.48013 = D.48012 > 9;
        D.48014 = D.48011 + 64878;
        D.48015 = D.48014 > 9;
        D.48016 = D.48013 & D.48015;
        if (D.48016 != 0) goto <D.48017>; else goto <D.48004>;
        <D.48017>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47524 = D.47460->opcode;
        D.47525 = D.47524 + 64888;
        if (D.47525 > 9) goto <D.48003>; else goto <D.48004>;
        <D.48003>:
        D.47459 = cfg->cbb;
        mono_link_bblock (cfg, D.47459, falsebb);
        <D.48004>:
        <D.47993>:
        D.47459 = cfg->cbb;
        D.47459->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.48018>;
        <D.47985>:
        D.47459 = cfg->cbb;
        D.47459->extended = 1;
        <D.48018>:
        <D.47977>:
      }
      goto <D.48019>;
      <D.47929>:
      D.47732 = klass->cast_class;
      D.48020 = D.47732->flags;
      D.48021 = D.48020 & 32;
      if (D.48021 != 0) goto <D.48022>; else goto <D.48023>;
      <D.48022>:
      D.47732 = klass->cast_class;
      mini_emit_iface_class_cast (cfg, eclass_reg, D.47732, false_bb, is_null_bb);
      goto <D.48024>;
      <D.48023>:
      D.47607 = klass->rank;
      if (D.47607 == 1) goto <D.48025>; else goto <D.48026>;
      <D.48025>:
      D.48027 = klass->byval_arg.type;
      if (D.48027 == 29) goto <D.48028>; else goto <D.48029>;
      <D.48028>:
      {
        int bounds_reg;

        D.48030 = alloc_preg (cfg);
        bounds_reg = (int) D.48030;
        {
          struct MonoInst * inst;

          D.47448 = cfg->mempool;
          inst = mono_mempool_alloc (D.47448, 56);
          inst->data.op[1].const_val = 0;
          D.48031 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.48031;
          inst->prev = 0B;
          D.48032 = inst->prev;
          inst->next = D.48032;
          inst->opcode = 388;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.48033 = inst->sreg3;
          inst->sreg2 = D.48033;
          D.48034 = inst->sreg2;
          inst->sreg1 = D.48034;
          D.47455 = cfg->ip;
          inst->cil_code = D.47455;
          inst->dreg = bounds_reg;
          inst->sreg1 = obj_reg;
          inst->data.op[0].const_val = 8;
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          if (D.47460 != 0B) goto <D.48035>; else goto <D.48036>;
          <D.48035>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47460->next = inst;
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          inst->prev = D.47460;
          D.47459 = cfg->cbb;
          D.47459->last_ins = inst;
          goto <D.48037>;
          <D.48036>:
          D.47459 = cfg->cbb;
          D.47459 = cfg->cbb;
          D.47459->last_ins = inst;
          D.47460 = D.47459->last_ins;
          D.47459->code = D.47460;
          <D.48037>:
        }
        {
          struct MonoInst * inst;

          D.47448 = cfg->mempool;
          inst = mono_mempool_alloc (D.47448, 56);
          inst->data.op[1].const_val = 0;
          D.48038 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.48038;
          inst->prev = 0B;
          D.48039 = inst->prev;
          inst->next = D.48039;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.48040 = inst->sreg3;
          inst->sreg2 = D.48040;
          D.48041 = inst->sreg2;
          inst->sreg1 = D.48041;
          D.47455 = cfg->ip;
          inst->cil_code = D.47455;
          inst->dreg = -1;
          inst->sreg1 = bounds_reg;
          inst->data.op[1].const_val = 0;
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          if (D.47460 != 0B) goto <D.48042>; else goto <D.48043>;
          <D.48042>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47460->next = inst;
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          inst->prev = D.47460;
          D.47459 = cfg->cbb;
          D.47459->last_ins = inst;
          goto <D.48044>;
          <D.48043>:
          D.47459 = cfg->cbb;
          D.47459 = cfg->cbb;
          D.47459->last_ins = inst;
          D.47460 = D.47459->last_ins;
          D.47459->code = D.47460;
          <D.48044>:
        }
        {
          struct MonoInst * ins;
          struct MonoBasicBlock * falsebb;

          D.47448 = cfg->mempool;
          ins = mono_mempool_alloc (D.47448, 56);
          ins->data.op[1].const_val = 0;
          D.48045 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.48045;
          ins->prev = 0B;
          D.48046 = ins->prev;
          ins->next = D.48046;
          ins->opcode = 653;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.48047 = ins->sreg3;
          ins->sreg2 = D.48047;
          D.48048 = ins->sreg2;
          ins->sreg1 = D.48048;
          D.47455 = cfg->ip;
          ins->cil_code = D.47455;
          if (0 != 0) goto <D.48049>; else goto <D.48050>;
          <D.48049>:
          D.47448 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.47448, 172);
          D.47465 = cfg->num_bblocks;
          D.48051 = D.47465;
          D.48052 = D.48051 + 1;
          cfg->num_bblocks = D.48052;
          D.48053 = (int) D.48051;
          falsebb->block_num = D.48053;
          ins->data.op[0].target_block = false_bb;
          D.47459 = cfg->cbb;
          mono_link_bblock (cfg, D.47459, false_bb);
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          if (D.47460 != 0B) goto <D.48054>; else goto <D.48055>;
          <D.48054>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47460->next = ins;
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          ins->prev = D.47460;
          D.47459 = cfg->cbb;
          D.47459->last_ins = ins;
          goto <D.48056>;
          <D.48055>:
          D.47459 = cfg->cbb;
          D.47459 = cfg->cbb;
          D.47459->last_ins = ins;
          D.47460 = D.47459->last_ins;
          D.47459->code = D.47460;
          <D.48056>:
          D.48057 = falsebb->cil_code;
          if (D.48057 != 0B) goto <D.48058>; else goto <D.48059>;
          <D.48058>:
          D.47504 = cfg->cil_offset_to_bb;
          D.48057 = falsebb->cil_code;
          D.48060 = (int) D.48057;
          D.47506 = cfg->cil_start;
          D.47507 = (int) D.47506;
          D.48061 = D.48060 - D.47507;
          D.48062 = (unsigned int) D.48061;
          D.48063 = D.48062 * 4;
          D.48064 = D.47504 + D.48063;
          *D.48064 = falsebb;
          <D.48059>:
          D.47512 = cfg->real_offset;
          falsebb->real_offset = D.47512;
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          if (D.47460 != 0B) goto <D.48068>; else goto <D.48065>;
          <D.48068>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.48069 = D.47460->opcode;
          D.48070 = D.48069 + 64985;
          D.48071 = D.48070 <= 9;
          D.48072 = D.48069 + 64878;
          D.48073 = D.48072 <= 9;
          D.48074 = D.48071 | D.48073;
          if (D.48074 != 0) goto <D.48066>; else goto <D.48075>;
          <D.48075>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47524 = D.47460->opcode;
          D.47525 = D.47524 + 64888;
          if (D.47525 <= 9) goto <D.48066>; else goto <D.48065>;
          <D.48066>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47526 = D.47460->data.op[1].many_blocks;
          D.47527 = D.47526 + 4;
          D.47528 = *D.47527;
          if (D.47528 == 0B) goto <D.48076>; else goto <D.48065>;
          <D.48076>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47526 = D.47460->data.op[1].many_blocks;
          D.47527 = D.47526 + 4;
          *D.47527 = falsebb;
          D.47459 = cfg->cbb;
          mono_link_bblock (cfg, D.47459, falsebb);
          goto <D.48067>;
          <D.48065>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          if (D.47460 == 0B) goto <D.48077>; else goto <D.48079>;
          <D.48079>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.48080 = D.47460->opcode;
          D.48081 = D.48080 != 442;
          D.48082 = D.48080 != 759;
          D.48083 = D.48081 & D.48082;
          if (D.48083 != 0) goto <D.48084>; else goto <D.48078>;
          <D.48084>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.48085 = D.47460->opcode;
          D.48086 = D.48085 + 64985;
          D.48087 = D.48086 > 9;
          D.48088 = D.48085 + 64878;
          D.48089 = D.48088 > 9;
          D.48090 = D.48087 & D.48089;
          if (D.48090 != 0) goto <D.48091>; else goto <D.48078>;
          <D.48091>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47524 = D.47460->opcode;
          D.47525 = D.47524 + 64888;
          if (D.47525 > 9) goto <D.48077>; else goto <D.48078>;
          <D.48077>:
          D.47459 = cfg->cbb;
          mono_link_bblock (cfg, D.47459, falsebb);
          <D.48078>:
          <D.48067>:
          D.47459 = cfg->cbb;
          D.47459->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.48092>;
          <D.48050>:
          D.47448 = cfg->mempool;
          D.48093 = mono_mempool_alloc (D.47448, 8);
          ins->data.op[1].many_blocks = D.48093;
          D.48094 = ins->data.op[1].many_blocks;
          *D.48094 = false_bb;
          D.48094 = ins->data.op[1].many_blocks;
          D.48095 = D.48094 + 4;
          *D.48095 = 0B;
          D.47459 = cfg->cbb;
          mono_link_bblock (cfg, D.47459, false_bb);
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          if (D.47460 != 0B) goto <D.48096>; else goto <D.48097>;
          <D.48096>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47460->next = ins;
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          ins->prev = D.47460;
          D.47459 = cfg->cbb;
          D.47459->last_ins = ins;
          goto <D.48098>;
          <D.48097>:
          D.47459 = cfg->cbb;
          D.47459 = cfg->cbb;
          D.47459->last_ins = ins;
          D.47460 = D.47459->last_ins;
          D.47459->code = D.47460;
          <D.48098>:
          D.47552 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.47553 = D.47552 & 8;
          if (D.47553 == 0) goto <D.48099>; else goto <D.48100>;
          <D.48099>:
          D.47448 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.47448, 172);
          D.47465 = cfg->num_bblocks;
          D.48101 = D.47465;
          D.48102 = D.48101 + 1;
          cfg->num_bblocks = D.48102;
          D.48103 = (int) D.48101;
          falsebb->block_num = D.48103;
          D.48094 = ins->data.op[1].many_blocks;
          D.48095 = D.48094 + 4;
          *D.48095 = falsebb;
          D.47459 = cfg->cbb;
          mono_link_bblock (cfg, D.47459, falsebb);
          D.48057 = falsebb->cil_code;
          if (D.48057 != 0B) goto <D.48104>; else goto <D.48105>;
          <D.48104>:
          D.47504 = cfg->cil_offset_to_bb;
          D.48057 = falsebb->cil_code;
          D.48060 = (int) D.48057;
          D.47506 = cfg->cil_start;
          D.47507 = (int) D.47506;
          D.48061 = D.48060 - D.47507;
          D.48062 = (unsigned int) D.48061;
          D.48063 = D.48062 * 4;
          D.48064 = D.47504 + D.48063;
          *D.48064 = falsebb;
          <D.48105>:
          D.47512 = cfg->real_offset;
          falsebb->real_offset = D.47512;
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          if (D.47460 != 0B) goto <D.48109>; else goto <D.48106>;
          <D.48109>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.48110 = D.47460->opcode;
          D.48111 = D.48110 + 64985;
          D.48112 = D.48111 <= 9;
          D.48113 = D.48110 + 64878;
          D.48114 = D.48113 <= 9;
          D.48115 = D.48112 | D.48114;
          if (D.48115 != 0) goto <D.48107>; else goto <D.48116>;
          <D.48116>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47524 = D.47460->opcode;
          D.47525 = D.47524 + 64888;
          if (D.47525 <= 9) goto <D.48107>; else goto <D.48106>;
          <D.48107>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47526 = D.47460->data.op[1].many_blocks;
          D.47527 = D.47526 + 4;
          D.47528 = *D.47527;
          if (D.47528 == 0B) goto <D.48117>; else goto <D.48106>;
          <D.48117>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47526 = D.47460->data.op[1].many_blocks;
          D.47527 = D.47526 + 4;
          *D.47527 = falsebb;
          D.47459 = cfg->cbb;
          mono_link_bblock (cfg, D.47459, falsebb);
          goto <D.48108>;
          <D.48106>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          if (D.47460 == 0B) goto <D.48118>; else goto <D.48120>;
          <D.48120>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.48121 = D.47460->opcode;
          D.48122 = D.48121 != 442;
          D.48123 = D.48121 != 759;
          D.48124 = D.48122 & D.48123;
          if (D.48124 != 0) goto <D.48125>; else goto <D.48119>;
          <D.48125>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.48126 = D.47460->opcode;
          D.48127 = D.48126 + 64985;
          D.48128 = D.48127 > 9;
          D.48129 = D.48126 + 64878;
          D.48130 = D.48129 > 9;
          D.48131 = D.48128 & D.48130;
          if (D.48131 != 0) goto <D.48132>; else goto <D.48119>;
          <D.48132>:
          D.47459 = cfg->cbb;
          D.47460 = D.47459->last_ins;
          D.47524 = D.47460->opcode;
          D.47525 = D.47524 + 64888;
          if (D.47525 > 9) goto <D.48118>; else goto <D.48119>;
          <D.48118>:
          D.47459 = cfg->cbb;
          mono_link_bblock (cfg, D.47459, falsebb);
          <D.48119>:
          <D.48108>:
          D.47459 = cfg->cbb;
          D.47459->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.48133>;
          <D.48100>:
          D.47459 = cfg->cbb;
          D.47459->extended = 1;
          <D.48133>:
          <D.48092>:
        }
      }
      <D.48029>:
      <D.48026>:
      D.47732 = klass->cast_class;
      mini_emit_isninst_cast (cfg, eclass_reg, D.47732, false_bb, is_null_bb);
      <D.48024>:
      <D.48019>:
      <D.47927>:
      <D.47835>:
    }
    goto <D.48134>;
    <D.47609>:
    D.48135 = mono_class_is_nullable (klass);
    if (D.48135 != 0) goto <D.48136>; else goto <D.48137>;
    <D.48136>:
    D.47600 = context_used != 0;
    D.47601 = (long int) D.47600;
    D.47602 = __builtin_expect (D.47601, 0);
    if (D.47602 != 0) goto <D.48138>; else goto <D.48139>;
    <D.48138>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4130, "!context_used");
    <D.48139>:
    {
      struct MonoInst * inst;

      D.47448 = cfg->mempool;
      inst = mono_mempool_alloc (D.47448, 56);
      inst->data.op[1].const_val = 0;
      D.48140 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48140;
      inst->prev = 0B;
      D.48141 = inst->prev;
      inst->next = D.48141;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48142 = inst->sreg3;
      inst->sreg2 = D.48142;
      D.48143 = inst->sreg2;
      inst->sreg1 = D.48143;
      D.47455 = cfg->ip;
      inst->cil_code = D.47455;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      if (D.47460 != 0B) goto <D.48144>; else goto <D.48145>;
      <D.48144>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47460->next = inst;
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      inst->prev = D.47460;
      D.47459 = cfg->cbb;
      D.47459->last_ins = inst;
      goto <D.48146>;
      <D.48145>:
      D.47459 = cfg->cbb;
      D.47459 = cfg->cbb;
      D.47459->last_ins = inst;
      D.47460 = D.47459->last_ins;
      D.47459->code = D.47460;
      <D.48146>:
    }
    D.47732 = klass->cast_class;
    mini_emit_isninst_cast (cfg, klass_reg, D.47732, false_bb, is_null_bb);
    goto <D.48147>;
    <D.48137>:
    D.47552 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.48150 = D.47552 & 64;
    if (D.48150 == 0) goto <D.48151>; else goto <D.48148>;
    <D.48151>:
    D.48152 = cfg->opt;
    D.48153 = D.48152 & 512;
    if (D.48153 == 0) goto <D.48154>; else goto <D.48148>;
    <D.48154>:
    D.47596 = klass->flags;
    D.48155 = D.47596 & 256;
    if (D.48155 != 0) goto <D.48156>; else goto <D.48148>;
    <D.48156>:
    D.47600 = context_used != 0;
    D.47601 = (long int) D.47600;
    D.47602 = __builtin_expect (D.47601, 0);
    if (D.47602 != 0) goto <D.48157>; else goto <D.48158>;
    <D.48157>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4136, "!context_used");
    <D.48158>:
    if (0 != 0) goto <D.48159>; else goto <D.48160>;
    <D.48159>:
    {
      struct MonoVTable * vt;

      D.48161 = cfg->domain;
      vt = mono_class_vtable (D.48161, klass);
      if (vt == 0B) goto <D.48162>; else goto <D.48163>;
      <D.48162>:
      mono_cfg_set_exception (cfg, 7);
      cfg->exception_ptr = klass;
      D.47464 = 0B;
      return D.47464;
      <D.48163>:
      {
        struct MonoInst * inst;

        D.47448 = cfg->mempool;
        inst = mono_mempool_alloc (D.47448, 56);
        inst->data.op[1].const_val = 0;
        D.48164 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48164;
        inst->prev = 0B;
        D.48165 = inst->prev;
        inst->next = D.48165;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48166 = inst->sreg3;
        inst->sreg2 = D.48166;
        D.48167 = inst->sreg2;
        inst->sreg1 = D.48167;
        D.47455 = cfg->ip;
        inst->cil_code = D.47455;
        inst->dreg = -1;
        inst->sreg1 = vtable_reg;
        vt.455 = (int) vt;
        inst->data.op[1].const_val = vt.455;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        if (D.47460 != 0B) goto <D.48169>; else goto <D.48170>;
        <D.48169>:
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        D.47460->next = inst;
        D.47459 = cfg->cbb;
        D.47460 = D.47459->last_ins;
        inst->prev = D.47460;
        D.47459 = cfg->cbb;
        D.47459->last_ins = inst;
        goto <D.48171>;
        <D.48170>:
        D.47459 = cfg->cbb;
        D.47459 = cfg->cbb;
        D.47459->last_ins = inst;
        D.47460 = D.47459->last_ins;
        D.47459->code = D.47460;
        <D.48171>:
      }
    }
    goto <D.48172>;
    <D.48160>:
    {
      struct MonoInst * inst;

      D.47448 = cfg->mempool;
      inst = mono_mempool_alloc (D.47448, 56);
      inst->data.op[1].const_val = 0;
      D.48173 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48173;
      inst->prev = 0B;
      D.48174 = inst->prev;
      inst->next = D.48174;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48175 = inst->sreg3;
      inst->sreg2 = D.48175;
      D.48176 = inst->sreg2;
      inst->sreg1 = D.48176;
      D.47455 = cfg->ip;
      inst->cil_code = D.47455;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      if (D.47460 != 0B) goto <D.48177>; else goto <D.48178>;
      <D.48177>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47460->next = inst;
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      inst->prev = D.47460;
      D.47459 = cfg->cbb;
      D.47459->last_ins = inst;
      goto <D.48179>;
      <D.48178>:
      D.47459 = cfg->cbb;
      D.47459 = cfg->cbb;
      D.47459->last_ins = inst;
      D.47460 = D.47459->last_ins;
      D.47459->code = D.47460;
      <D.48179>:
    }
    {
      struct MonoInst * inst;

      D.47448 = cfg->mempool;
      inst = mono_mempool_alloc (D.47448, 56);
      inst->data.op[1].const_val = 0;
      D.48180 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48180;
      inst->prev = 0B;
      D.48181 = inst->prev;
      inst->next = D.48181;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48182 = inst->sreg3;
      inst->sreg2 = D.48182;
      D.48183 = inst->sreg2;
      inst->sreg1 = D.48183;
      D.47455 = cfg->ip;
      inst->cil_code = D.47455;
      inst->dreg = -1;
      inst->sreg1 = klass_reg;
      klass.456 = (int) klass;
      inst->data.op[1].const_val = klass.456;
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      if (D.47460 != 0B) goto <D.48185>; else goto <D.48186>;
      <D.48185>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47460->next = inst;
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      inst->prev = D.47460;
      D.47459 = cfg->cbb;
      D.47459->last_ins = inst;
      goto <D.48187>;
      <D.48186>:
      D.47459 = cfg->cbb;
      D.47459 = cfg->cbb;
      D.47459->last_ins = inst;
      D.47460 = D.47459->last_ins;
      D.47459->code = D.47460;
      <D.48187>:
    }
    <D.48172>:
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.47448 = cfg->mempool;
      ins = mono_mempool_alloc (D.47448, 56);
      ins->data.op[1].const_val = 0;
      D.48188 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.48188;
      ins->prev = 0B;
      D.48189 = ins->prev;
      ins->next = D.48189;
      ins->opcode = 653;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.48190 = ins->sreg3;
      ins->sreg2 = D.48190;
      D.48191 = ins->sreg2;
      ins->sreg1 = D.48191;
      D.47455 = cfg->ip;
      ins->cil_code = D.47455;
      if (0 != 0) goto <D.48192>; else goto <D.48193>;
      <D.48192>:
      D.47448 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.47448, 172);
      D.47465 = cfg->num_bblocks;
      D.48194 = D.47465;
      D.48195 = D.48194 + 1;
      cfg->num_bblocks = D.48195;
      D.48196 = (int) D.48194;
      falsebb->block_num = D.48196;
      ins->data.op[0].target_block = false_bb;
      D.47459 = cfg->cbb;
      mono_link_bblock (cfg, D.47459, false_bb);
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      if (D.47460 != 0B) goto <D.48197>; else goto <D.48198>;
      <D.48197>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47460->next = ins;
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      ins->prev = D.47460;
      D.47459 = cfg->cbb;
      D.47459->last_ins = ins;
      goto <D.48199>;
      <D.48198>:
      D.47459 = cfg->cbb;
      D.47459 = cfg->cbb;
      D.47459->last_ins = ins;
      D.47460 = D.47459->last_ins;
      D.47459->code = D.47460;
      <D.48199>:
      D.48200 = falsebb->cil_code;
      if (D.48200 != 0B) goto <D.48201>; else goto <D.48202>;
      <D.48201>:
      D.47504 = cfg->cil_offset_to_bb;
      D.48200 = falsebb->cil_code;
      D.48203 = (int) D.48200;
      D.47506 = cfg->cil_start;
      D.47507 = (int) D.47506;
      D.48204 = D.48203 - D.47507;
      D.48205 = (unsigned int) D.48204;
      D.48206 = D.48205 * 4;
      D.48207 = D.47504 + D.48206;
      *D.48207 = falsebb;
      <D.48202>:
      D.47512 = cfg->real_offset;
      falsebb->real_offset = D.47512;
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      if (D.47460 != 0B) goto <D.48211>; else goto <D.48208>;
      <D.48211>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.48212 = D.47460->opcode;
      D.48213 = D.48212 + 64985;
      D.48214 = D.48213 <= 9;
      D.48215 = D.48212 + 64878;
      D.48216 = D.48215 <= 9;
      D.48217 = D.48214 | D.48216;
      if (D.48217 != 0) goto <D.48209>; else goto <D.48218>;
      <D.48218>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47524 = D.47460->opcode;
      D.47525 = D.47524 + 64888;
      if (D.47525 <= 9) goto <D.48209>; else goto <D.48208>;
      <D.48209>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47526 = D.47460->data.op[1].many_blocks;
      D.47527 = D.47526 + 4;
      D.47528 = *D.47527;
      if (D.47528 == 0B) goto <D.48219>; else goto <D.48208>;
      <D.48219>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47526 = D.47460->data.op[1].many_blocks;
      D.47527 = D.47526 + 4;
      *D.47527 = falsebb;
      D.47459 = cfg->cbb;
      mono_link_bblock (cfg, D.47459, falsebb);
      goto <D.48210>;
      <D.48208>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      if (D.47460 == 0B) goto <D.48220>; else goto <D.48222>;
      <D.48222>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.48223 = D.47460->opcode;
      D.48224 = D.48223 != 442;
      D.48225 = D.48223 != 759;
      D.48226 = D.48224 & D.48225;
      if (D.48226 != 0) goto <D.48227>; else goto <D.48221>;
      <D.48227>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.48228 = D.47460->opcode;
      D.48229 = D.48228 + 64985;
      D.48230 = D.48229 > 9;
      D.48231 = D.48228 + 64878;
      D.48232 = D.48231 > 9;
      D.48233 = D.48230 & D.48232;
      if (D.48233 != 0) goto <D.48234>; else goto <D.48221>;
      <D.48234>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47524 = D.47460->opcode;
      D.47525 = D.47524 + 64888;
      if (D.47525 > 9) goto <D.48220>; else goto <D.48221>;
      <D.48220>:
      D.47459 = cfg->cbb;
      mono_link_bblock (cfg, D.47459, falsebb);
      <D.48221>:
      <D.48210>:
      D.47459 = cfg->cbb;
      D.47459->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.48235>;
      <D.48193>:
      D.47448 = cfg->mempool;
      D.48236 = mono_mempool_alloc (D.47448, 8);
      ins->data.op[1].many_blocks = D.48236;
      D.48237 = ins->data.op[1].many_blocks;
      *D.48237 = false_bb;
      D.48237 = ins->data.op[1].many_blocks;
      D.48238 = D.48237 + 4;
      *D.48238 = 0B;
      D.47459 = cfg->cbb;
      mono_link_bblock (cfg, D.47459, false_bb);
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      if (D.47460 != 0B) goto <D.48239>; else goto <D.48240>;
      <D.48239>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47460->next = ins;
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      ins->prev = D.47460;
      D.47459 = cfg->cbb;
      D.47459->last_ins = ins;
      goto <D.48241>;
      <D.48240>:
      D.47459 = cfg->cbb;
      D.47459 = cfg->cbb;
      D.47459->last_ins = ins;
      D.47460 = D.47459->last_ins;
      D.47459->code = D.47460;
      <D.48241>:
      D.47552 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.47553 = D.47552 & 8;
      if (D.47553 == 0) goto <D.48242>; else goto <D.48243>;
      <D.48242>:
      D.47448 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.47448, 172);
      D.47465 = cfg->num_bblocks;
      D.48244 = D.47465;
      D.48245 = D.48244 + 1;
      cfg->num_bblocks = D.48245;
      D.48246 = (int) D.48244;
      falsebb->block_num = D.48246;
      D.48237 = ins->data.op[1].many_blocks;
      D.48238 = D.48237 + 4;
      *D.48238 = falsebb;
      D.47459 = cfg->cbb;
      mono_link_bblock (cfg, D.47459, falsebb);
      D.48200 = falsebb->cil_code;
      if (D.48200 != 0B) goto <D.48247>; else goto <D.48248>;
      <D.48247>:
      D.47504 = cfg->cil_offset_to_bb;
      D.48200 = falsebb->cil_code;
      D.48203 = (int) D.48200;
      D.47506 = cfg->cil_start;
      D.47507 = (int) D.47506;
      D.48204 = D.48203 - D.47507;
      D.48205 = (unsigned int) D.48204;
      D.48206 = D.48205 * 4;
      D.48207 = D.47504 + D.48206;
      *D.48207 = falsebb;
      <D.48248>:
      D.47512 = cfg->real_offset;
      falsebb->real_offset = D.47512;
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      if (D.47460 != 0B) goto <D.48252>; else goto <D.48249>;
      <D.48252>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.48253 = D.47460->opcode;
      D.48254 = D.48253 + 64985;
      D.48255 = D.48254 <= 9;
      D.48256 = D.48253 + 64878;
      D.48257 = D.48256 <= 9;
      D.48258 = D.48255 | D.48257;
      if (D.48258 != 0) goto <D.48250>; else goto <D.48259>;
      <D.48259>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47524 = D.47460->opcode;
      D.47525 = D.47524 + 64888;
      if (D.47525 <= 9) goto <D.48250>; else goto <D.48249>;
      <D.48250>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47526 = D.47460->data.op[1].many_blocks;
      D.47527 = D.47526 + 4;
      D.47528 = *D.47527;
      if (D.47528 == 0B) goto <D.48260>; else goto <D.48249>;
      <D.48260>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47526 = D.47460->data.op[1].many_blocks;
      D.47527 = D.47526 + 4;
      *D.47527 = falsebb;
      D.47459 = cfg->cbb;
      mono_link_bblock (cfg, D.47459, falsebb);
      goto <D.48251>;
      <D.48249>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      if (D.47460 == 0B) goto <D.48261>; else goto <D.48263>;
      <D.48263>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.48264 = D.47460->opcode;
      D.48265 = D.48264 != 442;
      D.48266 = D.48264 != 759;
      D.48267 = D.48265 & D.48266;
      if (D.48267 != 0) goto <D.48268>; else goto <D.48262>;
      <D.48268>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.48269 = D.47460->opcode;
      D.48270 = D.48269 + 64985;
      D.48271 = D.48270 > 9;
      D.48272 = D.48269 + 64878;
      D.48273 = D.48272 > 9;
      D.48274 = D.48271 & D.48273;
      if (D.48274 != 0) goto <D.48275>; else goto <D.48262>;
      <D.48275>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47524 = D.47460->opcode;
      D.47525 = D.47524 + 64888;
      if (D.47525 > 9) goto <D.48261>; else goto <D.48262>;
      <D.48261>:
      D.47459 = cfg->cbb;
      mono_link_bblock (cfg, D.47459, falsebb);
      <D.48262>:
      <D.48251>:
      D.47459 = cfg->cbb;
      D.47459->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.48276>;
      <D.48243>:
      D.47459 = cfg->cbb;
      D.47459->extended = 1;
      <D.48276>:
      <D.48235>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.47448 = cfg->mempool;
      ins = mono_mempool_alloc (D.47448, 56);
      ins->data.op[1].const_val = 0;
      D.48277 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.48277;
      ins->prev = 0B;
      D.48278 = ins->prev;
      ins->next = D.48278;
      ins->opcode = 442;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.48279 = ins->sreg3;
      ins->sreg2 = D.48279;
      D.48280 = ins->sreg2;
      ins->sreg1 = D.48280;
      D.47455 = cfg->ip;
      ins->cil_code = D.47455;
      if (1 != 0) goto <D.48281>; else goto <D.48282>;
      <D.48281>:
      D.47448 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.47448, 172);
      D.47465 = cfg->num_bblocks;
      D.48283 = D.47465;
      D.48284 = D.48283 + 1;
      cfg->num_bblocks = D.48284;
      D.48285 = (int) D.48283;
      falsebb->block_num = D.48285;
      ins->data.op[0].target_block = is_null_bb;
      D.47459 = cfg->cbb;
      mono_link_bblock (cfg, D.47459, is_null_bb);
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      if (D.47460 != 0B) goto <D.48286>; else goto <D.48287>;
      <D.48286>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47460->next = ins;
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      ins->prev = D.47460;
      D.47459 = cfg->cbb;
      D.47459->last_ins = ins;
      goto <D.48288>;
      <D.48287>:
      D.47459 = cfg->cbb;
      D.47459 = cfg->cbb;
      D.47459->last_ins = ins;
      D.47460 = D.47459->last_ins;
      D.47459->code = D.47460;
      <D.48288>:
      D.48289 = falsebb->cil_code;
      if (D.48289 != 0B) goto <D.48290>; else goto <D.48291>;
      <D.48290>:
      D.47504 = cfg->cil_offset_to_bb;
      D.48289 = falsebb->cil_code;
      D.48292 = (int) D.48289;
      D.47506 = cfg->cil_start;
      D.47507 = (int) D.47506;
      D.48293 = D.48292 - D.47507;
      D.48294 = (unsigned int) D.48293;
      D.48295 = D.48294 * 4;
      D.48296 = D.47504 + D.48295;
      *D.48296 = falsebb;
      <D.48291>:
      D.47512 = cfg->real_offset;
      falsebb->real_offset = D.47512;
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      if (D.47460 != 0B) goto <D.48300>; else goto <D.48297>;
      <D.48300>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.48301 = D.47460->opcode;
      D.48302 = D.48301 + 64985;
      D.48303 = D.48302 <= 9;
      D.48304 = D.48301 + 64878;
      D.48305 = D.48304 <= 9;
      D.48306 = D.48303 | D.48305;
      if (D.48306 != 0) goto <D.48298>; else goto <D.48307>;
      <D.48307>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47524 = D.47460->opcode;
      D.47525 = D.47524 + 64888;
      if (D.47525 <= 9) goto <D.48298>; else goto <D.48297>;
      <D.48298>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47526 = D.47460->data.op[1].many_blocks;
      D.47527 = D.47526 + 4;
      D.47528 = *D.47527;
      if (D.47528 == 0B) goto <D.48308>; else goto <D.48297>;
      <D.48308>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47526 = D.47460->data.op[1].many_blocks;
      D.47527 = D.47526 + 4;
      *D.47527 = falsebb;
      D.47459 = cfg->cbb;
      mono_link_bblock (cfg, D.47459, falsebb);
      goto <D.48299>;
      <D.48297>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      if (D.47460 == 0B) goto <D.48309>; else goto <D.48311>;
      <D.48311>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.48312 = D.47460->opcode;
      D.48313 = D.48312 != 442;
      D.48314 = D.48312 != 759;
      D.48315 = D.48313 & D.48314;
      if (D.48315 != 0) goto <D.48316>; else goto <D.48310>;
      <D.48316>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.48317 = D.47460->opcode;
      D.48318 = D.48317 + 64985;
      D.48319 = D.48318 > 9;
      D.48320 = D.48317 + 64878;
      D.48321 = D.48320 > 9;
      D.48322 = D.48319 & D.48321;
      if (D.48322 != 0) goto <D.48323>; else goto <D.48310>;
      <D.48323>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47524 = D.47460->opcode;
      D.47525 = D.47524 + 64888;
      if (D.47525 > 9) goto <D.48309>; else goto <D.48310>;
      <D.48309>:
      D.47459 = cfg->cbb;
      mono_link_bblock (cfg, D.47459, falsebb);
      <D.48310>:
      <D.48299>:
      D.47459 = cfg->cbb;
      D.47459->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.48324>;
      <D.48282>:
      D.47448 = cfg->mempool;
      D.48325 = mono_mempool_alloc (D.47448, 8);
      ins->data.op[1].many_blocks = D.48325;
      D.48326 = ins->data.op[1].many_blocks;
      *D.48326 = is_null_bb;
      D.48326 = ins->data.op[1].many_blocks;
      D.48327 = D.48326 + 4;
      *D.48327 = 0B;
      D.47459 = cfg->cbb;
      mono_link_bblock (cfg, D.47459, is_null_bb);
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      if (D.47460 != 0B) goto <D.48328>; else goto <D.48329>;
      <D.48328>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47460->next = ins;
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      ins->prev = D.47460;
      D.47459 = cfg->cbb;
      D.47459->last_ins = ins;
      goto <D.48330>;
      <D.48329>:
      D.47459 = cfg->cbb;
      D.47459 = cfg->cbb;
      D.47459->last_ins = ins;
      D.47460 = D.47459->last_ins;
      D.47459->code = D.47460;
      <D.48330>:
      D.47552 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.47553 = D.47552 & 8;
      if (D.47553 == 0) goto <D.48331>; else goto <D.48332>;
      <D.48331>:
      D.47448 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.47448, 172);
      D.47465 = cfg->num_bblocks;
      D.48333 = D.47465;
      D.48334 = D.48333 + 1;
      cfg->num_bblocks = D.48334;
      D.48335 = (int) D.48333;
      falsebb->block_num = D.48335;
      D.48326 = ins->data.op[1].many_blocks;
      D.48327 = D.48326 + 4;
      *D.48327 = falsebb;
      D.47459 = cfg->cbb;
      mono_link_bblock (cfg, D.47459, falsebb);
      D.48289 = falsebb->cil_code;
      if (D.48289 != 0B) goto <D.48336>; else goto <D.48337>;
      <D.48336>:
      D.47504 = cfg->cil_offset_to_bb;
      D.48289 = falsebb->cil_code;
      D.48292 = (int) D.48289;
      D.47506 = cfg->cil_start;
      D.47507 = (int) D.47506;
      D.48293 = D.48292 - D.47507;
      D.48294 = (unsigned int) D.48293;
      D.48295 = D.48294 * 4;
      D.48296 = D.47504 + D.48295;
      *D.48296 = falsebb;
      <D.48337>:
      D.47512 = cfg->real_offset;
      falsebb->real_offset = D.47512;
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      if (D.47460 != 0B) goto <D.48341>; else goto <D.48338>;
      <D.48341>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.48342 = D.47460->opcode;
      D.48343 = D.48342 + 64985;
      D.48344 = D.48343 <= 9;
      D.48345 = D.48342 + 64878;
      D.48346 = D.48345 <= 9;
      D.48347 = D.48344 | D.48346;
      if (D.48347 != 0) goto <D.48339>; else goto <D.48348>;
      <D.48348>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47524 = D.47460->opcode;
      D.47525 = D.47524 + 64888;
      if (D.47525 <= 9) goto <D.48339>; else goto <D.48338>;
      <D.48339>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47526 = D.47460->data.op[1].many_blocks;
      D.47527 = D.47526 + 4;
      D.47528 = *D.47527;
      if (D.47528 == 0B) goto <D.48349>; else goto <D.48338>;
      <D.48349>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47526 = D.47460->data.op[1].many_blocks;
      D.47527 = D.47526 + 4;
      *D.47527 = falsebb;
      D.47459 = cfg->cbb;
      mono_link_bblock (cfg, D.47459, falsebb);
      goto <D.48340>;
      <D.48338>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      if (D.47460 == 0B) goto <D.48350>; else goto <D.48352>;
      <D.48352>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.48353 = D.47460->opcode;
      D.48354 = D.48353 != 442;
      D.48355 = D.48353 != 759;
      D.48356 = D.48354 & D.48355;
      if (D.48356 != 0) goto <D.48357>; else goto <D.48351>;
      <D.48357>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.48358 = D.47460->opcode;
      D.48359 = D.48358 + 64985;
      D.48360 = D.48359 > 9;
      D.48361 = D.48358 + 64878;
      D.48362 = D.48361 > 9;
      D.48363 = D.48360 & D.48362;
      if (D.48363 != 0) goto <D.48364>; else goto <D.48351>;
      <D.48364>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47524 = D.47460->opcode;
      D.47525 = D.47524 + 64888;
      if (D.47525 > 9) goto <D.48350>; else goto <D.48351>;
      <D.48350>:
      D.47459 = cfg->cbb;
      mono_link_bblock (cfg, D.47459, falsebb);
      <D.48351>:
      <D.48340>:
      D.47459 = cfg->cbb;
      D.47459->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.48365>;
      <D.48332>:
      D.47459 = cfg->cbb;
      D.47459->extended = 1;
      <D.48365>:
      <D.48324>:
    }
    goto <D.48149>;
    <D.48148>:
    {
      struct MonoInst * inst;

      D.47448 = cfg->mempool;
      inst = mono_mempool_alloc (D.47448, 56);
      inst->data.op[1].const_val = 0;
      D.48366 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48366;
      inst->prev = 0B;
      D.48367 = inst->prev;
      inst->next = D.48367;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48368 = inst->sreg3;
      inst->sreg2 = D.48368;
      D.48369 = inst->sreg2;
      inst->sreg1 = D.48369;
      D.47455 = cfg->ip;
      inst->cil_code = D.47455;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      if (D.47460 != 0B) goto <D.48370>; else goto <D.48371>;
      <D.48370>:
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      D.47460->next = inst;
      D.47459 = cfg->cbb;
      D.47460 = D.47459->last_ins;
      inst->prev = D.47460;
      D.47459 = cfg->cbb;
      D.47459->last_ins = inst;
      goto <D.48372>;
      <D.48371>:
      D.47459 = cfg->cbb;
      D.47459 = cfg->cbb;
      D.47459->last_ins = inst;
      D.47460 = D.47459->last_ins;
      D.47459->code = D.47460;
      <D.48372>:
    }
    mini_emit_isninst_cast_inst (cfg, klass_reg, klass, klass_inst, false_bb, is_null_bb);
    <D.48149>:
    <D.48147>:
    <D.48134>:
  }
  <D.47605>:
  D.48373 = false_bb->cil_code;
  if (D.48373 != 0B) goto <D.48374>; else goto <D.48375>;
  <D.48374>:
  D.47504 = cfg->cil_offset_to_bb;
  D.48373 = false_bb->cil_code;
  D.48376 = (int) D.48373;
  D.47506 = cfg->cil_start;
  D.47507 = (int) D.47506;
  D.48377 = D.48376 - D.47507;
  D.48378 = (unsigned int) D.48377;
  D.48379 = D.48378 * 4;
  D.48380 = D.47504 + D.48379;
  *D.48380 = false_bb;
  <D.48375>:
  D.47512 = cfg->real_offset;
  false_bb->real_offset = D.47512;
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  if (D.47460 != 0B) goto <D.48384>; else goto <D.48381>;
  <D.48384>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.48385 = D.47460->opcode;
  D.48386 = D.48385 + 64985;
  D.48387 = D.48386 <= 9;
  D.48388 = D.48385 + 64878;
  D.48389 = D.48388 <= 9;
  D.48390 = D.48387 | D.48389;
  if (D.48390 != 0) goto <D.48382>; else goto <D.48391>;
  <D.48391>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.47524 = D.47460->opcode;
  D.47525 = D.47524 + 64888;
  if (D.47525 <= 9) goto <D.48382>; else goto <D.48381>;
  <D.48382>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.47526 = D.47460->data.op[1].many_blocks;
  D.47527 = D.47526 + 4;
  D.47528 = *D.47527;
  if (D.47528 == 0B) goto <D.48392>; else goto <D.48381>;
  <D.48392>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.47526 = D.47460->data.op[1].many_blocks;
  D.47527 = D.47526 + 4;
  *D.47527 = false_bb;
  D.47459 = cfg->cbb;
  mono_link_bblock (cfg, D.47459, false_bb);
  goto <D.48383>;
  <D.48381>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  if (D.47460 == 0B) goto <D.48393>; else goto <D.48395>;
  <D.48395>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.48396 = D.47460->opcode;
  D.48397 = D.48396 != 442;
  D.48398 = D.48396 != 759;
  D.48399 = D.48397 & D.48398;
  if (D.48399 != 0) goto <D.48400>; else goto <D.48394>;
  <D.48400>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.48401 = D.47460->opcode;
  D.48402 = D.48401 + 64985;
  D.48403 = D.48402 > 9;
  D.48404 = D.48401 + 64878;
  D.48405 = D.48404 > 9;
  D.48406 = D.48403 & D.48405;
  if (D.48406 != 0) goto <D.48407>; else goto <D.48394>;
  <D.48407>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.47524 = D.47460->opcode;
  D.47525 = D.47524 + 64888;
  if (D.47525 > 9) goto <D.48393>; else goto <D.48394>;
  <D.48393>:
  D.47459 = cfg->cbb;
  mono_link_bblock (cfg, D.47459, false_bb);
  <D.48394>:
  <D.48383>:
  D.47459 = cfg->cbb;
  D.47459->next_bb = false_bb;
  cfg->cbb = false_bb;
  {
    struct MonoInst * inst;

    D.47448 = cfg->mempool;
    inst = mono_mempool_alloc (D.47448, 56);
    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 = 362;
    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.47455 = cfg->ip;
    inst->cil_code = D.47455;
    inst->dreg = res_reg;
    inst->data.op[0].p = 0B;
    inst->type = 3;
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    if (D.47460 != 0B) goto <D.48412>; else goto <D.48413>;
    <D.48412>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47460->next = inst;
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    inst->prev = D.47460;
    D.47459 = cfg->cbb;
    D.47459->last_ins = inst;
    goto <D.48414>;
    <D.48413>:
    D.47459 = cfg->cbb;
    D.47459 = cfg->cbb;
    D.47459->last_ins = inst;
    D.47460 = D.47459->last_ins;
    D.47459->code = D.47460;
    <D.48414>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.47448 = cfg->mempool;
    ins = mono_mempool_alloc (D.47448, 56);
    ins->data.op[1].const_val = 0;
    D.48415 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.48415;
    ins->prev = 0B;
    D.48416 = ins->prev;
    ins->next = D.48416;
    ins->opcode = 442;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.48417 = ins->sreg3;
    ins->sreg2 = D.48417;
    D.48418 = ins->sreg2;
    ins->sreg1 = D.48418;
    D.47455 = cfg->ip;
    ins->cil_code = D.47455;
    if (1 != 0) goto <D.48419>; else goto <D.48420>;
    <D.48419>:
    D.47448 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47448, 172);
    D.47465 = cfg->num_bblocks;
    D.48421 = D.47465;
    D.48422 = D.48421 + 1;
    cfg->num_bblocks = D.48422;
    D.48423 = (int) D.48421;
    falsebb->block_num = D.48423;
    ins->data.op[0].target_block = end_bb;
    D.47459 = cfg->cbb;
    mono_link_bblock (cfg, D.47459, end_bb);
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    if (D.47460 != 0B) goto <D.48424>; else goto <D.48425>;
    <D.48424>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47460->next = ins;
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    ins->prev = D.47460;
    D.47459 = cfg->cbb;
    D.47459->last_ins = ins;
    goto <D.48426>;
    <D.48425>:
    D.47459 = cfg->cbb;
    D.47459 = cfg->cbb;
    D.47459->last_ins = ins;
    D.47460 = D.47459->last_ins;
    D.47459->code = D.47460;
    <D.48426>:
    D.48427 = falsebb->cil_code;
    if (D.48427 != 0B) goto <D.48428>; else goto <D.48429>;
    <D.48428>:
    D.47504 = cfg->cil_offset_to_bb;
    D.48427 = falsebb->cil_code;
    D.48430 = (int) D.48427;
    D.47506 = cfg->cil_start;
    D.47507 = (int) D.47506;
    D.48431 = D.48430 - D.47507;
    D.48432 = (unsigned int) D.48431;
    D.48433 = D.48432 * 4;
    D.48434 = D.47504 + D.48433;
    *D.48434 = falsebb;
    <D.48429>:
    D.47512 = cfg->real_offset;
    falsebb->real_offset = D.47512;
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    if (D.47460 != 0B) goto <D.48438>; else goto <D.48435>;
    <D.48438>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.48439 = D.47460->opcode;
    D.48440 = D.48439 + 64985;
    D.48441 = D.48440 <= 9;
    D.48442 = D.48439 + 64878;
    D.48443 = D.48442 <= 9;
    D.48444 = D.48441 | D.48443;
    if (D.48444 != 0) goto <D.48436>; else goto <D.48445>;
    <D.48445>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47524 = D.47460->opcode;
    D.47525 = D.47524 + 64888;
    if (D.47525 <= 9) goto <D.48436>; else goto <D.48435>;
    <D.48436>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47526 = D.47460->data.op[1].many_blocks;
    D.47527 = D.47526 + 4;
    D.47528 = *D.47527;
    if (D.47528 == 0B) goto <D.48446>; else goto <D.48435>;
    <D.48446>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47526 = D.47460->data.op[1].many_blocks;
    D.47527 = D.47526 + 4;
    *D.47527 = falsebb;
    D.47459 = cfg->cbb;
    mono_link_bblock (cfg, D.47459, falsebb);
    goto <D.48437>;
    <D.48435>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    if (D.47460 == 0B) goto <D.48447>; else goto <D.48449>;
    <D.48449>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.48450 = D.47460->opcode;
    D.48451 = D.48450 != 442;
    D.48452 = D.48450 != 759;
    D.48453 = D.48451 & D.48452;
    if (D.48453 != 0) goto <D.48454>; else goto <D.48448>;
    <D.48454>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.48455 = D.47460->opcode;
    D.48456 = D.48455 + 64985;
    D.48457 = D.48456 > 9;
    D.48458 = D.48455 + 64878;
    D.48459 = D.48458 > 9;
    D.48460 = D.48457 & D.48459;
    if (D.48460 != 0) goto <D.48461>; else goto <D.48448>;
    <D.48461>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47524 = D.47460->opcode;
    D.47525 = D.47524 + 64888;
    if (D.47525 > 9) goto <D.48447>; else goto <D.48448>;
    <D.48447>:
    D.47459 = cfg->cbb;
    mono_link_bblock (cfg, D.47459, falsebb);
    <D.48448>:
    <D.48437>:
    D.47459 = cfg->cbb;
    D.47459->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.48462>;
    <D.48420>:
    D.47448 = cfg->mempool;
    D.48463 = mono_mempool_alloc (D.47448, 8);
    ins->data.op[1].many_blocks = D.48463;
    D.48464 = ins->data.op[1].many_blocks;
    *D.48464 = end_bb;
    D.48464 = ins->data.op[1].many_blocks;
    D.48465 = D.48464 + 4;
    *D.48465 = 0B;
    D.47459 = cfg->cbb;
    mono_link_bblock (cfg, D.47459, end_bb);
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    if (D.47460 != 0B) goto <D.48466>; else goto <D.48467>;
    <D.48466>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47460->next = ins;
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    ins->prev = D.47460;
    D.47459 = cfg->cbb;
    D.47459->last_ins = ins;
    goto <D.48468>;
    <D.48467>:
    D.47459 = cfg->cbb;
    D.47459 = cfg->cbb;
    D.47459->last_ins = ins;
    D.47460 = D.47459->last_ins;
    D.47459->code = D.47460;
    <D.48468>:
    D.47552 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.47553 = D.47552 & 8;
    if (D.47553 == 0) goto <D.48469>; else goto <D.48470>;
    <D.48469>:
    D.47448 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47448, 172);
    D.47465 = cfg->num_bblocks;
    D.48471 = D.47465;
    D.48472 = D.48471 + 1;
    cfg->num_bblocks = D.48472;
    D.48473 = (int) D.48471;
    falsebb->block_num = D.48473;
    D.48464 = ins->data.op[1].many_blocks;
    D.48465 = D.48464 + 4;
    *D.48465 = falsebb;
    D.47459 = cfg->cbb;
    mono_link_bblock (cfg, D.47459, falsebb);
    D.48427 = falsebb->cil_code;
    if (D.48427 != 0B) goto <D.48474>; else goto <D.48475>;
    <D.48474>:
    D.47504 = cfg->cil_offset_to_bb;
    D.48427 = falsebb->cil_code;
    D.48430 = (int) D.48427;
    D.47506 = cfg->cil_start;
    D.47507 = (int) D.47506;
    D.48431 = D.48430 - D.47507;
    D.48432 = (unsigned int) D.48431;
    D.48433 = D.48432 * 4;
    D.48434 = D.47504 + D.48433;
    *D.48434 = falsebb;
    <D.48475>:
    D.47512 = cfg->real_offset;
    falsebb->real_offset = D.47512;
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    if (D.47460 != 0B) goto <D.48479>; else goto <D.48476>;
    <D.48479>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.48480 = D.47460->opcode;
    D.48481 = D.48480 + 64985;
    D.48482 = D.48481 <= 9;
    D.48483 = D.48480 + 64878;
    D.48484 = D.48483 <= 9;
    D.48485 = D.48482 | D.48484;
    if (D.48485 != 0) goto <D.48477>; else goto <D.48486>;
    <D.48486>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47524 = D.47460->opcode;
    D.47525 = D.47524 + 64888;
    if (D.47525 <= 9) goto <D.48477>; else goto <D.48476>;
    <D.48477>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47526 = D.47460->data.op[1].many_blocks;
    D.47527 = D.47526 + 4;
    D.47528 = *D.47527;
    if (D.47528 == 0B) goto <D.48487>; else goto <D.48476>;
    <D.48487>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47526 = D.47460->data.op[1].many_blocks;
    D.47527 = D.47526 + 4;
    *D.47527 = falsebb;
    D.47459 = cfg->cbb;
    mono_link_bblock (cfg, D.47459, falsebb);
    goto <D.48478>;
    <D.48476>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    if (D.47460 == 0B) goto <D.48488>; else goto <D.48490>;
    <D.48490>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.48491 = D.47460->opcode;
    D.48492 = D.48491 != 442;
    D.48493 = D.48491 != 759;
    D.48494 = D.48492 & D.48493;
    if (D.48494 != 0) goto <D.48495>; else goto <D.48489>;
    <D.48495>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.48496 = D.47460->opcode;
    D.48497 = D.48496 + 64985;
    D.48498 = D.48497 > 9;
    D.48499 = D.48496 + 64878;
    D.48500 = D.48499 > 9;
    D.48501 = D.48498 & D.48500;
    if (D.48501 != 0) goto <D.48502>; else goto <D.48489>;
    <D.48502>:
    D.47459 = cfg->cbb;
    D.47460 = D.47459->last_ins;
    D.47524 = D.47460->opcode;
    D.47525 = D.47524 + 64888;
    if (D.47525 > 9) goto <D.48488>; else goto <D.48489>;
    <D.48488>:
    D.47459 = cfg->cbb;
    mono_link_bblock (cfg, D.47459, falsebb);
    <D.48489>:
    <D.48478>:
    D.47459 = cfg->cbb;
    D.47459->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.48503>;
    <D.48470>:
    D.47459 = cfg->cbb;
    D.47459->extended = 1;
    <D.48503>:
    <D.48462>:
  }
  D.48504 = is_null_bb->cil_code;
  if (D.48504 != 0B) goto <D.48505>; else goto <D.48506>;
  <D.48505>:
  D.47504 = cfg->cil_offset_to_bb;
  D.48504 = is_null_bb->cil_code;
  D.48507 = (int) D.48504;
  D.47506 = cfg->cil_start;
  D.47507 = (int) D.47506;
  D.48508 = D.48507 - D.47507;
  D.48509 = (unsigned int) D.48508;
  D.48510 = D.48509 * 4;
  D.48511 = D.47504 + D.48510;
  *D.48511 = is_null_bb;
  <D.48506>:
  D.47512 = cfg->real_offset;
  is_null_bb->real_offset = D.47512;
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  if (D.47460 != 0B) goto <D.48515>; else goto <D.48512>;
  <D.48515>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.48516 = D.47460->opcode;
  D.48517 = D.48516 + 64985;
  D.48518 = D.48517 <= 9;
  D.48519 = D.48516 + 64878;
  D.48520 = D.48519 <= 9;
  D.48521 = D.48518 | D.48520;
  if (D.48521 != 0) goto <D.48513>; else goto <D.48522>;
  <D.48522>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.47524 = D.47460->opcode;
  D.47525 = D.47524 + 64888;
  if (D.47525 <= 9) goto <D.48513>; else goto <D.48512>;
  <D.48513>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.47526 = D.47460->data.op[1].many_blocks;
  D.47527 = D.47526 + 4;
  D.47528 = *D.47527;
  if (D.47528 == 0B) goto <D.48523>; else goto <D.48512>;
  <D.48523>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.47526 = D.47460->data.op[1].many_blocks;
  D.47527 = D.47526 + 4;
  *D.47527 = is_null_bb;
  D.47459 = cfg->cbb;
  mono_link_bblock (cfg, D.47459, is_null_bb);
  goto <D.48514>;
  <D.48512>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  if (D.47460 == 0B) goto <D.48524>; else goto <D.48526>;
  <D.48526>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.48527 = D.47460->opcode;
  D.48528 = D.48527 != 442;
  D.48529 = D.48527 != 759;
  D.48530 = D.48528 & D.48529;
  if (D.48530 != 0) goto <D.48531>; else goto <D.48525>;
  <D.48531>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.48532 = D.47460->opcode;
  D.48533 = D.48532 + 64985;
  D.48534 = D.48533 > 9;
  D.48535 = D.48532 + 64878;
  D.48536 = D.48535 > 9;
  D.48537 = D.48534 & D.48536;
  if (D.48537 != 0) goto <D.48538>; else goto <D.48525>;
  <D.48538>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.47524 = D.47460->opcode;
  D.47525 = D.47524 + 64888;
  if (D.47525 > 9) goto <D.48524>; else goto <D.48525>;
  <D.48524>:
  D.47459 = cfg->cbb;
  mono_link_bblock (cfg, D.47459, is_null_bb);
  <D.48525>:
  <D.48514>:
  D.47459 = cfg->cbb;
  D.47459->next_bb = is_null_bb;
  cfg->cbb = is_null_bb;
  D.48539 = end_bb->cil_code;
  if (D.48539 != 0B) goto <D.48540>; else goto <D.48541>;
  <D.48540>:
  D.47504 = cfg->cil_offset_to_bb;
  D.48539 = end_bb->cil_code;
  D.48542 = (int) D.48539;
  D.47506 = cfg->cil_start;
  D.47507 = (int) D.47506;
  D.48543 = D.48542 - D.47507;
  D.48544 = (unsigned int) D.48543;
  D.48545 = D.48544 * 4;
  D.48546 = D.47504 + D.48545;
  *D.48546 = end_bb;
  <D.48541>:
  D.47512 = cfg->real_offset;
  end_bb->real_offset = D.47512;
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  if (D.47460 != 0B) goto <D.48550>; else goto <D.48547>;
  <D.48550>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.48551 = D.47460->opcode;
  D.48552 = D.48551 + 64985;
  D.48553 = D.48552 <= 9;
  D.48554 = D.48551 + 64878;
  D.48555 = D.48554 <= 9;
  D.48556 = D.48553 | D.48555;
  if (D.48556 != 0) goto <D.48548>; else goto <D.48557>;
  <D.48557>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.47524 = D.47460->opcode;
  D.47525 = D.47524 + 64888;
  if (D.47525 <= 9) goto <D.48548>; else goto <D.48547>;
  <D.48548>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.47526 = D.47460->data.op[1].many_blocks;
  D.47527 = D.47526 + 4;
  D.47528 = *D.47527;
  if (D.47528 == 0B) goto <D.48558>; else goto <D.48547>;
  <D.48558>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.47526 = D.47460->data.op[1].many_blocks;
  D.47527 = D.47526 + 4;
  *D.47527 = end_bb;
  D.47459 = cfg->cbb;
  mono_link_bblock (cfg, D.47459, end_bb);
  goto <D.48549>;
  <D.48547>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  if (D.47460 == 0B) goto <D.48559>; else goto <D.48561>;
  <D.48561>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.48562 = D.47460->opcode;
  D.48563 = D.48562 != 442;
  D.48564 = D.48562 != 759;
  D.48565 = D.48563 & D.48564;
  if (D.48565 != 0) goto <D.48566>; else goto <D.48560>;
  <D.48566>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.48567 = D.47460->opcode;
  D.48568 = D.48567 + 64985;
  D.48569 = D.48568 > 9;
  D.48570 = D.48567 + 64878;
  D.48571 = D.48570 > 9;
  D.48572 = D.48569 & D.48571;
  if (D.48572 != 0) goto <D.48573>; else goto <D.48560>;
  <D.48573>:
  D.47459 = cfg->cbb;
  D.47460 = D.47459->last_ins;
  D.47524 = D.47460->opcode;
  D.47525 = D.47524 + 64888;
  if (D.47525 > 9) goto <D.48559>; else goto <D.48560>;
  <D.48559>:
  D.47459 = cfg->cbb;
  mono_link_bblock (cfg, D.47459, end_bb);
  <D.48560>:
  <D.48549>:
  D.47459 = cfg->cbb;
  D.47459->next_bb = end_bb;
  cfg->cbb = end_bb;
  D.47464 = ins;
  return D.47464;
}


mini_emit_iface_cast (struct MonoCompile * cfg, int vtable_reg, struct MonoClass * klass, struct MonoBasicBlock * false_target, struct MonoBasicBlock * true_target)
{
  unsigned int D.48577;
  struct MonoMemPool * D.48578;
  int D.48579;
  struct MonoInst * D.48580;
  int D.48581;
  int D.48582;
  const unsigned char * D.48583;
  struct MonoBasicBlock * D.48584;
  struct MonoInst * D.48585;
  int D.48591;
  struct MonoInst * D.48592;
  int D.48593;
  int D.48594;
  unsigned int D.48597;
  unsigned int D.48598;
  unsigned int D.48599;
  int D.48600;
  unsigned char * D.48604;
  struct MonoBasicBlock * * D.48607;
  int D.48608;
  unsigned char * D.48609;
  int D.48610;
  int D.48611;
  unsigned int D.48612;
  unsigned int D.48613;
  struct MonoBasicBlock * * D.48614;
  unsigned int D.48615;
  short unsigned int D.48620;
  short unsigned int D.48621;
  _Bool D.48622;
  short unsigned int D.48623;
  _Bool D.48624;
  _Bool D.48625;
  short unsigned int D.48627;
  short unsigned int D.48628;
  struct MonoBasicBlock * * D.48629;
  struct MonoBasicBlock * * D.48630;
  struct MonoBasicBlock * D.48631;
  short unsigned int D.48636;
  _Bool D.48637;
  _Bool D.48638;
  _Bool D.48639;
  short unsigned int D.48641;
  short unsigned int D.48642;
  _Bool D.48643;
  short unsigned int D.48644;
  _Bool D.48645;
  _Bool D.48646;
  void * D.48649;
  struct MonoBasicBlock * * D.48650;
  struct MonoBasicBlock * * D.48651;
  unsigned char D.48655;
  unsigned char D.48656;
  unsigned int D.48659;
  unsigned int D.48660;
  int D.48661;
  short unsigned int D.48668;
  short unsigned int D.48669;
  _Bool D.48670;
  short unsigned int D.48671;
  _Bool D.48672;
  _Bool D.48673;
  short unsigned int D.48679;
  _Bool D.48680;
  _Bool D.48681;
  _Bool D.48682;
  short unsigned int D.48684;
  short unsigned int D.48685;
  _Bool D.48686;
  short unsigned int D.48687;
  _Bool D.48688;
  _Bool D.48689;
  int D.48693;
  struct MonoInst * D.48694;
  int D.48695;
  int D.48696;
  int intf_reg;

  D.48577 = alloc_preg (cfg);
  intf_reg = (int) D.48577;
  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.48578 = cfg->mempool;
    inst = mono_mempool_alloc (D.48578, 56);
    inst->data.op[1].const_val = 0;
    D.48579 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48579;
    inst->prev = 0B;
    D.48580 = inst->prev;
    inst->next = D.48580;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48581 = inst->sreg3;
    inst->sreg2 = D.48581;
    D.48582 = inst->sreg2;
    inst->sreg1 = D.48582;
    D.48583 = cfg->ip;
    inst->cil_code = D.48583;
    inst->dreg = -1;
    inst->sreg1 = intf_reg;
    inst->data.op[1].const_val = 0;
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    if (D.48585 != 0B) goto <D.48586>; else goto <D.48587>;
    <D.48586>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    D.48585->next = inst;
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    inst->prev = D.48585;
    D.48584 = cfg->cbb;
    D.48584->last_ins = inst;
    goto <D.48588>;
    <D.48587>:
    D.48584 = cfg->cbb;
    D.48584 = cfg->cbb;
    D.48584->last_ins = inst;
    D.48585 = D.48584->last_ins;
    D.48584->code = D.48585;
    <D.48588>:
  }
  if (true_target != 0B) goto <D.48589>; else goto <D.48590>;
  <D.48589>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.48578 = cfg->mempool;
    ins = mono_mempool_alloc (D.48578, 56);
    ins->data.op[1].const_val = 0;
    D.48591 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.48591;
    ins->prev = 0B;
    D.48592 = ins->prev;
    ins->next = D.48592;
    ins->opcode = 653;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.48593 = ins->sreg3;
    ins->sreg2 = D.48593;
    D.48594 = ins->sreg2;
    ins->sreg1 = D.48594;
    D.48583 = cfg->ip;
    ins->cil_code = D.48583;
    if (0 != 0) goto <D.48595>; else goto <D.48596>;
    <D.48595>:
    D.48578 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.48578, 172);
    D.48597 = cfg->num_bblocks;
    D.48598 = D.48597;
    D.48599 = D.48598 + 1;
    cfg->num_bblocks = D.48599;
    D.48600 = (int) D.48598;
    falsebb->block_num = D.48600;
    ins->data.op[0].target_block = true_target;
    D.48584 = cfg->cbb;
    mono_link_bblock (cfg, D.48584, true_target);
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    if (D.48585 != 0B) goto <D.48601>; else goto <D.48602>;
    <D.48601>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    D.48585->next = ins;
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    ins->prev = D.48585;
    D.48584 = cfg->cbb;
    D.48584->last_ins = ins;
    goto <D.48603>;
    <D.48602>:
    D.48584 = cfg->cbb;
    D.48584 = cfg->cbb;
    D.48584->last_ins = ins;
    D.48585 = D.48584->last_ins;
    D.48584->code = D.48585;
    <D.48603>:
    D.48604 = falsebb->cil_code;
    if (D.48604 != 0B) goto <D.48605>; else goto <D.48606>;
    <D.48605>:
    D.48607 = cfg->cil_offset_to_bb;
    D.48604 = falsebb->cil_code;
    D.48608 = (int) D.48604;
    D.48609 = cfg->cil_start;
    D.48610 = (int) D.48609;
    D.48611 = D.48608 - D.48610;
    D.48612 = (unsigned int) D.48611;
    D.48613 = D.48612 * 4;
    D.48614 = D.48607 + D.48613;
    *D.48614 = falsebb;
    <D.48606>:
    D.48615 = cfg->real_offset;
    falsebb->real_offset = D.48615;
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    if (D.48585 != 0B) goto <D.48619>; else goto <D.48616>;
    <D.48619>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    D.48620 = D.48585->opcode;
    D.48621 = D.48620 + 64985;
    D.48622 = D.48621 <= 9;
    D.48623 = D.48620 + 64878;
    D.48624 = D.48623 <= 9;
    D.48625 = D.48622 | D.48624;
    if (D.48625 != 0) goto <D.48617>; else goto <D.48626>;
    <D.48626>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    D.48627 = D.48585->opcode;
    D.48628 = D.48627 + 64888;
    if (D.48628 <= 9) goto <D.48617>; else goto <D.48616>;
    <D.48617>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    D.48629 = D.48585->data.op[1].many_blocks;
    D.48630 = D.48629 + 4;
    D.48631 = *D.48630;
    if (D.48631 == 0B) goto <D.48632>; else goto <D.48616>;
    <D.48632>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    D.48629 = D.48585->data.op[1].many_blocks;
    D.48630 = D.48629 + 4;
    *D.48630 = falsebb;
    D.48584 = cfg->cbb;
    mono_link_bblock (cfg, D.48584, falsebb);
    goto <D.48618>;
    <D.48616>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    if (D.48585 == 0B) goto <D.48633>; else goto <D.48635>;
    <D.48635>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    D.48636 = D.48585->opcode;
    D.48637 = D.48636 != 442;
    D.48638 = D.48636 != 759;
    D.48639 = D.48637 & D.48638;
    if (D.48639 != 0) goto <D.48640>; else goto <D.48634>;
    <D.48640>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    D.48641 = D.48585->opcode;
    D.48642 = D.48641 + 64985;
    D.48643 = D.48642 > 9;
    D.48644 = D.48641 + 64878;
    D.48645 = D.48644 > 9;
    D.48646 = D.48643 & D.48645;
    if (D.48646 != 0) goto <D.48647>; else goto <D.48634>;
    <D.48647>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    D.48627 = D.48585->opcode;
    D.48628 = D.48627 + 64888;
    if (D.48628 > 9) goto <D.48633>; else goto <D.48634>;
    <D.48633>:
    D.48584 = cfg->cbb;
    mono_link_bblock (cfg, D.48584, falsebb);
    <D.48634>:
    <D.48618>:
    D.48584 = cfg->cbb;
    D.48584->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.48648>;
    <D.48596>:
    D.48578 = cfg->mempool;
    D.48649 = mono_mempool_alloc (D.48578, 8);
    ins->data.op[1].many_blocks = D.48649;
    D.48650 = ins->data.op[1].many_blocks;
    *D.48650 = true_target;
    D.48650 = ins->data.op[1].many_blocks;
    D.48651 = D.48650 + 4;
    *D.48651 = 0B;
    D.48584 = cfg->cbb;
    mono_link_bblock (cfg, D.48584, true_target);
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    if (D.48585 != 0B) goto <D.48652>; else goto <D.48653>;
    <D.48652>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    D.48585->next = ins;
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    ins->prev = D.48585;
    D.48584 = cfg->cbb;
    D.48584->last_ins = ins;
    goto <D.48654>;
    <D.48653>:
    D.48584 = cfg->cbb;
    D.48584 = cfg->cbb;
    D.48584->last_ins = ins;
    D.48585 = D.48584->last_ins;
    D.48584->code = D.48585;
    <D.48654>:
    D.48655 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.48656 = D.48655 & 8;
    if (D.48656 == 0) goto <D.48657>; else goto <D.48658>;
    <D.48657>:
    D.48578 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.48578, 172);
    D.48597 = cfg->num_bblocks;
    D.48659 = D.48597;
    D.48660 = D.48659 + 1;
    cfg->num_bblocks = D.48660;
    D.48661 = (int) D.48659;
    falsebb->block_num = D.48661;
    D.48650 = ins->data.op[1].many_blocks;
    D.48651 = D.48650 + 4;
    *D.48651 = falsebb;
    D.48584 = cfg->cbb;
    mono_link_bblock (cfg, D.48584, falsebb);
    D.48604 = falsebb->cil_code;
    if (D.48604 != 0B) goto <D.48662>; else goto <D.48663>;
    <D.48662>:
    D.48607 = cfg->cil_offset_to_bb;
    D.48604 = falsebb->cil_code;
    D.48608 = (int) D.48604;
    D.48609 = cfg->cil_start;
    D.48610 = (int) D.48609;
    D.48611 = D.48608 - D.48610;
    D.48612 = (unsigned int) D.48611;
    D.48613 = D.48612 * 4;
    D.48614 = D.48607 + D.48613;
    *D.48614 = falsebb;
    <D.48663>:
    D.48615 = cfg->real_offset;
    falsebb->real_offset = D.48615;
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    if (D.48585 != 0B) goto <D.48667>; else goto <D.48664>;
    <D.48667>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    D.48668 = D.48585->opcode;
    D.48669 = D.48668 + 64985;
    D.48670 = D.48669 <= 9;
    D.48671 = D.48668 + 64878;
    D.48672 = D.48671 <= 9;
    D.48673 = D.48670 | D.48672;
    if (D.48673 != 0) goto <D.48665>; else goto <D.48674>;
    <D.48674>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    D.48627 = D.48585->opcode;
    D.48628 = D.48627 + 64888;
    if (D.48628 <= 9) goto <D.48665>; else goto <D.48664>;
    <D.48665>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    D.48629 = D.48585->data.op[1].many_blocks;
    D.48630 = D.48629 + 4;
    D.48631 = *D.48630;
    if (D.48631 == 0B) goto <D.48675>; else goto <D.48664>;
    <D.48675>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    D.48629 = D.48585->data.op[1].many_blocks;
    D.48630 = D.48629 + 4;
    *D.48630 = falsebb;
    D.48584 = cfg->cbb;
    mono_link_bblock (cfg, D.48584, falsebb);
    goto <D.48666>;
    <D.48664>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    if (D.48585 == 0B) goto <D.48676>; else goto <D.48678>;
    <D.48678>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    D.48679 = D.48585->opcode;
    D.48680 = D.48679 != 442;
    D.48681 = D.48679 != 759;
    D.48682 = D.48680 & D.48681;
    if (D.48682 != 0) goto <D.48683>; else goto <D.48677>;
    <D.48683>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    D.48684 = D.48585->opcode;
    D.48685 = D.48684 + 64985;
    D.48686 = D.48685 > 9;
    D.48687 = D.48684 + 64878;
    D.48688 = D.48687 > 9;
    D.48689 = D.48686 & D.48688;
    if (D.48689 != 0) goto <D.48690>; else goto <D.48677>;
    <D.48690>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    D.48627 = D.48585->opcode;
    D.48628 = D.48627 + 64888;
    if (D.48628 > 9) goto <D.48676>; else goto <D.48677>;
    <D.48676>:
    D.48584 = cfg->cbb;
    mono_link_bblock (cfg, D.48584, falsebb);
    <D.48677>:
    <D.48666>:
    D.48584 = cfg->cbb;
    D.48584->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.48691>;
    <D.48658>:
    D.48584 = cfg->cbb;
    D.48584->extended = 1;
    <D.48691>:
    <D.48648>:
  }
  goto <D.48692>;
  <D.48590>:
  {
    struct MonoInst * inst;

    D.48578 = cfg->mempool;
    inst = mono_mempool_alloc (D.48578, 56);
    inst->data.op[1].const_val = 0;
    D.48693 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48693;
    inst->prev = 0B;
    D.48694 = inst->prev;
    inst->next = D.48694;
    inst->opcode = 451;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48695 = inst->sreg3;
    inst->sreg2 = D.48695;
    D.48696 = inst->sreg2;
    inst->sreg1 = D.48696;
    D.48583 = cfg->ip;
    inst->cil_code = D.48583;
    inst->data.op[1].p = "InvalidCastException";
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    if (D.48585 != 0B) goto <D.48697>; else goto <D.48698>;
    <D.48697>:
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    D.48585->next = inst;
    D.48584 = cfg->cbb;
    D.48585 = D.48584->last_ins;
    inst->prev = D.48585;
    D.48584 = cfg->cbb;
    D.48584->last_ins = inst;
    goto <D.48699>;
    <D.48698>:
    D.48584 = cfg->cbb;
    D.48584 = cfg->cbb;
    D.48584->last_ins = inst;
    D.48585 = D.48584->last_ins;
    D.48584->code = D.48585;
    <D.48699>:
  }
  <D.48692>:
}


mini_emit_max_iid_check_vtable (struct MonoCompile * cfg, int vtable_reg, struct MonoClass * klass, struct MonoBasicBlock * false_target)
{
  unsigned int D.48700;
  struct MonoMemPool * D.48701;
  int D.48702;
  struct MonoInst * D.48703;
  int D.48704;
  int D.48705;
  const unsigned char * D.48706;
  struct MonoBasicBlock * D.48707;
  struct MonoInst * D.48708;
  int max_iid_reg;

  D.48700 = alloc_preg (cfg);
  max_iid_reg = (int) D.48700;
  {
    struct MonoInst * inst;

    D.48701 = cfg->mempool;
    inst = mono_mempool_alloc (D.48701, 56);
    inst->data.op[1].const_val = 0;
    D.48702 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48702;
    inst->prev = 0B;
    D.48703 = inst->prev;
    inst->next = D.48703;
    inst->opcode = 392;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48704 = inst->sreg3;
    inst->sreg2 = D.48704;
    D.48705 = inst->sreg2;
    inst->sreg1 = D.48705;
    D.48706 = cfg->ip;
    inst->cil_code = D.48706;
    inst->dreg = max_iid_reg;
    inst->sreg1 = vtable_reg;
    inst->data.op[0].const_val = 20;
    D.48707 = cfg->cbb;
    D.48708 = D.48707->last_ins;
    if (D.48708 != 0B) goto <D.48709>; else goto <D.48710>;
    <D.48709>:
    D.48707 = cfg->cbb;
    D.48708 = D.48707->last_ins;
    D.48708->next = inst;
    D.48707 = cfg->cbb;
    D.48708 = D.48707->last_ins;
    inst->prev = D.48708;
    D.48707 = cfg->cbb;
    D.48707->last_ins = inst;
    goto <D.48711>;
    <D.48710>:
    D.48707 = cfg->cbb;
    D.48707 = cfg->cbb;
    D.48707->last_ins = inst;
    D.48708 = D.48707->last_ins;
    D.48707->code = D.48708;
    <D.48711>:
  }
  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.48712;
  unsigned char D.48713;
  unsigned int D.48716;
  struct MonoMemPool * D.48717;
  int D.48718;
  struct MonoInst * D.48719;
  guint16 iftmp.457;
  int D.48724;
  int D.48725;
  const unsigned char * D.48726;
  struct MonoBasicBlock * D.48727;
  struct MonoInst * D.48728;
  int D.48732;
  struct MonoInst * D.48733;
  int D.48734;
  int D.48735;
  int D.48740;
  struct MonoInst * D.48741;
  int D.48742;
  int D.48743;
  short unsigned int D.48744;
  int D.48745;
  int D.48751;
  struct MonoInst * D.48752;
  int D.48753;
  int D.48754;
  unsigned int D.48757;
  unsigned int D.48758;
  unsigned int D.48759;
  int D.48760;
  unsigned char * D.48764;
  struct MonoBasicBlock * * D.48767;
  int D.48768;
  unsigned char * D.48769;
  int D.48770;
  int D.48771;
  unsigned int D.48772;
  unsigned int D.48773;
  struct MonoBasicBlock * * D.48774;
  unsigned int D.48775;
  short unsigned int D.48780;
  short unsigned int D.48781;
  _Bool D.48782;
  short unsigned int D.48783;
  _Bool D.48784;
  _Bool D.48785;
  short unsigned int D.48787;
  short unsigned int D.48788;
  struct MonoBasicBlock * * D.48789;
  struct MonoBasicBlock * * D.48790;
  struct MonoBasicBlock * D.48791;
  short unsigned int D.48796;
  _Bool D.48797;
  _Bool D.48798;
  _Bool D.48799;
  short unsigned int D.48801;
  short unsigned int D.48802;
  _Bool D.48803;
  short unsigned int D.48804;
  _Bool D.48805;
  _Bool D.48806;
  void * D.48809;
  struct MonoBasicBlock * * D.48810;
  struct MonoBasicBlock * * D.48811;
  unsigned char D.48815;
  unsigned int D.48818;
  unsigned int D.48819;
  int D.48820;
  short unsigned int D.48827;
  short unsigned int D.48828;
  _Bool D.48829;
  short unsigned int D.48830;
  _Bool D.48831;
  _Bool D.48832;
  short unsigned int D.48838;
  _Bool D.48839;
  _Bool D.48840;
  _Bool D.48841;
  short unsigned int D.48843;
  short unsigned int D.48844;
  _Bool D.48845;
  short unsigned int D.48846;
  _Bool D.48847;
  _Bool D.48848;
  int D.48852;
  struct MonoInst * D.48853;
  int D.48854;
  int D.48855;

  D.48712 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.48713 = D.48712 & 64;
  if (D.48713 != 0) goto <D.48714>; else goto <D.48715>;
  <D.48714>:
  {
    int iid_reg;

    D.48716 = alloc_preg (cfg);
    iid_reg = (int) D.48716;
    {
      struct MonoInst * inst;

      D.48717 = cfg->mempool;
      inst = mono_mempool_alloc (D.48717, 56);
      inst->data.op[1].const_val = 0;
      D.48718 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48718;
      inst->prev = 0B;
      D.48719 = inst->prev;
      inst->next = D.48719;
      D.48712 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.48713 = D.48712 & 64;
      if (D.48713 != 0) goto <D.48721>; else goto <D.48722>;
      <D.48721>:
      iftmp.457 = 732;
      goto <D.48723>;
      <D.48722>:
      iftmp.457 = 362;
      <D.48723>:
      inst->opcode = iftmp.457;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48724 = inst->sreg3;
      inst->sreg2 = D.48724;
      D.48725 = inst->sreg2;
      inst->sreg1 = D.48725;
      D.48726 = cfg->ip;
      inst->cil_code = D.48726;
      inst->dreg = iid_reg;
      inst->data.op[0].p = klass;
      inst->data.op[1].const_val = 23;
      D.48727 = cfg->cbb;
      D.48728 = D.48727->last_ins;
      if (D.48728 != 0B) goto <D.48729>; else goto <D.48730>;
      <D.48729>:
      D.48727 = cfg->cbb;
      D.48728 = D.48727->last_ins;
      D.48728->next = inst;
      D.48727 = cfg->cbb;
      D.48728 = D.48727->last_ins;
      inst->prev = D.48728;
      D.48727 = cfg->cbb;
      D.48727->last_ins = inst;
      goto <D.48731>;
      <D.48730>:
      D.48727 = cfg->cbb;
      D.48727 = cfg->cbb;
      D.48727->last_ins = inst;
      D.48728 = D.48727->last_ins;
      D.48727->code = D.48728;
      <D.48731>:
    }
    {
      struct MonoInst * inst;

      D.48717 = cfg->mempool;
      inst = mono_mempool_alloc (D.48717, 56);
      inst->data.op[1].const_val = 0;
      D.48732 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48732;
      inst->prev = 0B;
      D.48733 = inst->prev;
      inst->next = D.48733;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48734 = inst->sreg3;
      inst->sreg2 = D.48734;
      D.48735 = inst->sreg2;
      inst->sreg1 = D.48735;
      D.48726 = cfg->ip;
      inst->cil_code = D.48726;
      inst->dreg = -1;
      inst->sreg1 = max_iid_reg;
      inst->sreg2 = iid_reg;
      D.48727 = cfg->cbb;
      D.48728 = D.48727->last_ins;
      if (D.48728 != 0B) goto <D.48736>; else goto <D.48737>;
      <D.48736>:
      D.48727 = cfg->cbb;
      D.48728 = D.48727->last_ins;
      D.48728->next = inst;
      D.48727 = cfg->cbb;
      D.48728 = D.48727->last_ins;
      inst->prev = D.48728;
      D.48727 = cfg->cbb;
      D.48727->last_ins = inst;
      goto <D.48738>;
      <D.48737>:
      D.48727 = cfg->cbb;
      D.48727 = cfg->cbb;
      D.48727->last_ins = inst;
      D.48728 = D.48727->last_ins;
      D.48727->code = D.48728;
      <D.48738>:
    }
  }
  goto <D.48739>;
  <D.48715>:
  {
    struct MonoInst * inst;

    D.48717 = cfg->mempool;
    inst = mono_mempool_alloc (D.48717, 56);
    inst->data.op[1].const_val = 0;
    D.48740 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48740;
    inst->prev = 0B;
    D.48741 = inst->prev;
    inst->next = D.48741;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48742 = inst->sreg3;
    inst->sreg2 = D.48742;
    D.48743 = inst->sreg2;
    inst->sreg1 = D.48743;
    D.48726 = cfg->ip;
    inst->cil_code = D.48726;
    inst->dreg = -1;
    inst->sreg1 = max_iid_reg;
    D.48744 = klass->interface_id;
    D.48745 = (int) D.48744;
    inst->data.op[1].const_val = D.48745;
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    if (D.48728 != 0B) goto <D.48746>; else goto <D.48747>;
    <D.48746>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    D.48728->next = inst;
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    inst->prev = D.48728;
    D.48727 = cfg->cbb;
    D.48727->last_ins = inst;
    goto <D.48748>;
    <D.48747>:
    D.48727 = cfg->cbb;
    D.48727 = cfg->cbb;
    D.48727->last_ins = inst;
    D.48728 = D.48727->last_ins;
    D.48727->code = D.48728;
    <D.48748>:
  }
  <D.48739>:
  if (false_target != 0B) goto <D.48749>; else goto <D.48750>;
  <D.48749>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.48717 = cfg->mempool;
    ins = mono_mempool_alloc (D.48717, 56);
    ins->data.op[1].const_val = 0;
    D.48751 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.48751;
    ins->prev = 0B;
    D.48752 = ins->prev;
    ins->next = D.48752;
    ins->opcode = 657;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.48753 = ins->sreg3;
    ins->sreg2 = D.48753;
    D.48754 = ins->sreg2;
    ins->sreg1 = D.48754;
    D.48726 = cfg->ip;
    ins->cil_code = D.48726;
    if (0 != 0) goto <D.48755>; else goto <D.48756>;
    <D.48755>:
    D.48717 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.48717, 172);
    D.48757 = cfg->num_bblocks;
    D.48758 = D.48757;
    D.48759 = D.48758 + 1;
    cfg->num_bblocks = D.48759;
    D.48760 = (int) D.48758;
    falsebb->block_num = D.48760;
    ins->data.op[0].target_block = false_target;
    D.48727 = cfg->cbb;
    mono_link_bblock (cfg, D.48727, false_target);
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    if (D.48728 != 0B) goto <D.48761>; else goto <D.48762>;
    <D.48761>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    D.48728->next = ins;
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    ins->prev = D.48728;
    D.48727 = cfg->cbb;
    D.48727->last_ins = ins;
    goto <D.48763>;
    <D.48762>:
    D.48727 = cfg->cbb;
    D.48727 = cfg->cbb;
    D.48727->last_ins = ins;
    D.48728 = D.48727->last_ins;
    D.48727->code = D.48728;
    <D.48763>:
    D.48764 = falsebb->cil_code;
    if (D.48764 != 0B) goto <D.48765>; else goto <D.48766>;
    <D.48765>:
    D.48767 = cfg->cil_offset_to_bb;
    D.48764 = falsebb->cil_code;
    D.48768 = (int) D.48764;
    D.48769 = cfg->cil_start;
    D.48770 = (int) D.48769;
    D.48771 = D.48768 - D.48770;
    D.48772 = (unsigned int) D.48771;
    D.48773 = D.48772 * 4;
    D.48774 = D.48767 + D.48773;
    *D.48774 = falsebb;
    <D.48766>:
    D.48775 = cfg->real_offset;
    falsebb->real_offset = D.48775;
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    if (D.48728 != 0B) goto <D.48779>; else goto <D.48776>;
    <D.48779>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    D.48780 = D.48728->opcode;
    D.48781 = D.48780 + 64985;
    D.48782 = D.48781 <= 9;
    D.48783 = D.48780 + 64878;
    D.48784 = D.48783 <= 9;
    D.48785 = D.48782 | D.48784;
    if (D.48785 != 0) goto <D.48777>; else goto <D.48786>;
    <D.48786>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    D.48787 = D.48728->opcode;
    D.48788 = D.48787 + 64888;
    if (D.48788 <= 9) goto <D.48777>; else goto <D.48776>;
    <D.48777>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    D.48789 = D.48728->data.op[1].many_blocks;
    D.48790 = D.48789 + 4;
    D.48791 = *D.48790;
    if (D.48791 == 0B) goto <D.48792>; else goto <D.48776>;
    <D.48792>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    D.48789 = D.48728->data.op[1].many_blocks;
    D.48790 = D.48789 + 4;
    *D.48790 = falsebb;
    D.48727 = cfg->cbb;
    mono_link_bblock (cfg, D.48727, falsebb);
    goto <D.48778>;
    <D.48776>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    if (D.48728 == 0B) goto <D.48793>; else goto <D.48795>;
    <D.48795>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    D.48796 = D.48728->opcode;
    D.48797 = D.48796 != 442;
    D.48798 = D.48796 != 759;
    D.48799 = D.48797 & D.48798;
    if (D.48799 != 0) goto <D.48800>; else goto <D.48794>;
    <D.48800>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    D.48801 = D.48728->opcode;
    D.48802 = D.48801 + 64985;
    D.48803 = D.48802 > 9;
    D.48804 = D.48801 + 64878;
    D.48805 = D.48804 > 9;
    D.48806 = D.48803 & D.48805;
    if (D.48806 != 0) goto <D.48807>; else goto <D.48794>;
    <D.48807>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    D.48787 = D.48728->opcode;
    D.48788 = D.48787 + 64888;
    if (D.48788 > 9) goto <D.48793>; else goto <D.48794>;
    <D.48793>:
    D.48727 = cfg->cbb;
    mono_link_bblock (cfg, D.48727, falsebb);
    <D.48794>:
    <D.48778>:
    D.48727 = cfg->cbb;
    D.48727->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.48808>;
    <D.48756>:
    D.48717 = cfg->mempool;
    D.48809 = mono_mempool_alloc (D.48717, 8);
    ins->data.op[1].many_blocks = D.48809;
    D.48810 = ins->data.op[1].many_blocks;
    *D.48810 = false_target;
    D.48810 = ins->data.op[1].many_blocks;
    D.48811 = D.48810 + 4;
    *D.48811 = 0B;
    D.48727 = cfg->cbb;
    mono_link_bblock (cfg, D.48727, false_target);
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    if (D.48728 != 0B) goto <D.48812>; else goto <D.48813>;
    <D.48812>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    D.48728->next = ins;
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    ins->prev = D.48728;
    D.48727 = cfg->cbb;
    D.48727->last_ins = ins;
    goto <D.48814>;
    <D.48813>:
    D.48727 = cfg->cbb;
    D.48727 = cfg->cbb;
    D.48727->last_ins = ins;
    D.48728 = D.48727->last_ins;
    D.48727->code = D.48728;
    <D.48814>:
    D.48712 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.48815 = D.48712 & 8;
    if (D.48815 == 0) goto <D.48816>; else goto <D.48817>;
    <D.48816>:
    D.48717 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.48717, 172);
    D.48757 = cfg->num_bblocks;
    D.48818 = D.48757;
    D.48819 = D.48818 + 1;
    cfg->num_bblocks = D.48819;
    D.48820 = (int) D.48818;
    falsebb->block_num = D.48820;
    D.48810 = ins->data.op[1].many_blocks;
    D.48811 = D.48810 + 4;
    *D.48811 = falsebb;
    D.48727 = cfg->cbb;
    mono_link_bblock (cfg, D.48727, falsebb);
    D.48764 = falsebb->cil_code;
    if (D.48764 != 0B) goto <D.48821>; else goto <D.48822>;
    <D.48821>:
    D.48767 = cfg->cil_offset_to_bb;
    D.48764 = falsebb->cil_code;
    D.48768 = (int) D.48764;
    D.48769 = cfg->cil_start;
    D.48770 = (int) D.48769;
    D.48771 = D.48768 - D.48770;
    D.48772 = (unsigned int) D.48771;
    D.48773 = D.48772 * 4;
    D.48774 = D.48767 + D.48773;
    *D.48774 = falsebb;
    <D.48822>:
    D.48775 = cfg->real_offset;
    falsebb->real_offset = D.48775;
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    if (D.48728 != 0B) goto <D.48826>; else goto <D.48823>;
    <D.48826>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    D.48827 = D.48728->opcode;
    D.48828 = D.48827 + 64985;
    D.48829 = D.48828 <= 9;
    D.48830 = D.48827 + 64878;
    D.48831 = D.48830 <= 9;
    D.48832 = D.48829 | D.48831;
    if (D.48832 != 0) goto <D.48824>; else goto <D.48833>;
    <D.48833>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    D.48787 = D.48728->opcode;
    D.48788 = D.48787 + 64888;
    if (D.48788 <= 9) goto <D.48824>; else goto <D.48823>;
    <D.48824>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    D.48789 = D.48728->data.op[1].many_blocks;
    D.48790 = D.48789 + 4;
    D.48791 = *D.48790;
    if (D.48791 == 0B) goto <D.48834>; else goto <D.48823>;
    <D.48834>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    D.48789 = D.48728->data.op[1].many_blocks;
    D.48790 = D.48789 + 4;
    *D.48790 = falsebb;
    D.48727 = cfg->cbb;
    mono_link_bblock (cfg, D.48727, falsebb);
    goto <D.48825>;
    <D.48823>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    if (D.48728 == 0B) goto <D.48835>; else goto <D.48837>;
    <D.48837>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    D.48838 = D.48728->opcode;
    D.48839 = D.48838 != 442;
    D.48840 = D.48838 != 759;
    D.48841 = D.48839 & D.48840;
    if (D.48841 != 0) goto <D.48842>; else goto <D.48836>;
    <D.48842>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    D.48843 = D.48728->opcode;
    D.48844 = D.48843 + 64985;
    D.48845 = D.48844 > 9;
    D.48846 = D.48843 + 64878;
    D.48847 = D.48846 > 9;
    D.48848 = D.48845 & D.48847;
    if (D.48848 != 0) goto <D.48849>; else goto <D.48836>;
    <D.48849>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    D.48787 = D.48728->opcode;
    D.48788 = D.48787 + 64888;
    if (D.48788 > 9) goto <D.48835>; else goto <D.48836>;
    <D.48835>:
    D.48727 = cfg->cbb;
    mono_link_bblock (cfg, D.48727, falsebb);
    <D.48836>:
    <D.48825>:
    D.48727 = cfg->cbb;
    D.48727->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.48850>;
    <D.48817>:
    D.48727 = cfg->cbb;
    D.48727->extended = 1;
    <D.48850>:
    <D.48808>:
  }
  goto <D.48851>;
  <D.48750>:
  {
    struct MonoInst * inst;

    D.48717 = cfg->mempool;
    inst = mono_mempool_alloc (D.48717, 56);
    inst->data.op[1].const_val = 0;
    D.48852 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48852;
    inst->prev = 0B;
    D.48853 = inst->prev;
    inst->next = D.48853;
    inst->opcode = 460;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48854 = inst->sreg3;
    inst->sreg2 = D.48854;
    D.48855 = inst->sreg2;
    inst->sreg1 = D.48855;
    D.48726 = cfg->ip;
    inst->cil_code = D.48726;
    inst->data.op[1].p = "InvalidCastException";
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    if (D.48728 != 0B) goto <D.48856>; else goto <D.48857>;
    <D.48856>:
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    D.48728->next = inst;
    D.48727 = cfg->cbb;
    D.48728 = D.48727->last_ins;
    inst->prev = D.48728;
    D.48727 = cfg->cbb;
    D.48727->last_ins = inst;
    goto <D.48858>;
    <D.48857>:
    D.48727 = cfg->cbb;
    D.48727 = cfg->cbb;
    D.48727->last_ins = inst;
    D.48728 = D.48727->last_ins;
    D.48727->code = D.48728;
    <D.48858>:
  }
  <D.48851>:
}


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.48859;
  unsigned int D.48860;
  struct MonoMemPool * D.48861;
  int D.48862;
  struct MonoInst * D.48863;
  int D.48864;
  int D.48865;
  const unsigned char * D.48866;
  struct MonoBasicBlock * D.48867;
  struct MonoInst * D.48868;
  unsigned char D.48872;
  unsigned char D.48873;
  unsigned int D.48876;
  unsigned int D.48877;
  unsigned int D.48878;
  unsigned int D.48879;
  unsigned int D.48880;
  unsigned int D.48881;
  int D.48882;
  struct MonoInst * D.48883;
  guint16 iftmp.458;
  int D.48888;
  int D.48889;
  int D.48893;
  struct MonoInst * D.48894;
  int D.48895;
  int D.48896;
  int D.48900;
  struct MonoInst * D.48901;
  int D.48902;
  int D.48903;
  int D.48907;
  struct MonoInst * D.48908;
  int D.48909;
  int D.48910;
  int D.48914;
  struct MonoInst * D.48915;
  int D.48916;
  int D.48917;
  int D.48921;
  struct MonoInst * D.48922;
  int D.48923;
  int D.48924;
  int D.48928;
  struct MonoInst * D.48929;
  int D.48930;
  int D.48931;
  int D.48935;
  struct MonoInst * D.48936;
  int D.48937;
  int D.48938;
  int D.48943;
  struct MonoInst * D.48944;
  int D.48945;
  int D.48946;
  short unsigned int D.48947;
  short unsigned int D.48948;
  int D.48949;
  int D.48953;
  struct MonoInst * D.48954;
  int D.48955;
  int D.48956;
  int D.48957;
  int D.48958;
  int D.48959;
  int ibitmap_reg;
  int ibitmap_byte_reg;

  D.48859 = alloc_preg (cfg);
  ibitmap_reg = (int) D.48859;
  D.48860 = alloc_preg (cfg);
  ibitmap_byte_reg = (int) D.48860;
  {
    struct MonoInst * inst;

    D.48861 = cfg->mempool;
    inst = mono_mempool_alloc (D.48861, 56);
    inst->data.op[1].const_val = 0;
    D.48862 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48862;
    inst->prev = 0B;
    D.48863 = inst->prev;
    inst->next = D.48863;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48864 = inst->sreg3;
    inst->sreg2 = D.48864;
    D.48865 = inst->sreg2;
    inst->sreg1 = D.48865;
    D.48866 = cfg->ip;
    inst->cil_code = D.48866;
    inst->dreg = ibitmap_reg;
    inst->sreg1 = base_reg;
    inst->data.op[0].const_val = offset;
    D.48867 = cfg->cbb;
    D.48868 = D.48867->last_ins;
    if (D.48868 != 0B) goto <D.48869>; else goto <D.48870>;
    <D.48869>:
    D.48867 = cfg->cbb;
    D.48868 = D.48867->last_ins;
    D.48868->next = inst;
    D.48867 = cfg->cbb;
    D.48868 = D.48867->last_ins;
    inst->prev = D.48868;
    D.48867 = cfg->cbb;
    D.48867->last_ins = inst;
    goto <D.48871>;
    <D.48870>:
    D.48867 = cfg->cbb;
    D.48867 = cfg->cbb;
    D.48867->last_ins = inst;
    D.48868 = D.48867->last_ins;
    D.48867->code = D.48868;
    <D.48871>:
  }
  D.48872 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.48873 = D.48872 & 64;
  if (D.48873 != 0) goto <D.48874>; else goto <D.48875>;
  <D.48874>:
  {
    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.48876 = alloc_preg (cfg);
    iid_reg = (int) D.48876;
    D.48877 = alloc_preg (cfg);
    shifted_iid_reg = (int) D.48877;
    D.48878 = alloc_preg (cfg);
    ibitmap_byte_address_reg = (int) D.48878;
    D.48879 = alloc_preg (cfg);
    masked_iid_reg = (int) D.48879;
    D.48880 = alloc_preg (cfg);
    iid_one_bit_reg = (int) D.48880;
    D.48881 = alloc_preg (cfg);
    iid_bit_reg = (int) D.48881;
    {
      struct MonoInst * inst;

      D.48861 = cfg->mempool;
      inst = mono_mempool_alloc (D.48861, 56);
      inst->data.op[1].const_val = 0;
      D.48882 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48882;
      inst->prev = 0B;
      D.48883 = inst->prev;
      inst->next = D.48883;
      D.48872 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.48873 = D.48872 & 64;
      if (D.48873 != 0) goto <D.48885>; else goto <D.48886>;
      <D.48885>:
      iftmp.458 = 732;
      goto <D.48887>;
      <D.48886>:
      iftmp.458 = 362;
      <D.48887>:
      inst->opcode = iftmp.458;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48888 = inst->sreg3;
      inst->sreg2 = D.48888;
      D.48889 = inst->sreg2;
      inst->sreg1 = D.48889;
      D.48866 = cfg->ip;
      inst->cil_code = D.48866;
      inst->dreg = iid_reg;
      inst->data.op[0].p = klass;
      inst->data.op[1].const_val = 23;
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      if (D.48868 != 0B) goto <D.48890>; else goto <D.48891>;
      <D.48890>:
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      D.48868->next = inst;
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      inst->prev = D.48868;
      D.48867 = cfg->cbb;
      D.48867->last_ins = inst;
      goto <D.48892>;
      <D.48891>:
      D.48867 = cfg->cbb;
      D.48867 = cfg->cbb;
      D.48867->last_ins = inst;
      D.48868 = D.48867->last_ins;
      D.48867->code = D.48868;
      <D.48892>:
    }
    {
      struct MonoInst * inst;

      D.48861 = cfg->mempool;
      inst = mono_mempool_alloc (D.48861, 56);
      inst->data.op[1].const_val = 0;
      D.48893 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48893;
      inst->prev = 0B;
      D.48894 = inst->prev;
      inst->next = D.48894;
      inst->opcode = 440;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48895 = inst->sreg3;
      inst->sreg2 = D.48895;
      D.48896 = inst->sreg2;
      inst->sreg1 = D.48896;
      D.48866 = cfg->ip;
      inst->cil_code = D.48866;
      inst->dreg = shifted_iid_reg;
      inst->sreg1 = iid_reg;
      inst->data.op[1].const_val = 3;
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      if (D.48868 != 0B) goto <D.48897>; else goto <D.48898>;
      <D.48897>:
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      D.48868->next = inst;
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      inst->prev = D.48868;
      D.48867 = cfg->cbb;
      D.48867->last_ins = inst;
      goto <D.48899>;
      <D.48898>:
      D.48867 = cfg->cbb;
      D.48867 = cfg->cbb;
      D.48867->last_ins = inst;
      D.48868 = D.48867->last_ins;
      D.48867->code = D.48868;
      <D.48899>:
    }
    {
      struct MonoInst * inst;

      D.48861 = cfg->mempool;
      inst = mono_mempool_alloc (D.48861, 56);
      inst->data.op[1].const_val = 0;
      D.48900 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48900;
      inst->prev = 0B;
      D.48901 = inst->prev;
      inst->next = D.48901;
      inst->opcode = 565;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48902 = inst->sreg3;
      inst->sreg2 = D.48902;
      D.48903 = inst->sreg2;
      inst->sreg1 = D.48903;
      D.48866 = cfg->ip;
      inst->cil_code = D.48866;
      inst->dreg = ibitmap_byte_address_reg;
      inst->sreg1 = ibitmap_reg;
      inst->sreg2 = shifted_iid_reg;
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      if (D.48868 != 0B) goto <D.48904>; else goto <D.48905>;
      <D.48904>:
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      D.48868->next = inst;
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      inst->prev = D.48868;
      D.48867 = cfg->cbb;
      D.48867->last_ins = inst;
      goto <D.48906>;
      <D.48905>:
      D.48867 = cfg->cbb;
      D.48867 = cfg->cbb;
      D.48867->last_ins = inst;
      D.48868 = D.48867->last_ins;
      D.48867->code = D.48868;
      <D.48906>:
    }
    {
      struct MonoInst * inst;

      D.48861 = cfg->mempool;
      inst = mono_mempool_alloc (D.48861, 56);
      inst->data.op[1].const_val = 0;
      D.48907 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48907;
      inst->prev = 0B;
      D.48908 = inst->prev;
      inst->next = D.48908;
      inst->opcode = 390;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48909 = inst->sreg3;
      inst->sreg2 = D.48909;
      D.48910 = inst->sreg2;
      inst->sreg1 = D.48910;
      D.48866 = cfg->ip;
      inst->cil_code = D.48866;
      inst->dreg = ibitmap_byte_reg;
      inst->sreg1 = ibitmap_byte_address_reg;
      inst->data.op[0].const_val = 0;
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      if (D.48868 != 0B) goto <D.48911>; else goto <D.48912>;
      <D.48911>:
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      D.48868->next = inst;
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      inst->prev = D.48868;
      D.48867 = cfg->cbb;
      D.48867->last_ins = inst;
      goto <D.48913>;
      <D.48912>:
      D.48867 = cfg->cbb;
      D.48867 = cfg->cbb;
      D.48867->last_ins = inst;
      D.48868 = D.48867->last_ins;
      D.48867->code = D.48868;
      <D.48913>:
    }
    {
      struct MonoInst * inst;

      D.48861 = cfg->mempool;
      inst = mono_mempool_alloc (D.48861, 56);
      inst->data.op[1].const_val = 0;
      D.48914 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48914;
      inst->prev = 0B;
      D.48915 = inst->prev;
      inst->next = D.48915;
      inst->opcode = 632;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48916 = inst->sreg3;
      inst->sreg2 = D.48916;
      D.48917 = inst->sreg2;
      inst->sreg1 = D.48917;
      D.48866 = cfg->ip;
      inst->cil_code = D.48866;
      inst->dreg = masked_iid_reg;
      inst->sreg1 = iid_reg;
      inst->data.op[1].const_val = 7;
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      if (D.48868 != 0B) goto <D.48918>; else goto <D.48919>;
      <D.48918>:
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      D.48868->next = inst;
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      inst->prev = D.48868;
      D.48867 = cfg->cbb;
      D.48867->last_ins = inst;
      goto <D.48920>;
      <D.48919>:
      D.48867 = cfg->cbb;
      D.48867 = cfg->cbb;
      D.48867->last_ins = inst;
      D.48868 = D.48867->last_ins;
      D.48867->code = D.48868;
      <D.48920>:
    }
    {
      struct MonoInst * inst;

      D.48861 = cfg->mempool;
      inst = mono_mempool_alloc (D.48861, 56);
      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 = 362;
      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.48866 = cfg->ip;
      inst->cil_code = D.48866;
      inst->dreg = iid_one_bit_reg;
      inst->data.op[0].const_val = 1;
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      if (D.48868 != 0B) goto <D.48925>; else goto <D.48926>;
      <D.48925>:
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      D.48868->next = inst;
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      inst->prev = D.48868;
      D.48867 = cfg->cbb;
      D.48867->last_ins = inst;
      goto <D.48927>;
      <D.48926>:
      D.48867 = cfg->cbb;
      D.48867 = cfg->cbb;
      D.48867->last_ins = inst;
      D.48868 = D.48867->last_ins;
      D.48867->code = D.48868;
      <D.48927>:
    }
    {
      struct MonoInst * inst;

      D.48861 = cfg->mempool;
      inst = mono_mempool_alloc (D.48861, 56);
      inst->data.op[1].const_val = 0;
      D.48928 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48928;
      inst->prev = 0B;
      D.48929 = inst->prev;
      inst->next = D.48929;
      inst->opcode = 575;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48930 = inst->sreg3;
      inst->sreg2 = D.48930;
      D.48931 = inst->sreg2;
      inst->sreg1 = D.48931;
      D.48866 = cfg->ip;
      inst->cil_code = D.48866;
      inst->dreg = iid_bit_reg;
      inst->sreg1 = iid_one_bit_reg;
      inst->sreg2 = masked_iid_reg;
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      if (D.48868 != 0B) goto <D.48932>; else goto <D.48933>;
      <D.48932>:
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      D.48868->next = inst;
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      inst->prev = D.48868;
      D.48867 = cfg->cbb;
      D.48867->last_ins = inst;
      goto <D.48934>;
      <D.48933>:
      D.48867 = cfg->cbb;
      D.48867 = cfg->cbb;
      D.48867->last_ins = inst;
      D.48868 = D.48867->last_ins;
      D.48867->code = D.48868;
      <D.48934>:
    }
    {
      struct MonoInst * inst;

      D.48861 = cfg->mempool;
      inst = mono_mempool_alloc (D.48861, 56);
      inst->data.op[1].const_val = 0;
      D.48935 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48935;
      inst->prev = 0B;
      D.48936 = inst->prev;
      inst->next = D.48936;
      inst->opcode = 572;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48937 = inst->sreg3;
      inst->sreg2 = D.48937;
      D.48938 = inst->sreg2;
      inst->sreg1 = D.48938;
      D.48866 = cfg->ip;
      inst->cil_code = D.48866;
      inst->dreg = intf_bit_reg;
      inst->sreg1 = ibitmap_byte_reg;
      inst->sreg2 = iid_bit_reg;
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      if (D.48868 != 0B) goto <D.48939>; else goto <D.48940>;
      <D.48939>:
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      D.48868->next = inst;
      D.48867 = cfg->cbb;
      D.48868 = D.48867->last_ins;
      inst->prev = D.48868;
      D.48867 = cfg->cbb;
      D.48867->last_ins = inst;
      goto <D.48941>;
      <D.48940>:
      D.48867 = cfg->cbb;
      D.48867 = cfg->cbb;
      D.48867->last_ins = inst;
      D.48868 = D.48867->last_ins;
      D.48867->code = D.48868;
      <D.48941>:
    }
  }
  goto <D.48942>;
  <D.48875>:
  {
    struct MonoInst * inst;

    D.48861 = cfg->mempool;
    inst = mono_mempool_alloc (D.48861, 56);
    inst->data.op[1].const_val = 0;
    D.48943 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48943;
    inst->prev = 0B;
    D.48944 = inst->prev;
    inst->next = D.48944;
    inst->opcode = 389;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48945 = inst->sreg3;
    inst->sreg2 = D.48945;
    D.48946 = inst->sreg2;
    inst->sreg1 = D.48946;
    D.48866 = cfg->ip;
    inst->cil_code = D.48866;
    inst->dreg = ibitmap_byte_reg;
    inst->sreg1 = ibitmap_reg;
    D.48947 = klass->interface_id;
    D.48948 = D.48947 >> 3;
    D.48949 = (int) D.48948;
    inst->data.op[0].const_val = D.48949;
    D.48867 = cfg->cbb;
    D.48868 = D.48867->last_ins;
    if (D.48868 != 0B) goto <D.48950>; else goto <D.48951>;
    <D.48950>:
    D.48867 = cfg->cbb;
    D.48868 = D.48867->last_ins;
    D.48868->next = inst;
    D.48867 = cfg->cbb;
    D.48868 = D.48867->last_ins;
    inst->prev = D.48868;
    D.48867 = cfg->cbb;
    D.48867->last_ins = inst;
    goto <D.48952>;
    <D.48951>:
    D.48867 = cfg->cbb;
    D.48867 = cfg->cbb;
    D.48867->last_ins = inst;
    D.48868 = D.48867->last_ins;
    D.48867->code = D.48868;
    <D.48952>:
  }
  {
    struct MonoInst * inst;

    D.48861 = cfg->mempool;
    inst = mono_mempool_alloc (D.48861, 56);
    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 = 436;
    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.48866 = cfg->ip;
    inst->cil_code = D.48866;
    inst->dreg = intf_bit_reg;
    inst->sreg1 = ibitmap_byte_reg;
    D.48947 = klass->interface_id;
    D.48957 = (int) D.48947;
    D.48958 = D.48957 & 7;
    D.48959 = 1 << D.48958;
    inst->data.op[1].const_val = D.48959;
    D.48867 = cfg->cbb;
    D.48868 = D.48867->last_ins;
    if (D.48868 != 0B) goto <D.48960>; else goto <D.48961>;
    <D.48960>:
    D.48867 = cfg->cbb;
    D.48868 = D.48867->last_ins;
    D.48868->next = inst;
    D.48867 = cfg->cbb;
    D.48868 = D.48867->last_ins;
    inst->prev = D.48868;
    D.48867 = cfg->cbb;
    D.48867->last_ins = inst;
    goto <D.48962>;
    <D.48961>:
    D.48867 = cfg->cbb;
    D.48867 = cfg->cbb;
    D.48867->last_ins = inst;
    D.48868 = D.48867->last_ins;
    D.48867->code = D.48868;
    <D.48962>:
  }
  <D.48942>:
}


mini_emit_class_check_branch (struct MonoCompile * cfg, int klass_reg, struct MonoClass * klass, int branch_op, struct MonoBasicBlock * target)
{
  unsigned char D.48963;
  unsigned char D.48964;
  unsigned int D.48967;
  struct MonoMemPool * D.48968;
  int D.48969;
  struct MonoInst * D.48970;
  guint16 iftmp.459;
  int D.48975;
  int D.48976;
  const unsigned char * D.48977;
  struct MonoBasicBlock * D.48978;
  struct MonoInst * D.48979;
  int D.48983;
  struct MonoInst * D.48984;
  int D.48985;
  int D.48986;
  int D.48991;
  struct MonoInst * D.48992;
  int D.48993;
  int D.48994;
  int klass.460;
  int D.48999;
  struct MonoInst * D.49000;
  short unsigned int D.49001;
  int D.49002;
  int D.49003;
  unsigned int D.49006;
  unsigned int D.49007;
  unsigned int D.49008;
  int D.49009;
  unsigned char * D.49013;
  struct MonoBasicBlock * * D.49016;
  int D.49017;
  unsigned char * D.49018;
  int D.49019;
  int D.49020;
  unsigned int D.49021;
  unsigned int D.49022;
  struct MonoBasicBlock * * D.49023;
  unsigned int D.49024;
  short unsigned int D.49029;
  short unsigned int D.49030;
  _Bool D.49031;
  short unsigned int D.49032;
  _Bool D.49033;
  _Bool D.49034;
  short unsigned int D.49036;
  short unsigned int D.49037;
  struct MonoBasicBlock * * D.49038;
  struct MonoBasicBlock * * D.49039;
  struct MonoBasicBlock * D.49040;
  short unsigned int D.49045;
  _Bool D.49046;
  _Bool D.49047;
  _Bool D.49048;
  short unsigned int D.49050;
  short unsigned int D.49051;
  _Bool D.49052;
  short unsigned int D.49053;
  _Bool D.49054;
  _Bool D.49055;
  void * D.49058;
  struct MonoBasicBlock * * D.49059;
  struct MonoBasicBlock * * D.49060;
  unsigned char D.49064;
  unsigned int D.49067;
  unsigned int D.49068;
  int D.49069;
  short unsigned int D.49076;
  short unsigned int D.49077;
  _Bool D.49078;
  short unsigned int D.49079;
  _Bool D.49080;
  _Bool D.49081;
  short unsigned int D.49087;
  _Bool D.49088;
  _Bool D.49089;
  _Bool D.49090;
  short unsigned int D.49092;
  short unsigned int D.49093;
  _Bool D.49094;
  short unsigned int D.49095;
  _Bool D.49096;
  _Bool D.49097;

  D.48963 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.48964 = D.48963 & 64;
  if (D.48964 != 0) goto <D.48965>; else goto <D.48966>;
  <D.48965>:
  {
    int const_reg;

    D.48967 = alloc_preg (cfg);
    const_reg = (int) D.48967;
    {
      struct MonoInst * inst;

      D.48968 = cfg->mempool;
      inst = mono_mempool_alloc (D.48968, 56);
      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;
      D.48963 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.48964 = D.48963 & 64;
      if (D.48964 != 0) goto <D.48972>; else goto <D.48973>;
      <D.48972>:
      iftmp.459 = 732;
      goto <D.48974>;
      <D.48973>:
      iftmp.459 = 362;
      <D.48974>:
      inst->opcode = iftmp.459;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48975 = inst->sreg3;
      inst->sreg2 = D.48975;
      D.48976 = inst->sreg2;
      inst->sreg1 = D.48976;
      D.48977 = cfg->ip;
      inst->cil_code = D.48977;
      inst->dreg = const_reg;
      inst->data.op[0].p = klass;
      inst->data.op[1].const_val = 11;
      D.48978 = cfg->cbb;
      D.48979 = D.48978->last_ins;
      if (D.48979 != 0B) goto <D.48980>; else goto <D.48981>;
      <D.48980>:
      D.48978 = cfg->cbb;
      D.48979 = D.48978->last_ins;
      D.48979->next = inst;
      D.48978 = cfg->cbb;
      D.48979 = D.48978->last_ins;
      inst->prev = D.48979;
      D.48978 = cfg->cbb;
      D.48978->last_ins = inst;
      goto <D.48982>;
      <D.48981>:
      D.48978 = cfg->cbb;
      D.48978 = cfg->cbb;
      D.48978->last_ins = inst;
      D.48979 = D.48978->last_ins;
      D.48978->code = D.48979;
      <D.48982>:
    }
    {
      struct MonoInst * inst;

      D.48968 = cfg->mempool;
      inst = mono_mempool_alloc (D.48968, 56);
      inst->data.op[1].const_val = 0;
      D.48983 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48983;
      inst->prev = 0B;
      D.48984 = inst->prev;
      inst->next = D.48984;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48985 = inst->sreg3;
      inst->sreg2 = D.48985;
      D.48986 = inst->sreg2;
      inst->sreg1 = D.48986;
      D.48977 = cfg->ip;
      inst->cil_code = D.48977;
      inst->dreg = -1;
      inst->sreg1 = klass_reg;
      inst->sreg2 = const_reg;
      D.48978 = cfg->cbb;
      D.48979 = D.48978->last_ins;
      if (D.48979 != 0B) goto <D.48987>; else goto <D.48988>;
      <D.48987>:
      D.48978 = cfg->cbb;
      D.48979 = D.48978->last_ins;
      D.48979->next = inst;
      D.48978 = cfg->cbb;
      D.48979 = D.48978->last_ins;
      inst->prev = D.48979;
      D.48978 = cfg->cbb;
      D.48978->last_ins = inst;
      goto <D.48989>;
      <D.48988>:
      D.48978 = cfg->cbb;
      D.48978 = cfg->cbb;
      D.48978->last_ins = inst;
      D.48979 = D.48978->last_ins;
      D.48978->code = D.48979;
      <D.48989>:
    }
  }
  goto <D.48990>;
  <D.48966>:
  {
    struct MonoInst * inst;

    D.48968 = cfg->mempool;
    inst = mono_mempool_alloc (D.48968, 56);
    inst->data.op[1].const_val = 0;
    D.48991 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48991;
    inst->prev = 0B;
    D.48992 = inst->prev;
    inst->next = D.48992;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48993 = inst->sreg3;
    inst->sreg2 = D.48993;
    D.48994 = inst->sreg2;
    inst->sreg1 = D.48994;
    D.48977 = cfg->ip;
    inst->cil_code = D.48977;
    inst->dreg = -1;
    inst->sreg1 = klass_reg;
    klass.460 = (int) klass;
    inst->data.op[1].const_val = klass.460;
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    if (D.48979 != 0B) goto <D.48996>; else goto <D.48997>;
    <D.48996>:
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    D.48979->next = inst;
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    inst->prev = D.48979;
    D.48978 = cfg->cbb;
    D.48978->last_ins = inst;
    goto <D.48998>;
    <D.48997>:
    D.48978 = cfg->cbb;
    D.48978 = cfg->cbb;
    D.48978->last_ins = inst;
    D.48979 = D.48978->last_ins;
    D.48978->code = D.48979;
    <D.48998>:
  }
  <D.48990>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.48968 = cfg->mempool;
    ins = mono_mempool_alloc (D.48968, 56);
    ins->data.op[1].const_val = 0;
    D.48999 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.48999;
    ins->prev = 0B;
    D.49000 = ins->prev;
    ins->next = D.49000;
    D.49001 = (short unsigned int) branch_op;
    ins->opcode = D.49001;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.49002 = ins->sreg3;
    ins->sreg2 = D.49002;
    D.49003 = ins->sreg2;
    ins->sreg1 = D.49003;
    D.48977 = cfg->ip;
    ins->cil_code = D.48977;
    if (branch_op == 442) goto <D.49004>; else goto <D.49005>;
    <D.49004>:
    D.48968 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.48968, 172);
    D.49006 = cfg->num_bblocks;
    D.49007 = D.49006;
    D.49008 = D.49007 + 1;
    cfg->num_bblocks = D.49008;
    D.49009 = (int) D.49007;
    falsebb->block_num = D.49009;
    ins->data.op[0].target_block = target;
    D.48978 = cfg->cbb;
    mono_link_bblock (cfg, D.48978, target);
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    if (D.48979 != 0B) goto <D.49010>; else goto <D.49011>;
    <D.49010>:
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    D.48979->next = ins;
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    ins->prev = D.48979;
    D.48978 = cfg->cbb;
    D.48978->last_ins = ins;
    goto <D.49012>;
    <D.49011>:
    D.48978 = cfg->cbb;
    D.48978 = cfg->cbb;
    D.48978->last_ins = ins;
    D.48979 = D.48978->last_ins;
    D.48978->code = D.48979;
    <D.49012>:
    D.49013 = falsebb->cil_code;
    if (D.49013 != 0B) goto <D.49014>; else goto <D.49015>;
    <D.49014>:
    D.49016 = cfg->cil_offset_to_bb;
    D.49013 = falsebb->cil_code;
    D.49017 = (int) D.49013;
    D.49018 = cfg->cil_start;
    D.49019 = (int) D.49018;
    D.49020 = D.49017 - D.49019;
    D.49021 = (unsigned int) D.49020;
    D.49022 = D.49021 * 4;
    D.49023 = D.49016 + D.49022;
    *D.49023 = falsebb;
    <D.49015>:
    D.49024 = cfg->real_offset;
    falsebb->real_offset = D.49024;
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    if (D.48979 != 0B) goto <D.49028>; else goto <D.49025>;
    <D.49028>:
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    D.49029 = D.48979->opcode;
    D.49030 = D.49029 + 64985;
    D.49031 = D.49030 <= 9;
    D.49032 = D.49029 + 64878;
    D.49033 = D.49032 <= 9;
    D.49034 = D.49031 | D.49033;
    if (D.49034 != 0) goto <D.49026>; else goto <D.49035>;
    <D.49035>:
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    D.49036 = D.48979->opcode;
    D.49037 = D.49036 + 64888;
    if (D.49037 <= 9) goto <D.49026>; else goto <D.49025>;
    <D.49026>:
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    D.49038 = D.48979->data.op[1].many_blocks;
    D.49039 = D.49038 + 4;
    D.49040 = *D.49039;
    if (D.49040 == 0B) goto <D.49041>; else goto <D.49025>;
    <D.49041>:
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    D.49038 = D.48979->data.op[1].many_blocks;
    D.49039 = D.49038 + 4;
    *D.49039 = falsebb;
    D.48978 = cfg->cbb;
    mono_link_bblock (cfg, D.48978, falsebb);
    goto <D.49027>;
    <D.49025>:
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    if (D.48979 == 0B) goto <D.49042>; else goto <D.49044>;
    <D.49044>:
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    D.49045 = D.48979->opcode;
    D.49046 = D.49045 != 442;
    D.49047 = D.49045 != 759;
    D.49048 = D.49046 & D.49047;
    if (D.49048 != 0) goto <D.49049>; else goto <D.49043>;
    <D.49049>:
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    D.49050 = D.48979->opcode;
    D.49051 = D.49050 + 64985;
    D.49052 = D.49051 > 9;
    D.49053 = D.49050 + 64878;
    D.49054 = D.49053 > 9;
    D.49055 = D.49052 & D.49054;
    if (D.49055 != 0) goto <D.49056>; else goto <D.49043>;
    <D.49056>:
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    D.49036 = D.48979->opcode;
    D.49037 = D.49036 + 64888;
    if (D.49037 > 9) goto <D.49042>; else goto <D.49043>;
    <D.49042>:
    D.48978 = cfg->cbb;
    mono_link_bblock (cfg, D.48978, falsebb);
    <D.49043>:
    <D.49027>:
    D.48978 = cfg->cbb;
    D.48978->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49057>;
    <D.49005>:
    D.48968 = cfg->mempool;
    D.49058 = mono_mempool_alloc (D.48968, 8);
    ins->data.op[1].many_blocks = D.49058;
    D.49059 = ins->data.op[1].many_blocks;
    *D.49059 = target;
    D.49059 = ins->data.op[1].many_blocks;
    D.49060 = D.49059 + 4;
    *D.49060 = 0B;
    D.48978 = cfg->cbb;
    mono_link_bblock (cfg, D.48978, target);
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    if (D.48979 != 0B) goto <D.49061>; else goto <D.49062>;
    <D.49061>:
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    D.48979->next = ins;
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    ins->prev = D.48979;
    D.48978 = cfg->cbb;
    D.48978->last_ins = ins;
    goto <D.49063>;
    <D.49062>:
    D.48978 = cfg->cbb;
    D.48978 = cfg->cbb;
    D.48978->last_ins = ins;
    D.48979 = D.48978->last_ins;
    D.48978->code = D.48979;
    <D.49063>:
    D.48963 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.49064 = D.48963 & 8;
    if (D.49064 == 0) goto <D.49065>; else goto <D.49066>;
    <D.49065>:
    D.48968 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.48968, 172);
    D.49006 = cfg->num_bblocks;
    D.49067 = D.49006;
    D.49068 = D.49067 + 1;
    cfg->num_bblocks = D.49068;
    D.49069 = (int) D.49067;
    falsebb->block_num = D.49069;
    D.49059 = ins->data.op[1].many_blocks;
    D.49060 = D.49059 + 4;
    *D.49060 = falsebb;
    D.48978 = cfg->cbb;
    mono_link_bblock (cfg, D.48978, falsebb);
    D.49013 = falsebb->cil_code;
    if (D.49013 != 0B) goto <D.49070>; else goto <D.49071>;
    <D.49070>:
    D.49016 = cfg->cil_offset_to_bb;
    D.49013 = falsebb->cil_code;
    D.49017 = (int) D.49013;
    D.49018 = cfg->cil_start;
    D.49019 = (int) D.49018;
    D.49020 = D.49017 - D.49019;
    D.49021 = (unsigned int) D.49020;
    D.49022 = D.49021 * 4;
    D.49023 = D.49016 + D.49022;
    *D.49023 = falsebb;
    <D.49071>:
    D.49024 = cfg->real_offset;
    falsebb->real_offset = D.49024;
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    if (D.48979 != 0B) goto <D.49075>; else goto <D.49072>;
    <D.49075>:
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    D.49076 = D.48979->opcode;
    D.49077 = D.49076 + 64985;
    D.49078 = D.49077 <= 9;
    D.49079 = D.49076 + 64878;
    D.49080 = D.49079 <= 9;
    D.49081 = D.49078 | D.49080;
    if (D.49081 != 0) goto <D.49073>; else goto <D.49082>;
    <D.49082>:
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    D.49036 = D.48979->opcode;
    D.49037 = D.49036 + 64888;
    if (D.49037 <= 9) goto <D.49073>; else goto <D.49072>;
    <D.49073>:
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    D.49038 = D.48979->data.op[1].many_blocks;
    D.49039 = D.49038 + 4;
    D.49040 = *D.49039;
    if (D.49040 == 0B) goto <D.49083>; else goto <D.49072>;
    <D.49083>:
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    D.49038 = D.48979->data.op[1].many_blocks;
    D.49039 = D.49038 + 4;
    *D.49039 = falsebb;
    D.48978 = cfg->cbb;
    mono_link_bblock (cfg, D.48978, falsebb);
    goto <D.49074>;
    <D.49072>:
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    if (D.48979 == 0B) goto <D.49084>; else goto <D.49086>;
    <D.49086>:
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    D.49087 = D.48979->opcode;
    D.49088 = D.49087 != 442;
    D.49089 = D.49087 != 759;
    D.49090 = D.49088 & D.49089;
    if (D.49090 != 0) goto <D.49091>; else goto <D.49085>;
    <D.49091>:
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    D.49092 = D.48979->opcode;
    D.49093 = D.49092 + 64985;
    D.49094 = D.49093 > 9;
    D.49095 = D.49092 + 64878;
    D.49096 = D.49095 > 9;
    D.49097 = D.49094 & D.49096;
    if (D.49097 != 0) goto <D.49098>; else goto <D.49085>;
    <D.49098>:
    D.48978 = cfg->cbb;
    D.48979 = D.48978->last_ins;
    D.49036 = D.48979->opcode;
    D.49037 = D.49036 + 64888;
    if (D.49037 > 9) goto <D.49084>; else goto <D.49085>;
    <D.49084>:
    D.48978 = cfg->cbb;
    mono_link_bblock (cfg, D.48978, falsebb);
    <D.49085>:
    <D.49074>:
    D.48978 = cfg->cbb;
    D.48978->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49099>;
    <D.49066>:
    D.48978 = cfg->cbb;
    D.48978->extended = 1;
    <D.49099>:
    <D.49057>:
  }
}


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.49100;
  struct MonoMemPool * D.49101;
  int D.49102;
  struct MonoInst * D.49103;
  int D.49104;
  int D.49105;
  const unsigned char * D.49106;
  struct MonoBasicBlock * D.49107;
  struct MonoInst * D.49108;
  int D.49114;
  struct MonoInst * D.49115;
  int D.49116;
  int D.49117;
  unsigned int D.49120;
  unsigned int D.49121;
  unsigned int D.49122;
  int D.49123;
  unsigned char * D.49127;
  struct MonoBasicBlock * * D.49130;
  int D.49131;
  unsigned char * D.49132;
  int D.49133;
  int D.49134;
  unsigned int D.49135;
  unsigned int D.49136;
  struct MonoBasicBlock * * D.49137;
  unsigned int D.49138;
  short unsigned int D.49143;
  short unsigned int D.49144;
  _Bool D.49145;
  short unsigned int D.49146;
  _Bool D.49147;
  _Bool D.49148;
  short unsigned int D.49150;
  short unsigned int D.49151;
  struct MonoBasicBlock * * D.49152;
  struct MonoBasicBlock * * D.49153;
  struct MonoBasicBlock * D.49154;
  short unsigned int D.49159;
  _Bool D.49160;
  _Bool D.49161;
  _Bool D.49162;
  short unsigned int D.49164;
  short unsigned int D.49165;
  _Bool D.49166;
  short unsigned int D.49167;
  _Bool D.49168;
  _Bool D.49169;
  void * D.49172;
  struct MonoBasicBlock * * D.49173;
  struct MonoBasicBlock * * D.49174;
  unsigned char D.49178;
  unsigned char D.49179;
  unsigned int D.49182;
  unsigned int D.49183;
  int D.49184;
  short unsigned int D.49191;
  short unsigned int D.49192;
  _Bool D.49193;
  short unsigned int D.49194;
  _Bool D.49195;
  _Bool D.49196;
  short unsigned int D.49202;
  _Bool D.49203;
  _Bool D.49204;
  _Bool D.49205;
  short unsigned int D.49207;
  short unsigned int D.49208;
  _Bool D.49209;
  short unsigned int D.49210;
  _Bool D.49211;
  _Bool D.49212;
  int D.49216;
  struct MonoInst * D.49217;
  int D.49218;
  int D.49219;
  int intf_bit_reg;

  D.49100 = alloc_preg (cfg);
  intf_bit_reg = (int) D.49100;
  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.49101 = cfg->mempool;
    inst = mono_mempool_alloc (D.49101, 56);
    inst->data.op[1].const_val = 0;
    D.49102 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49102;
    inst->prev = 0B;
    D.49103 = inst->prev;
    inst->next = D.49103;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49104 = inst->sreg3;
    inst->sreg2 = D.49104;
    D.49105 = inst->sreg2;
    inst->sreg1 = D.49105;
    D.49106 = cfg->ip;
    inst->cil_code = D.49106;
    inst->dreg = -1;
    inst->sreg1 = intf_bit_reg;
    inst->data.op[1].const_val = 0;
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    if (D.49108 != 0B) goto <D.49109>; else goto <D.49110>;
    <D.49109>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    D.49108->next = inst;
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    inst->prev = D.49108;
    D.49107 = cfg->cbb;
    D.49107->last_ins = inst;
    goto <D.49111>;
    <D.49110>:
    D.49107 = cfg->cbb;
    D.49107 = cfg->cbb;
    D.49107->last_ins = inst;
    D.49108 = D.49107->last_ins;
    D.49107->code = D.49108;
    <D.49111>:
  }
  if (true_target != 0B) goto <D.49112>; else goto <D.49113>;
  <D.49112>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.49101 = cfg->mempool;
    ins = mono_mempool_alloc (D.49101, 56);
    ins->data.op[1].const_val = 0;
    D.49114 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.49114;
    ins->prev = 0B;
    D.49115 = ins->prev;
    ins->next = D.49115;
    ins->opcode = 653;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.49116 = ins->sreg3;
    ins->sreg2 = D.49116;
    D.49117 = ins->sreg2;
    ins->sreg1 = D.49117;
    D.49106 = cfg->ip;
    ins->cil_code = D.49106;
    if (0 != 0) goto <D.49118>; else goto <D.49119>;
    <D.49118>:
    D.49101 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49101, 172);
    D.49120 = cfg->num_bblocks;
    D.49121 = D.49120;
    D.49122 = D.49121 + 1;
    cfg->num_bblocks = D.49122;
    D.49123 = (int) D.49121;
    falsebb->block_num = D.49123;
    ins->data.op[0].target_block = true_target;
    D.49107 = cfg->cbb;
    mono_link_bblock (cfg, D.49107, true_target);
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    if (D.49108 != 0B) goto <D.49124>; else goto <D.49125>;
    <D.49124>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    D.49108->next = ins;
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    ins->prev = D.49108;
    D.49107 = cfg->cbb;
    D.49107->last_ins = ins;
    goto <D.49126>;
    <D.49125>:
    D.49107 = cfg->cbb;
    D.49107 = cfg->cbb;
    D.49107->last_ins = ins;
    D.49108 = D.49107->last_ins;
    D.49107->code = D.49108;
    <D.49126>:
    D.49127 = falsebb->cil_code;
    if (D.49127 != 0B) goto <D.49128>; else goto <D.49129>;
    <D.49128>:
    D.49130 = cfg->cil_offset_to_bb;
    D.49127 = falsebb->cil_code;
    D.49131 = (int) D.49127;
    D.49132 = cfg->cil_start;
    D.49133 = (int) D.49132;
    D.49134 = D.49131 - D.49133;
    D.49135 = (unsigned int) D.49134;
    D.49136 = D.49135 * 4;
    D.49137 = D.49130 + D.49136;
    *D.49137 = falsebb;
    <D.49129>:
    D.49138 = cfg->real_offset;
    falsebb->real_offset = D.49138;
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    if (D.49108 != 0B) goto <D.49142>; else goto <D.49139>;
    <D.49142>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    D.49143 = D.49108->opcode;
    D.49144 = D.49143 + 64985;
    D.49145 = D.49144 <= 9;
    D.49146 = D.49143 + 64878;
    D.49147 = D.49146 <= 9;
    D.49148 = D.49145 | D.49147;
    if (D.49148 != 0) goto <D.49140>; else goto <D.49149>;
    <D.49149>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    D.49150 = D.49108->opcode;
    D.49151 = D.49150 + 64888;
    if (D.49151 <= 9) goto <D.49140>; else goto <D.49139>;
    <D.49140>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    D.49152 = D.49108->data.op[1].many_blocks;
    D.49153 = D.49152 + 4;
    D.49154 = *D.49153;
    if (D.49154 == 0B) goto <D.49155>; else goto <D.49139>;
    <D.49155>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    D.49152 = D.49108->data.op[1].many_blocks;
    D.49153 = D.49152 + 4;
    *D.49153 = falsebb;
    D.49107 = cfg->cbb;
    mono_link_bblock (cfg, D.49107, falsebb);
    goto <D.49141>;
    <D.49139>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    if (D.49108 == 0B) goto <D.49156>; else goto <D.49158>;
    <D.49158>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    D.49159 = D.49108->opcode;
    D.49160 = D.49159 != 442;
    D.49161 = D.49159 != 759;
    D.49162 = D.49160 & D.49161;
    if (D.49162 != 0) goto <D.49163>; else goto <D.49157>;
    <D.49163>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    D.49164 = D.49108->opcode;
    D.49165 = D.49164 + 64985;
    D.49166 = D.49165 > 9;
    D.49167 = D.49164 + 64878;
    D.49168 = D.49167 > 9;
    D.49169 = D.49166 & D.49168;
    if (D.49169 != 0) goto <D.49170>; else goto <D.49157>;
    <D.49170>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    D.49150 = D.49108->opcode;
    D.49151 = D.49150 + 64888;
    if (D.49151 > 9) goto <D.49156>; else goto <D.49157>;
    <D.49156>:
    D.49107 = cfg->cbb;
    mono_link_bblock (cfg, D.49107, falsebb);
    <D.49157>:
    <D.49141>:
    D.49107 = cfg->cbb;
    D.49107->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49171>;
    <D.49119>:
    D.49101 = cfg->mempool;
    D.49172 = mono_mempool_alloc (D.49101, 8);
    ins->data.op[1].many_blocks = D.49172;
    D.49173 = ins->data.op[1].many_blocks;
    *D.49173 = true_target;
    D.49173 = ins->data.op[1].many_blocks;
    D.49174 = D.49173 + 4;
    *D.49174 = 0B;
    D.49107 = cfg->cbb;
    mono_link_bblock (cfg, D.49107, true_target);
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    if (D.49108 != 0B) goto <D.49175>; else goto <D.49176>;
    <D.49175>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    D.49108->next = ins;
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    ins->prev = D.49108;
    D.49107 = cfg->cbb;
    D.49107->last_ins = ins;
    goto <D.49177>;
    <D.49176>:
    D.49107 = cfg->cbb;
    D.49107 = cfg->cbb;
    D.49107->last_ins = ins;
    D.49108 = D.49107->last_ins;
    D.49107->code = D.49108;
    <D.49177>:
    D.49178 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.49179 = D.49178 & 8;
    if (D.49179 == 0) goto <D.49180>; else goto <D.49181>;
    <D.49180>:
    D.49101 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49101, 172);
    D.49120 = cfg->num_bblocks;
    D.49182 = D.49120;
    D.49183 = D.49182 + 1;
    cfg->num_bblocks = D.49183;
    D.49184 = (int) D.49182;
    falsebb->block_num = D.49184;
    D.49173 = ins->data.op[1].many_blocks;
    D.49174 = D.49173 + 4;
    *D.49174 = falsebb;
    D.49107 = cfg->cbb;
    mono_link_bblock (cfg, D.49107, falsebb);
    D.49127 = falsebb->cil_code;
    if (D.49127 != 0B) goto <D.49185>; else goto <D.49186>;
    <D.49185>:
    D.49130 = cfg->cil_offset_to_bb;
    D.49127 = falsebb->cil_code;
    D.49131 = (int) D.49127;
    D.49132 = cfg->cil_start;
    D.49133 = (int) D.49132;
    D.49134 = D.49131 - D.49133;
    D.49135 = (unsigned int) D.49134;
    D.49136 = D.49135 * 4;
    D.49137 = D.49130 + D.49136;
    *D.49137 = falsebb;
    <D.49186>:
    D.49138 = cfg->real_offset;
    falsebb->real_offset = D.49138;
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    if (D.49108 != 0B) goto <D.49190>; else goto <D.49187>;
    <D.49190>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    D.49191 = D.49108->opcode;
    D.49192 = D.49191 + 64985;
    D.49193 = D.49192 <= 9;
    D.49194 = D.49191 + 64878;
    D.49195 = D.49194 <= 9;
    D.49196 = D.49193 | D.49195;
    if (D.49196 != 0) goto <D.49188>; else goto <D.49197>;
    <D.49197>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    D.49150 = D.49108->opcode;
    D.49151 = D.49150 + 64888;
    if (D.49151 <= 9) goto <D.49188>; else goto <D.49187>;
    <D.49188>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    D.49152 = D.49108->data.op[1].many_blocks;
    D.49153 = D.49152 + 4;
    D.49154 = *D.49153;
    if (D.49154 == 0B) goto <D.49198>; else goto <D.49187>;
    <D.49198>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    D.49152 = D.49108->data.op[1].many_blocks;
    D.49153 = D.49152 + 4;
    *D.49153 = falsebb;
    D.49107 = cfg->cbb;
    mono_link_bblock (cfg, D.49107, falsebb);
    goto <D.49189>;
    <D.49187>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    if (D.49108 == 0B) goto <D.49199>; else goto <D.49201>;
    <D.49201>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    D.49202 = D.49108->opcode;
    D.49203 = D.49202 != 442;
    D.49204 = D.49202 != 759;
    D.49205 = D.49203 & D.49204;
    if (D.49205 != 0) goto <D.49206>; else goto <D.49200>;
    <D.49206>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    D.49207 = D.49108->opcode;
    D.49208 = D.49207 + 64985;
    D.49209 = D.49208 > 9;
    D.49210 = D.49207 + 64878;
    D.49211 = D.49210 > 9;
    D.49212 = D.49209 & D.49211;
    if (D.49212 != 0) goto <D.49213>; else goto <D.49200>;
    <D.49213>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    D.49150 = D.49108->opcode;
    D.49151 = D.49150 + 64888;
    if (D.49151 > 9) goto <D.49199>; else goto <D.49200>;
    <D.49199>:
    D.49107 = cfg->cbb;
    mono_link_bblock (cfg, D.49107, falsebb);
    <D.49200>:
    <D.49189>:
    D.49107 = cfg->cbb;
    D.49107->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49214>;
    <D.49181>:
    D.49107 = cfg->cbb;
    D.49107->extended = 1;
    <D.49214>:
    <D.49171>:
  }
  goto <D.49215>;
  <D.49113>:
  {
    struct MonoInst * inst;

    D.49101 = cfg->mempool;
    inst = mono_mempool_alloc (D.49101, 56);
    inst->data.op[1].const_val = 0;
    D.49216 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49216;
    inst->prev = 0B;
    D.49217 = inst->prev;
    inst->next = D.49217;
    inst->opcode = 451;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49218 = inst->sreg3;
    inst->sreg2 = D.49218;
    D.49219 = inst->sreg2;
    inst->sreg1 = D.49219;
    D.49106 = cfg->ip;
    inst->cil_code = D.49106;
    inst->data.op[1].p = "InvalidCastException";
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    if (D.49108 != 0B) goto <D.49220>; else goto <D.49221>;
    <D.49220>:
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    D.49108->next = inst;
    D.49107 = cfg->cbb;
    D.49108 = D.49107->last_ins;
    inst->prev = D.49108;
    D.49107 = cfg->cbb;
    D.49107->last_ins = inst;
    goto <D.49222>;
    <D.49221>:
    D.49107 = cfg->cbb;
    D.49107 = cfg->cbb;
    D.49107->last_ins = inst;
    D.49108 = D.49107->last_ins;
    D.49107->code = D.49108;
    <D.49222>:
  }
  <D.49215>:
}


mini_emit_max_iid_check_class (struct MonoCompile * cfg, int klass_reg, struct MonoClass * klass, struct MonoBasicBlock * false_target)
{
  unsigned int D.49223;
  struct MonoMemPool * D.49224;
  int D.49225;
  struct MonoInst * D.49226;
  int D.49227;
  int D.49228;
  const unsigned char * D.49229;
  struct MonoBasicBlock * D.49230;
  struct MonoInst * D.49231;
  int max_iid_reg;

  D.49223 = alloc_preg (cfg);
  max_iid_reg = (int) D.49223;
  {
    struct MonoInst * inst;

    D.49224 = cfg->mempool;
    inst = mono_mempool_alloc (D.49224, 56);
    inst->data.op[1].const_val = 0;
    D.49225 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49225;
    inst->prev = 0B;
    D.49226 = inst->prev;
    inst->next = D.49226;
    inst->opcode = 392;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49227 = inst->sreg3;
    inst->sreg2 = D.49227;
    D.49228 = inst->sreg2;
    inst->sreg1 = D.49228;
    D.49229 = cfg->ip;
    inst->cil_code = D.49229;
    inst->dreg = max_iid_reg;
    inst->sreg1 = klass_reg;
    inst->data.op[0].const_val = 60;
    D.49230 = cfg->cbb;
    D.49231 = D.49230->last_ins;
    if (D.49231 != 0B) goto <D.49232>; else goto <D.49233>;
    <D.49232>:
    D.49230 = cfg->cbb;
    D.49231 = D.49230->last_ins;
    D.49231->next = inst;
    D.49230 = cfg->cbb;
    D.49231 = D.49230->last_ins;
    inst->prev = D.49231;
    D.49230 = cfg->cbb;
    D.49230->last_ins = inst;
    goto <D.49234>;
    <D.49233>:
    D.49230 = cfg->cbb;
    D.49230 = cfg->cbb;
    D.49230->last_ins = inst;
    D.49231 = D.49230->last_ins;
    D.49230->code = D.49231;
    <D.49234>:
  }
  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.49235;
  unsigned int D.49236;
  unsigned int D.49237;
  short unsigned int D.49238;
  struct MonoMemPool * D.49241;
  int D.49242;
  struct MonoInst * D.49243;
  int D.49244;
  int D.49245;
  const unsigned char * D.49246;
  struct MonoBasicBlock * D.49247;
  struct MonoInst * D.49248;
  int D.49252;
  struct MonoInst * D.49253;
  int D.49254;
  int D.49255;
  int D.49256;
  int D.49260;
  struct MonoInst * D.49261;
  int D.49262;
  int D.49263;
  unsigned int D.49266;
  unsigned int D.49267;
  unsigned int D.49268;
  int D.49269;
  unsigned char * D.49273;
  struct MonoBasicBlock * * D.49276;
  int D.49277;
  unsigned char * D.49278;
  int D.49279;
  int D.49280;
  unsigned int D.49281;
  unsigned int D.49282;
  struct MonoBasicBlock * * D.49283;
  unsigned int D.49284;
  short unsigned int D.49289;
  short unsigned int D.49290;
  _Bool D.49291;
  short unsigned int D.49292;
  _Bool D.49293;
  _Bool D.49294;
  short unsigned int D.49296;
  short unsigned int D.49297;
  struct MonoBasicBlock * * D.49298;
  struct MonoBasicBlock * * D.49299;
  struct MonoBasicBlock * D.49300;
  short unsigned int D.49305;
  _Bool D.49306;
  _Bool D.49307;
  _Bool D.49308;
  short unsigned int D.49310;
  short unsigned int D.49311;
  _Bool D.49312;
  short unsigned int D.49313;
  _Bool D.49314;
  _Bool D.49315;
  void * D.49318;
  struct MonoBasicBlock * * D.49319;
  struct MonoBasicBlock * * D.49320;
  unsigned char D.49324;
  unsigned char D.49325;
  unsigned int D.49328;
  unsigned int D.49329;
  int D.49330;
  short unsigned int D.49337;
  short unsigned int D.49338;
  _Bool D.49339;
  short unsigned int D.49340;
  _Bool D.49341;
  _Bool D.49342;
  short unsigned int D.49348;
  _Bool D.49349;
  _Bool D.49350;
  _Bool D.49351;
  short unsigned int D.49353;
  short unsigned int D.49354;
  _Bool D.49355;
  short unsigned int D.49356;
  _Bool D.49357;
  _Bool D.49358;
  int D.49361;
  struct MonoInst * D.49362;
  int D.49363;
  int D.49364;
  int D.49368;
  struct MonoInst * D.49369;
  int D.49370;
  int D.49371;
  int D.49372;
  int D.49373;
  int D.49379;
  struct MonoInst * D.49380;
  int D.49381;
  int D.49382;
  int D.49383;
  unsigned char D.49388;
  unsigned int D.49391;
  int D.49392;
  struct MonoInst * D.49393;
  guint16 iftmp.461;
  int D.49398;
  int D.49399;
  int D.49403;
  struct MonoInst * D.49404;
  int D.49405;
  int D.49406;
  int D.49411;
  struct MonoInst * D.49412;
  int D.49413;
  int D.49414;
  int klass.462;
  int D.49419;
  struct MonoInst * D.49420;
  int D.49421;
  int D.49422;
  unsigned int D.49425;
  unsigned int D.49426;
  int D.49427;
  unsigned char * D.49431;
  int D.49434;
  int D.49435;
  unsigned int D.49436;
  unsigned int D.49437;
  struct MonoBasicBlock * * D.49438;
  short unsigned int D.49443;
  short unsigned int D.49444;
  _Bool D.49445;
  short unsigned int D.49446;
  _Bool D.49447;
  _Bool D.49448;
  short unsigned int D.49454;
  _Bool D.49455;
  _Bool D.49456;
  _Bool D.49457;
  short unsigned int D.49459;
  short unsigned int D.49460;
  _Bool D.49461;
  short unsigned int D.49462;
  _Bool D.49463;
  _Bool D.49464;
  void * D.49467;
  struct MonoBasicBlock * * D.49468;
  struct MonoBasicBlock * * D.49469;
  unsigned int D.49475;
  unsigned int D.49476;
  int D.49477;
  short unsigned int D.49484;
  short unsigned int D.49485;
  _Bool D.49486;
  short unsigned int D.49487;
  _Bool D.49488;
  _Bool D.49489;
  short unsigned int D.49495;
  _Bool D.49496;
  _Bool D.49497;
  _Bool D.49498;
  short unsigned int D.49500;
  short unsigned int D.49501;
  _Bool D.49502;
  short unsigned int D.49503;
  _Bool D.49504;
  _Bool D.49505;
  int idepth_reg;
  int stypes_reg;
  int stype;

  D.49235 = alloc_preg (cfg);
  idepth_reg = (int) D.49235;
  D.49236 = alloc_preg (cfg);
  stypes_reg = (int) D.49236;
  D.49237 = alloc_preg (cfg);
  stype = (int) D.49237;
  mono_class_setup_supertypes (klass);
  D.49238 = klass->idepth;
  if (D.49238 > 6) goto <D.49239>; else goto <D.49240>;
  <D.49239>:
  {
    struct MonoInst * inst;

    D.49241 = cfg->mempool;
    inst = mono_mempool_alloc (D.49241, 56);
    inst->data.op[1].const_val = 0;
    D.49242 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49242;
    inst->prev = 0B;
    D.49243 = inst->prev;
    inst->next = D.49243;
    inst->opcode = 392;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49244 = inst->sreg3;
    inst->sreg2 = D.49244;
    D.49245 = inst->sreg2;
    inst->sreg1 = D.49245;
    D.49246 = cfg->ip;
    inst->cil_code = D.49246;
    inst->dreg = idepth_reg;
    inst->sreg1 = klass_reg;
    inst->data.op[0].const_val = 12;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    if (D.49248 != 0B) goto <D.49249>; else goto <D.49250>;
    <D.49249>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49248->next = inst;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    inst->prev = D.49248;
    D.49247 = cfg->cbb;
    D.49247->last_ins = inst;
    goto <D.49251>;
    <D.49250>:
    D.49247 = cfg->cbb;
    D.49247 = cfg->cbb;
    D.49247->last_ins = inst;
    D.49248 = D.49247->last_ins;
    D.49247->code = D.49248;
    <D.49251>:
  }
  {
    struct MonoInst * inst;

    D.49241 = cfg->mempool;
    inst = mono_mempool_alloc (D.49241, 56);
    inst->data.op[1].const_val = 0;
    D.49252 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49252;
    inst->prev = 0B;
    D.49253 = inst->prev;
    inst->next = D.49253;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49254 = inst->sreg3;
    inst->sreg2 = D.49254;
    D.49255 = inst->sreg2;
    inst->sreg1 = D.49255;
    D.49246 = cfg->ip;
    inst->cil_code = D.49246;
    inst->dreg = -1;
    inst->sreg1 = idepth_reg;
    D.49238 = klass->idepth;
    D.49256 = (int) D.49238;
    inst->data.op[1].const_val = D.49256;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    if (D.49248 != 0B) goto <D.49257>; else goto <D.49258>;
    <D.49257>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49248->next = inst;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    inst->prev = D.49248;
    D.49247 = cfg->cbb;
    D.49247->last_ins = inst;
    goto <D.49259>;
    <D.49258>:
    D.49247 = cfg->cbb;
    D.49247 = cfg->cbb;
    D.49247->last_ins = inst;
    D.49248 = D.49247->last_ins;
    D.49247->code = D.49248;
    <D.49259>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.49241 = cfg->mempool;
    ins = mono_mempool_alloc (D.49241, 56);
    ins->data.op[1].const_val = 0;
    D.49260 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.49260;
    ins->prev = 0B;
    D.49261 = ins->prev;
    ins->next = D.49261;
    ins->opcode = 657;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.49262 = ins->sreg3;
    ins->sreg2 = D.49262;
    D.49263 = ins->sreg2;
    ins->sreg1 = D.49263;
    D.49246 = cfg->ip;
    ins->cil_code = D.49246;
    if (0 != 0) goto <D.49264>; else goto <D.49265>;
    <D.49264>:
    D.49241 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49241, 172);
    D.49266 = cfg->num_bblocks;
    D.49267 = D.49266;
    D.49268 = D.49267 + 1;
    cfg->num_bblocks = D.49268;
    D.49269 = (int) D.49267;
    falsebb->block_num = D.49269;
    ins->data.op[0].target_block = false_target;
    D.49247 = cfg->cbb;
    mono_link_bblock (cfg, D.49247, false_target);
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    if (D.49248 != 0B) goto <D.49270>; else goto <D.49271>;
    <D.49270>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49248->next = ins;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    ins->prev = D.49248;
    D.49247 = cfg->cbb;
    D.49247->last_ins = ins;
    goto <D.49272>;
    <D.49271>:
    D.49247 = cfg->cbb;
    D.49247 = cfg->cbb;
    D.49247->last_ins = ins;
    D.49248 = D.49247->last_ins;
    D.49247->code = D.49248;
    <D.49272>:
    D.49273 = falsebb->cil_code;
    if (D.49273 != 0B) goto <D.49274>; else goto <D.49275>;
    <D.49274>:
    D.49276 = cfg->cil_offset_to_bb;
    D.49273 = falsebb->cil_code;
    D.49277 = (int) D.49273;
    D.49278 = cfg->cil_start;
    D.49279 = (int) D.49278;
    D.49280 = D.49277 - D.49279;
    D.49281 = (unsigned int) D.49280;
    D.49282 = D.49281 * 4;
    D.49283 = D.49276 + D.49282;
    *D.49283 = falsebb;
    <D.49275>:
    D.49284 = cfg->real_offset;
    falsebb->real_offset = D.49284;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    if (D.49248 != 0B) goto <D.49288>; else goto <D.49285>;
    <D.49288>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49289 = D.49248->opcode;
    D.49290 = D.49289 + 64985;
    D.49291 = D.49290 <= 9;
    D.49292 = D.49289 + 64878;
    D.49293 = D.49292 <= 9;
    D.49294 = D.49291 | D.49293;
    if (D.49294 != 0) goto <D.49286>; else goto <D.49295>;
    <D.49295>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49296 = D.49248->opcode;
    D.49297 = D.49296 + 64888;
    if (D.49297 <= 9) goto <D.49286>; else goto <D.49285>;
    <D.49286>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49298 = D.49248->data.op[1].many_blocks;
    D.49299 = D.49298 + 4;
    D.49300 = *D.49299;
    if (D.49300 == 0B) goto <D.49301>; else goto <D.49285>;
    <D.49301>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49298 = D.49248->data.op[1].many_blocks;
    D.49299 = D.49298 + 4;
    *D.49299 = falsebb;
    D.49247 = cfg->cbb;
    mono_link_bblock (cfg, D.49247, falsebb);
    goto <D.49287>;
    <D.49285>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    if (D.49248 == 0B) goto <D.49302>; else goto <D.49304>;
    <D.49304>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49305 = D.49248->opcode;
    D.49306 = D.49305 != 442;
    D.49307 = D.49305 != 759;
    D.49308 = D.49306 & D.49307;
    if (D.49308 != 0) goto <D.49309>; else goto <D.49303>;
    <D.49309>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49310 = D.49248->opcode;
    D.49311 = D.49310 + 64985;
    D.49312 = D.49311 > 9;
    D.49313 = D.49310 + 64878;
    D.49314 = D.49313 > 9;
    D.49315 = D.49312 & D.49314;
    if (D.49315 != 0) goto <D.49316>; else goto <D.49303>;
    <D.49316>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49296 = D.49248->opcode;
    D.49297 = D.49296 + 64888;
    if (D.49297 > 9) goto <D.49302>; else goto <D.49303>;
    <D.49302>:
    D.49247 = cfg->cbb;
    mono_link_bblock (cfg, D.49247, falsebb);
    <D.49303>:
    <D.49287>:
    D.49247 = cfg->cbb;
    D.49247->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49317>;
    <D.49265>:
    D.49241 = cfg->mempool;
    D.49318 = mono_mempool_alloc (D.49241, 8);
    ins->data.op[1].many_blocks = D.49318;
    D.49319 = ins->data.op[1].many_blocks;
    *D.49319 = false_target;
    D.49319 = ins->data.op[1].many_blocks;
    D.49320 = D.49319 + 4;
    *D.49320 = 0B;
    D.49247 = cfg->cbb;
    mono_link_bblock (cfg, D.49247, false_target);
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    if (D.49248 != 0B) goto <D.49321>; else goto <D.49322>;
    <D.49321>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49248->next = ins;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    ins->prev = D.49248;
    D.49247 = cfg->cbb;
    D.49247->last_ins = ins;
    goto <D.49323>;
    <D.49322>:
    D.49247 = cfg->cbb;
    D.49247 = cfg->cbb;
    D.49247->last_ins = ins;
    D.49248 = D.49247->last_ins;
    D.49247->code = D.49248;
    <D.49323>:
    D.49324 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.49325 = D.49324 & 8;
    if (D.49325 == 0) goto <D.49326>; else goto <D.49327>;
    <D.49326>:
    D.49241 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49241, 172);
    D.49266 = cfg->num_bblocks;
    D.49328 = D.49266;
    D.49329 = D.49328 + 1;
    cfg->num_bblocks = D.49329;
    D.49330 = (int) D.49328;
    falsebb->block_num = D.49330;
    D.49319 = ins->data.op[1].many_blocks;
    D.49320 = D.49319 + 4;
    *D.49320 = falsebb;
    D.49247 = cfg->cbb;
    mono_link_bblock (cfg, D.49247, falsebb);
    D.49273 = falsebb->cil_code;
    if (D.49273 != 0B) goto <D.49331>; else goto <D.49332>;
    <D.49331>:
    D.49276 = cfg->cil_offset_to_bb;
    D.49273 = falsebb->cil_code;
    D.49277 = (int) D.49273;
    D.49278 = cfg->cil_start;
    D.49279 = (int) D.49278;
    D.49280 = D.49277 - D.49279;
    D.49281 = (unsigned int) D.49280;
    D.49282 = D.49281 * 4;
    D.49283 = D.49276 + D.49282;
    *D.49283 = falsebb;
    <D.49332>:
    D.49284 = cfg->real_offset;
    falsebb->real_offset = D.49284;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    if (D.49248 != 0B) goto <D.49336>; else goto <D.49333>;
    <D.49336>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49337 = D.49248->opcode;
    D.49338 = D.49337 + 64985;
    D.49339 = D.49338 <= 9;
    D.49340 = D.49337 + 64878;
    D.49341 = D.49340 <= 9;
    D.49342 = D.49339 | D.49341;
    if (D.49342 != 0) goto <D.49334>; else goto <D.49343>;
    <D.49343>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49296 = D.49248->opcode;
    D.49297 = D.49296 + 64888;
    if (D.49297 <= 9) goto <D.49334>; else goto <D.49333>;
    <D.49334>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49298 = D.49248->data.op[1].many_blocks;
    D.49299 = D.49298 + 4;
    D.49300 = *D.49299;
    if (D.49300 == 0B) goto <D.49344>; else goto <D.49333>;
    <D.49344>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49298 = D.49248->data.op[1].many_blocks;
    D.49299 = D.49298 + 4;
    *D.49299 = falsebb;
    D.49247 = cfg->cbb;
    mono_link_bblock (cfg, D.49247, falsebb);
    goto <D.49335>;
    <D.49333>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    if (D.49248 == 0B) goto <D.49345>; else goto <D.49347>;
    <D.49347>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49348 = D.49248->opcode;
    D.49349 = D.49348 != 442;
    D.49350 = D.49348 != 759;
    D.49351 = D.49349 & D.49350;
    if (D.49351 != 0) goto <D.49352>; else goto <D.49346>;
    <D.49352>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49353 = D.49248->opcode;
    D.49354 = D.49353 + 64985;
    D.49355 = D.49354 > 9;
    D.49356 = D.49353 + 64878;
    D.49357 = D.49356 > 9;
    D.49358 = D.49355 & D.49357;
    if (D.49358 != 0) goto <D.49359>; else goto <D.49346>;
    <D.49359>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49296 = D.49248->opcode;
    D.49297 = D.49296 + 64888;
    if (D.49297 > 9) goto <D.49345>; else goto <D.49346>;
    <D.49345>:
    D.49247 = cfg->cbb;
    mono_link_bblock (cfg, D.49247, falsebb);
    <D.49346>:
    <D.49335>:
    D.49247 = cfg->cbb;
    D.49247->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49360>;
    <D.49327>:
    D.49247 = cfg->cbb;
    D.49247->extended = 1;
    <D.49360>:
    <D.49317>:
  }
  <D.49240>:
  {
    struct MonoInst * inst;

    D.49241 = cfg->mempool;
    inst = mono_mempool_alloc (D.49241, 56);
    inst->data.op[1].const_val = 0;
    D.49361 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49361;
    inst->prev = 0B;
    D.49362 = inst->prev;
    inst->next = D.49362;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49363 = inst->sreg3;
    inst->sreg2 = D.49363;
    D.49364 = inst->sreg2;
    inst->sreg1 = D.49364;
    D.49246 = cfg->ip;
    inst->cil_code = D.49246;
    inst->dreg = stypes_reg;
    inst->sreg1 = klass_reg;
    inst->data.op[0].const_val = 8;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    if (D.49248 != 0B) goto <D.49365>; else goto <D.49366>;
    <D.49365>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49248->next = inst;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    inst->prev = D.49248;
    D.49247 = cfg->cbb;
    D.49247->last_ins = inst;
    goto <D.49367>;
    <D.49366>:
    D.49247 = cfg->cbb;
    D.49247 = cfg->cbb;
    D.49247->last_ins = inst;
    D.49248 = D.49247->last_ins;
    D.49247->code = D.49248;
    <D.49367>:
  }
  {
    struct MonoInst * inst;

    D.49241 = cfg->mempool;
    inst = mono_mempool_alloc (D.49241, 56);
    inst->data.op[1].const_val = 0;
    D.49368 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49368;
    inst->prev = 0B;
    D.49369 = inst->prev;
    inst->next = D.49369;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49370 = inst->sreg3;
    inst->sreg2 = D.49370;
    D.49371 = inst->sreg2;
    inst->sreg1 = D.49371;
    D.49246 = cfg->ip;
    inst->cil_code = D.49246;
    inst->dreg = stype;
    inst->sreg1 = stypes_reg;
    D.49238 = klass->idepth;
    D.49256 = (int) D.49238;
    D.49372 = D.49256 + -1;
    D.49373 = D.49372 * 4;
    inst->data.op[0].const_val = D.49373;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    if (D.49248 != 0B) goto <D.49374>; else goto <D.49375>;
    <D.49374>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49248->next = inst;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    inst->prev = D.49248;
    D.49247 = cfg->cbb;
    D.49247->last_ins = inst;
    goto <D.49376>;
    <D.49375>:
    D.49247 = cfg->cbb;
    D.49247 = cfg->cbb;
    D.49247->last_ins = inst;
    D.49248 = D.49247->last_ins;
    D.49247->code = D.49248;
    <D.49376>:
  }
  if (klass_ins != 0B) goto <D.49377>; else goto <D.49378>;
  <D.49377>:
  {
    struct MonoInst * inst;

    D.49241 = cfg->mempool;
    inst = mono_mempool_alloc (D.49241, 56);
    inst->data.op[1].const_val = 0;
    D.49379 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49379;
    inst->prev = 0B;
    D.49380 = inst->prev;
    inst->next = D.49380;
    inst->opcode = 322;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49381 = inst->sreg3;
    inst->sreg2 = D.49381;
    D.49382 = inst->sreg2;
    inst->sreg1 = D.49382;
    D.49246 = cfg->ip;
    inst->cil_code = D.49246;
    inst->dreg = -1;
    inst->sreg1 = stype;
    D.49383 = klass_ins->dreg;
    inst->sreg2 = D.49383;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    if (D.49248 != 0B) goto <D.49384>; else goto <D.49385>;
    <D.49384>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49248->next = inst;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    inst->prev = D.49248;
    D.49247 = cfg->cbb;
    D.49247->last_ins = inst;
    goto <D.49386>;
    <D.49385>:
    D.49247 = cfg->cbb;
    D.49247 = cfg->cbb;
    D.49247->last_ins = inst;
    D.49248 = D.49247->last_ins;
    D.49247->code = D.49248;
    <D.49386>:
  }
  goto <D.49387>;
  <D.49378>:
  D.49324 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.49388 = D.49324 & 64;
  if (D.49388 != 0) goto <D.49389>; else goto <D.49390>;
  <D.49389>:
  {
    int const_reg;

    D.49391 = alloc_preg (cfg);
    const_reg = (int) D.49391;
    {
      struct MonoInst * inst;

      D.49241 = cfg->mempool;
      inst = mono_mempool_alloc (D.49241, 56);
      inst->data.op[1].const_val = 0;
      D.49392 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49392;
      inst->prev = 0B;
      D.49393 = inst->prev;
      inst->next = D.49393;
      D.49324 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.49388 = D.49324 & 64;
      if (D.49388 != 0) goto <D.49395>; else goto <D.49396>;
      <D.49395>:
      iftmp.461 = 732;
      goto <D.49397>;
      <D.49396>:
      iftmp.461 = 362;
      <D.49397>:
      inst->opcode = iftmp.461;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49398 = inst->sreg3;
      inst->sreg2 = D.49398;
      D.49399 = inst->sreg2;
      inst->sreg1 = D.49399;
      D.49246 = cfg->ip;
      inst->cil_code = D.49246;
      inst->dreg = const_reg;
      inst->data.op[0].p = klass;
      inst->data.op[1].const_val = 11;
      D.49247 = cfg->cbb;
      D.49248 = D.49247->last_ins;
      if (D.49248 != 0B) goto <D.49400>; else goto <D.49401>;
      <D.49400>:
      D.49247 = cfg->cbb;
      D.49248 = D.49247->last_ins;
      D.49248->next = inst;
      D.49247 = cfg->cbb;
      D.49248 = D.49247->last_ins;
      inst->prev = D.49248;
      D.49247 = cfg->cbb;
      D.49247->last_ins = inst;
      goto <D.49402>;
      <D.49401>:
      D.49247 = cfg->cbb;
      D.49247 = cfg->cbb;
      D.49247->last_ins = inst;
      D.49248 = D.49247->last_ins;
      D.49247->code = D.49248;
      <D.49402>:
    }
    {
      struct MonoInst * inst;

      D.49241 = cfg->mempool;
      inst = mono_mempool_alloc (D.49241, 56);
      inst->data.op[1].const_val = 0;
      D.49403 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49403;
      inst->prev = 0B;
      D.49404 = inst->prev;
      inst->next = D.49404;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49405 = inst->sreg3;
      inst->sreg2 = D.49405;
      D.49406 = inst->sreg2;
      inst->sreg1 = D.49406;
      D.49246 = cfg->ip;
      inst->cil_code = D.49246;
      inst->dreg = -1;
      inst->sreg1 = stype;
      inst->sreg2 = const_reg;
      D.49247 = cfg->cbb;
      D.49248 = D.49247->last_ins;
      if (D.49248 != 0B) goto <D.49407>; else goto <D.49408>;
      <D.49407>:
      D.49247 = cfg->cbb;
      D.49248 = D.49247->last_ins;
      D.49248->next = inst;
      D.49247 = cfg->cbb;
      D.49248 = D.49247->last_ins;
      inst->prev = D.49248;
      D.49247 = cfg->cbb;
      D.49247->last_ins = inst;
      goto <D.49409>;
      <D.49408>:
      D.49247 = cfg->cbb;
      D.49247 = cfg->cbb;
      D.49247->last_ins = inst;
      D.49248 = D.49247->last_ins;
      D.49247->code = D.49248;
      <D.49409>:
    }
  }
  goto <D.49410>;
  <D.49390>:
  {
    struct MonoInst * inst;

    D.49241 = cfg->mempool;
    inst = mono_mempool_alloc (D.49241, 56);
    inst->data.op[1].const_val = 0;
    D.49411 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49411;
    inst->prev = 0B;
    D.49412 = inst->prev;
    inst->next = D.49412;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49413 = inst->sreg3;
    inst->sreg2 = D.49413;
    D.49414 = inst->sreg2;
    inst->sreg1 = D.49414;
    D.49246 = cfg->ip;
    inst->cil_code = D.49246;
    inst->dreg = -1;
    inst->sreg1 = stype;
    klass.462 = (int) klass;
    inst->data.op[1].const_val = klass.462;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    if (D.49248 != 0B) goto <D.49416>; else goto <D.49417>;
    <D.49416>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49248->next = inst;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    inst->prev = D.49248;
    D.49247 = cfg->cbb;
    D.49247->last_ins = inst;
    goto <D.49418>;
    <D.49417>:
    D.49247 = cfg->cbb;
    D.49247 = cfg->cbb;
    D.49247->last_ins = inst;
    D.49248 = D.49247->last_ins;
    D.49247->code = D.49248;
    <D.49418>:
  }
  <D.49410>:
  <D.49387>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.49241 = cfg->mempool;
    ins = mono_mempool_alloc (D.49241, 56);
    ins->data.op[1].const_val = 0;
    D.49419 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.49419;
    ins->prev = 0B;
    D.49420 = ins->prev;
    ins->next = D.49420;
    ins->opcode = 648;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.49421 = ins->sreg3;
    ins->sreg2 = D.49421;
    D.49422 = ins->sreg2;
    ins->sreg1 = D.49422;
    D.49246 = cfg->ip;
    ins->cil_code = D.49246;
    if (0 != 0) goto <D.49423>; else goto <D.49424>;
    <D.49423>:
    D.49241 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49241, 172);
    D.49266 = cfg->num_bblocks;
    D.49425 = D.49266;
    D.49426 = D.49425 + 1;
    cfg->num_bblocks = D.49426;
    D.49427 = (int) D.49425;
    falsebb->block_num = D.49427;
    ins->data.op[0].target_block = true_target;
    D.49247 = cfg->cbb;
    mono_link_bblock (cfg, D.49247, true_target);
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    if (D.49248 != 0B) goto <D.49428>; else goto <D.49429>;
    <D.49428>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49248->next = ins;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    ins->prev = D.49248;
    D.49247 = cfg->cbb;
    D.49247->last_ins = ins;
    goto <D.49430>;
    <D.49429>:
    D.49247 = cfg->cbb;
    D.49247 = cfg->cbb;
    D.49247->last_ins = ins;
    D.49248 = D.49247->last_ins;
    D.49247->code = D.49248;
    <D.49430>:
    D.49431 = falsebb->cil_code;
    if (D.49431 != 0B) goto <D.49432>; else goto <D.49433>;
    <D.49432>:
    D.49276 = cfg->cil_offset_to_bb;
    D.49431 = falsebb->cil_code;
    D.49434 = (int) D.49431;
    D.49278 = cfg->cil_start;
    D.49279 = (int) D.49278;
    D.49435 = D.49434 - D.49279;
    D.49436 = (unsigned int) D.49435;
    D.49437 = D.49436 * 4;
    D.49438 = D.49276 + D.49437;
    *D.49438 = falsebb;
    <D.49433>:
    D.49284 = cfg->real_offset;
    falsebb->real_offset = D.49284;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    if (D.49248 != 0B) goto <D.49442>; else goto <D.49439>;
    <D.49442>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49443 = D.49248->opcode;
    D.49444 = D.49443 + 64985;
    D.49445 = D.49444 <= 9;
    D.49446 = D.49443 + 64878;
    D.49447 = D.49446 <= 9;
    D.49448 = D.49445 | D.49447;
    if (D.49448 != 0) goto <D.49440>; else goto <D.49449>;
    <D.49449>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49296 = D.49248->opcode;
    D.49297 = D.49296 + 64888;
    if (D.49297 <= 9) goto <D.49440>; else goto <D.49439>;
    <D.49440>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49298 = D.49248->data.op[1].many_blocks;
    D.49299 = D.49298 + 4;
    D.49300 = *D.49299;
    if (D.49300 == 0B) goto <D.49450>; else goto <D.49439>;
    <D.49450>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49298 = D.49248->data.op[1].many_blocks;
    D.49299 = D.49298 + 4;
    *D.49299 = falsebb;
    D.49247 = cfg->cbb;
    mono_link_bblock (cfg, D.49247, falsebb);
    goto <D.49441>;
    <D.49439>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    if (D.49248 == 0B) goto <D.49451>; else goto <D.49453>;
    <D.49453>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49454 = D.49248->opcode;
    D.49455 = D.49454 != 442;
    D.49456 = D.49454 != 759;
    D.49457 = D.49455 & D.49456;
    if (D.49457 != 0) goto <D.49458>; else goto <D.49452>;
    <D.49458>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49459 = D.49248->opcode;
    D.49460 = D.49459 + 64985;
    D.49461 = D.49460 > 9;
    D.49462 = D.49459 + 64878;
    D.49463 = D.49462 > 9;
    D.49464 = D.49461 & D.49463;
    if (D.49464 != 0) goto <D.49465>; else goto <D.49452>;
    <D.49465>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49296 = D.49248->opcode;
    D.49297 = D.49296 + 64888;
    if (D.49297 > 9) goto <D.49451>; else goto <D.49452>;
    <D.49451>:
    D.49247 = cfg->cbb;
    mono_link_bblock (cfg, D.49247, falsebb);
    <D.49452>:
    <D.49441>:
    D.49247 = cfg->cbb;
    D.49247->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49466>;
    <D.49424>:
    D.49241 = cfg->mempool;
    D.49467 = mono_mempool_alloc (D.49241, 8);
    ins->data.op[1].many_blocks = D.49467;
    D.49468 = ins->data.op[1].many_blocks;
    *D.49468 = true_target;
    D.49468 = ins->data.op[1].many_blocks;
    D.49469 = D.49468 + 4;
    *D.49469 = 0B;
    D.49247 = cfg->cbb;
    mono_link_bblock (cfg, D.49247, true_target);
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    if (D.49248 != 0B) goto <D.49470>; else goto <D.49471>;
    <D.49470>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49248->next = ins;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    ins->prev = D.49248;
    D.49247 = cfg->cbb;
    D.49247->last_ins = ins;
    goto <D.49472>;
    <D.49471>:
    D.49247 = cfg->cbb;
    D.49247 = cfg->cbb;
    D.49247->last_ins = ins;
    D.49248 = D.49247->last_ins;
    D.49247->code = D.49248;
    <D.49472>:
    D.49324 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.49325 = D.49324 & 8;
    if (D.49325 == 0) goto <D.49473>; else goto <D.49474>;
    <D.49473>:
    D.49241 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49241, 172);
    D.49266 = cfg->num_bblocks;
    D.49475 = D.49266;
    D.49476 = D.49475 + 1;
    cfg->num_bblocks = D.49476;
    D.49477 = (int) D.49475;
    falsebb->block_num = D.49477;
    D.49468 = ins->data.op[1].many_blocks;
    D.49469 = D.49468 + 4;
    *D.49469 = falsebb;
    D.49247 = cfg->cbb;
    mono_link_bblock (cfg, D.49247, falsebb);
    D.49431 = falsebb->cil_code;
    if (D.49431 != 0B) goto <D.49478>; else goto <D.49479>;
    <D.49478>:
    D.49276 = cfg->cil_offset_to_bb;
    D.49431 = falsebb->cil_code;
    D.49434 = (int) D.49431;
    D.49278 = cfg->cil_start;
    D.49279 = (int) D.49278;
    D.49435 = D.49434 - D.49279;
    D.49436 = (unsigned int) D.49435;
    D.49437 = D.49436 * 4;
    D.49438 = D.49276 + D.49437;
    *D.49438 = falsebb;
    <D.49479>:
    D.49284 = cfg->real_offset;
    falsebb->real_offset = D.49284;
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    if (D.49248 != 0B) goto <D.49483>; else goto <D.49480>;
    <D.49483>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49484 = D.49248->opcode;
    D.49485 = D.49484 + 64985;
    D.49486 = D.49485 <= 9;
    D.49487 = D.49484 + 64878;
    D.49488 = D.49487 <= 9;
    D.49489 = D.49486 | D.49488;
    if (D.49489 != 0) goto <D.49481>; else goto <D.49490>;
    <D.49490>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49296 = D.49248->opcode;
    D.49297 = D.49296 + 64888;
    if (D.49297 <= 9) goto <D.49481>; else goto <D.49480>;
    <D.49481>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49298 = D.49248->data.op[1].many_blocks;
    D.49299 = D.49298 + 4;
    D.49300 = *D.49299;
    if (D.49300 == 0B) goto <D.49491>; else goto <D.49480>;
    <D.49491>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49298 = D.49248->data.op[1].many_blocks;
    D.49299 = D.49298 + 4;
    *D.49299 = falsebb;
    D.49247 = cfg->cbb;
    mono_link_bblock (cfg, D.49247, falsebb);
    goto <D.49482>;
    <D.49480>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    if (D.49248 == 0B) goto <D.49492>; else goto <D.49494>;
    <D.49494>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49495 = D.49248->opcode;
    D.49496 = D.49495 != 442;
    D.49497 = D.49495 != 759;
    D.49498 = D.49496 & D.49497;
    if (D.49498 != 0) goto <D.49499>; else goto <D.49493>;
    <D.49499>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49500 = D.49248->opcode;
    D.49501 = D.49500 + 64985;
    D.49502 = D.49501 > 9;
    D.49503 = D.49500 + 64878;
    D.49504 = D.49503 > 9;
    D.49505 = D.49502 & D.49504;
    if (D.49505 != 0) goto <D.49506>; else goto <D.49493>;
    <D.49506>:
    D.49247 = cfg->cbb;
    D.49248 = D.49247->last_ins;
    D.49296 = D.49248->opcode;
    D.49297 = D.49296 + 64888;
    if (D.49297 > 9) goto <D.49492>; else goto <D.49493>;
    <D.49492>:
    D.49247 = cfg->cbb;
    mono_link_bblock (cfg, D.49247, falsebb);
    <D.49493>:
    <D.49482>:
    D.49247 = cfg->cbb;
    D.49247->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49507>;
    <D.49474>:
    D.49247 = cfg->cbb;
    D.49247->extended = 1;
    <D.49507>:
    <D.49466>:
  }
}


handle_unbox_gsharedvt (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * obj, struct MonoBasicBlock * * out_cbb)
{
  struct MonoInst * obj.463;
  struct MonoInst * obj.464;
  struct MonoMemPool * D.49510;
  unsigned int D.49511;
  unsigned int D.49512;
  unsigned int D.49513;
  int D.49514;
  unsigned int D.49515;
  unsigned int D.49516;
  int D.49517;
  unsigned int D.49518;
  unsigned int D.49519;
  int D.49520;
  int D.49521;
  struct MonoInst * D.49522;
  int D.49523;
  int D.49524;
  const unsigned char * D.49525;
  int D.49526;
  struct MonoBasicBlock * D.49527;
  struct MonoInst * D.49528;
  int D.49532;
  struct MonoInst * D.49533;
  int D.49534;
  int D.49535;
  unsigned int D.49538;
  unsigned int D.49539;
  int D.49540;
  unsigned char * D.49544;
  struct MonoBasicBlock * * D.49547;
  int D.49548;
  unsigned char * D.49549;
  int D.49550;
  int D.49551;
  unsigned int D.49552;
  unsigned int D.49553;
  struct MonoBasicBlock * * D.49554;
  unsigned int D.49555;
  short unsigned int D.49560;
  short unsigned int D.49561;
  _Bool D.49562;
  short unsigned int D.49563;
  _Bool D.49564;
  _Bool D.49565;
  short unsigned int D.49567;
  short unsigned int D.49568;
  struct MonoBasicBlock * * D.49569;
  struct MonoBasicBlock * * D.49570;
  struct MonoBasicBlock * D.49571;
  short unsigned int D.49576;
  _Bool D.49577;
  _Bool D.49578;
  _Bool D.49579;
  short unsigned int D.49581;
  short unsigned int D.49582;
  _Bool D.49583;
  short unsigned int D.49584;
  _Bool D.49585;
  _Bool D.49586;
  void * D.49589;
  struct MonoBasicBlock * * D.49590;
  struct MonoBasicBlock * * D.49591;
  unsigned char D.49595;
  unsigned char D.49596;
  unsigned int D.49599;
  unsigned int D.49600;
  int D.49601;
  short unsigned int D.49608;
  short unsigned int D.49609;
  _Bool D.49610;
  short unsigned int D.49611;
  _Bool D.49612;
  _Bool D.49613;
  short unsigned int D.49619;
  _Bool D.49620;
  _Bool D.49621;
  _Bool D.49622;
  short unsigned int D.49624;
  short unsigned int D.49625;
  _Bool D.49626;
  short unsigned int D.49627;
  _Bool D.49628;
  _Bool D.49629;
  int D.49632;
  struct MonoInst * D.49633;
  int D.49634;
  int D.49635;
  int D.49639;
  struct MonoInst * D.49640;
  int D.49641;
  int D.49642;
  unsigned int D.49645;
  unsigned int D.49646;
  int D.49647;
  unsigned char * D.49651;
  int D.49654;
  int D.49655;
  unsigned int D.49656;
  unsigned int D.49657;
  struct MonoBasicBlock * * D.49658;
  short unsigned int D.49663;
  short unsigned int D.49664;
  _Bool D.49665;
  short unsigned int D.49666;
  _Bool D.49667;
  _Bool D.49668;
  short unsigned int D.49674;
  _Bool D.49675;
  _Bool D.49676;
  _Bool D.49677;
  short unsigned int D.49679;
  short unsigned int D.49680;
  _Bool D.49681;
  short unsigned int D.49682;
  _Bool D.49683;
  _Bool D.49684;
  void * D.49687;
  struct MonoBasicBlock * * D.49688;
  struct MonoBasicBlock * * D.49689;
  unsigned int D.49695;
  unsigned int D.49696;
  int D.49697;
  short unsigned int D.49704;
  short unsigned int D.49705;
  _Bool D.49706;
  short unsigned int D.49707;
  _Bool D.49708;
  _Bool D.49709;
  short unsigned int D.49715;
  _Bool D.49716;
  _Bool D.49717;
  _Bool D.49718;
  short unsigned int D.49720;
  short unsigned int D.49721;
  _Bool D.49722;
  short unsigned int D.49723;
  _Bool D.49724;
  _Bool D.49725;
  unsigned int D.49728;
  int D.49729;
  struct MonoInst * D.49730;
  int D.49731;
  int D.49732;
  int D.49733;
  int D.49737;
  struct MonoInst * D.49738;
  int D.49739;
  int D.49740;
  unsigned int D.49743;
  unsigned int D.49744;
  int D.49745;
  unsigned char * D.49749;
  int D.49752;
  int D.49753;
  unsigned int D.49754;
  unsigned int D.49755;
  struct MonoBasicBlock * * D.49756;
  short unsigned int D.49761;
  short unsigned int D.49762;
  _Bool D.49763;
  short unsigned int D.49764;
  _Bool D.49765;
  _Bool D.49766;
  short unsigned int D.49772;
  _Bool D.49773;
  _Bool D.49774;
  _Bool D.49775;
  short unsigned int D.49777;
  short unsigned int D.49778;
  _Bool D.49779;
  short unsigned int D.49780;
  _Bool D.49781;
  _Bool D.49782;
  void * D.49785;
  struct MonoBasicBlock * * D.49786;
  struct MonoBasicBlock * * D.49787;
  unsigned int D.49793;
  unsigned int D.49794;
  int D.49795;
  short unsigned int D.49802;
  short unsigned int D.49803;
  _Bool D.49804;
  short unsigned int D.49805;
  _Bool D.49806;
  _Bool D.49807;
  short unsigned int D.49813;
  _Bool D.49814;
  _Bool D.49815;
  _Bool D.49816;
  short unsigned int D.49818;
  short unsigned int D.49819;
  _Bool D.49820;
  short unsigned int D.49821;
  _Bool D.49822;
  _Bool D.49823;
  unsigned char * D.49826;
  int D.49829;
  int D.49830;
  unsigned int D.49831;
  unsigned int D.49832;
  struct MonoBasicBlock * * D.49833;
  short unsigned int D.49838;
  short unsigned int D.49839;
  _Bool D.49840;
  short unsigned int D.49841;
  _Bool D.49842;
  _Bool D.49843;
  short unsigned int D.49849;
  _Bool D.49850;
  _Bool D.49851;
  _Bool D.49852;
  short unsigned int D.49854;
  short unsigned int D.49855;
  _Bool D.49856;
  short unsigned int D.49857;
  _Bool D.49858;
  _Bool D.49859;
  unsigned int D.49861;
  struct MonoInst * iftmp.465;
  unsigned int dreg.466;
  unsigned int D.49864;
  struct MonoInst * * D.49867;
  unsigned int dreg.467;
  unsigned int D.49869;
  struct MonoInst * * D.49870;
  struct MonoType * D.49874;
  unsigned char D.49875;
  unsigned char D.49876;
  struct MonoClass * D.49877;
  unsigned int D.49878;
  int D.49879;
  int D.49880;
  _Bool D.49881;
  long int D.49882;
  long int D.49883;
  struct MonoType * D.49886;
  int D.49887;
  _Bool iftmp.468;
  int D.49891;
  unsigned char D.49894;
  _Bool D.49895;
  _Bool D.49896;
  _Bool D.49897;
  int D.49898;
  unsigned char D.49900;
  struct MonoInst * iftmp.469;
  int D.49904;
  int D.49905;
  unsigned int D.49906;
  sizetype D.49909;
  sizetype D.49910;
  sizetype D.49911;
  struct MonoInst * * D.49912;
  struct MonoInst * iftmp.470;
  int D.49915;
  unsigned int D.49916;
  sizetype D.49919;
  sizetype D.49920;
  struct MonoInst * * D.49921;
  _Bool D.49923;
  long int D.49924;
  long int D.49925;
  _Bool D.49928;
  long int D.49929;
  long int D.49930;
  unsigned char D.49933;
  unsigned char D.49934;
  unsigned char D.49935;
  unsigned char D.49936;
  int D.49940;
  struct MonoInst * D.49941;
  int D.49942;
  int D.49943;
  int D.49944;
  int D.49948;
  struct MonoInst * D.49949;
  int D.49950;
  int D.49951;
  unsigned int D.49954;
  unsigned int D.49955;
  int D.49956;
  unsigned char * D.49960;
  int D.49963;
  int D.49964;
  unsigned int D.49965;
  unsigned int D.49966;
  struct MonoBasicBlock * * D.49967;
  short unsigned int D.49972;
  short unsigned int D.49973;
  _Bool D.49974;
  short unsigned int D.49975;
  _Bool D.49976;
  _Bool D.49977;
  short unsigned int D.49983;
  _Bool D.49984;
  _Bool D.49985;
  _Bool D.49986;
  short unsigned int D.49988;
  short unsigned int D.49989;
  _Bool D.49990;
  short unsigned int D.49991;
  _Bool D.49992;
  _Bool D.49993;
  void * D.49996;
  struct MonoBasicBlock * * D.49997;
  struct MonoBasicBlock * * D.49998;
  unsigned int D.50004;
  unsigned int D.50005;
  int D.50006;
  short unsigned int D.50013;
  short unsigned int D.50014;
  _Bool D.50015;
  short unsigned int D.50016;
  _Bool D.50017;
  _Bool D.50018;
  short unsigned int D.50024;
  _Bool D.50025;
  _Bool D.50026;
  _Bool D.50027;
  short unsigned int D.50029;
  short unsigned int D.50030;
  _Bool D.50031;
  short unsigned int D.50032;
  _Bool D.50033;
  _Bool D.50034;
  unsigned char * D.50037;
  int D.50040;
  int D.50041;
  unsigned int D.50042;
  unsigned int D.50043;
  struct MonoBasicBlock * * D.50044;
  short unsigned int D.50049;
  short unsigned int D.50050;
  _Bool D.50051;
  short unsigned int D.50052;
  _Bool D.50053;
  _Bool D.50054;
  short unsigned int D.50060;
  _Bool D.50061;
  _Bool D.50062;
  _Bool D.50063;
  short unsigned int D.50065;
  short unsigned int D.50066;
  _Bool D.50067;
  short unsigned int D.50068;
  _Bool D.50069;
  _Bool D.50070;
  struct MonoClass * D.50072;
  struct MonoType * D.50073;
  struct MonoInst * iftmp.471;
  int D.50075;
  unsigned int D.50076;
  unsigned int D.50079;
  unsigned int D.50080;
  struct MonoInst * * D.50081;
  int D.50085;
  struct MonoInst * D.50086;
  int D.50087;
  int D.50088;
  unsigned char D.50089;
  unsigned char D.50090;
  struct MonoClass * D.50091;
  unsigned int D.50092;
  int D.50093;
  struct MonoType * D.50096;
  int D.50097;
  _Bool iftmp.472;
  int D.50101;
  unsigned char D.50104;
  _Bool D.50105;
  _Bool D.50106;
  _Bool D.50107;
  int D.50108;
  unsigned char D.50110;
  struct MonoInst * iftmp.473;
  int D.50114;
  int D.50115;
  unsigned int D.50116;
  sizetype D.50119;
  sizetype D.50120;
  sizetype D.50121;
  struct MonoInst * * D.50122;
  struct MonoInst * iftmp.474;
  int D.50125;
  unsigned int D.50126;
  sizetype D.50129;
  sizetype D.50130;
  struct MonoInst * * D.50131;
  _Bool D.50133;
  long int D.50134;
  long int D.50135;
  _Bool D.50138;
  long int D.50139;
  long int D.50140;
  unsigned char D.50143;
  unsigned char D.50144;
  unsigned char D.50145;
  unsigned char D.50146;
  int D.50150;
  struct MonoInst * D.50151;
  int D.50152;
  int D.50153;
  unsigned int D.50156;
  unsigned int D.50157;
  int D.50158;
  unsigned char * D.50162;
  int D.50165;
  int D.50166;
  unsigned int D.50167;
  unsigned int D.50168;
  struct MonoBasicBlock * * D.50169;
  short unsigned int D.50174;
  short unsigned int D.50175;
  _Bool D.50176;
  short unsigned int D.50177;
  _Bool D.50178;
  _Bool D.50179;
  short unsigned int D.50185;
  _Bool D.50186;
  _Bool D.50187;
  _Bool D.50188;
  short unsigned int D.50190;
  short unsigned int D.50191;
  _Bool D.50192;
  short unsigned int D.50193;
  _Bool D.50194;
  _Bool D.50195;
  void * D.50198;
  struct MonoBasicBlock * * D.50199;
  struct MonoBasicBlock * * D.50200;
  unsigned int D.50206;
  unsigned int D.50207;
  int D.50208;
  short unsigned int D.50215;
  short unsigned int D.50216;
  _Bool D.50217;
  short unsigned int D.50218;
  _Bool D.50219;
  _Bool D.50220;
  short unsigned int D.50226;
  _Bool D.50227;
  _Bool D.50228;
  _Bool D.50229;
  short unsigned int D.50231;
  short unsigned int D.50232;
  _Bool D.50233;
  short unsigned int D.50234;
  _Bool D.50235;
  _Bool D.50236;
  unsigned char * D.50239;
  int D.50242;
  int D.50243;
  unsigned int D.50244;
  unsigned int D.50245;
  struct MonoBasicBlock * * D.50246;
  short unsigned int D.50251;
  short unsigned int D.50252;
  _Bool D.50253;
  short unsigned int D.50254;
  _Bool D.50255;
  _Bool D.50256;
  short unsigned int D.50262;
  _Bool D.50263;
  _Bool D.50264;
  _Bool D.50265;
  short unsigned int D.50267;
  short unsigned int D.50268;
  _Bool D.50269;
  short unsigned int D.50270;
  _Bool D.50271;
  _Bool D.50272;
  int D.50274;
  struct MonoInst * D.50275;
  unsigned int D.50276;
  short unsigned int D.50277;
  int D.50278;
  int D.50279;
  unsigned char D.50280;
  <unnamed type> D.50281;
  unsigned int D.50282;
  int D.50283;
  struct MonoInst * D.50287;
  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.463 = obj;
      args[0] = obj.463;
      args[1] = klass_inst;
      obj.464 = mono_emit_jit_icall (cfg, mono_object_castclass_unbox, &args);
      obj = obj.464;
      D.49510 = cfg->mempool;
      is_ref_bb = mono_mempool_alloc0 (D.49510, 172);
      D.49511 = cfg->num_bblocks;
      D.49512 = D.49511;
      D.49513 = D.49512 + 1;
      cfg->num_bblocks = D.49513;
      D.49514 = (int) D.49512;
      is_ref_bb->block_num = D.49514;
      D.49510 = cfg->mempool;
      is_nullable_bb = mono_mempool_alloc0 (D.49510, 172);
      D.49511 = cfg->num_bblocks;
      D.49515 = D.49511;
      D.49516 = D.49515 + 1;
      cfg->num_bblocks = D.49516;
      D.49517 = (int) D.49515;
      is_nullable_bb->block_num = D.49517;
      D.49510 = cfg->mempool;
      end_bb = mono_mempool_alloc0 (D.49510, 172);
      D.49511 = cfg->num_bblocks;
      D.49518 = D.49511;
      D.49519 = D.49518 + 1;
      cfg->num_bblocks = D.49519;
      D.49520 = (int) D.49518;
      end_bb->block_num = D.49520;
      is_ref = emit_get_gsharedvt_info_klass (cfg, klass, 19);
      {
        struct MonoInst * inst;

        D.49510 = cfg->mempool;
        inst = mono_mempool_alloc (D.49510, 56);
        inst->data.op[1].const_val = 0;
        D.49521 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.49521;
        inst->prev = 0B;
        D.49522 = inst->prev;
        inst->next = D.49522;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.49523 = inst->sreg3;
        inst->sreg2 = D.49523;
        D.49524 = inst->sreg2;
        inst->sreg1 = D.49524;
        D.49525 = cfg->ip;
        inst->cil_code = D.49525;
        inst->dreg = -1;
        D.49526 = is_ref->dreg;
        inst->sreg1 = D.49526;
        inst->data.op[1].const_val = 1;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.49529>; else goto <D.49530>;
        <D.49529>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49528->next = inst;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        inst->prev = D.49528;
        D.49527 = cfg->cbb;
        D.49527->last_ins = inst;
        goto <D.49531>;
        <D.49530>:
        D.49527 = cfg->cbb;
        D.49527 = cfg->cbb;
        D.49527->last_ins = inst;
        D.49528 = D.49527->last_ins;
        D.49527->code = D.49528;
        <D.49531>:
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.49510 = cfg->mempool;
        ins = mono_mempool_alloc (D.49510, 56);
        ins->data.op[1].const_val = 0;
        D.49532 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.49532;
        ins->prev = 0B;
        D.49533 = ins->prev;
        ins->next = D.49533;
        ins->opcode = 648;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.49534 = ins->sreg3;
        ins->sreg2 = D.49534;
        D.49535 = ins->sreg2;
        ins->sreg1 = D.49535;
        D.49525 = cfg->ip;
        ins->cil_code = D.49525;
        if (0 != 0) goto <D.49536>; else goto <D.49537>;
        <D.49536>:
        D.49510 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.49510, 172);
        D.49511 = cfg->num_bblocks;
        D.49538 = D.49511;
        D.49539 = D.49538 + 1;
        cfg->num_bblocks = D.49539;
        D.49540 = (int) D.49538;
        falsebb->block_num = D.49540;
        ins->data.op[0].target_block = is_ref_bb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, is_ref_bb);
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.49541>; else goto <D.49542>;
        <D.49541>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49528->next = ins;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        ins->prev = D.49528;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        goto <D.49543>;
        <D.49542>:
        D.49527 = cfg->cbb;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        D.49528 = D.49527->last_ins;
        D.49527->code = D.49528;
        <D.49543>:
        D.49544 = falsebb->cil_code;
        if (D.49544 != 0B) goto <D.49545>; else goto <D.49546>;
        <D.49545>:
        D.49547 = cfg->cil_offset_to_bb;
        D.49544 = falsebb->cil_code;
        D.49548 = (int) D.49544;
        D.49549 = cfg->cil_start;
        D.49550 = (int) D.49549;
        D.49551 = D.49548 - D.49550;
        D.49552 = (unsigned int) D.49551;
        D.49553 = D.49552 * 4;
        D.49554 = D.49547 + D.49553;
        *D.49554 = falsebb;
        <D.49546>:
        D.49555 = cfg->real_offset;
        falsebb->real_offset = D.49555;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.49559>; else goto <D.49556>;
        <D.49559>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49560 = D.49528->opcode;
        D.49561 = D.49560 + 64985;
        D.49562 = D.49561 <= 9;
        D.49563 = D.49560 + 64878;
        D.49564 = D.49563 <= 9;
        D.49565 = D.49562 | D.49564;
        if (D.49565 != 0) goto <D.49557>; else goto <D.49566>;
        <D.49566>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 <= 9) goto <D.49557>; else goto <D.49556>;
        <D.49557>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        D.49571 = *D.49570;
        if (D.49571 == 0B) goto <D.49572>; else goto <D.49556>;
        <D.49572>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        *D.49570 = falsebb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        goto <D.49558>;
        <D.49556>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 == 0B) goto <D.49573>; else goto <D.49575>;
        <D.49575>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49576 = D.49528->opcode;
        D.49577 = D.49576 != 442;
        D.49578 = D.49576 != 759;
        D.49579 = D.49577 & D.49578;
        if (D.49579 != 0) goto <D.49580>; else goto <D.49574>;
        <D.49580>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49581 = D.49528->opcode;
        D.49582 = D.49581 + 64985;
        D.49583 = D.49582 > 9;
        D.49584 = D.49581 + 64878;
        D.49585 = D.49584 > 9;
        D.49586 = D.49583 & D.49585;
        if (D.49586 != 0) goto <D.49587>; else goto <D.49574>;
        <D.49587>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 > 9) goto <D.49573>; else goto <D.49574>;
        <D.49573>:
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        <D.49574>:
        <D.49558>:
        D.49527 = cfg->cbb;
        D.49527->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.49588>;
        <D.49537>:
        D.49510 = cfg->mempool;
        D.49589 = mono_mempool_alloc (D.49510, 8);
        ins->data.op[1].many_blocks = D.49589;
        D.49590 = ins->data.op[1].many_blocks;
        *D.49590 = is_ref_bb;
        D.49590 = ins->data.op[1].many_blocks;
        D.49591 = D.49590 + 4;
        *D.49591 = 0B;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, is_ref_bb);
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.49592>; else goto <D.49593>;
        <D.49592>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49528->next = ins;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        ins->prev = D.49528;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        goto <D.49594>;
        <D.49593>:
        D.49527 = cfg->cbb;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        D.49528 = D.49527->last_ins;
        D.49527->code = D.49528;
        <D.49594>:
        D.49595 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.49596 = D.49595 & 8;
        if (D.49596 == 0) goto <D.49597>; else goto <D.49598>;
        <D.49597>:
        D.49510 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.49510, 172);
        D.49511 = cfg->num_bblocks;
        D.49599 = D.49511;
        D.49600 = D.49599 + 1;
        cfg->num_bblocks = D.49600;
        D.49601 = (int) D.49599;
        falsebb->block_num = D.49601;
        D.49590 = ins->data.op[1].many_blocks;
        D.49591 = D.49590 + 4;
        *D.49591 = falsebb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        D.49544 = falsebb->cil_code;
        if (D.49544 != 0B) goto <D.49602>; else goto <D.49603>;
        <D.49602>:
        D.49547 = cfg->cil_offset_to_bb;
        D.49544 = falsebb->cil_code;
        D.49548 = (int) D.49544;
        D.49549 = cfg->cil_start;
        D.49550 = (int) D.49549;
        D.49551 = D.49548 - D.49550;
        D.49552 = (unsigned int) D.49551;
        D.49553 = D.49552 * 4;
        D.49554 = D.49547 + D.49553;
        *D.49554 = falsebb;
        <D.49603>:
        D.49555 = cfg->real_offset;
        falsebb->real_offset = D.49555;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.49607>; else goto <D.49604>;
        <D.49607>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49608 = D.49528->opcode;
        D.49609 = D.49608 + 64985;
        D.49610 = D.49609 <= 9;
        D.49611 = D.49608 + 64878;
        D.49612 = D.49611 <= 9;
        D.49613 = D.49610 | D.49612;
        if (D.49613 != 0) goto <D.49605>; else goto <D.49614>;
        <D.49614>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 <= 9) goto <D.49605>; else goto <D.49604>;
        <D.49605>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        D.49571 = *D.49570;
        if (D.49571 == 0B) goto <D.49615>; else goto <D.49604>;
        <D.49615>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        *D.49570 = falsebb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        goto <D.49606>;
        <D.49604>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 == 0B) goto <D.49616>; else goto <D.49618>;
        <D.49618>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49619 = D.49528->opcode;
        D.49620 = D.49619 != 442;
        D.49621 = D.49619 != 759;
        D.49622 = D.49620 & D.49621;
        if (D.49622 != 0) goto <D.49623>; else goto <D.49617>;
        <D.49623>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49624 = D.49528->opcode;
        D.49625 = D.49624 + 64985;
        D.49626 = D.49625 > 9;
        D.49627 = D.49624 + 64878;
        D.49628 = D.49627 > 9;
        D.49629 = D.49626 & D.49628;
        if (D.49629 != 0) goto <D.49630>; else goto <D.49617>;
        <D.49630>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 > 9) goto <D.49616>; else goto <D.49617>;
        <D.49616>:
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        <D.49617>:
        <D.49606>:
        D.49527 = cfg->cbb;
        D.49527->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.49631>;
        <D.49598>:
        D.49527 = cfg->cbb;
        D.49527->extended = 1;
        <D.49631>:
        <D.49588>:
      }
      {
        struct MonoInst * inst;

        D.49510 = cfg->mempool;
        inst = mono_mempool_alloc (D.49510, 56);
        inst->data.op[1].const_val = 0;
        D.49632 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.49632;
        inst->prev = 0B;
        D.49633 = inst->prev;
        inst->next = D.49633;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.49634 = inst->sreg3;
        inst->sreg2 = D.49634;
        D.49635 = inst->sreg2;
        inst->sreg1 = D.49635;
        D.49525 = cfg->ip;
        inst->cil_code = D.49525;
        inst->dreg = -1;
        D.49526 = is_ref->dreg;
        inst->sreg1 = D.49526;
        inst->data.op[1].const_val = 2;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.49636>; else goto <D.49637>;
        <D.49636>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49528->next = inst;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        inst->prev = D.49528;
        D.49527 = cfg->cbb;
        D.49527->last_ins = inst;
        goto <D.49638>;
        <D.49637>:
        D.49527 = cfg->cbb;
        D.49527 = cfg->cbb;
        D.49527->last_ins = inst;
        D.49528 = D.49527->last_ins;
        D.49527->code = D.49528;
        <D.49638>:
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.49510 = cfg->mempool;
        ins = mono_mempool_alloc (D.49510, 56);
        ins->data.op[1].const_val = 0;
        D.49639 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.49639;
        ins->prev = 0B;
        D.49640 = ins->prev;
        ins->next = D.49640;
        ins->opcode = 648;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.49641 = ins->sreg3;
        ins->sreg2 = D.49641;
        D.49642 = ins->sreg2;
        ins->sreg1 = D.49642;
        D.49525 = cfg->ip;
        ins->cil_code = D.49525;
        if (0 != 0) goto <D.49643>; else goto <D.49644>;
        <D.49643>:
        D.49510 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.49510, 172);
        D.49511 = cfg->num_bblocks;
        D.49645 = D.49511;
        D.49646 = D.49645 + 1;
        cfg->num_bblocks = D.49646;
        D.49647 = (int) D.49645;
        falsebb->block_num = D.49647;
        ins->data.op[0].target_block = is_nullable_bb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, is_nullable_bb);
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.49648>; else goto <D.49649>;
        <D.49648>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49528->next = ins;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        ins->prev = D.49528;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        goto <D.49650>;
        <D.49649>:
        D.49527 = cfg->cbb;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        D.49528 = D.49527->last_ins;
        D.49527->code = D.49528;
        <D.49650>:
        D.49651 = falsebb->cil_code;
        if (D.49651 != 0B) goto <D.49652>; else goto <D.49653>;
        <D.49652>:
        D.49547 = cfg->cil_offset_to_bb;
        D.49651 = falsebb->cil_code;
        D.49654 = (int) D.49651;
        D.49549 = cfg->cil_start;
        D.49550 = (int) D.49549;
        D.49655 = D.49654 - D.49550;
        D.49656 = (unsigned int) D.49655;
        D.49657 = D.49656 * 4;
        D.49658 = D.49547 + D.49657;
        *D.49658 = falsebb;
        <D.49653>:
        D.49555 = cfg->real_offset;
        falsebb->real_offset = D.49555;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.49662>; else goto <D.49659>;
        <D.49662>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49663 = D.49528->opcode;
        D.49664 = D.49663 + 64985;
        D.49665 = D.49664 <= 9;
        D.49666 = D.49663 + 64878;
        D.49667 = D.49666 <= 9;
        D.49668 = D.49665 | D.49667;
        if (D.49668 != 0) goto <D.49660>; else goto <D.49669>;
        <D.49669>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 <= 9) goto <D.49660>; else goto <D.49659>;
        <D.49660>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        D.49571 = *D.49570;
        if (D.49571 == 0B) goto <D.49670>; else goto <D.49659>;
        <D.49670>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        *D.49570 = falsebb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        goto <D.49661>;
        <D.49659>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 == 0B) goto <D.49671>; else goto <D.49673>;
        <D.49673>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49674 = D.49528->opcode;
        D.49675 = D.49674 != 442;
        D.49676 = D.49674 != 759;
        D.49677 = D.49675 & D.49676;
        if (D.49677 != 0) goto <D.49678>; else goto <D.49672>;
        <D.49678>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49679 = D.49528->opcode;
        D.49680 = D.49679 + 64985;
        D.49681 = D.49680 > 9;
        D.49682 = D.49679 + 64878;
        D.49683 = D.49682 > 9;
        D.49684 = D.49681 & D.49683;
        if (D.49684 != 0) goto <D.49685>; else goto <D.49672>;
        <D.49685>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 > 9) goto <D.49671>; else goto <D.49672>;
        <D.49671>:
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        <D.49672>:
        <D.49661>:
        D.49527 = cfg->cbb;
        D.49527->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.49686>;
        <D.49644>:
        D.49510 = cfg->mempool;
        D.49687 = mono_mempool_alloc (D.49510, 8);
        ins->data.op[1].many_blocks = D.49687;
        D.49688 = ins->data.op[1].many_blocks;
        *D.49688 = is_nullable_bb;
        D.49688 = ins->data.op[1].many_blocks;
        D.49689 = D.49688 + 4;
        *D.49689 = 0B;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, is_nullable_bb);
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.49690>; else goto <D.49691>;
        <D.49690>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49528->next = ins;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        ins->prev = D.49528;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        goto <D.49692>;
        <D.49691>:
        D.49527 = cfg->cbb;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        D.49528 = D.49527->last_ins;
        D.49527->code = D.49528;
        <D.49692>:
        D.49595 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.49596 = D.49595 & 8;
        if (D.49596 == 0) goto <D.49693>; else goto <D.49694>;
        <D.49693>:
        D.49510 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.49510, 172);
        D.49511 = cfg->num_bblocks;
        D.49695 = D.49511;
        D.49696 = D.49695 + 1;
        cfg->num_bblocks = D.49696;
        D.49697 = (int) D.49695;
        falsebb->block_num = D.49697;
        D.49688 = ins->data.op[1].many_blocks;
        D.49689 = D.49688 + 4;
        *D.49689 = falsebb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        D.49651 = falsebb->cil_code;
        if (D.49651 != 0B) goto <D.49698>; else goto <D.49699>;
        <D.49698>:
        D.49547 = cfg->cil_offset_to_bb;
        D.49651 = falsebb->cil_code;
        D.49654 = (int) D.49651;
        D.49549 = cfg->cil_start;
        D.49550 = (int) D.49549;
        D.49655 = D.49654 - D.49550;
        D.49656 = (unsigned int) D.49655;
        D.49657 = D.49656 * 4;
        D.49658 = D.49547 + D.49657;
        *D.49658 = falsebb;
        <D.49699>:
        D.49555 = cfg->real_offset;
        falsebb->real_offset = D.49555;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.49703>; else goto <D.49700>;
        <D.49703>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49704 = D.49528->opcode;
        D.49705 = D.49704 + 64985;
        D.49706 = D.49705 <= 9;
        D.49707 = D.49704 + 64878;
        D.49708 = D.49707 <= 9;
        D.49709 = D.49706 | D.49708;
        if (D.49709 != 0) goto <D.49701>; else goto <D.49710>;
        <D.49710>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 <= 9) goto <D.49701>; else goto <D.49700>;
        <D.49701>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        D.49571 = *D.49570;
        if (D.49571 == 0B) goto <D.49711>; else goto <D.49700>;
        <D.49711>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        *D.49570 = falsebb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        goto <D.49702>;
        <D.49700>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 == 0B) goto <D.49712>; else goto <D.49714>;
        <D.49714>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49715 = D.49528->opcode;
        D.49716 = D.49715 != 442;
        D.49717 = D.49715 != 759;
        D.49718 = D.49716 & D.49717;
        if (D.49718 != 0) goto <D.49719>; else goto <D.49713>;
        <D.49719>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49720 = D.49528->opcode;
        D.49721 = D.49720 + 64985;
        D.49722 = D.49721 > 9;
        D.49723 = D.49720 + 64878;
        D.49724 = D.49723 > 9;
        D.49725 = D.49722 & D.49724;
        if (D.49725 != 0) goto <D.49726>; else goto <D.49713>;
        <D.49726>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 > 9) goto <D.49712>; else goto <D.49713>;
        <D.49712>:
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        <D.49713>:
        <D.49702>:
        D.49527 = cfg->cbb;
        D.49527->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.49727>;
        <D.49694>:
        D.49527 = cfg->cbb;
        D.49527->extended = 1;
        <D.49727>:
        <D.49686>:
      }
      D.49728 = alloc_dreg (cfg, 5);
      addr_reg = (int) D.49728;
      D.49510 = cfg->mempool;
      addr = mono_mempool_alloc (D.49510, 56);
      addr->data.op[1].const_val = 0;
      D.49729 = addr->data.op[1].const_val;
      addr->data.op[0].const_val = D.49729;
      addr->prev = 0B;
      D.49730 = addr->prev;
      addr->next = D.49730;
      addr->opcode = 429;
      addr->flags = 0;
      addr->type = 0;
      addr->dreg = -1;
      addr->sreg3 = -1;
      D.49731 = addr->sreg3;
      addr->sreg2 = D.49731;
      D.49732 = addr->sreg2;
      addr->sreg1 = D.49732;
      D.49525 = cfg->ip;
      addr->cil_code = D.49525;
      addr->dreg = addr_reg;
      obj.463 = obj;
      D.49733 = obj.463->dreg;
      addr->sreg1 = D.49733;
      addr->data.op[1].const_val = 8;
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      if (D.49528 != 0B) goto <D.49734>; else goto <D.49735>;
      <D.49734>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.49528->next = addr;
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      addr->prev = D.49528;
      D.49527 = cfg->cbb;
      D.49527->last_ins = addr;
      goto <D.49736>;
      <D.49735>:
      D.49527 = cfg->cbb;
      D.49527 = cfg->cbb;
      D.49527->last_ins = addr;
      D.49528 = D.49527->last_ins;
      D.49527->code = D.49528;
      <D.49736>:
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.49510 = cfg->mempool;
        ins = mono_mempool_alloc (D.49510, 56);
        ins->data.op[1].const_val = 0;
        D.49737 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.49737;
        ins->prev = 0B;
        D.49738 = ins->prev;
        ins->next = D.49738;
        ins->opcode = 442;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.49739 = ins->sreg3;
        ins->sreg2 = D.49739;
        D.49740 = ins->sreg2;
        ins->sreg1 = D.49740;
        D.49525 = cfg->ip;
        ins->cil_code = D.49525;
        if (1 != 0) goto <D.49741>; else goto <D.49742>;
        <D.49741>:
        D.49510 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.49510, 172);
        D.49511 = cfg->num_bblocks;
        D.49743 = D.49511;
        D.49744 = D.49743 + 1;
        cfg->num_bblocks = D.49744;
        D.49745 = (int) D.49743;
        falsebb->block_num = D.49745;
        ins->data.op[0].target_block = end_bb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, end_bb);
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.49746>; else goto <D.49747>;
        <D.49746>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49528->next = ins;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        ins->prev = D.49528;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        goto <D.49748>;
        <D.49747>:
        D.49527 = cfg->cbb;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        D.49528 = D.49527->last_ins;
        D.49527->code = D.49528;
        <D.49748>:
        D.49749 = falsebb->cil_code;
        if (D.49749 != 0B) goto <D.49750>; else goto <D.49751>;
        <D.49750>:
        D.49547 = cfg->cil_offset_to_bb;
        D.49749 = falsebb->cil_code;
        D.49752 = (int) D.49749;
        D.49549 = cfg->cil_start;
        D.49550 = (int) D.49549;
        D.49753 = D.49752 - D.49550;
        D.49754 = (unsigned int) D.49753;
        D.49755 = D.49754 * 4;
        D.49756 = D.49547 + D.49755;
        *D.49756 = falsebb;
        <D.49751>:
        D.49555 = cfg->real_offset;
        falsebb->real_offset = D.49555;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.49760>; else goto <D.49757>;
        <D.49760>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49761 = D.49528->opcode;
        D.49762 = D.49761 + 64985;
        D.49763 = D.49762 <= 9;
        D.49764 = D.49761 + 64878;
        D.49765 = D.49764 <= 9;
        D.49766 = D.49763 | D.49765;
        if (D.49766 != 0) goto <D.49758>; else goto <D.49767>;
        <D.49767>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 <= 9) goto <D.49758>; else goto <D.49757>;
        <D.49758>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        D.49571 = *D.49570;
        if (D.49571 == 0B) goto <D.49768>; else goto <D.49757>;
        <D.49768>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        *D.49570 = falsebb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        goto <D.49759>;
        <D.49757>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 == 0B) goto <D.49769>; else goto <D.49771>;
        <D.49771>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49772 = D.49528->opcode;
        D.49773 = D.49772 != 442;
        D.49774 = D.49772 != 759;
        D.49775 = D.49773 & D.49774;
        if (D.49775 != 0) goto <D.49776>; else goto <D.49770>;
        <D.49776>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49777 = D.49528->opcode;
        D.49778 = D.49777 + 64985;
        D.49779 = D.49778 > 9;
        D.49780 = D.49777 + 64878;
        D.49781 = D.49780 > 9;
        D.49782 = D.49779 & D.49781;
        if (D.49782 != 0) goto <D.49783>; else goto <D.49770>;
        <D.49783>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 > 9) goto <D.49769>; else goto <D.49770>;
        <D.49769>:
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        <D.49770>:
        <D.49759>:
        D.49527 = cfg->cbb;
        D.49527->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.49784>;
        <D.49742>:
        D.49510 = cfg->mempool;
        D.49785 = mono_mempool_alloc (D.49510, 8);
        ins->data.op[1].many_blocks = D.49785;
        D.49786 = ins->data.op[1].many_blocks;
        *D.49786 = end_bb;
        D.49786 = ins->data.op[1].many_blocks;
        D.49787 = D.49786 + 4;
        *D.49787 = 0B;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, end_bb);
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.49788>; else goto <D.49789>;
        <D.49788>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49528->next = ins;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        ins->prev = D.49528;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        goto <D.49790>;
        <D.49789>:
        D.49527 = cfg->cbb;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        D.49528 = D.49527->last_ins;
        D.49527->code = D.49528;
        <D.49790>:
        D.49595 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.49596 = D.49595 & 8;
        if (D.49596 == 0) goto <D.49791>; else goto <D.49792>;
        <D.49791>:
        D.49510 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.49510, 172);
        D.49511 = cfg->num_bblocks;
        D.49793 = D.49511;
        D.49794 = D.49793 + 1;
        cfg->num_bblocks = D.49794;
        D.49795 = (int) D.49793;
        falsebb->block_num = D.49795;
        D.49786 = ins->data.op[1].many_blocks;
        D.49787 = D.49786 + 4;
        *D.49787 = falsebb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        D.49749 = falsebb->cil_code;
        if (D.49749 != 0B) goto <D.49796>; else goto <D.49797>;
        <D.49796>:
        D.49547 = cfg->cil_offset_to_bb;
        D.49749 = falsebb->cil_code;
        D.49752 = (int) D.49749;
        D.49549 = cfg->cil_start;
        D.49550 = (int) D.49549;
        D.49753 = D.49752 - D.49550;
        D.49754 = (unsigned int) D.49753;
        D.49755 = D.49754 * 4;
        D.49756 = D.49547 + D.49755;
        *D.49756 = falsebb;
        <D.49797>:
        D.49555 = cfg->real_offset;
        falsebb->real_offset = D.49555;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.49801>; else goto <D.49798>;
        <D.49801>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49802 = D.49528->opcode;
        D.49803 = D.49802 + 64985;
        D.49804 = D.49803 <= 9;
        D.49805 = D.49802 + 64878;
        D.49806 = D.49805 <= 9;
        D.49807 = D.49804 | D.49806;
        if (D.49807 != 0) goto <D.49799>; else goto <D.49808>;
        <D.49808>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 <= 9) goto <D.49799>; else goto <D.49798>;
        <D.49799>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        D.49571 = *D.49570;
        if (D.49571 == 0B) goto <D.49809>; else goto <D.49798>;
        <D.49809>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        *D.49570 = falsebb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        goto <D.49800>;
        <D.49798>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 == 0B) goto <D.49810>; else goto <D.49812>;
        <D.49812>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49813 = D.49528->opcode;
        D.49814 = D.49813 != 442;
        D.49815 = D.49813 != 759;
        D.49816 = D.49814 & D.49815;
        if (D.49816 != 0) goto <D.49817>; else goto <D.49811>;
        <D.49817>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49818 = D.49528->opcode;
        D.49819 = D.49818 + 64985;
        D.49820 = D.49819 > 9;
        D.49821 = D.49818 + 64878;
        D.49822 = D.49821 > 9;
        D.49823 = D.49820 & D.49822;
        if (D.49823 != 0) goto <D.49824>; else goto <D.49811>;
        <D.49824>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 > 9) goto <D.49810>; else goto <D.49811>;
        <D.49810>:
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        <D.49811>:
        <D.49800>:
        D.49527 = cfg->cbb;
        D.49527->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.49825>;
        <D.49792>:
        D.49527 = cfg->cbb;
        D.49527->extended = 1;
        <D.49825>:
        <D.49784>:
      }
      D.49826 = is_ref_bb->cil_code;
      if (D.49826 != 0B) goto <D.49827>; else goto <D.49828>;
      <D.49827>:
      D.49547 = cfg->cil_offset_to_bb;
      D.49826 = is_ref_bb->cil_code;
      D.49829 = (int) D.49826;
      D.49549 = cfg->cil_start;
      D.49550 = (int) D.49549;
      D.49830 = D.49829 - D.49550;
      D.49831 = (unsigned int) D.49830;
      D.49832 = D.49831 * 4;
      D.49833 = D.49547 + D.49832;
      *D.49833 = is_ref_bb;
      <D.49828>:
      D.49555 = cfg->real_offset;
      is_ref_bb->real_offset = D.49555;
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      if (D.49528 != 0B) goto <D.49837>; else goto <D.49834>;
      <D.49837>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.49838 = D.49528->opcode;
      D.49839 = D.49838 + 64985;
      D.49840 = D.49839 <= 9;
      D.49841 = D.49838 + 64878;
      D.49842 = D.49841 <= 9;
      D.49843 = D.49840 | D.49842;
      if (D.49843 != 0) goto <D.49835>; else goto <D.49844>;
      <D.49844>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.49567 = D.49528->opcode;
      D.49568 = D.49567 + 64888;
      if (D.49568 <= 9) goto <D.49835>; else goto <D.49834>;
      <D.49835>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.49569 = D.49528->data.op[1].many_blocks;
      D.49570 = D.49569 + 4;
      D.49571 = *D.49570;
      if (D.49571 == 0B) goto <D.49845>; else goto <D.49834>;
      <D.49845>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.49569 = D.49528->data.op[1].many_blocks;
      D.49570 = D.49569 + 4;
      *D.49570 = is_ref_bb;
      D.49527 = cfg->cbb;
      mono_link_bblock (cfg, D.49527, is_ref_bb);
      goto <D.49836>;
      <D.49834>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      if (D.49528 == 0B) goto <D.49846>; else goto <D.49848>;
      <D.49848>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.49849 = D.49528->opcode;
      D.49850 = D.49849 != 442;
      D.49851 = D.49849 != 759;
      D.49852 = D.49850 & D.49851;
      if (D.49852 != 0) goto <D.49853>; else goto <D.49847>;
      <D.49853>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.49854 = D.49528->opcode;
      D.49855 = D.49854 + 64985;
      D.49856 = D.49855 > 9;
      D.49857 = D.49854 + 64878;
      D.49858 = D.49857 > 9;
      D.49859 = D.49856 & D.49858;
      if (D.49859 != 0) goto <D.49860>; else goto <D.49847>;
      <D.49860>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.49567 = D.49528->opcode;
      D.49568 = D.49567 + 64888;
      if (D.49568 > 9) goto <D.49846>; else goto <D.49847>;
      <D.49846>:
      D.49527 = cfg->cbb;
      mono_link_bblock (cfg, D.49527, is_ref_bb);
      <D.49847>:
      <D.49836>:
      D.49527 = cfg->cbb;
      D.49527->next_bb = is_ref_bb;
      cfg->cbb = is_ref_bb;
      D.49861 = alloc_ireg (cfg);
      dreg = (int) D.49861;
      {
        struct MonoInst * var;

        dreg.466 = (unsigned int) dreg;
        D.49864 = cfg->vreg_to_inst_len;
        if (dreg.466 < D.49864) goto <D.49865>; else goto <D.49866>;
        <D.49865>:
        D.49867 = cfg->vreg_to_inst;
        dreg.467 = (unsigned int) dreg;
        D.49869 = dreg.467 * 4;
        D.49870 = D.49867 + D.49869;
        iftmp.465 = *D.49870;
        goto <D.49871>;
        <D.49866>:
        iftmp.465 = 0B;
        <D.49871>:
        var = iftmp.465;
        if (var == 0B) goto <D.49872>; else goto <D.49873>;
        <D.49872>:
        D.49874 = &klass->byval_arg;
        var = mono_compile_create_var_for_vreg (cfg, D.49874, 329, dreg);
        <D.49873>:
        D.49510 = cfg->mempool;
        addr = mono_mempool_alloc (D.49510, 56);
        addr->data.op[1].const_val = 0;
        D.49729 = addr->data.op[1].const_val;
        addr->data.op[0].const_val = D.49729;
        addr->prev = 0B;
        D.49730 = addr->prev;
        addr->next = D.49730;
        addr->opcode = 314;
        addr->flags = 0;
        addr->type = 0;
        addr->dreg = -1;
        addr->sreg3 = -1;
        D.49731 = addr->sreg3;
        addr->sreg2 = D.49731;
        D.49732 = addr->sreg2;
        addr->sreg1 = D.49732;
        D.49525 = cfg->ip;
        addr->cil_code = D.49525;
        addr->data.op[0].p = var;
        D.49875 = var->flags;
        D.49876 = D.49875 | 16;
        var->flags = D.49876;
        addr->type = 5;
        D.49877 = var->klass;
        addr->klass = D.49877;
        D.49878 = alloc_dreg (cfg, 5);
        D.49879 = (int) D.49878;
        addr->dreg = D.49879;
        cfg->has_indirection = 1;
        D.49880 = cfg->gsharedvt;
        D.49881 = D.49880 != 0;
        D.49882 = (long int) D.49881;
        D.49883 = __builtin_expect (D.49882, 0);
        if (D.49883 != 0) goto <D.49884>; else goto <D.49885>;
        <D.49884>:
        D.49886 = var->data.op[1].vtype;
        D.49887 = mini_is_gsharedvt_variable_type (cfg, D.49886);
        if (D.49887 != 0) goto <D.49888>; else goto <D.49889>;
        <D.49888>:
        handle_gsharedvt_ldaddr (cfg);
        <D.49889>:
        <D.49885>:
        D.49891 = mono_arch_is_soft_float ();
        if (D.49891 != 0) goto <D.49892>; else goto <D.49893>;
        <D.49892>:
        D.49894 = var->type;
        D.49895 = D.49894 == 2;
        D.49896 = D.49894 == 4;
        D.49897 = D.49895 | D.49896;
        D.49898 = (int) D.49897;
        iftmp.468 = (_Bool) D.49898;
        goto <D.49899>;
        <D.49893>:
        D.49900 = var->type;
        iftmp.468 = D.49900 == 2;
        <D.49899>:
        if (iftmp.468 != 0) goto <D.49901>; else goto <D.49902>;
        <D.49901>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.49904 = var->dreg;
          D.49905 = D.49904 + 1;
          D.49906 = (unsigned int) D.49905;
          D.49864 = cfg->vreg_to_inst_len;
          if (D.49906 < D.49864) goto <D.49907>; else goto <D.49908>;
          <D.49907>:
          D.49867 = cfg->vreg_to_inst;
          D.49904 = var->dreg;
          D.49909 = (sizetype) D.49904;
          D.49910 = D.49909 + 1;
          D.49911 = D.49910 * 4;
          D.49912 = D.49867 + D.49911;
          iftmp.469 = *D.49912;
          goto <D.49913>;
          <D.49908>:
          iftmp.469 = 0B;
          <D.49913>:
          var1 = iftmp.469;
          D.49904 = var->dreg;
          D.49915 = D.49904 + 2;
          D.49916 = (unsigned int) D.49915;
          D.49864 = cfg->vreg_to_inst_len;
          if (D.49916 < D.49864) goto <D.49917>; else goto <D.49918>;
          <D.49917>:
          D.49867 = cfg->vreg_to_inst;
          D.49904 = var->dreg;
          D.49909 = (sizetype) D.49904;
          D.49919 = D.49909 + 2;
          D.49920 = D.49919 * 4;
          D.49921 = D.49867 + D.49920;
          iftmp.470 = *D.49921;
          goto <D.49922>;
          <D.49918>:
          iftmp.470 = 0B;
          <D.49922>:
          var2 = iftmp.470;
          D.49923 = var1 == 0B;
          D.49924 = (long int) D.49923;
          D.49925 = __builtin_expect (D.49924, 0);
          if (D.49925 != 0) goto <D.49926>; else goto <D.49927>;
          <D.49926>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3684, "var1");
          <D.49927>:
          D.49928 = var2 == 0B;
          D.49929 = (long int) D.49928;
          D.49930 = __builtin_expect (D.49929, 0);
          if (D.49930 != 0) goto <D.49931>; else goto <D.49932>;
          <D.49931>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3684, "var2");
          <D.49932>:
          D.49933 = var1->flags;
          D.49934 = D.49933 | 16;
          var1->flags = D.49934;
          D.49935 = var2->flags;
          D.49936 = D.49935 | 16;
          var2->flags = D.49936;
        }
        <D.49902>:
      }
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      if (D.49528 != 0B) goto <D.49937>; else goto <D.49938>;
      <D.49937>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.49528->next = addr;
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      addr->prev = D.49528;
      D.49527 = cfg->cbb;
      D.49527->last_ins = addr;
      goto <D.49939>;
      <D.49938>:
      D.49527 = cfg->cbb;
      D.49527 = cfg->cbb;
      D.49527->last_ins = addr;
      D.49528 = D.49527->last_ins;
      D.49527->code = D.49528;
      <D.49939>:
      addr->dreg = addr_reg;
      {
        struct MonoInst * inst;

        D.49510 = cfg->mempool;
        inst = mono_mempool_alloc (D.49510, 56);
        inst->data.op[1].const_val = 0;
        D.49940 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.49940;
        inst->prev = 0B;
        D.49941 = inst->prev;
        inst->next = D.49941;
        inst->opcode = 374;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.49942 = inst->sreg3;
        inst->sreg2 = D.49942;
        D.49943 = inst->sreg2;
        inst->sreg1 = D.49943;
        D.49525 = cfg->ip;
        inst->cil_code = D.49525;
        obj.463 = obj;
        D.49733 = obj.463->dreg;
        inst->sreg1 = D.49733;
        D.49944 = addr->dreg;
        inst->dreg = D.49944;
        inst->data.op[0].const_val = 0;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.49945>; else goto <D.49946>;
        <D.49945>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49528->next = inst;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        inst->prev = D.49528;
        D.49527 = cfg->cbb;
        D.49527->last_ins = inst;
        goto <D.49947>;
        <D.49946>:
        D.49527 = cfg->cbb;
        D.49527 = cfg->cbb;
        D.49527->last_ins = inst;
        D.49528 = D.49527->last_ins;
        D.49527->code = D.49528;
        <D.49947>:
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.49510 = cfg->mempool;
        ins = mono_mempool_alloc (D.49510, 56);
        ins->data.op[1].const_val = 0;
        D.49948 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.49948;
        ins->prev = 0B;
        D.49949 = ins->prev;
        ins->next = D.49949;
        ins->opcode = 442;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.49950 = ins->sreg3;
        ins->sreg2 = D.49950;
        D.49951 = ins->sreg2;
        ins->sreg1 = D.49951;
        D.49525 = cfg->ip;
        ins->cil_code = D.49525;
        if (1 != 0) goto <D.49952>; else goto <D.49953>;
        <D.49952>:
        D.49510 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.49510, 172);
        D.49511 = cfg->num_bblocks;
        D.49954 = D.49511;
        D.49955 = D.49954 + 1;
        cfg->num_bblocks = D.49955;
        D.49956 = (int) D.49954;
        falsebb->block_num = D.49956;
        ins->data.op[0].target_block = end_bb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, end_bb);
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.49957>; else goto <D.49958>;
        <D.49957>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49528->next = ins;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        ins->prev = D.49528;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        goto <D.49959>;
        <D.49958>:
        D.49527 = cfg->cbb;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        D.49528 = D.49527->last_ins;
        D.49527->code = D.49528;
        <D.49959>:
        D.49960 = falsebb->cil_code;
        if (D.49960 != 0B) goto <D.49961>; else goto <D.49962>;
        <D.49961>:
        D.49547 = cfg->cil_offset_to_bb;
        D.49960 = falsebb->cil_code;
        D.49963 = (int) D.49960;
        D.49549 = cfg->cil_start;
        D.49550 = (int) D.49549;
        D.49964 = D.49963 - D.49550;
        D.49965 = (unsigned int) D.49964;
        D.49966 = D.49965 * 4;
        D.49967 = D.49547 + D.49966;
        *D.49967 = falsebb;
        <D.49962>:
        D.49555 = cfg->real_offset;
        falsebb->real_offset = D.49555;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.49971>; else goto <D.49968>;
        <D.49971>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49972 = D.49528->opcode;
        D.49973 = D.49972 + 64985;
        D.49974 = D.49973 <= 9;
        D.49975 = D.49972 + 64878;
        D.49976 = D.49975 <= 9;
        D.49977 = D.49974 | D.49976;
        if (D.49977 != 0) goto <D.49969>; else goto <D.49978>;
        <D.49978>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 <= 9) goto <D.49969>; else goto <D.49968>;
        <D.49969>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        D.49571 = *D.49570;
        if (D.49571 == 0B) goto <D.49979>; else goto <D.49968>;
        <D.49979>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        *D.49570 = falsebb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        goto <D.49970>;
        <D.49968>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 == 0B) goto <D.49980>; else goto <D.49982>;
        <D.49982>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49983 = D.49528->opcode;
        D.49984 = D.49983 != 442;
        D.49985 = D.49983 != 759;
        D.49986 = D.49984 & D.49985;
        if (D.49986 != 0) goto <D.49987>; else goto <D.49981>;
        <D.49987>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49988 = D.49528->opcode;
        D.49989 = D.49988 + 64985;
        D.49990 = D.49989 > 9;
        D.49991 = D.49988 + 64878;
        D.49992 = D.49991 > 9;
        D.49993 = D.49990 & D.49992;
        if (D.49993 != 0) goto <D.49994>; else goto <D.49981>;
        <D.49994>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 > 9) goto <D.49980>; else goto <D.49981>;
        <D.49980>:
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        <D.49981>:
        <D.49970>:
        D.49527 = cfg->cbb;
        D.49527->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.49995>;
        <D.49953>:
        D.49510 = cfg->mempool;
        D.49996 = mono_mempool_alloc (D.49510, 8);
        ins->data.op[1].many_blocks = D.49996;
        D.49997 = ins->data.op[1].many_blocks;
        *D.49997 = end_bb;
        D.49997 = ins->data.op[1].many_blocks;
        D.49998 = D.49997 + 4;
        *D.49998 = 0B;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, end_bb);
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.49999>; else goto <D.50000>;
        <D.49999>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49528->next = ins;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        ins->prev = D.49528;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        goto <D.50001>;
        <D.50000>:
        D.49527 = cfg->cbb;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        D.49528 = D.49527->last_ins;
        D.49527->code = D.49528;
        <D.50001>:
        D.49595 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.49596 = D.49595 & 8;
        if (D.49596 == 0) goto <D.50002>; else goto <D.50003>;
        <D.50002>:
        D.49510 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.49510, 172);
        D.49511 = cfg->num_bblocks;
        D.50004 = D.49511;
        D.50005 = D.50004 + 1;
        cfg->num_bblocks = D.50005;
        D.50006 = (int) D.50004;
        falsebb->block_num = D.50006;
        D.49997 = ins->data.op[1].many_blocks;
        D.49998 = D.49997 + 4;
        *D.49998 = falsebb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        D.49960 = falsebb->cil_code;
        if (D.49960 != 0B) goto <D.50007>; else goto <D.50008>;
        <D.50007>:
        D.49547 = cfg->cil_offset_to_bb;
        D.49960 = falsebb->cil_code;
        D.49963 = (int) D.49960;
        D.49549 = cfg->cil_start;
        D.49550 = (int) D.49549;
        D.49964 = D.49963 - D.49550;
        D.49965 = (unsigned int) D.49964;
        D.49966 = D.49965 * 4;
        D.49967 = D.49547 + D.49966;
        *D.49967 = falsebb;
        <D.50008>:
        D.49555 = cfg->real_offset;
        falsebb->real_offset = D.49555;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.50012>; else goto <D.50009>;
        <D.50012>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.50013 = D.49528->opcode;
        D.50014 = D.50013 + 64985;
        D.50015 = D.50014 <= 9;
        D.50016 = D.50013 + 64878;
        D.50017 = D.50016 <= 9;
        D.50018 = D.50015 | D.50017;
        if (D.50018 != 0) goto <D.50010>; else goto <D.50019>;
        <D.50019>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 <= 9) goto <D.50010>; else goto <D.50009>;
        <D.50010>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        D.49571 = *D.49570;
        if (D.49571 == 0B) goto <D.50020>; else goto <D.50009>;
        <D.50020>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        *D.49570 = falsebb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        goto <D.50011>;
        <D.50009>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 == 0B) goto <D.50021>; else goto <D.50023>;
        <D.50023>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.50024 = D.49528->opcode;
        D.50025 = D.50024 != 442;
        D.50026 = D.50024 != 759;
        D.50027 = D.50025 & D.50026;
        if (D.50027 != 0) goto <D.50028>; else goto <D.50022>;
        <D.50028>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.50029 = D.49528->opcode;
        D.50030 = D.50029 + 64985;
        D.50031 = D.50030 > 9;
        D.50032 = D.50029 + 64878;
        D.50033 = D.50032 > 9;
        D.50034 = D.50031 & D.50033;
        if (D.50034 != 0) goto <D.50035>; else goto <D.50022>;
        <D.50035>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 > 9) goto <D.50021>; else goto <D.50022>;
        <D.50021>:
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        <D.50022>:
        <D.50011>:
        D.49527 = cfg->cbb;
        D.49527->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.50036>;
        <D.50003>:
        D.49527 = cfg->cbb;
        D.49527->extended = 1;
        <D.50036>:
        <D.49995>:
      }
      D.50037 = is_nullable_bb->cil_code;
      if (D.50037 != 0B) goto <D.50038>; else goto <D.50039>;
      <D.50038>:
      D.49547 = cfg->cil_offset_to_bb;
      D.50037 = is_nullable_bb->cil_code;
      D.50040 = (int) D.50037;
      D.49549 = cfg->cil_start;
      D.49550 = (int) D.49549;
      D.50041 = D.50040 - D.49550;
      D.50042 = (unsigned int) D.50041;
      D.50043 = D.50042 * 4;
      D.50044 = D.49547 + D.50043;
      *D.50044 = is_nullable_bb;
      <D.50039>:
      D.49555 = cfg->real_offset;
      is_nullable_bb->real_offset = D.49555;
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      if (D.49528 != 0B) goto <D.50048>; else goto <D.50045>;
      <D.50048>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.50049 = D.49528->opcode;
      D.50050 = D.50049 + 64985;
      D.50051 = D.50050 <= 9;
      D.50052 = D.50049 + 64878;
      D.50053 = D.50052 <= 9;
      D.50054 = D.50051 | D.50053;
      if (D.50054 != 0) goto <D.50046>; else goto <D.50055>;
      <D.50055>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.49567 = D.49528->opcode;
      D.49568 = D.49567 + 64888;
      if (D.49568 <= 9) goto <D.50046>; else goto <D.50045>;
      <D.50046>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.49569 = D.49528->data.op[1].many_blocks;
      D.49570 = D.49569 + 4;
      D.49571 = *D.49570;
      if (D.49571 == 0B) goto <D.50056>; else goto <D.50045>;
      <D.50056>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.49569 = D.49528->data.op[1].many_blocks;
      D.49570 = D.49569 + 4;
      *D.49570 = is_nullable_bb;
      D.49527 = cfg->cbb;
      mono_link_bblock (cfg, D.49527, is_nullable_bb);
      goto <D.50047>;
      <D.50045>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      if (D.49528 == 0B) goto <D.50057>; else goto <D.50059>;
      <D.50059>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.50060 = D.49528->opcode;
      D.50061 = D.50060 != 442;
      D.50062 = D.50060 != 759;
      D.50063 = D.50061 & D.50062;
      if (D.50063 != 0) goto <D.50064>; else goto <D.50058>;
      <D.50064>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.50065 = D.49528->opcode;
      D.50066 = D.50065 + 64985;
      D.50067 = D.50066 > 9;
      D.50068 = D.50065 + 64878;
      D.50069 = D.50068 > 9;
      D.50070 = D.50067 & D.50069;
      if (D.50070 != 0) goto <D.50071>; else goto <D.50058>;
      <D.50071>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.49567 = D.49528->opcode;
      D.49568 = D.49567 + 64888;
      if (D.49568 > 9) goto <D.50057>; else goto <D.50058>;
      <D.50057>:
      D.49527 = cfg->cbb;
      mono_link_bblock (cfg, D.49527, is_nullable_bb);
      <D.50058>:
      <D.50047>:
      D.49527 = cfg->cbb;
      D.49527->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.49874 = &klass->byval_arg;
        var = mono_compile_create_var (cfg, D.49874, 329);
        D.49510 = cfg->mempool;
        unbox_sig = mono_mempool_alloc0 (D.49510, 16);
        D.49874 = &klass->byval_arg;
        unbox_sig->ret = D.49874;
        unbox_sig->param_count = 1;
        D.50072 = mono_defaults.object_class;
        D.50073 = &D.50072->byval_arg;
        unbox_sig->params[0] = D.50073;
        unbox_call = mono_emit_calli (cfg, unbox_sig, &obj, addr, 0B, 0B);
        {
          struct MonoInst * var;

          D.50075 = unbox_call->dreg;
          D.50076 = (unsigned int) D.50075;
          D.49864 = cfg->vreg_to_inst_len;
          if (D.50076 < D.49864) goto <D.50077>; else goto <D.50078>;
          <D.50077>:
          D.49867 = cfg->vreg_to_inst;
          D.50075 = unbox_call->dreg;
          D.50079 = (unsigned int) D.50075;
          D.50080 = D.50079 * 4;
          D.50081 = D.49867 + D.50080;
          iftmp.471 = *D.50081;
          goto <D.50082>;
          <D.50078>:
          iftmp.471 = 0B;
          <D.50082>:
          var = iftmp.471;
          if (var == 0B) goto <D.50083>; else goto <D.50084>;
          <D.50083>:
          D.49874 = &klass->byval_arg;
          D.50075 = unbox_call->dreg;
          var = mono_compile_create_var_for_vreg (cfg, D.49874, 329, D.50075);
          <D.50084>:
          D.49510 = cfg->mempool;
          addr = mono_mempool_alloc (D.49510, 56);
          addr->data.op[1].const_val = 0;
          D.50085 = addr->data.op[1].const_val;
          addr->data.op[0].const_val = D.50085;
          addr->prev = 0B;
          D.50086 = addr->prev;
          addr->next = D.50086;
          addr->opcode = 314;
          addr->flags = 0;
          addr->type = 0;
          addr->dreg = -1;
          addr->sreg3 = -1;
          D.50087 = addr->sreg3;
          addr->sreg2 = D.50087;
          D.50088 = addr->sreg2;
          addr->sreg1 = D.50088;
          D.49525 = cfg->ip;
          addr->cil_code = D.49525;
          addr->data.op[0].p = var;
          D.50089 = var->flags;
          D.50090 = D.50089 | 16;
          var->flags = D.50090;
          addr->type = 5;
          D.50091 = var->klass;
          addr->klass = D.50091;
          D.50092 = alloc_dreg (cfg, 5);
          D.50093 = (int) D.50092;
          addr->dreg = D.50093;
          cfg->has_indirection = 1;
          D.49880 = cfg->gsharedvt;
          D.49881 = D.49880 != 0;
          D.49882 = (long int) D.49881;
          D.49883 = __builtin_expect (D.49882, 0);
          if (D.49883 != 0) goto <D.50094>; else goto <D.50095>;
          <D.50094>:
          D.50096 = var->data.op[1].vtype;
          D.50097 = mini_is_gsharedvt_variable_type (cfg, D.50096);
          if (D.50097 != 0) goto <D.50098>; else goto <D.50099>;
          <D.50098>:
          handle_gsharedvt_ldaddr (cfg);
          <D.50099>:
          <D.50095>:
          D.50101 = mono_arch_is_soft_float ();
          if (D.50101 != 0) goto <D.50102>; else goto <D.50103>;
          <D.50102>:
          D.50104 = var->type;
          D.50105 = D.50104 == 2;
          D.50106 = D.50104 == 4;
          D.50107 = D.50105 | D.50106;
          D.50108 = (int) D.50107;
          iftmp.472 = (_Bool) D.50108;
          goto <D.50109>;
          <D.50103>:
          D.50110 = var->type;
          iftmp.472 = D.50110 == 2;
          <D.50109>:
          if (iftmp.472 != 0) goto <D.50111>; else goto <D.50112>;
          <D.50111>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.50114 = var->dreg;
            D.50115 = D.50114 + 1;
            D.50116 = (unsigned int) D.50115;
            D.49864 = cfg->vreg_to_inst_len;
            if (D.50116 < D.49864) goto <D.50117>; else goto <D.50118>;
            <D.50117>:
            D.49867 = cfg->vreg_to_inst;
            D.50114 = var->dreg;
            D.50119 = (sizetype) D.50114;
            D.50120 = D.50119 + 1;
            D.50121 = D.50120 * 4;
            D.50122 = D.49867 + D.50121;
            iftmp.473 = *D.50122;
            goto <D.50123>;
            <D.50118>:
            iftmp.473 = 0B;
            <D.50123>:
            var1 = iftmp.473;
            D.50114 = var->dreg;
            D.50125 = D.50114 + 2;
            D.50126 = (unsigned int) D.50125;
            D.49864 = cfg->vreg_to_inst_len;
            if (D.50126 < D.49864) goto <D.50127>; else goto <D.50128>;
            <D.50127>:
            D.49867 = cfg->vreg_to_inst;
            D.50114 = var->dreg;
            D.50119 = (sizetype) D.50114;
            D.50129 = D.50119 + 2;
            D.50130 = D.50129 * 4;
            D.50131 = D.49867 + D.50130;
            iftmp.474 = *D.50131;
            goto <D.50132>;
            <D.50128>:
            iftmp.474 = 0B;
            <D.50132>:
            var2 = iftmp.474;
            D.50133 = var1 == 0B;
            D.50134 = (long int) D.50133;
            D.50135 = __builtin_expect (D.50134, 0);
            if (D.50135 != 0) goto <D.50136>; else goto <D.50137>;
            <D.50136>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3706, "var1");
            <D.50137>:
            D.50138 = var2 == 0B;
            D.50139 = (long int) D.50138;
            D.50140 = __builtin_expect (D.50139, 0);
            if (D.50140 != 0) goto <D.50141>; else goto <D.50142>;
            <D.50141>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3706, "var2");
            <D.50142>:
            D.50143 = var1->flags;
            D.50144 = D.50143 | 16;
            var1->flags = D.50144;
            D.50145 = var2->flags;
            D.50146 = D.50145 | 16;
            var2->flags = D.50146;
          }
          <D.50112>:
        }
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.50147>; else goto <D.50148>;
        <D.50147>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49528->next = addr;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        addr->prev = D.49528;
        D.49527 = cfg->cbb;
        D.49527->last_ins = addr;
        goto <D.50149>;
        <D.50148>:
        D.49527 = cfg->cbb;
        D.49527 = cfg->cbb;
        D.49527->last_ins = addr;
        D.49528 = D.49527->last_ins;
        D.49527->code = D.49528;
        <D.50149>:
        addr->dreg = addr_reg;
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.49510 = cfg->mempool;
        ins = mono_mempool_alloc (D.49510, 56);
        ins->data.op[1].const_val = 0;
        D.50150 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.50150;
        ins->prev = 0B;
        D.50151 = ins->prev;
        ins->next = D.50151;
        ins->opcode = 442;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.50152 = ins->sreg3;
        ins->sreg2 = D.50152;
        D.50153 = ins->sreg2;
        ins->sreg1 = D.50153;
        D.49525 = cfg->ip;
        ins->cil_code = D.49525;
        if (1 != 0) goto <D.50154>; else goto <D.50155>;
        <D.50154>:
        D.49510 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.49510, 172);
        D.49511 = cfg->num_bblocks;
        D.50156 = D.49511;
        D.50157 = D.50156 + 1;
        cfg->num_bblocks = D.50157;
        D.50158 = (int) D.50156;
        falsebb->block_num = D.50158;
        ins->data.op[0].target_block = end_bb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, end_bb);
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.50159>; else goto <D.50160>;
        <D.50159>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49528->next = ins;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        ins->prev = D.49528;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        goto <D.50161>;
        <D.50160>:
        D.49527 = cfg->cbb;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        D.49528 = D.49527->last_ins;
        D.49527->code = D.49528;
        <D.50161>:
        D.50162 = falsebb->cil_code;
        if (D.50162 != 0B) goto <D.50163>; else goto <D.50164>;
        <D.50163>:
        D.49547 = cfg->cil_offset_to_bb;
        D.50162 = falsebb->cil_code;
        D.50165 = (int) D.50162;
        D.49549 = cfg->cil_start;
        D.49550 = (int) D.49549;
        D.50166 = D.50165 - D.49550;
        D.50167 = (unsigned int) D.50166;
        D.50168 = D.50167 * 4;
        D.50169 = D.49547 + D.50168;
        *D.50169 = falsebb;
        <D.50164>:
        D.49555 = cfg->real_offset;
        falsebb->real_offset = D.49555;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.50173>; else goto <D.50170>;
        <D.50173>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.50174 = D.49528->opcode;
        D.50175 = D.50174 + 64985;
        D.50176 = D.50175 <= 9;
        D.50177 = D.50174 + 64878;
        D.50178 = D.50177 <= 9;
        D.50179 = D.50176 | D.50178;
        if (D.50179 != 0) goto <D.50171>; else goto <D.50180>;
        <D.50180>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 <= 9) goto <D.50171>; else goto <D.50170>;
        <D.50171>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        D.49571 = *D.49570;
        if (D.49571 == 0B) goto <D.50181>; else goto <D.50170>;
        <D.50181>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        *D.49570 = falsebb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        goto <D.50172>;
        <D.50170>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 == 0B) goto <D.50182>; else goto <D.50184>;
        <D.50184>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.50185 = D.49528->opcode;
        D.50186 = D.50185 != 442;
        D.50187 = D.50185 != 759;
        D.50188 = D.50186 & D.50187;
        if (D.50188 != 0) goto <D.50189>; else goto <D.50183>;
        <D.50189>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.50190 = D.49528->opcode;
        D.50191 = D.50190 + 64985;
        D.50192 = D.50191 > 9;
        D.50193 = D.50190 + 64878;
        D.50194 = D.50193 > 9;
        D.50195 = D.50192 & D.50194;
        if (D.50195 != 0) goto <D.50196>; else goto <D.50183>;
        <D.50196>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 > 9) goto <D.50182>; else goto <D.50183>;
        <D.50182>:
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        <D.50183>:
        <D.50172>:
        D.49527 = cfg->cbb;
        D.49527->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.50197>;
        <D.50155>:
        D.49510 = cfg->mempool;
        D.50198 = mono_mempool_alloc (D.49510, 8);
        ins->data.op[1].many_blocks = D.50198;
        D.50199 = ins->data.op[1].many_blocks;
        *D.50199 = end_bb;
        D.50199 = ins->data.op[1].many_blocks;
        D.50200 = D.50199 + 4;
        *D.50200 = 0B;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, end_bb);
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.50201>; else goto <D.50202>;
        <D.50201>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49528->next = ins;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        ins->prev = D.49528;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        goto <D.50203>;
        <D.50202>:
        D.49527 = cfg->cbb;
        D.49527 = cfg->cbb;
        D.49527->last_ins = ins;
        D.49528 = D.49527->last_ins;
        D.49527->code = D.49528;
        <D.50203>:
        D.49595 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.49596 = D.49595 & 8;
        if (D.49596 == 0) goto <D.50204>; else goto <D.50205>;
        <D.50204>:
        D.49510 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.49510, 172);
        D.49511 = cfg->num_bblocks;
        D.50206 = D.49511;
        D.50207 = D.50206 + 1;
        cfg->num_bblocks = D.50207;
        D.50208 = (int) D.50206;
        falsebb->block_num = D.50208;
        D.50199 = ins->data.op[1].many_blocks;
        D.50200 = D.50199 + 4;
        *D.50200 = falsebb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        D.50162 = falsebb->cil_code;
        if (D.50162 != 0B) goto <D.50209>; else goto <D.50210>;
        <D.50209>:
        D.49547 = cfg->cil_offset_to_bb;
        D.50162 = falsebb->cil_code;
        D.50165 = (int) D.50162;
        D.49549 = cfg->cil_start;
        D.49550 = (int) D.49549;
        D.50166 = D.50165 - D.49550;
        D.50167 = (unsigned int) D.50166;
        D.50168 = D.50167 * 4;
        D.50169 = D.49547 + D.50168;
        *D.50169 = falsebb;
        <D.50210>:
        D.49555 = cfg->real_offset;
        falsebb->real_offset = D.49555;
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 != 0B) goto <D.50214>; else goto <D.50211>;
        <D.50214>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.50215 = D.49528->opcode;
        D.50216 = D.50215 + 64985;
        D.50217 = D.50216 <= 9;
        D.50218 = D.50215 + 64878;
        D.50219 = D.50218 <= 9;
        D.50220 = D.50217 | D.50219;
        if (D.50220 != 0) goto <D.50212>; else goto <D.50221>;
        <D.50221>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 <= 9) goto <D.50212>; else goto <D.50211>;
        <D.50212>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        D.49571 = *D.49570;
        if (D.49571 == 0B) goto <D.50222>; else goto <D.50211>;
        <D.50222>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49569 = D.49528->data.op[1].many_blocks;
        D.49570 = D.49569 + 4;
        *D.49570 = falsebb;
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        goto <D.50213>;
        <D.50211>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        if (D.49528 == 0B) goto <D.50223>; else goto <D.50225>;
        <D.50225>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.50226 = D.49528->opcode;
        D.50227 = D.50226 != 442;
        D.50228 = D.50226 != 759;
        D.50229 = D.50227 & D.50228;
        if (D.50229 != 0) goto <D.50230>; else goto <D.50224>;
        <D.50230>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.50231 = D.49528->opcode;
        D.50232 = D.50231 + 64985;
        D.50233 = D.50232 > 9;
        D.50234 = D.50231 + 64878;
        D.50235 = D.50234 > 9;
        D.50236 = D.50233 & D.50235;
        if (D.50236 != 0) goto <D.50237>; else goto <D.50224>;
        <D.50237>:
        D.49527 = cfg->cbb;
        D.49528 = D.49527->last_ins;
        D.49567 = D.49528->opcode;
        D.49568 = D.49567 + 64888;
        if (D.49568 > 9) goto <D.50223>; else goto <D.50224>;
        <D.50223>:
        D.49527 = cfg->cbb;
        mono_link_bblock (cfg, D.49527, falsebb);
        <D.50224>:
        <D.50213>:
        D.49527 = cfg->cbb;
        D.49527->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.50238>;
        <D.50205>:
        D.49527 = cfg->cbb;
        D.49527->extended = 1;
        <D.50238>:
        <D.50197>:
      }
      D.50239 = end_bb->cil_code;
      if (D.50239 != 0B) goto <D.50240>; else goto <D.50241>;
      <D.50240>:
      D.49547 = cfg->cil_offset_to_bb;
      D.50239 = end_bb->cil_code;
      D.50242 = (int) D.50239;
      D.49549 = cfg->cil_start;
      D.49550 = (int) D.49549;
      D.50243 = D.50242 - D.49550;
      D.50244 = (unsigned int) D.50243;
      D.50245 = D.50244 * 4;
      D.50246 = D.49547 + D.50245;
      *D.50246 = end_bb;
      <D.50241>:
      D.49555 = cfg->real_offset;
      end_bb->real_offset = D.49555;
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      if (D.49528 != 0B) goto <D.50250>; else goto <D.50247>;
      <D.50250>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.50251 = D.49528->opcode;
      D.50252 = D.50251 + 64985;
      D.50253 = D.50252 <= 9;
      D.50254 = D.50251 + 64878;
      D.50255 = D.50254 <= 9;
      D.50256 = D.50253 | D.50255;
      if (D.50256 != 0) goto <D.50248>; else goto <D.50257>;
      <D.50257>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.49567 = D.49528->opcode;
      D.49568 = D.49567 + 64888;
      if (D.49568 <= 9) goto <D.50248>; else goto <D.50247>;
      <D.50248>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.49569 = D.49528->data.op[1].many_blocks;
      D.49570 = D.49569 + 4;
      D.49571 = *D.49570;
      if (D.49571 == 0B) goto <D.50258>; else goto <D.50247>;
      <D.50258>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.49569 = D.49528->data.op[1].many_blocks;
      D.49570 = D.49569 + 4;
      *D.49570 = end_bb;
      D.49527 = cfg->cbb;
      mono_link_bblock (cfg, D.49527, end_bb);
      goto <D.50249>;
      <D.50247>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      if (D.49528 == 0B) goto <D.50259>; else goto <D.50261>;
      <D.50261>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.50262 = D.49528->opcode;
      D.50263 = D.50262 != 442;
      D.50264 = D.50262 != 759;
      D.50265 = D.50263 & D.50264;
      if (D.50265 != 0) goto <D.50266>; else goto <D.50260>;
      <D.50266>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.50267 = D.49528->opcode;
      D.50268 = D.50267 + 64985;
      D.50269 = D.50268 > 9;
      D.50270 = D.50267 + 64878;
      D.50271 = D.50270 > 9;
      D.50272 = D.50269 & D.50271;
      if (D.50272 != 0) goto <D.50273>; else goto <D.50260>;
      <D.50273>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.49567 = D.49528->opcode;
      D.49568 = D.49567 + 64888;
      if (D.49568 > 9) goto <D.50259>; else goto <D.50260>;
      <D.50259>:
      D.49527 = cfg->cbb;
      mono_link_bblock (cfg, D.49527, end_bb);
      <D.50260>:
      <D.50249>:
      D.49527 = cfg->cbb;
      D.49527->next_bb = end_bb;
      cfg->cbb = end_bb;
      D.49510 = cfg->mempool;
      ins = mono_mempool_alloc (D.49510, 56);
      ins->data.op[1].const_val = 0;
      D.50274 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.50274;
      ins->prev = 0B;
      D.50275 = ins->prev;
      ins->next = D.50275;
      D.49874 = &klass->byval_arg;
      D.50276 = mono_type_to_load_membase (cfg, D.49874);
      D.50277 = (short unsigned int) D.50276;
      ins->opcode = D.50277;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.50278 = ins->sreg3;
      ins->sreg2 = D.50278;
      D.50279 = ins->sreg2;
      ins->sreg1 = D.50279;
      D.49525 = cfg->ip;
      ins->cil_code = D.49525;
      ins->dreg = 0;
      ins->sreg1 = addr_reg;
      ins->data.op[0].const_val = 0;
      ins->type = 1;
      D.49874 = &klass->byval_arg;
      type_to_eval_stack_type (cfg, D.49874, ins);
      D.50280 = ins->type;
      D.50281 = (<unnamed type>) D.50280;
      D.50282 = alloc_dreg (cfg, D.50281);
      D.50283 = (int) D.50282;
      ins->dreg = D.50283;
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      if (D.49528 != 0B) goto <D.50284>; else goto <D.50285>;
      <D.50284>:
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      D.49528->next = ins;
      D.49527 = cfg->cbb;
      D.49528 = D.49527->last_ins;
      ins->prev = D.49528;
      D.49527 = cfg->cbb;
      D.49527->last_ins = ins;
      goto <D.50286>;
      <D.50285>:
      D.49527 = cfg->cbb;
      D.49527 = cfg->cbb;
      D.49527->last_ins = ins;
      D.49528 = D.49527->last_ins;
      D.49527->code = D.49528;
      <D.50286>:
      D.49527 = cfg->cbb;
      *out_cbb = D.49527;
      D.50287 = ins;
      return D.50287;
    }
  finally
    {
      args = {CLOBBER};
    }
}


mini_class_has_reference_variant_generic_argument (struct MonoCompile * cfg, struct MonoClass * klass, int context_used)
{
  struct MonoGenericClass * D.50290;
  struct MonoClass * D.50293;
  struct MonoGenericContainer * D.50297;
  gboolean D.50300;
  struct MonoGenericParamFull * D.50301;
  unsigned int i.475;
  unsigned int D.50303;
  struct MonoGenericParamFull * D.50304;
  short unsigned int D.50305;
  int D.50306;
  int D.50307;
  int D.50310;
  <unnamed-signed:31> D.50313;
  int D.50314;
  int i;
  struct MonoGenericContainer * container;
  struct MonoGenericInst * ginst;

  D.50290 = klass->generic_class;
  if (D.50290 != 0B) goto <D.50291>; else goto <D.50292>;
  <D.50291>:
  D.50290 = klass->generic_class;
  D.50293 = D.50290->container_class;
  container = D.50293->generic_container;
  D.50290 = klass->generic_class;
  ginst = D.50290->context.class_inst;
  goto <D.50294>;
  <D.50292>:
  D.50297 = klass->generic_container;
  if (D.50297 != 0B) goto <D.50298>; else goto <D.50295>;
  <D.50298>:
  if (context_used != 0) goto <D.50299>; else goto <D.50295>;
  <D.50299>:
  container = klass->generic_container;
  ginst = container->context.class_inst;
  goto <D.50296>;
  <D.50295>:
  D.50300 = 0;
  return D.50300;
  <D.50296>:
  <D.50294>:
  i = 0;
  goto <D.28562>;
  <D.28561>:
  {
    struct MonoType * type;

    D.50301 = container->type_params;
    i.475 = (unsigned int) i;
    D.50303 = i.475 * 32;
    D.50304 = D.50301 + D.50303;
    D.50305 = D.50304->info.flags;
    D.50306 = (int) D.50305;
    D.50307 = D.50306 & 3;
    if (D.50307 == 0) goto <D.50308>; else goto <D.50309>;
    <D.50308>:
    // predicted unlikely by continue predictor.
    goto <D.28560>;
    <D.50309>:
    type = ginst->type_argv[i];
    D.50310 = mini_type_is_reference (cfg, type);
    if (D.50310 != 0) goto <D.50311>; else goto <D.50312>;
    <D.50311>:
    D.50300 = 1;
    return D.50300;
    <D.50312>:
  }
  <D.28560>:
  i = i + 1;
  <D.28562>:
  D.50313 = container->type_argc;
  D.50314 = (int) D.50313;
  if (D.50314 > i) goto <D.28561>; else goto <D.28563>;
  <D.28563>:
  D.50300 = 0;
  return D.50300;
}


handle_castclass (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * src, int context_used)
{
  unsigned int D.50316;
  struct MonoMemPool * D.50321;
  void * D.50322;
  struct MonoInst * D.50323;
  int D.50324;
  struct MonoInst * D.50325;
  int D.50326;
  int D.50327;
  const unsigned char * D.50328;
  unsigned int D.50329;
  int D.50330;
  int D.50331;
  struct MonoBasicBlock * D.50332;
  struct MonoInst * D.50333;
  struct MonoInst * D.50337;
  unsigned int D.50338;
  unsigned int D.50339;
  unsigned int D.50340;
  int D.50341;
  int D.50342;
  struct MonoInst * D.50343;
  int D.50344;
  int D.50345;
  int D.50349;
  struct MonoInst * D.50350;
  int D.50351;
  int D.50352;
  unsigned int D.50355;
  unsigned int D.50356;
  int D.50357;
  unsigned char * D.50361;
  struct MonoBasicBlock * * D.50364;
  int D.50365;
  unsigned char * D.50366;
  int D.50367;
  int D.50368;
  unsigned int D.50369;
  unsigned int D.50370;
  struct MonoBasicBlock * * D.50371;
  unsigned int D.50372;
  short unsigned int D.50377;
  short unsigned int D.50378;
  _Bool D.50379;
  short unsigned int D.50380;
  _Bool D.50381;
  _Bool D.50382;
  short unsigned int D.50384;
  short unsigned int D.50385;
  struct MonoBasicBlock * * D.50386;
  struct MonoBasicBlock * * D.50387;
  struct MonoBasicBlock * D.50388;
  short unsigned int D.50393;
  _Bool D.50394;
  _Bool D.50395;
  _Bool D.50396;
  short unsigned int D.50398;
  short unsigned int D.50399;
  _Bool D.50400;
  short unsigned int D.50401;
  _Bool D.50402;
  _Bool D.50403;
  void * D.50406;
  struct MonoBasicBlock * * D.50407;
  struct MonoBasicBlock * * D.50408;
  unsigned char D.50412;
  unsigned char D.50413;
  unsigned int D.50416;
  unsigned int D.50417;
  int D.50418;
  short unsigned int D.50425;
  short unsigned int D.50426;
  _Bool D.50427;
  short unsigned int D.50428;
  _Bool D.50429;
  _Bool D.50430;
  short unsigned int D.50436;
  _Bool D.50437;
  _Bool D.50438;
  _Bool D.50439;
  short unsigned int D.50441;
  short unsigned int D.50442;
  _Bool D.50443;
  short unsigned int D.50444;
  _Bool D.50445;
  _Bool D.50446;
  unsigned int D.50449;
  unsigned int D.50450;
  int D.50453;
  struct MonoInst * D.50454;
  int D.50455;
  int D.50456;
  unsigned int D.50461;
  int D.50462;
  struct MonoInst * D.50463;
  int D.50464;
  int D.50465;
  unsigned char D.50471;
  unsigned char D.50473;
  unsigned int D.50475;
  unsigned int D.50476;
  unsigned int D.50478;
  struct MonoDomain * D.50482;
  int D.50485;
  struct MonoInst * D.50486;
  int D.50487;
  int D.50488;
  int vt.476;
  int D.50494;
  struct MonoInst * D.50495;
  int D.50496;
  int D.50497;
  int D.50501;
  struct MonoInst * D.50502;
  int D.50503;
  int D.50504;
  int klass.477;
  int D.50509;
  struct MonoInst * D.50510;
  int D.50511;
  int D.50512;
  int D.50516;
  struct MonoInst * D.50517;
  int D.50518;
  int D.50519;
  unsigned char * D.50523;
  int D.50526;
  int D.50527;
  unsigned int D.50528;
  unsigned int D.50529;
  struct MonoBasicBlock * * D.50530;
  short unsigned int D.50535;
  short unsigned int D.50536;
  _Bool D.50537;
  short unsigned int D.50538;
  _Bool D.50539;
  _Bool D.50540;
  short unsigned int D.50546;
  _Bool D.50547;
  _Bool D.50548;
  _Bool D.50549;
  short unsigned int D.50551;
  short unsigned int D.50552;
  _Bool D.50553;
  short unsigned int D.50554;
  _Bool D.50555;
  _Bool D.50556;
  struct MonoBasicBlock * is_null_bb;
  int obj_reg;
  int vtable_reg;
  struct MonoInst * klass_inst;

  obj_reg = src->dreg;
  D.50316 = alloc_preg (cfg);
  vtable_reg = (int) D.50316;
  klass_inst = 0B;
  if (context_used != 0) goto <D.50317>; else goto <D.50318>;
  <D.50317>:
  {
    struct MonoInst * args[3];

    try
      {
        mini_class_has_reference_variant_generic_argument (cfg, klass, context_used);
        if (1 != 0) goto <D.50319>; else goto <D.50320>;
        <D.50319>:
        {
          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.50321 = cfg->mempool;
          D.50322 = mono_mempool_alloc (D.50321, 56);
          args[1] = D.50322;
          D.50323 = args[1];
          D.50323 = args[1];
          D.50323->data.op[1].const_val = 0;
          D.50324 = D.50323->data.op[1].const_val;
          D.50323->data.op[0].const_val = D.50324;
          D.50323 = args[1];
          D.50323 = args[1];
          D.50323->prev = 0B;
          D.50325 = D.50323->prev;
          D.50323->next = D.50325;
          D.50323 = args[1];
          D.50323->opcode = 388;
          D.50323 = args[1];
          D.50323->flags = 0;
          D.50323 = args[1];
          D.50323->type = 0;
          D.50323 = args[1];
          D.50323->dreg = -1;
          D.50323 = args[1];
          D.50323 = args[1];
          D.50323 = args[1];
          D.50323->sreg3 = -1;
          D.50326 = D.50323->sreg3;
          D.50323->sreg2 = D.50326;
          D.50327 = D.50323->sreg2;
          D.50323->sreg1 = D.50327;
          D.50323 = args[1];
          D.50328 = cfg->ip;
          D.50323->cil_code = D.50328;
          D.50323 = args[1];
          D.50329 = alloc_preg (cfg);
          D.50330 = (int) D.50329;
          D.50323->dreg = D.50330;
          D.50323 = args[1];
          D.50331 = cache_ins->dreg;
          D.50323->sreg1 = D.50331;
          D.50323 = args[1];
          D.50323->data.op[0].const_val = 4;
          D.50323 = args[1];
          D.50323->type = 1;
          D.50332 = cfg->cbb;
          D.50333 = D.50332->last_ins;
          if (D.50333 != 0B) goto <D.50334>; else goto <D.50335>;
          <D.50334>:
          D.50332 = cfg->cbb;
          D.50333 = D.50332->last_ins;
          D.50323 = args[1];
          D.50333->next = D.50323;
          D.50323 = args[1];
          D.50332 = cfg->cbb;
          D.50333 = D.50332->last_ins;
          D.50323->prev = D.50333;
          D.50332 = cfg->cbb;
          D.50323 = args[1];
          D.50332->last_ins = D.50323;
          goto <D.50336>;
          <D.50335>:
          D.50332 = cfg->cbb;
          D.50332 = cfg->cbb;
          D.50323 = args[1];
          D.50332->last_ins = D.50323;
          D.50333 = D.50332->last_ins;
          D.50332->code = D.50333;
          <D.50336>:
          args[2] = cache_ins;
          D.50337 = mono_emit_method_call (cfg, mono_castclass, &args, 0B);
          return D.50337;
        }
        <D.50320>:
        klass_inst = emit_get_rgctx_klass (cfg, context_used, klass, 1);
      }
    finally
      {
        args = {CLOBBER};
      }
  }
  <D.50318>:
  D.50321 = cfg->mempool;
  is_null_bb = mono_mempool_alloc0 (D.50321, 172);
  D.50338 = cfg->num_bblocks;
  D.50339 = D.50338;
  D.50340 = D.50339 + 1;
  cfg->num_bblocks = D.50340;
  D.50341 = (int) D.50339;
  is_null_bb->block_num = D.50341;
  {
    struct MonoInst * inst;

    D.50321 = cfg->mempool;
    inst = mono_mempool_alloc (D.50321, 56);
    inst->data.op[1].const_val = 0;
    D.50342 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50342;
    inst->prev = 0B;
    D.50343 = inst->prev;
    inst->next = D.50343;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50344 = inst->sreg3;
    inst->sreg2 = D.50344;
    D.50345 = inst->sreg2;
    inst->sreg1 = D.50345;
    D.50328 = cfg->ip;
    inst->cil_code = D.50328;
    inst->dreg = -1;
    inst->sreg1 = obj_reg;
    inst->data.op[1].const_val = 0;
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    if (D.50333 != 0B) goto <D.50346>; else goto <D.50347>;
    <D.50346>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    D.50333->next = inst;
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    inst->prev = D.50333;
    D.50332 = cfg->cbb;
    D.50332->last_ins = inst;
    goto <D.50348>;
    <D.50347>:
    D.50332 = cfg->cbb;
    D.50332 = cfg->cbb;
    D.50332->last_ins = inst;
    D.50333 = D.50332->last_ins;
    D.50332->code = D.50333;
    <D.50348>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.50321 = cfg->mempool;
    ins = mono_mempool_alloc (D.50321, 56);
    ins->data.op[1].const_val = 0;
    D.50349 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.50349;
    ins->prev = 0B;
    D.50350 = ins->prev;
    ins->next = D.50350;
    ins->opcode = 648;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.50351 = ins->sreg3;
    ins->sreg2 = D.50351;
    D.50352 = ins->sreg2;
    ins->sreg1 = D.50352;
    D.50328 = cfg->ip;
    ins->cil_code = D.50328;
    if (0 != 0) goto <D.50353>; else goto <D.50354>;
    <D.50353>:
    D.50321 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.50321, 172);
    D.50338 = cfg->num_bblocks;
    D.50355 = D.50338;
    D.50356 = D.50355 + 1;
    cfg->num_bblocks = D.50356;
    D.50357 = (int) D.50355;
    falsebb->block_num = D.50357;
    ins->data.op[0].target_block = is_null_bb;
    D.50332 = cfg->cbb;
    mono_link_bblock (cfg, D.50332, is_null_bb);
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    if (D.50333 != 0B) goto <D.50358>; else goto <D.50359>;
    <D.50358>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    D.50333->next = ins;
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    ins->prev = D.50333;
    D.50332 = cfg->cbb;
    D.50332->last_ins = ins;
    goto <D.50360>;
    <D.50359>:
    D.50332 = cfg->cbb;
    D.50332 = cfg->cbb;
    D.50332->last_ins = ins;
    D.50333 = D.50332->last_ins;
    D.50332->code = D.50333;
    <D.50360>:
    D.50361 = falsebb->cil_code;
    if (D.50361 != 0B) goto <D.50362>; else goto <D.50363>;
    <D.50362>:
    D.50364 = cfg->cil_offset_to_bb;
    D.50361 = falsebb->cil_code;
    D.50365 = (int) D.50361;
    D.50366 = cfg->cil_start;
    D.50367 = (int) D.50366;
    D.50368 = D.50365 - D.50367;
    D.50369 = (unsigned int) D.50368;
    D.50370 = D.50369 * 4;
    D.50371 = D.50364 + D.50370;
    *D.50371 = falsebb;
    <D.50363>:
    D.50372 = cfg->real_offset;
    falsebb->real_offset = D.50372;
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    if (D.50333 != 0B) goto <D.50376>; else goto <D.50373>;
    <D.50376>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    D.50377 = D.50333->opcode;
    D.50378 = D.50377 + 64985;
    D.50379 = D.50378 <= 9;
    D.50380 = D.50377 + 64878;
    D.50381 = D.50380 <= 9;
    D.50382 = D.50379 | D.50381;
    if (D.50382 != 0) goto <D.50374>; else goto <D.50383>;
    <D.50383>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    D.50384 = D.50333->opcode;
    D.50385 = D.50384 + 64888;
    if (D.50385 <= 9) goto <D.50374>; else goto <D.50373>;
    <D.50374>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    D.50386 = D.50333->data.op[1].many_blocks;
    D.50387 = D.50386 + 4;
    D.50388 = *D.50387;
    if (D.50388 == 0B) goto <D.50389>; else goto <D.50373>;
    <D.50389>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    D.50386 = D.50333->data.op[1].many_blocks;
    D.50387 = D.50386 + 4;
    *D.50387 = falsebb;
    D.50332 = cfg->cbb;
    mono_link_bblock (cfg, D.50332, falsebb);
    goto <D.50375>;
    <D.50373>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    if (D.50333 == 0B) goto <D.50390>; else goto <D.50392>;
    <D.50392>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    D.50393 = D.50333->opcode;
    D.50394 = D.50393 != 442;
    D.50395 = D.50393 != 759;
    D.50396 = D.50394 & D.50395;
    if (D.50396 != 0) goto <D.50397>; else goto <D.50391>;
    <D.50397>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    D.50398 = D.50333->opcode;
    D.50399 = D.50398 + 64985;
    D.50400 = D.50399 > 9;
    D.50401 = D.50398 + 64878;
    D.50402 = D.50401 > 9;
    D.50403 = D.50400 & D.50402;
    if (D.50403 != 0) goto <D.50404>; else goto <D.50391>;
    <D.50404>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    D.50384 = D.50333->opcode;
    D.50385 = D.50384 + 64888;
    if (D.50385 > 9) goto <D.50390>; else goto <D.50391>;
    <D.50390>:
    D.50332 = cfg->cbb;
    mono_link_bblock (cfg, D.50332, falsebb);
    <D.50391>:
    <D.50375>:
    D.50332 = cfg->cbb;
    D.50332->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.50405>;
    <D.50354>:
    D.50321 = cfg->mempool;
    D.50406 = mono_mempool_alloc (D.50321, 8);
    ins->data.op[1].many_blocks = D.50406;
    D.50407 = ins->data.op[1].many_blocks;
    *D.50407 = is_null_bb;
    D.50407 = ins->data.op[1].many_blocks;
    D.50408 = D.50407 + 4;
    *D.50408 = 0B;
    D.50332 = cfg->cbb;
    mono_link_bblock (cfg, D.50332, is_null_bb);
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    if (D.50333 != 0B) goto <D.50409>; else goto <D.50410>;
    <D.50409>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    D.50333->next = ins;
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    ins->prev = D.50333;
    D.50332 = cfg->cbb;
    D.50332->last_ins = ins;
    goto <D.50411>;
    <D.50410>:
    D.50332 = cfg->cbb;
    D.50332 = cfg->cbb;
    D.50332->last_ins = ins;
    D.50333 = D.50332->last_ins;
    D.50332->code = D.50333;
    <D.50411>:
    D.50412 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.50413 = D.50412 & 8;
    if (D.50413 == 0) goto <D.50414>; else goto <D.50415>;
    <D.50414>:
    D.50321 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.50321, 172);
    D.50338 = cfg->num_bblocks;
    D.50416 = D.50338;
    D.50417 = D.50416 + 1;
    cfg->num_bblocks = D.50417;
    D.50418 = (int) D.50416;
    falsebb->block_num = D.50418;
    D.50407 = ins->data.op[1].many_blocks;
    D.50408 = D.50407 + 4;
    *D.50408 = falsebb;
    D.50332 = cfg->cbb;
    mono_link_bblock (cfg, D.50332, falsebb);
    D.50361 = falsebb->cil_code;
    if (D.50361 != 0B) goto <D.50419>; else goto <D.50420>;
    <D.50419>:
    D.50364 = cfg->cil_offset_to_bb;
    D.50361 = falsebb->cil_code;
    D.50365 = (int) D.50361;
    D.50366 = cfg->cil_start;
    D.50367 = (int) D.50366;
    D.50368 = D.50365 - D.50367;
    D.50369 = (unsigned int) D.50368;
    D.50370 = D.50369 * 4;
    D.50371 = D.50364 + D.50370;
    *D.50371 = falsebb;
    <D.50420>:
    D.50372 = cfg->real_offset;
    falsebb->real_offset = D.50372;
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    if (D.50333 != 0B) goto <D.50424>; else goto <D.50421>;
    <D.50424>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    D.50425 = D.50333->opcode;
    D.50426 = D.50425 + 64985;
    D.50427 = D.50426 <= 9;
    D.50428 = D.50425 + 64878;
    D.50429 = D.50428 <= 9;
    D.50430 = D.50427 | D.50429;
    if (D.50430 != 0) goto <D.50422>; else goto <D.50431>;
    <D.50431>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    D.50384 = D.50333->opcode;
    D.50385 = D.50384 + 64888;
    if (D.50385 <= 9) goto <D.50422>; else goto <D.50421>;
    <D.50422>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    D.50386 = D.50333->data.op[1].many_blocks;
    D.50387 = D.50386 + 4;
    D.50388 = *D.50387;
    if (D.50388 == 0B) goto <D.50432>; else goto <D.50421>;
    <D.50432>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    D.50386 = D.50333->data.op[1].many_blocks;
    D.50387 = D.50386 + 4;
    *D.50387 = falsebb;
    D.50332 = cfg->cbb;
    mono_link_bblock (cfg, D.50332, falsebb);
    goto <D.50423>;
    <D.50421>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    if (D.50333 == 0B) goto <D.50433>; else goto <D.50435>;
    <D.50435>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    D.50436 = D.50333->opcode;
    D.50437 = D.50436 != 442;
    D.50438 = D.50436 != 759;
    D.50439 = D.50437 & D.50438;
    if (D.50439 != 0) goto <D.50440>; else goto <D.50434>;
    <D.50440>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    D.50441 = D.50333->opcode;
    D.50442 = D.50441 + 64985;
    D.50443 = D.50442 > 9;
    D.50444 = D.50441 + 64878;
    D.50445 = D.50444 > 9;
    D.50446 = D.50443 & D.50445;
    if (D.50446 != 0) goto <D.50447>; else goto <D.50434>;
    <D.50447>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    D.50384 = D.50333->opcode;
    D.50385 = D.50384 + 64888;
    if (D.50385 > 9) goto <D.50433>; else goto <D.50434>;
    <D.50433>:
    D.50332 = cfg->cbb;
    mono_link_bblock (cfg, D.50332, falsebb);
    <D.50434>:
    <D.50423>:
    D.50332 = cfg->cbb;
    D.50332->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.50448>;
    <D.50415>:
    D.50332 = cfg->cbb;
    D.50332->extended = 1;
    <D.50448>:
    <D.50405>:
  }
  save_cast_details (cfg, klass, obj_reg, 0, 0B);
  D.50449 = klass->flags;
  D.50450 = D.50449 & 32;
  if (D.50450 != 0) goto <D.50451>; else goto <D.50452>;
  <D.50451>:
  {
    struct MonoInst * inst;

    D.50321 = cfg->mempool;
    inst = mono_mempool_alloc (D.50321, 56);
    inst->data.op[1].const_val = 0;
    D.50453 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50453;
    inst->prev = 0B;
    D.50454 = inst->prev;
    inst->next = D.50454;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50455 = inst->sreg3;
    inst->sreg2 = D.50455;
    D.50456 = inst->sreg2;
    inst->sreg1 = D.50456;
    D.50328 = cfg->ip;
    inst->cil_code = D.50328;
    inst->dreg = vtable_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    if (D.50333 != 0B) goto <D.50457>; else goto <D.50458>;
    <D.50457>:
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    D.50333->next = inst;
    D.50332 = cfg->cbb;
    D.50333 = D.50332->last_ins;
    inst->prev = D.50333;
    D.50332 = cfg->cbb;
    D.50332->last_ins = inst;
    goto <D.50459>;
    <D.50458>:
    D.50332 = cfg->cbb;
    D.50332 = cfg->cbb;
    D.50332->last_ins = inst;
    D.50333 = D.50332->last_ins;
    D.50332->code = D.50333;
    <D.50459>:
  }
  mini_emit_iface_cast (cfg, vtable_reg, klass, 0B, 0B);
  goto <D.50460>;
  <D.50452>:
  {
    int klass_reg;

    D.50461 = alloc_preg (cfg);
    klass_reg = (int) D.50461;
    {
      struct MonoInst * inst;

      D.50321 = cfg->mempool;
      inst = mono_mempool_alloc (D.50321, 56);
      inst->data.op[1].const_val = 0;
      D.50462 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50462;
      inst->prev = 0B;
      D.50463 = inst->prev;
      inst->next = D.50463;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50464 = inst->sreg3;
      inst->sreg2 = D.50464;
      D.50465 = inst->sreg2;
      inst->sreg1 = D.50465;
      D.50328 = cfg->ip;
      inst->cil_code = D.50328;
      inst->dreg = vtable_reg;
      inst->sreg1 = obj_reg;
      inst->data.op[0].const_val = 0;
      D.50332 = cfg->cbb;
      D.50333 = D.50332->last_ins;
      if (D.50333 != 0B) goto <D.50466>; else goto <D.50467>;
      <D.50466>:
      D.50332 = cfg->cbb;
      D.50333 = D.50332->last_ins;
      D.50333->next = inst;
      D.50332 = cfg->cbb;
      D.50333 = D.50332->last_ins;
      inst->prev = D.50333;
      D.50332 = cfg->cbb;
      D.50332->last_ins = inst;
      goto <D.50468>;
      <D.50467>:
      D.50332 = cfg->cbb;
      D.50332 = cfg->cbb;
      D.50332->last_ins = inst;
      D.50333 = D.50332->last_ins;
      D.50332->code = D.50333;
      <D.50468>:
    }
    D.50471 = klass->rank;
    if (D.50471 == 0) goto <D.50472>; else goto <D.50469>;
    <D.50472>:
    D.50412 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.50473 = D.50412 & 64;
    if (D.50473 == 0) goto <D.50474>; else goto <D.50469>;
    <D.50474>:
    D.50475 = cfg->opt;
    D.50476 = D.50475 & 512;
    if (D.50476 == 0) goto <D.50477>; else goto <D.50469>;
    <D.50477>:
    D.50449 = klass->flags;
    D.50478 = D.50449 & 256;
    if (D.50478 != 0) goto <D.50479>; else goto <D.50469>;
    <D.50479>:
    if (0 != 0) goto <D.50480>; else goto <D.50481>;
    <D.50480>:
    {
      struct MonoVTable * vt;

      D.50482 = cfg->domain;
      vt = mono_class_vtable (D.50482, klass);
      if (vt == 0B) goto <D.50483>; else goto <D.50484>;
      <D.50483>:
      mono_cfg_set_exception (cfg, 7);
      cfg->exception_ptr = klass;
      D.50337 = 0B;
      return D.50337;
      <D.50484>:
      {
        struct MonoInst * inst;

        D.50321 = cfg->mempool;
        inst = mono_mempool_alloc (D.50321, 56);
        inst->data.op[1].const_val = 0;
        D.50485 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.50485;
        inst->prev = 0B;
        D.50486 = inst->prev;
        inst->next = D.50486;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.50487 = inst->sreg3;
        inst->sreg2 = D.50487;
        D.50488 = inst->sreg2;
        inst->sreg1 = D.50488;
        D.50328 = cfg->ip;
        inst->cil_code = D.50328;
        inst->dreg = -1;
        inst->sreg1 = vtable_reg;
        vt.476 = (int) vt;
        inst->data.op[1].const_val = vt.476;
        D.50332 = cfg->cbb;
        D.50333 = D.50332->last_ins;
        if (D.50333 != 0B) goto <D.50490>; else goto <D.50491>;
        <D.50490>:
        D.50332 = cfg->cbb;
        D.50333 = D.50332->last_ins;
        D.50333->next = inst;
        D.50332 = cfg->cbb;
        D.50333 = D.50332->last_ins;
        inst->prev = D.50333;
        D.50332 = cfg->cbb;
        D.50332->last_ins = inst;
        goto <D.50492>;
        <D.50491>:
        D.50332 = cfg->cbb;
        D.50332 = cfg->cbb;
        D.50332->last_ins = inst;
        D.50333 = D.50332->last_ins;
        D.50332->code = D.50333;
        <D.50492>:
      }
    }
    goto <D.50493>;
    <D.50481>:
    {
      struct MonoInst * inst;

      D.50321 = cfg->mempool;
      inst = mono_mempool_alloc (D.50321, 56);
      inst->data.op[1].const_val = 0;
      D.50494 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50494;
      inst->prev = 0B;
      D.50495 = inst->prev;
      inst->next = D.50495;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50496 = inst->sreg3;
      inst->sreg2 = D.50496;
      D.50497 = inst->sreg2;
      inst->sreg1 = D.50497;
      D.50328 = cfg->ip;
      inst->cil_code = D.50328;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.50332 = cfg->cbb;
      D.50333 = D.50332->last_ins;
      if (D.50333 != 0B) goto <D.50498>; else goto <D.50499>;
      <D.50498>:
      D.50332 = cfg->cbb;
      D.50333 = D.50332->last_ins;
      D.50333->next = inst;
      D.50332 = cfg->cbb;
      D.50333 = D.50332->last_ins;
      inst->prev = D.50333;
      D.50332 = cfg->cbb;
      D.50332->last_ins = inst;
      goto <D.50500>;
      <D.50499>:
      D.50332 = cfg->cbb;
      D.50332 = cfg->cbb;
      D.50332->last_ins = inst;
      D.50333 = D.50332->last_ins;
      D.50332->code = D.50333;
      <D.50500>:
    }
    {
      struct MonoInst * inst;

      D.50321 = cfg->mempool;
      inst = mono_mempool_alloc (D.50321, 56);
      inst->data.op[1].const_val = 0;
      D.50501 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50501;
      inst->prev = 0B;
      D.50502 = inst->prev;
      inst->next = D.50502;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50503 = inst->sreg3;
      inst->sreg2 = D.50503;
      D.50504 = inst->sreg2;
      inst->sreg1 = D.50504;
      D.50328 = cfg->ip;
      inst->cil_code = D.50328;
      inst->dreg = -1;
      inst->sreg1 = klass_reg;
      klass.477 = (int) klass;
      inst->data.op[1].const_val = klass.477;
      D.50332 = cfg->cbb;
      D.50333 = D.50332->last_ins;
      if (D.50333 != 0B) goto <D.50506>; else goto <D.50507>;
      <D.50506>:
      D.50332 = cfg->cbb;
      D.50333 = D.50332->last_ins;
      D.50333->next = inst;
      D.50332 = cfg->cbb;
      D.50333 = D.50332->last_ins;
      inst->prev = D.50333;
      D.50332 = cfg->cbb;
      D.50332->last_ins = inst;
      goto <D.50508>;
      <D.50507>:
      D.50332 = cfg->cbb;
      D.50332 = cfg->cbb;
      D.50332->last_ins = inst;
      D.50333 = D.50332->last_ins;
      D.50332->code = D.50333;
      <D.50508>:
    }
    <D.50493>:
    {
      struct MonoInst * inst;

      D.50321 = cfg->mempool;
      inst = mono_mempool_alloc (D.50321, 56);
      inst->data.op[1].const_val = 0;
      D.50509 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50509;
      inst->prev = 0B;
      D.50510 = inst->prev;
      inst->next = D.50510;
      inst->opcode = 456;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50511 = inst->sreg3;
      inst->sreg2 = D.50511;
      D.50512 = inst->sreg2;
      inst->sreg1 = D.50512;
      D.50328 = cfg->ip;
      inst->cil_code = D.50328;
      inst->data.op[1].p = "InvalidCastException";
      D.50332 = cfg->cbb;
      D.50333 = D.50332->last_ins;
      if (D.50333 != 0B) goto <D.50513>; else goto <D.50514>;
      <D.50513>:
      D.50332 = cfg->cbb;
      D.50333 = D.50332->last_ins;
      D.50333->next = inst;
      D.50332 = cfg->cbb;
      D.50333 = D.50332->last_ins;
      inst->prev = D.50333;
      D.50332 = cfg->cbb;
      D.50332->last_ins = inst;
      goto <D.50515>;
      <D.50514>:
      D.50332 = cfg->cbb;
      D.50332 = cfg->cbb;
      D.50332->last_ins = inst;
      D.50333 = D.50332->last_ins;
      D.50332->code = D.50333;
      <D.50515>:
    }
    goto <D.50470>;
    <D.50469>:
    {
      struct MonoInst * inst;

      D.50321 = cfg->mempool;
      inst = mono_mempool_alloc (D.50321, 56);
      inst->data.op[1].const_val = 0;
      D.50516 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50516;
      inst->prev = 0B;
      D.50517 = inst->prev;
      inst->next = D.50517;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50518 = inst->sreg3;
      inst->sreg2 = D.50518;
      D.50519 = inst->sreg2;
      inst->sreg1 = D.50519;
      D.50328 = cfg->ip;
      inst->cil_code = D.50328;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.50332 = cfg->cbb;
      D.50333 = D.50332->last_ins;
      if (D.50333 != 0B) goto <D.50520>; else goto <D.50521>;
      <D.50520>:
      D.50332 = cfg->cbb;
      D.50333 = D.50332->last_ins;
      D.50333->next = inst;
      D.50332 = cfg->cbb;
      D.50333 = D.50332->last_ins;
      inst->prev = D.50333;
      D.50332 = cfg->cbb;
      D.50332->last_ins = inst;
      goto <D.50522>;
      <D.50521>:
      D.50332 = cfg->cbb;
      D.50332 = cfg->cbb;
      D.50332->last_ins = inst;
      D.50333 = D.50332->last_ins;
      D.50332->code = D.50333;
      <D.50522>:
    }
    mini_emit_castclass_inst (cfg, obj_reg, klass_reg, klass, klass_inst, is_null_bb);
    <D.50470>:
  }
  <D.50460>:
  D.50523 = is_null_bb->cil_code;
  if (D.50523 != 0B) goto <D.50524>; else goto <D.50525>;
  <D.50524>:
  D.50364 = cfg->cil_offset_to_bb;
  D.50523 = is_null_bb->cil_code;
  D.50526 = (int) D.50523;
  D.50366 = cfg->cil_start;
  D.50367 = (int) D.50366;
  D.50527 = D.50526 - D.50367;
  D.50528 = (unsigned int) D.50527;
  D.50529 = D.50528 * 4;
  D.50530 = D.50364 + D.50529;
  *D.50530 = is_null_bb;
  <D.50525>:
  D.50372 = cfg->real_offset;
  is_null_bb->real_offset = D.50372;
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  if (D.50333 != 0B) goto <D.50534>; else goto <D.50531>;
  <D.50534>:
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  D.50535 = D.50333->opcode;
  D.50536 = D.50535 + 64985;
  D.50537 = D.50536 <= 9;
  D.50538 = D.50535 + 64878;
  D.50539 = D.50538 <= 9;
  D.50540 = D.50537 | D.50539;
  if (D.50540 != 0) goto <D.50532>; else goto <D.50541>;
  <D.50541>:
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  D.50384 = D.50333->opcode;
  D.50385 = D.50384 + 64888;
  if (D.50385 <= 9) goto <D.50532>; else goto <D.50531>;
  <D.50532>:
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  D.50386 = D.50333->data.op[1].many_blocks;
  D.50387 = D.50386 + 4;
  D.50388 = *D.50387;
  if (D.50388 == 0B) goto <D.50542>; else goto <D.50531>;
  <D.50542>:
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  D.50386 = D.50333->data.op[1].many_blocks;
  D.50387 = D.50386 + 4;
  *D.50387 = is_null_bb;
  D.50332 = cfg->cbb;
  mono_link_bblock (cfg, D.50332, is_null_bb);
  goto <D.50533>;
  <D.50531>:
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  if (D.50333 == 0B) goto <D.50543>; else goto <D.50545>;
  <D.50545>:
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  D.50546 = D.50333->opcode;
  D.50547 = D.50546 != 442;
  D.50548 = D.50546 != 759;
  D.50549 = D.50547 & D.50548;
  if (D.50549 != 0) goto <D.50550>; else goto <D.50544>;
  <D.50550>:
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  D.50551 = D.50333->opcode;
  D.50552 = D.50551 + 64985;
  D.50553 = D.50552 > 9;
  D.50554 = D.50551 + 64878;
  D.50555 = D.50554 > 9;
  D.50556 = D.50553 & D.50555;
  if (D.50556 != 0) goto <D.50557>; else goto <D.50544>;
  <D.50557>:
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  D.50384 = D.50333->opcode;
  D.50385 = D.50384 + 64888;
  if (D.50385 > 9) goto <D.50543>; else goto <D.50544>;
  <D.50543>:
  D.50332 = cfg->cbb;
  mono_link_bblock (cfg, D.50332, is_null_bb);
  <D.50544>:
  <D.50533>:
  D.50332 = cfg->cbb;
  D.50332->next_bb = is_null_bb;
  cfg->cbb = is_null_bb;
  reset_cast_details (cfg);
  D.50337 = src;
  return D.50337;
}


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.50561;
  unsigned int D.50564;
  unsigned int D.50565;
  _Bool D.50566;
  long int D.50567;
  long int D.50568;
  struct MonoMemPool * D.50571;
  int D.50572;
  struct MonoInst * D.50573;
  int D.50574;
  int D.50575;
  const unsigned char * D.50576;
  struct MonoBasicBlock * D.50577;
  struct MonoInst * D.50578;
  int D.50582;
  struct MonoInst * D.50583;
  int D.50584;
  int D.50585;
  int D.50586;
  int D.50590;
  struct MonoInst * D.50591;
  int D.50592;
  int D.50593;
  int D.50597;
  struct MonoInst * D.50598;
  int D.50599;
  int D.50600;
  struct MonoClass * D.50604;
  struct MonoClass * D.50605;
  unsigned int D.50608;
  int D.50609;
  struct MonoInst * D.50610;
  int D.50611;
  int D.50612;
  struct MonoClass * D.50616;
  struct MonoClass * D.50617;
  unsigned int D.50625;
  unsigned int D.50626;
  unsigned char D.50632;
  unsigned int D.50637;
  int D.50638;
  struct MonoInst * D.50639;
  int D.50640;
  int D.50641;
  int D.50645;
  struct MonoInst * D.50646;
  int D.50647;
  int D.50648;
  int D.50652;
  struct MonoInst * D.50653;
  int D.50654;
  int D.50655;
  unsigned int D.50660;
  unsigned int D.50661;
  unsigned int D.50662;
  short unsigned int D.50663;
  int D.50666;
  struct MonoInst * D.50667;
  int D.50668;
  int D.50669;
  int D.50673;
  struct MonoInst * D.50674;
  int D.50675;
  int D.50676;
  int D.50677;
  int D.50681;
  struct MonoInst * D.50682;
  int D.50683;
  int D.50684;
  int D.50688;
  struct MonoInst * D.50689;
  int D.50690;
  int D.50691;
  int D.50695;
  struct MonoInst * D.50696;
  int D.50697;
  int D.50698;
  int D.50699;
  int D.50700;

  D.50561 = klass->rank;
  if (D.50561 != 0) goto <D.50562>; else goto <D.50563>;
  <D.50562>:
  {
    int rank_reg;
    int eclass_reg;

    D.50564 = alloc_preg (cfg);
    rank_reg = (int) D.50564;
    D.50565 = alloc_preg (cfg);
    eclass_reg = (int) D.50565;
    D.50566 = klass_inst != 0B;
    D.50567 = (long int) D.50566;
    D.50568 = __builtin_expect (D.50567, 0);
    if (D.50568 != 0) goto <D.50569>; else goto <D.50570>;
    <D.50569>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1685, "!klass_inst");
    <D.50570>:
    {
      struct MonoInst * inst;

      D.50571 = cfg->mempool;
      inst = mono_mempool_alloc (D.50571, 56);
      inst->data.op[1].const_val = 0;
      D.50572 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50572;
      inst->prev = 0B;
      D.50573 = inst->prev;
      inst->next = D.50573;
      inst->opcode = 390;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50574 = inst->sreg3;
      inst->sreg2 = D.50574;
      D.50575 = inst->sreg2;
      inst->sreg1 = D.50575;
      D.50576 = cfg->ip;
      inst->cil_code = D.50576;
      inst->dreg = rank_reg;
      inst->sreg1 = klass_reg;
      inst->data.op[0].const_val = 14;
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      if (D.50578 != 0B) goto <D.50579>; else goto <D.50580>;
      <D.50579>:
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      D.50578->next = inst;
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      inst->prev = D.50578;
      D.50577 = cfg->cbb;
      D.50577->last_ins = inst;
      goto <D.50581>;
      <D.50580>:
      D.50577 = cfg->cbb;
      D.50577 = cfg->cbb;
      D.50577->last_ins = inst;
      D.50578 = D.50577->last_ins;
      D.50577->code = D.50578;
      <D.50581>:
    }
    {
      struct MonoInst * inst;

      D.50571 = cfg->mempool;
      inst = mono_mempool_alloc (D.50571, 56);
      inst->data.op[1].const_val = 0;
      D.50582 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50582;
      inst->prev = 0B;
      D.50583 = inst->prev;
      inst->next = D.50583;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50584 = inst->sreg3;
      inst->sreg2 = D.50584;
      D.50585 = inst->sreg2;
      inst->sreg1 = D.50585;
      D.50576 = cfg->ip;
      inst->cil_code = D.50576;
      inst->dreg = -1;
      inst->sreg1 = rank_reg;
      D.50561 = klass->rank;
      D.50586 = (int) D.50561;
      inst->data.op[1].const_val = D.50586;
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      if (D.50578 != 0B) goto <D.50587>; else goto <D.50588>;
      <D.50587>:
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      D.50578->next = inst;
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      inst->prev = D.50578;
      D.50577 = cfg->cbb;
      D.50577->last_ins = inst;
      goto <D.50589>;
      <D.50588>:
      D.50577 = cfg->cbb;
      D.50577 = cfg->cbb;
      D.50577->last_ins = inst;
      D.50578 = D.50577->last_ins;
      D.50577->code = D.50578;
      <D.50589>:
    }
    {
      struct MonoInst * inst;

      D.50571 = cfg->mempool;
      inst = mono_mempool_alloc (D.50571, 56);
      inst->data.op[1].const_val = 0;
      D.50590 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50590;
      inst->prev = 0B;
      D.50591 = inst->prev;
      inst->next = D.50591;
      inst->opcode = 456;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50592 = inst->sreg3;
      inst->sreg2 = D.50592;
      D.50593 = inst->sreg2;
      inst->sreg1 = D.50593;
      D.50576 = cfg->ip;
      inst->cil_code = D.50576;
      inst->data.op[1].p = "InvalidCastException";
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      if (D.50578 != 0B) goto <D.50594>; else goto <D.50595>;
      <D.50594>:
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      D.50578->next = inst;
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      inst->prev = D.50578;
      D.50577 = cfg->cbb;
      D.50577->last_ins = inst;
      goto <D.50596>;
      <D.50595>:
      D.50577 = cfg->cbb;
      D.50577 = cfg->cbb;
      D.50577->last_ins = inst;
      D.50578 = D.50577->last_ins;
      D.50577->code = D.50578;
      <D.50596>:
    }
    {
      struct MonoInst * inst;

      D.50571 = cfg->mempool;
      inst = mono_mempool_alloc (D.50571, 56);
      inst->data.op[1].const_val = 0;
      D.50597 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50597;
      inst->prev = 0B;
      D.50598 = inst->prev;
      inst->next = D.50598;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50599 = inst->sreg3;
      inst->sreg2 = D.50599;
      D.50600 = inst->sreg2;
      inst->sreg1 = D.50600;
      D.50576 = cfg->ip;
      inst->cil_code = D.50576;
      inst->dreg = eclass_reg;
      inst->sreg1 = klass_reg;
      inst->data.op[0].const_val = 4;
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      if (D.50578 != 0B) goto <D.50601>; else goto <D.50602>;
      <D.50601>:
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      D.50578->next = inst;
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      inst->prev = D.50578;
      D.50577 = cfg->cbb;
      D.50577->last_ins = inst;
      goto <D.50603>;
      <D.50602>:
      D.50577 = cfg->cbb;
      D.50577 = cfg->cbb;
      D.50577->last_ins = inst;
      D.50578 = D.50577->last_ins;
      D.50577->code = D.50578;
      <D.50603>:
    }
    D.50604 = klass->cast_class;
    D.50605 = mono_defaults.object_class;
    if (D.50604 == D.50605) goto <D.50606>; else goto <D.50607>;
    <D.50606>:
    {
      int parent_reg;

      D.50608 = alloc_preg (cfg);
      parent_reg = (int) D.50608;
      {
        struct MonoInst * inst;

        D.50571 = cfg->mempool;
        inst = mono_mempool_alloc (D.50571, 56);
        inst->data.op[1].const_val = 0;
        D.50609 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.50609;
        inst->prev = 0B;
        D.50610 = inst->prev;
        inst->next = D.50610;
        inst->opcode = 388;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.50611 = inst->sreg3;
        inst->sreg2 = D.50611;
        D.50612 = inst->sreg2;
        inst->sreg1 = D.50612;
        D.50576 = cfg->ip;
        inst->cil_code = D.50576;
        inst->dreg = parent_reg;
        inst->sreg1 = eclass_reg;
        inst->data.op[0].const_val = 28;
        D.50577 = cfg->cbb;
        D.50578 = D.50577->last_ins;
        if (D.50578 != 0B) goto <D.50613>; else goto <D.50614>;
        <D.50613>:
        D.50577 = cfg->cbb;
        D.50578 = D.50577->last_ins;
        D.50578->next = inst;
        D.50577 = cfg->cbb;
        D.50578 = D.50577->last_ins;
        inst->prev = D.50578;
        D.50577 = cfg->cbb;
        D.50577->last_ins = inst;
        goto <D.50615>;
        <D.50614>:
        D.50577 = cfg->cbb;
        D.50577 = cfg->cbb;
        D.50577->last_ins = inst;
        D.50578 = D.50577->last_ins;
        D.50577->code = D.50578;
        <D.50615>:
      }
      D.50616 = mono_defaults.enum_class;
      D.50617 = D.50616->parent;
      mini_emit_class_check_branch (cfg, parent_reg, D.50617, 653, object_is_null);
      D.50616 = mono_defaults.enum_class;
      mini_emit_class_check (cfg, eclass_reg, D.50616);
    }
    goto <D.50618>;
    <D.50607>:
    D.50604 = klass->cast_class;
    D.50616 = mono_defaults.enum_class;
    D.50617 = D.50616->parent;
    if (D.50604 == D.50617) goto <D.50619>; else goto <D.50620>;
    <D.50619>:
    D.50616 = mono_defaults.enum_class;
    D.50617 = D.50616->parent;
    mini_emit_class_check_branch (cfg, eclass_reg, D.50617, 648, object_is_null);
    D.50616 = mono_defaults.enum_class;
    mini_emit_class_check (cfg, eclass_reg, D.50616);
    goto <D.50621>;
    <D.50620>:
    D.50604 = klass->cast_class;
    D.50616 = mono_defaults.enum_class;
    if (D.50604 == D.50616) goto <D.50622>; else goto <D.50623>;
    <D.50622>:
    D.50616 = mono_defaults.enum_class;
    mini_emit_class_check (cfg, eclass_reg, D.50616);
    goto <D.50624>;
    <D.50623>:
    D.50604 = klass->cast_class;
    D.50625 = D.50604->flags;
    D.50626 = D.50625 & 32;
    if (D.50626 != 0) goto <D.50627>; else goto <D.50628>;
    <D.50627>:
    D.50604 = klass->cast_class;
    mini_emit_iface_class_cast (cfg, eclass_reg, D.50604, 0B, 0B);
    goto <D.50629>;
    <D.50628>:
    D.50604 = klass->cast_class;
    mini_emit_castclass (cfg, -1, eclass_reg, D.50604, object_is_null);
    <D.50629>:
    <D.50624>:
    <D.50621>:
    <D.50618>:
    D.50561 = klass->rank;
    if (D.50561 == 1) goto <D.50630>; else goto <D.50631>;
    <D.50630>:
    D.50632 = klass->byval_arg.type;
    if (D.50632 == 29) goto <D.50633>; else goto <D.50634>;
    <D.50633>:
    if (obj_reg != -1) goto <D.50635>; else goto <D.50636>;
    <D.50635>:
    {
      int bounds_reg;

      D.50637 = alloc_preg (cfg);
      bounds_reg = (int) D.50637;
      {
        struct MonoInst * inst;

        D.50571 = cfg->mempool;
        inst = mono_mempool_alloc (D.50571, 56);
        inst->data.op[1].const_val = 0;
        D.50638 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.50638;
        inst->prev = 0B;
        D.50639 = inst->prev;
        inst->next = D.50639;
        inst->opcode = 388;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.50640 = inst->sreg3;
        inst->sreg2 = D.50640;
        D.50641 = inst->sreg2;
        inst->sreg1 = D.50641;
        D.50576 = cfg->ip;
        inst->cil_code = D.50576;
        inst->dreg = bounds_reg;
        inst->sreg1 = obj_reg;
        inst->data.op[0].const_val = 8;
        D.50577 = cfg->cbb;
        D.50578 = D.50577->last_ins;
        if (D.50578 != 0B) goto <D.50642>; else goto <D.50643>;
        <D.50642>:
        D.50577 = cfg->cbb;
        D.50578 = D.50577->last_ins;
        D.50578->next = inst;
        D.50577 = cfg->cbb;
        D.50578 = D.50577->last_ins;
        inst->prev = D.50578;
        D.50577 = cfg->cbb;
        D.50577->last_ins = inst;
        goto <D.50644>;
        <D.50643>:
        D.50577 = cfg->cbb;
        D.50577 = cfg->cbb;
        D.50577->last_ins = inst;
        D.50578 = D.50577->last_ins;
        D.50577->code = D.50578;
        <D.50644>:
      }
      {
        struct MonoInst * inst;

        D.50571 = cfg->mempool;
        inst = mono_mempool_alloc (D.50571, 56);
        inst->data.op[1].const_val = 0;
        D.50645 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.50645;
        inst->prev = 0B;
        D.50646 = inst->prev;
        inst->next = D.50646;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.50647 = inst->sreg3;
        inst->sreg2 = D.50647;
        D.50648 = inst->sreg2;
        inst->sreg1 = D.50648;
        D.50576 = cfg->ip;
        inst->cil_code = D.50576;
        inst->dreg = -1;
        inst->sreg1 = bounds_reg;
        inst->data.op[1].const_val = 0;
        D.50577 = cfg->cbb;
        D.50578 = D.50577->last_ins;
        if (D.50578 != 0B) goto <D.50649>; else goto <D.50650>;
        <D.50649>:
        D.50577 = cfg->cbb;
        D.50578 = D.50577->last_ins;
        D.50578->next = inst;
        D.50577 = cfg->cbb;
        D.50578 = D.50577->last_ins;
        inst->prev = D.50578;
        D.50577 = cfg->cbb;
        D.50577->last_ins = inst;
        goto <D.50651>;
        <D.50650>:
        D.50577 = cfg->cbb;
        D.50577 = cfg->cbb;
        D.50577->last_ins = inst;
        D.50578 = D.50577->last_ins;
        D.50577->code = D.50578;
        <D.50651>:
      }
      {
        struct MonoInst * inst;

        D.50571 = cfg->mempool;
        inst = mono_mempool_alloc (D.50571, 56);
        inst->data.op[1].const_val = 0;
        D.50652 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.50652;
        inst->prev = 0B;
        D.50653 = inst->prev;
        inst->next = D.50653;
        inst->opcode = 456;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.50654 = inst->sreg3;
        inst->sreg2 = D.50654;
        D.50655 = inst->sreg2;
        inst->sreg1 = D.50655;
        D.50576 = cfg->ip;
        inst->cil_code = D.50576;
        inst->data.op[1].p = "InvalidCastException";
        D.50577 = cfg->cbb;
        D.50578 = D.50577->last_ins;
        if (D.50578 != 0B) goto <D.50656>; else goto <D.50657>;
        <D.50656>:
        D.50577 = cfg->cbb;
        D.50578 = D.50577->last_ins;
        D.50578->next = inst;
        D.50577 = cfg->cbb;
        D.50578 = D.50577->last_ins;
        inst->prev = D.50578;
        D.50577 = cfg->cbb;
        D.50577->last_ins = inst;
        goto <D.50658>;
        <D.50657>:
        D.50577 = cfg->cbb;
        D.50577 = cfg->cbb;
        D.50577->last_ins = inst;
        D.50578 = D.50577->last_ins;
        D.50577->code = D.50578;
        <D.50658>:
      }
    }
    <D.50636>:
    <D.50634>:
    <D.50631>:
  }
  goto <D.50659>;
  <D.50563>:
  {
    int idepth_reg;
    int stypes_reg;
    int stype;

    D.50660 = alloc_preg (cfg);
    idepth_reg = (int) D.50660;
    D.50661 = alloc_preg (cfg);
    stypes_reg = (int) D.50661;
    D.50662 = alloc_preg (cfg);
    stype = (int) D.50662;
    mono_class_setup_supertypes (klass);
    D.50663 = klass->idepth;
    if (D.50663 > 6) goto <D.50664>; else goto <D.50665>;
    <D.50664>:
    {
      struct MonoInst * inst;

      D.50571 = cfg->mempool;
      inst = mono_mempool_alloc (D.50571, 56);
      inst->data.op[1].const_val = 0;
      D.50666 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50666;
      inst->prev = 0B;
      D.50667 = inst->prev;
      inst->next = D.50667;
      inst->opcode = 392;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50668 = inst->sreg3;
      inst->sreg2 = D.50668;
      D.50669 = inst->sreg2;
      inst->sreg1 = D.50669;
      D.50576 = cfg->ip;
      inst->cil_code = D.50576;
      inst->dreg = idepth_reg;
      inst->sreg1 = klass_reg;
      inst->data.op[0].const_val = 12;
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      if (D.50578 != 0B) goto <D.50670>; else goto <D.50671>;
      <D.50670>:
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      D.50578->next = inst;
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      inst->prev = D.50578;
      D.50577 = cfg->cbb;
      D.50577->last_ins = inst;
      goto <D.50672>;
      <D.50671>:
      D.50577 = cfg->cbb;
      D.50577 = cfg->cbb;
      D.50577->last_ins = inst;
      D.50578 = D.50577->last_ins;
      D.50577->code = D.50578;
      <D.50672>:
    }
    {
      struct MonoInst * inst;

      D.50571 = cfg->mempool;
      inst = mono_mempool_alloc (D.50571, 56);
      inst->data.op[1].const_val = 0;
      D.50673 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50673;
      inst->prev = 0B;
      D.50674 = inst->prev;
      inst->next = D.50674;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50675 = inst->sreg3;
      inst->sreg2 = D.50675;
      D.50676 = inst->sreg2;
      inst->sreg1 = D.50676;
      D.50576 = cfg->ip;
      inst->cil_code = D.50576;
      inst->dreg = -1;
      inst->sreg1 = idepth_reg;
      D.50663 = klass->idepth;
      D.50677 = (int) D.50663;
      inst->data.op[1].const_val = D.50677;
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      if (D.50578 != 0B) goto <D.50678>; else goto <D.50679>;
      <D.50678>:
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      D.50578->next = inst;
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      inst->prev = D.50578;
      D.50577 = cfg->cbb;
      D.50577->last_ins = inst;
      goto <D.50680>;
      <D.50679>:
      D.50577 = cfg->cbb;
      D.50577 = cfg->cbb;
      D.50577->last_ins = inst;
      D.50578 = D.50577->last_ins;
      D.50577->code = D.50578;
      <D.50680>:
    }
    {
      struct MonoInst * inst;

      D.50571 = cfg->mempool;
      inst = mono_mempool_alloc (D.50571, 56);
      inst->data.op[1].const_val = 0;
      D.50681 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50681;
      inst->prev = 0B;
      D.50682 = inst->prev;
      inst->next = D.50682;
      inst->opcode = 460;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50683 = inst->sreg3;
      inst->sreg2 = D.50683;
      D.50684 = inst->sreg2;
      inst->sreg1 = D.50684;
      D.50576 = cfg->ip;
      inst->cil_code = D.50576;
      inst->data.op[1].p = "InvalidCastException";
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      if (D.50578 != 0B) goto <D.50685>; else goto <D.50686>;
      <D.50685>:
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      D.50578->next = inst;
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      inst->prev = D.50578;
      D.50577 = cfg->cbb;
      D.50577->last_ins = inst;
      goto <D.50687>;
      <D.50686>:
      D.50577 = cfg->cbb;
      D.50577 = cfg->cbb;
      D.50577->last_ins = inst;
      D.50578 = D.50577->last_ins;
      D.50577->code = D.50578;
      <D.50687>:
    }
    <D.50665>:
    {
      struct MonoInst * inst;

      D.50571 = cfg->mempool;
      inst = mono_mempool_alloc (D.50571, 56);
      inst->data.op[1].const_val = 0;
      D.50688 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50688;
      inst->prev = 0B;
      D.50689 = inst->prev;
      inst->next = D.50689;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50690 = inst->sreg3;
      inst->sreg2 = D.50690;
      D.50691 = inst->sreg2;
      inst->sreg1 = D.50691;
      D.50576 = cfg->ip;
      inst->cil_code = D.50576;
      inst->dreg = stypes_reg;
      inst->sreg1 = klass_reg;
      inst->data.op[0].const_val = 8;
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      if (D.50578 != 0B) goto <D.50692>; else goto <D.50693>;
      <D.50692>:
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      D.50578->next = inst;
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      inst->prev = D.50578;
      D.50577 = cfg->cbb;
      D.50577->last_ins = inst;
      goto <D.50694>;
      <D.50693>:
      D.50577 = cfg->cbb;
      D.50577 = cfg->cbb;
      D.50577->last_ins = inst;
      D.50578 = D.50577->last_ins;
      D.50577->code = D.50578;
      <D.50694>:
    }
    {
      struct MonoInst * inst;

      D.50571 = cfg->mempool;
      inst = mono_mempool_alloc (D.50571, 56);
      inst->data.op[1].const_val = 0;
      D.50695 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50695;
      inst->prev = 0B;
      D.50696 = inst->prev;
      inst->next = D.50696;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50697 = inst->sreg3;
      inst->sreg2 = D.50697;
      D.50698 = inst->sreg2;
      inst->sreg1 = D.50698;
      D.50576 = cfg->ip;
      inst->cil_code = D.50576;
      inst->dreg = stype;
      inst->sreg1 = stypes_reg;
      D.50663 = klass->idepth;
      D.50677 = (int) D.50663;
      D.50699 = D.50677 + -1;
      D.50700 = D.50699 * 4;
      inst->data.op[0].const_val = D.50700;
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      if (D.50578 != 0B) goto <D.50701>; else goto <D.50702>;
      <D.50701>:
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      D.50578->next = inst;
      D.50577 = cfg->cbb;
      D.50578 = D.50577->last_ins;
      inst->prev = D.50578;
      D.50577 = cfg->cbb;
      D.50577->last_ins = inst;
      goto <D.50703>;
      <D.50702>:
      D.50577 = cfg->cbb;
      D.50577 = cfg->cbb;
      D.50577->last_ins = inst;
      D.50578 = D.50577->last_ins;
      D.50577->code = D.50578;
      <D.50703>:
    }
    mini_emit_class_check_inst (cfg, stype, klass, klass_inst);
  }
  <D.50659>:
}


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.50706;
  int D.50707;
  struct MonoInst * D.50708;
  int D.50709;
  int D.50710;
  const unsigned char * D.50711;
  int D.50712;
  struct MonoBasicBlock * D.50713;
  struct MonoInst * D.50714;
  unsigned char D.50719;
  unsigned char D.50720;
  unsigned int D.50723;
  int D.50724;
  struct MonoInst * D.50725;
  guint16 iftmp.478;
  int D.50730;
  int D.50731;
  int D.50735;
  struct MonoInst * D.50736;
  int D.50737;
  int D.50738;
  int D.50743;
  struct MonoInst * D.50744;
  int D.50745;
  int D.50746;
  int klass.479;
  int D.50751;
  struct MonoInst * D.50752;
  int D.50753;
  int D.50754;

  if (klass_inst != 0B) goto <D.50704>; else goto <D.50705>;
  <D.50704>:
  {
    struct MonoInst * inst;

    D.50706 = cfg->mempool;
    inst = mono_mempool_alloc (D.50706, 56);
    inst->data.op[1].const_val = 0;
    D.50707 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50707;
    inst->prev = 0B;
    D.50708 = inst->prev;
    inst->next = D.50708;
    inst->opcode = 322;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50709 = inst->sreg3;
    inst->sreg2 = D.50709;
    D.50710 = inst->sreg2;
    inst->sreg1 = D.50710;
    D.50711 = cfg->ip;
    inst->cil_code = D.50711;
    inst->dreg = -1;
    inst->sreg1 = klass_reg;
    D.50712 = klass_inst->dreg;
    inst->sreg2 = D.50712;
    D.50713 = cfg->cbb;
    D.50714 = D.50713->last_ins;
    if (D.50714 != 0B) goto <D.50715>; else goto <D.50716>;
    <D.50715>:
    D.50713 = cfg->cbb;
    D.50714 = D.50713->last_ins;
    D.50714->next = inst;
    D.50713 = cfg->cbb;
    D.50714 = D.50713->last_ins;
    inst->prev = D.50714;
    D.50713 = cfg->cbb;
    D.50713->last_ins = inst;
    goto <D.50717>;
    <D.50716>:
    D.50713 = cfg->cbb;
    D.50713 = cfg->cbb;
    D.50713->last_ins = inst;
    D.50714 = D.50713->last_ins;
    D.50713->code = D.50714;
    <D.50717>:
  }
  goto <D.50718>;
  <D.50705>:
  D.50719 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.50720 = D.50719 & 64;
  if (D.50720 != 0) goto <D.50721>; else goto <D.50722>;
  <D.50721>:
  {
    int const_reg;

    D.50723 = alloc_preg (cfg);
    const_reg = (int) D.50723;
    {
      struct MonoInst * inst;

      D.50706 = cfg->mempool;
      inst = mono_mempool_alloc (D.50706, 56);
      inst->data.op[1].const_val = 0;
      D.50724 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50724;
      inst->prev = 0B;
      D.50725 = inst->prev;
      inst->next = D.50725;
      D.50719 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.50720 = D.50719 & 64;
      if (D.50720 != 0) goto <D.50727>; else goto <D.50728>;
      <D.50727>:
      iftmp.478 = 732;
      goto <D.50729>;
      <D.50728>:
      iftmp.478 = 362;
      <D.50729>:
      inst->opcode = iftmp.478;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50730 = inst->sreg3;
      inst->sreg2 = D.50730;
      D.50731 = inst->sreg2;
      inst->sreg1 = D.50731;
      D.50711 = cfg->ip;
      inst->cil_code = D.50711;
      inst->dreg = const_reg;
      inst->data.op[0].p = klass;
      inst->data.op[1].const_val = 11;
      D.50713 = cfg->cbb;
      D.50714 = D.50713->last_ins;
      if (D.50714 != 0B) goto <D.50732>; else goto <D.50733>;
      <D.50732>:
      D.50713 = cfg->cbb;
      D.50714 = D.50713->last_ins;
      D.50714->next = inst;
      D.50713 = cfg->cbb;
      D.50714 = D.50713->last_ins;
      inst->prev = D.50714;
      D.50713 = cfg->cbb;
      D.50713->last_ins = inst;
      goto <D.50734>;
      <D.50733>:
      D.50713 = cfg->cbb;
      D.50713 = cfg->cbb;
      D.50713->last_ins = inst;
      D.50714 = D.50713->last_ins;
      D.50713->code = D.50714;
      <D.50734>:
    }
    {
      struct MonoInst * inst;

      D.50706 = cfg->mempool;
      inst = mono_mempool_alloc (D.50706, 56);
      inst->data.op[1].const_val = 0;
      D.50735 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50735;
      inst->prev = 0B;
      D.50736 = inst->prev;
      inst->next = D.50736;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50737 = inst->sreg3;
      inst->sreg2 = D.50737;
      D.50738 = inst->sreg2;
      inst->sreg1 = D.50738;
      D.50711 = cfg->ip;
      inst->cil_code = D.50711;
      inst->dreg = -1;
      inst->sreg1 = klass_reg;
      inst->sreg2 = const_reg;
      D.50713 = cfg->cbb;
      D.50714 = D.50713->last_ins;
      if (D.50714 != 0B) goto <D.50739>; else goto <D.50740>;
      <D.50739>:
      D.50713 = cfg->cbb;
      D.50714 = D.50713->last_ins;
      D.50714->next = inst;
      D.50713 = cfg->cbb;
      D.50714 = D.50713->last_ins;
      inst->prev = D.50714;
      D.50713 = cfg->cbb;
      D.50713->last_ins = inst;
      goto <D.50741>;
      <D.50740>:
      D.50713 = cfg->cbb;
      D.50713 = cfg->cbb;
      D.50713->last_ins = inst;
      D.50714 = D.50713->last_ins;
      D.50713->code = D.50714;
      <D.50741>:
    }
  }
  goto <D.50742>;
  <D.50722>:
  {
    struct MonoInst * inst;

    D.50706 = cfg->mempool;
    inst = mono_mempool_alloc (D.50706, 56);
    inst->data.op[1].const_val = 0;
    D.50743 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50743;
    inst->prev = 0B;
    D.50744 = inst->prev;
    inst->next = D.50744;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50745 = inst->sreg3;
    inst->sreg2 = D.50745;
    D.50746 = inst->sreg2;
    inst->sreg1 = D.50746;
    D.50711 = cfg->ip;
    inst->cil_code = D.50711;
    inst->dreg = -1;
    inst->sreg1 = klass_reg;
    klass.479 = (int) klass;
    inst->data.op[1].const_val = klass.479;
    D.50713 = cfg->cbb;
    D.50714 = D.50713->last_ins;
    if (D.50714 != 0B) goto <D.50748>; else goto <D.50749>;
    <D.50748>:
    D.50713 = cfg->cbb;
    D.50714 = D.50713->last_ins;
    D.50714->next = inst;
    D.50713 = cfg->cbb;
    D.50714 = D.50713->last_ins;
    inst->prev = D.50714;
    D.50713 = cfg->cbb;
    D.50713->last_ins = inst;
    goto <D.50750>;
    <D.50749>:
    D.50713 = cfg->cbb;
    D.50713 = cfg->cbb;
    D.50713->last_ins = inst;
    D.50714 = D.50713->last_ins;
    D.50713->code = D.50714;
    <D.50750>:
  }
  <D.50742>:
  <D.50718>:
  {
    struct MonoInst * inst;

    D.50706 = cfg->mempool;
    inst = mono_mempool_alloc (D.50706, 56);
    inst->data.op[1].const_val = 0;
    D.50751 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50751;
    inst->prev = 0B;
    D.50752 = inst->prev;
    inst->next = D.50752;
    inst->opcode = 456;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50753 = inst->sreg3;
    inst->sreg2 = D.50753;
    D.50754 = inst->sreg2;
    inst->sreg1 = D.50754;
    D.50711 = cfg->ip;
    inst->cil_code = D.50711;
    inst->data.op[1].p = "InvalidCastException";
    D.50713 = cfg->cbb;
    D.50714 = D.50713->last_ins;
    if (D.50714 != 0B) goto <D.50755>; else goto <D.50756>;
    <D.50755>:
    D.50713 = cfg->cbb;
    D.50714 = D.50713->last_ins;
    D.50714->next = inst;
    D.50713 = cfg->cbb;
    D.50714 = D.50713->last_ins;
    inst->prev = D.50714;
    D.50713 = cfg->cbb;
    D.50713->last_ins = inst;
    goto <D.50757>;
    <D.50756>:
    D.50713 = cfg->cbb;
    D.50713 = cfg->cbb;
    D.50713->last_ins = inst;
    D.50714 = D.50713->last_ins;
    D.50713->code = D.50714;
    <D.50757>:
  }
}


handle_stack_args (struct MonoCompile * cfg, struct MonoInst * * sp, int count)
{
  unsigned int D.50760;
  int D.50763;
  short unsigned int D.50764;
  short unsigned int D.50767;
  struct MonoBasicBlock * * D.50768;
  unsigned int i.480;
  unsigned int D.50770;
  struct MonoBasicBlock * * D.50771;
  unsigned int D.50772;
  unsigned int D.50773;
  struct MonoInst * * D.50776;
  short int D.50779;
  int D.50780;
  struct MonoMemPool * D.50783;
  unsigned int count.481;
  unsigned int D.50785;
  void * D.50786;
  struct MonoMethod * D.50787;
  struct MonoInst * * D.50790;
  struct MonoInst * * D.50791;
  struct MonoInst * * D.50792;
  struct MonoInst * D.50793;
  struct MonoType * D.50794;
  struct MonoInst * D.50795;
  struct MonoInst * D.50797;
  short unsigned int D.50800;
  int D.50805;
  struct MonoInst * D.50806;
  int D.50807;
  int D.50808;
  const unsigned char * D.50809;
  struct MonoInst * * D.50810;
  struct MonoInst * * D.50811;
  struct MonoInst * D.50812;
  int D.50813;
  unsigned int D.50814;
  unsigned int D.50815;
  struct MonoInst * * D.50816;
  struct MonoInst * D.50817;
  struct MonoType * D.50818;
  unsigned int D.50819;
  short unsigned int D.50820;
  struct MonoClass * D.50821;
  int D.50822;
  int D.50823;
  short unsigned int D.50824;
  struct MonoClass * D.50827;
  struct MonoBasicBlock * D.50828;
  struct MonoInst * D.50829;
  const unsigned char * D.50833;
  unsigned int bindex.482;
  unsigned int D.50837;
  struct MonoBasicBlock * * D.50838;
  struct MonoInst * * D.50843;
  struct MonoInst * D.50844;
  int D.50845;
  unsigned int D.50846;
  unsigned int D.50847;
  struct MonoInst * * D.50848;
  struct MonoInst * D.50849;
  struct MonoType * D.50850;
  unsigned int D.50851;
  short unsigned int D.50852;
  struct MonoClass * D.50853;
  int D.50854;
  struct MonoClass * D.50857;
  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.50758>; else goto <D.50759>;
  <D.50758>:
  return;
  <D.50759>:
  D.50760 = cfg->verbose_level;
  if (D.50760 > 3) goto <D.50761>; else goto <D.50762>;
  <D.50761>:
  D.50763 = bb->block_num;
  printf ("%d item(s) on exit from B%d\n", count, D.50763);
  <D.50762>:
  D.50764 = bb->out_scount;
  if (D.50764 == 0) goto <D.50765>; else goto <D.50766>;
  <D.50765>:
  D.50767 = (short unsigned int) count;
  bb->out_scount = D.50767;
  found = 0;
  i = 0;
  goto <D.27517>;
  <D.27516>:
  D.50768 = bb->out_bb;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50771 = D.50768 + D.50770;
  outb = *D.50771;
  D.50772 = outb->flags;
  D.50773 = D.50772 & 16;
  if (D.50773 != 0) goto <D.50774>; else goto <D.50775>;
  <D.50774>:
  // predicted unlikely by continue predictor.
  goto <D.27514>;
  <D.50775>:
  D.50776 = outb->in_stack;
  if (D.50776 != 0B) goto <D.50777>; else goto <D.50778>;
  <D.50777>:
  found = 1;
  D.50776 = outb->in_stack;
  bb->out_stack = D.50776;
  goto <D.27515>;
  <D.50778>:
  <D.27514>:
  i = i + 1;
  <D.27517>:
  D.50779 = bb->out_count;
  D.50780 = (int) D.50779;
  if (D.50780 > i) goto <D.27516>; else goto <D.27515>;
  <D.27515>:
  if (found == 0) goto <D.50781>; else goto <D.50782>;
  <D.50781>:
  D.50783 = cfg->mempool;
  count.481 = (unsigned int) count;
  D.50785 = count.481 * 4;
  D.50786 = mono_mempool_alloc (D.50783, D.50785);
  bb->out_stack = D.50786;
  i = 0;
  goto <D.27519>;
  <D.27518>:
  D.50787 = cfg->inlined_method;
  if (D.50787 != 0B) goto <D.50788>; else goto <D.50789>;
  <D.50788>:
  D.50790 = bb->out_stack;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50791 = D.50790 + D.50770;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50792 = sp + D.50770;
  D.50793 = *D.50792;
  D.50794 = type_from_stack_type (D.50793);
  D.50795 = mono_compile_create_var (cfg, D.50794, 329);
  *D.50791 = D.50795;
  goto <D.50796>;
  <D.50789>:
  D.50790 = bb->out_stack;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50791 = D.50790 + D.50770;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50792 = sp + D.50770;
  D.50793 = *D.50792;
  D.50797 = mono_compile_get_interface_var (cfg, i, D.50793);
  *D.50791 = D.50797;
  <D.50796>:
  i = i + 1;
  <D.27519>:
  if (i < count) goto <D.27518>; else goto <D.27520>;
  <D.27520>:
  <D.50782>:
  <D.50766>:
  i = 0;
  goto <D.27523>;
  <D.27522>:
  D.50768 = bb->out_bb;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50771 = D.50768 + D.50770;
  outb = *D.50771;
  D.50772 = outb->flags;
  D.50773 = D.50772 & 16;
  if (D.50773 != 0) goto <D.50798>; else goto <D.50799>;
  <D.50798>:
  // predicted unlikely by continue predictor.
  goto <D.27521>;
  <D.50799>:
  D.50800 = outb->in_scount;
  if (D.50800 != 0) goto <D.50801>; else goto <D.50802>;
  <D.50801>:
  D.50800 = outb->in_scount;
  D.50764 = bb->out_scount;
  if (D.50800 != D.50764) goto <D.50803>; else goto <D.50804>;
  <D.50803>:
  cfg->unverifiable = 1;
  return;
  <D.50804>:
  // predicted unlikely by continue predictor.
  goto <D.27521>;
  <D.50802>:
  D.50767 = (short unsigned int) count;
  outb->in_scount = D.50767;
  D.50790 = bb->out_stack;
  outb->in_stack = D.50790;
  <D.27521>:
  i = i + 1;
  <D.27523>:
  D.50779 = bb->out_count;
  D.50780 = (int) D.50779;
  if (D.50780 > i) goto <D.27522>; else goto <D.27524>;
  <D.27524>:
  locals = bb->out_stack;
  cfg->cbb = bb;
  i = 0;
  goto <D.27526>;
  <D.27525>:
  D.50783 = cfg->mempool;
  inst = mono_mempool_alloc (D.50783, 56);
  inst->data.op[1].const_val = 0;
  D.50805 = inst->data.op[1].const_val;
  inst->data.op[0].const_val = D.50805;
  inst->prev = 0B;
  D.50806 = inst->prev;
  inst->next = D.50806;
  inst->opcode = 424;
  inst->flags = 0;
  inst->type = 0;
  inst->dreg = -1;
  inst->sreg3 = -1;
  D.50807 = inst->sreg3;
  inst->sreg2 = D.50807;
  D.50808 = inst->sreg2;
  inst->sreg1 = D.50808;
  D.50809 = cfg->ip;
  inst->cil_code = D.50809;
  D.50810 = cfg->varinfo;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50811 = locals + D.50770;
  D.50812 = *D.50811;
  D.50813 = D.50812->data.op[0].const_val;
  D.50814 = (unsigned int) D.50813;
  D.50815 = D.50814 * 4;
  D.50816 = D.50810 + D.50815;
  D.50817 = *D.50816;
  D.50818 = D.50817->data.op[1].vtype;
  D.50819 = mono_type_to_regmove (cfg, D.50818);
  D.50820 = (short unsigned int) D.50819;
  inst->opcode = D.50820;
  D.50810 = cfg->varinfo;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50811 = locals + D.50770;
  D.50812 = *D.50811;
  D.50813 = D.50812->data.op[0].const_val;
  D.50814 = (unsigned int) D.50813;
  D.50815 = D.50814 * 4;
  D.50816 = D.50810 + D.50815;
  D.50817 = *D.50816;
  D.50821 = D.50817->klass;
  inst->klass = D.50821;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50792 = sp + D.50770;
  D.50793 = *D.50792;
  D.50822 = D.50793->dreg;
  inst->sreg1 = D.50822;
  D.50810 = cfg->varinfo;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50811 = locals + D.50770;
  D.50812 = *D.50811;
  D.50813 = D.50812->data.op[0].const_val;
  D.50814 = (unsigned int) D.50813;
  D.50815 = D.50814 * 4;
  D.50816 = D.50810 + D.50815;
  D.50817 = *D.50816;
  D.50823 = D.50817->dreg;
  inst->dreg = D.50823;
  D.50824 = inst->opcode;
  if (D.50824 == 427) goto <D.50825>; else goto <D.50826>;
  <D.50825>:
  D.50810 = cfg->varinfo;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50811 = locals + D.50770;
  D.50812 = *D.50811;
  D.50813 = D.50812->data.op[0].const_val;
  D.50814 = (unsigned int) D.50813;
  D.50815 = D.50814 * 4;
  D.50816 = D.50810 + D.50815;
  D.50817 = *D.50816;
  D.50818 = D.50817->data.op[1].vtype;
  D.50827 = mono_class_from_mono_type (D.50818);
  inst->klass = D.50827;
  <D.50826>:
  D.50828 = cfg->cbb;
  D.50829 = D.50828->last_ins;
  if (D.50829 != 0B) goto <D.50830>; else goto <D.50831>;
  <D.50830>:
  D.50828 = cfg->cbb;
  D.50829 = D.50828->last_ins;
  D.50829->next = inst;
  D.50828 = cfg->cbb;
  D.50829 = D.50828->last_ins;
  inst->prev = D.50829;
  D.50828 = cfg->cbb;
  D.50828->last_ins = inst;
  goto <D.50832>;
  <D.50831>:
  D.50828 = cfg->cbb;
  D.50828 = cfg->cbb;
  D.50828->last_ins = inst;
  D.50829 = D.50828->last_ins;
  D.50828->code = D.50829;
  <D.50832>:
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50792 = sp + D.50770;
  D.50793 = *D.50792;
  D.50833 = D.50793->cil_code;
  inst->cil_code = D.50833;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50792 = sp + D.50770;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50811 = locals + D.50770;
  D.50812 = *D.50811;
  *D.50792 = D.50812;
  D.50760 = cfg->verbose_level;
  if (D.50760 > 3) goto <D.50834>; else goto <D.50835>;
  <D.50834>:
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50811 = locals + D.50770;
  D.50812 = *D.50811;
  D.50813 = D.50812->data.op[0].const_val;
  printf ("storing %d to temp %d\n", i, D.50813);
  <D.50835>:
  i = i + 1;
  <D.27526>:
  if (i < count) goto <D.27525>; else goto <D.27527>;
  <D.27527>:
  found = 1;
  bindex = 0;
  goto <D.27535>;
  <D.27534>:
  found = 0;
  goto <D.27528>;
  <D.27533>:
  D.50768 = bb->out_bb;
  bindex.482 = (unsigned int) bindex;
  D.50837 = bindex.482 * 4;
  D.50838 = D.50768 + D.50837;
  outb = *D.50838;
  D.50772 = outb->flags;
  D.50773 = D.50772 & 16;
  if (D.50773 != 0) goto <D.50839>; else goto <D.50840>;
  <D.50839>:
  bindex = bindex + 1;
  // predicted unlikely by continue predictor.
  goto <D.27528>;
  <D.50840>:
  D.50776 = outb->in_stack;
  if (D.50776 != locals) goto <D.50841>; else goto <D.50842>;
  <D.50841>:
  i = 0;
  goto <D.27530>;
  <D.27529>:
  D.50783 = cfg->mempool;
  inst = mono_mempool_alloc (D.50783, 56);
  inst->data.op[1].const_val = 0;
  D.50805 = inst->data.op[1].const_val;
  inst->data.op[0].const_val = D.50805;
  inst->prev = 0B;
  D.50806 = inst->prev;
  inst->next = D.50806;
  inst->opcode = 424;
  inst->flags = 0;
  inst->type = 0;
  inst->dreg = -1;
  inst->sreg3 = -1;
  D.50807 = inst->sreg3;
  inst->sreg2 = D.50807;
  D.50808 = inst->sreg2;
  inst->sreg1 = D.50808;
  D.50809 = cfg->ip;
  inst->cil_code = D.50809;
  D.50810 = cfg->varinfo;
  D.50776 = outb->in_stack;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50843 = D.50776 + D.50770;
  D.50844 = *D.50843;
  D.50845 = D.50844->data.op[0].const_val;
  D.50846 = (unsigned int) D.50845;
  D.50847 = D.50846 * 4;
  D.50848 = D.50810 + D.50847;
  D.50849 = *D.50848;
  D.50850 = D.50849->data.op[1].vtype;
  D.50851 = mono_type_to_regmove (cfg, D.50850);
  D.50852 = (short unsigned int) D.50851;
  inst->opcode = D.50852;
  D.50810 = cfg->varinfo;
  D.50776 = outb->in_stack;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50843 = D.50776 + D.50770;
  D.50844 = *D.50843;
  D.50845 = D.50844->data.op[0].const_val;
  D.50846 = (unsigned int) D.50845;
  D.50847 = D.50846 * 4;
  D.50848 = D.50810 + D.50847;
  D.50849 = *D.50848;
  D.50853 = D.50849->klass;
  inst->klass = D.50853;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50792 = sp + D.50770;
  D.50793 = *D.50792;
  D.50822 = D.50793->dreg;
  inst->sreg1 = D.50822;
  D.50810 = cfg->varinfo;
  D.50776 = outb->in_stack;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50843 = D.50776 + D.50770;
  D.50844 = *D.50843;
  D.50845 = D.50844->data.op[0].const_val;
  D.50846 = (unsigned int) D.50845;
  D.50847 = D.50846 * 4;
  D.50848 = D.50810 + D.50847;
  D.50849 = *D.50848;
  D.50854 = D.50849->dreg;
  inst->dreg = D.50854;
  D.50824 = inst->opcode;
  if (D.50824 == 427) goto <D.50855>; else goto <D.50856>;
  <D.50855>:
  D.50810 = cfg->varinfo;
  D.50776 = outb->in_stack;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50843 = D.50776 + D.50770;
  D.50844 = *D.50843;
  D.50845 = D.50844->data.op[0].const_val;
  D.50846 = (unsigned int) D.50845;
  D.50847 = D.50846 * 4;
  D.50848 = D.50810 + D.50847;
  D.50849 = *D.50848;
  D.50850 = D.50849->data.op[1].vtype;
  D.50857 = mono_class_from_mono_type (D.50850);
  inst->klass = D.50857;
  <D.50856>:
  D.50828 = cfg->cbb;
  D.50829 = D.50828->last_ins;
  if (D.50829 != 0B) goto <D.50858>; else goto <D.50859>;
  <D.50858>:
  D.50828 = cfg->cbb;
  D.50829 = D.50828->last_ins;
  D.50829->next = inst;
  D.50828 = cfg->cbb;
  D.50829 = D.50828->last_ins;
  inst->prev = D.50829;
  D.50828 = cfg->cbb;
  D.50828->last_ins = inst;
  goto <D.50860>;
  <D.50859>:
  D.50828 = cfg->cbb;
  D.50828 = cfg->cbb;
  D.50828->last_ins = inst;
  D.50829 = D.50828->last_ins;
  D.50828->code = D.50829;
  <D.50860>:
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50792 = sp + D.50770;
  D.50793 = *D.50792;
  D.50833 = D.50793->cil_code;
  inst->cil_code = D.50833;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50792 = sp + D.50770;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50811 = locals + D.50770;
  D.50812 = *D.50811;
  *D.50792 = D.50812;
  D.50760 = cfg->verbose_level;
  if (D.50760 > 3) goto <D.50861>; else goto <D.50862>;
  <D.50861>:
  D.50776 = outb->in_stack;
  i.480 = (unsigned int) i;
  D.50770 = i.480 * 4;
  D.50843 = D.50776 + D.50770;
  D.50844 = *D.50843;
  D.50845 = D.50844->data.op[0].const_val;
  printf ("storing %d to temp %d\n", i, D.50845);
  <D.50862>:
  i = i + 1;
  <D.27530>:
  if (i < count) goto <D.27529>; else goto <D.27531>;
  <D.27531>:
  locals = outb->in_stack;
  found = 1;
  goto <D.27532>;
  <D.50842>:
  bindex = bindex + 1;
  <D.27528>:
  D.50779 = bb->out_count;
  D.50780 = (int) D.50779;
  if (D.50780 > bindex) goto <D.27533>; else goto <D.27532>;
  <D.27532>:
  <D.27535>:
  if (found != 0) goto <D.27534>; else goto <D.27536>;
  <D.27536>:
}


mono_compile_get_interface_var (struct MonoCompile * cfg, int slot, struct MonoInst * ins)
{
  struct MonoMethodHeader * D.50864;
  <unnamed-unsigned:15> D.50865;
  int D.50866;
  struct MonoInst * D.50869;
  struct MonoType * D.50870;
  unsigned char D.50871;
  int D.50872;
  int D.50873;
  int D.50874;
  guint16 * D.50875;
  unsigned int pos.483;
  unsigned int D.50877;
  guint16 * D.50878;
  short unsigned int D.50879;
  struct MonoInst * * D.50882;
  unsigned int vnum.484;
  unsigned int D.50884;
  struct MonoInst * * D.50885;
  struct MonoType * D.50886;
  int D.50887;
  short unsigned int D.50888;
  struct MonoType * D.50889;
  struct MonoInst * res;
  int pos;
  int vnum;

  D.50864 = cfg->header;
  D.50865 = D.50864->max_stack;
  D.50866 = (int) D.50865;
  if (D.50866 <= slot) goto <D.50867>; else goto <D.50868>;
  <D.50867>:
  D.50870 = type_from_stack_type (ins);
  D.50869 = mono_compile_create_var (cfg, D.50870, 329);
  return D.50869;
  <D.50868>:
  D.50871 = ins->type;
  D.50872 = (int) D.50871;
  D.50873 = D.50872 + -1;
  D.50874 = slot * 8;
  pos = D.50873 + D.50874;
  D.50871 = ins->type;
  D.50872 = (int) D.50871;
  switch (D.50872) <default: <D.27494>, case 1: <D.27487>, case 2: <D.27488>, case 3: <D.27490>, case 4: <D.27489>, case 5: <D.27491>, case 6: <D.27492>>
  <D.27487>:
  <D.27488>:
  <D.27489>:
  <D.27490>:
  <D.27491>:
  <D.27492>:
  D.50875 = cfg->intvars;
  pos.483 = (unsigned int) pos;
  D.50877 = pos.483 * 2;
  D.50878 = D.50875 + D.50877;
  D.50879 = *D.50878;
  vnum = (int) D.50879;
  if (vnum != 0) goto <D.50880>; else goto <D.50881>;
  <D.50880>:
  D.50882 = cfg->varinfo;
  vnum.484 = (unsigned int) vnum;
  D.50884 = vnum.484 * 4;
  D.50885 = D.50882 + D.50884;
  D.50869 = *D.50885;
  return D.50869;
  <D.50881>:
  D.50886 = type_from_stack_type (ins);
  res = mono_compile_create_var (cfg, D.50886, 329);
  D.50875 = cfg->intvars;
  pos.483 = (unsigned int) pos;
  D.50877 = pos.483 * 2;
  D.50878 = D.50875 + D.50877;
  D.50887 = res->data.op[0].const_val;
  D.50888 = (short unsigned int) D.50887;
  *D.50878 = D.50888;
  goto <D.27493>;
  <D.27494>:
  D.50889 = type_from_stack_type (ins);
  res = mono_compile_create_var (cfg, D.50889, 329);
  <D.27493>:
  D.50869 = res;
  return D.50869;
}


handle_box (struct MonoCompile * cfg, struct MonoInst * val, struct MonoClass * klass, int context_used, struct MonoBasicBlock * * out_cbb)
{
  struct MonoBasicBlock * D.50891;
  int D.50892;
  struct MonoMethod * D.50897;
  struct MonoInst * D.50898;
  struct MonoMethodSignature * D.50899;
  int pass_mrgctx.485;
  _Bool D.50901;
  long int D.50902;
  long int D.50903;
  int pass_vtable.486;
  struct MonoDomain * D.50909;
  struct MonoClass * D.50910;
  _Bool D.50911;
  long int D.50912;
  long int D.50913;
  struct MonoMemPool * D.50916;
  int D.50917;
  struct MonoInst * D.50918;
  guint16 iftmp.487;
  unsigned char D.50920;
  unsigned char D.50921;
  int D.50925;
  int D.50926;
  const unsigned char * D.50927;
  void * iftmp.488;
  unsigned int D.50932;
  int D.50933;
  struct MonoInst * D.50934;
  int D.50938;
  unsigned int D.50941;
  unsigned int D.50942;
  unsigned int D.50943;
  unsigned int D.50944;
  int D.50945;
  unsigned int D.50946;
  unsigned int D.50947;
  int D.50948;
  unsigned int D.50949;
  unsigned int D.50950;
  int D.50951;
  int D.50952;
  struct MonoInst * D.50953;
  int D.50954;
  int D.50955;
  int D.50956;
  int D.50960;
  struct MonoInst * D.50961;
  int D.50962;
  int D.50963;
  unsigned int D.50966;
  unsigned int D.50967;
  int D.50968;
  unsigned char * D.50972;
  struct MonoBasicBlock * * D.50975;
  int D.50976;
  unsigned char * D.50977;
  int D.50978;
  int D.50979;
  unsigned int D.50980;
  unsigned int D.50981;
  struct MonoBasicBlock * * D.50982;
  unsigned int D.50983;
  short unsigned int D.50988;
  short unsigned int D.50989;
  _Bool D.50990;
  short unsigned int D.50991;
  _Bool D.50992;
  _Bool D.50993;
  short unsigned int D.50995;
  short unsigned int D.50996;
  struct MonoBasicBlock * * D.50997;
  struct MonoBasicBlock * * D.50998;
  struct MonoBasicBlock * D.50999;
  short unsigned int D.51004;
  _Bool D.51005;
  _Bool D.51006;
  _Bool D.51007;
  short unsigned int D.51009;
  short unsigned int D.51010;
  _Bool D.51011;
  short unsigned int D.51012;
  _Bool D.51013;
  _Bool D.51014;
  void * D.51017;
  struct MonoBasicBlock * * D.51018;
  struct MonoBasicBlock * * D.51019;
  unsigned char D.51023;
  unsigned int D.51026;
  unsigned int D.51027;
  int D.51028;
  short unsigned int D.51035;
  short unsigned int D.51036;
  _Bool D.51037;
  short unsigned int D.51038;
  _Bool D.51039;
  _Bool D.51040;
  short unsigned int D.51046;
  _Bool D.51047;
  _Bool D.51048;
  _Bool D.51049;
  short unsigned int D.51051;
  short unsigned int D.51052;
  _Bool D.51053;
  short unsigned int D.51054;
  _Bool D.51055;
  _Bool D.51056;
  int D.51059;
  struct MonoInst * D.51060;
  int D.51061;
  int D.51062;
  int D.51066;
  struct MonoInst * D.51067;
  int D.51068;
  int D.51069;
  unsigned int D.51072;
  unsigned int D.51073;
  int D.51074;
  unsigned char * D.51078;
  int D.51081;
  int D.51082;
  unsigned int D.51083;
  unsigned int D.51084;
  struct MonoBasicBlock * * D.51085;
  short unsigned int D.51090;
  short unsigned int D.51091;
  _Bool D.51092;
  short unsigned int D.51093;
  _Bool D.51094;
  _Bool D.51095;
  short unsigned int D.51101;
  _Bool D.51102;
  _Bool D.51103;
  _Bool D.51104;
  short unsigned int D.51106;
  short unsigned int D.51107;
  _Bool D.51108;
  short unsigned int D.51109;
  _Bool D.51110;
  _Bool D.51111;
  void * D.51114;
  struct MonoBasicBlock * * D.51115;
  struct MonoBasicBlock * * D.51116;
  unsigned int D.51122;
  unsigned int D.51123;
  int D.51124;
  short unsigned int D.51131;
  short unsigned int D.51132;
  _Bool D.51133;
  short unsigned int D.51134;
  _Bool D.51135;
  _Bool D.51136;
  short unsigned int D.51142;
  _Bool D.51143;
  _Bool D.51144;
  _Bool D.51145;
  short unsigned int D.51147;
  short unsigned int D.51148;
  _Bool D.51149;
  short unsigned int D.51150;
  _Bool D.51151;
  _Bool D.51152;
  int D.51157;
  struct MonoInst * D.51158;
  struct MonoType * D.51159;
  unsigned int D.51160;
  short unsigned int D.51161;
  int D.51162;
  int D.51163;
  struct MonoInst * val.489;
  int D.51165;
  int D.51166;
  struct MonoClass * D.51167;
  int D.51171;
  struct MonoInst * D.51172;
  int D.51173;
  int D.51174;
  int D.51178;
  struct MonoInst * D.51179;
  int D.51180;
  int D.51181;
  unsigned int D.51184;
  unsigned int D.51185;
  int D.51186;
  unsigned char * D.51190;
  int D.51193;
  int D.51194;
  unsigned int D.51195;
  unsigned int D.51196;
  struct MonoBasicBlock * * D.51197;
  short unsigned int D.51202;
  short unsigned int D.51203;
  _Bool D.51204;
  short unsigned int D.51205;
  _Bool D.51206;
  _Bool D.51207;
  short unsigned int D.51213;
  _Bool D.51214;
  _Bool D.51215;
  _Bool D.51216;
  short unsigned int D.51218;
  short unsigned int D.51219;
  _Bool D.51220;
  short unsigned int D.51221;
  _Bool D.51222;
  _Bool D.51223;
  void * D.51226;
  struct MonoBasicBlock * * D.51227;
  struct MonoBasicBlock * * D.51228;
  unsigned int D.51234;
  unsigned int D.51235;
  int D.51236;
  short unsigned int D.51243;
  short unsigned int D.51244;
  _Bool D.51245;
  short unsigned int D.51246;
  _Bool D.51247;
  _Bool D.51248;
  short unsigned int D.51254;
  _Bool D.51255;
  _Bool D.51256;
  _Bool D.51257;
  short unsigned int D.51259;
  short unsigned int D.51260;
  _Bool D.51261;
  short unsigned int D.51262;
  _Bool D.51263;
  _Bool D.51264;
  unsigned char * D.51267;
  int D.51270;
  int D.51271;
  unsigned int D.51272;
  unsigned int D.51273;
  struct MonoBasicBlock * * D.51274;
  short unsigned int D.51279;
  short unsigned int D.51280;
  _Bool D.51281;
  short unsigned int D.51282;
  _Bool D.51283;
  _Bool D.51284;
  short unsigned int D.51290;
  _Bool D.51291;
  _Bool D.51292;
  _Bool D.51293;
  short unsigned int D.51295;
  short unsigned int D.51296;
  _Bool D.51297;
  short unsigned int D.51298;
  _Bool D.51299;
  _Bool D.51300;
  unsigned int D.51302;
  struct MonoInst * iftmp.490;
  unsigned int D.51304;
  unsigned int D.51305;
  struct MonoInst * * D.51308;
  unsigned int D.51309;
  unsigned int D.51310;
  struct MonoInst * * D.51311;
  int D.51315;
  struct MonoInst * D.51316;
  int D.51317;
  int D.51318;
  unsigned char D.51319;
  unsigned char D.51320;
  struct MonoClass * D.51321;
  unsigned int D.51322;
  int D.51323;
  int D.51324;
  _Bool D.51325;
  long int D.51326;
  long int D.51327;
  struct MonoType * D.51330;
  int D.51331;
  _Bool iftmp.491;
  int D.51335;
  unsigned char D.51338;
  _Bool D.51339;
  _Bool D.51340;
  _Bool D.51341;
  int D.51342;
  unsigned char D.51344;
  struct MonoInst * iftmp.492;
  int D.51348;
  int D.51349;
  unsigned int D.51350;
  sizetype D.51353;
  sizetype D.51354;
  sizetype D.51355;
  struct MonoInst * * D.51356;
  struct MonoInst * iftmp.493;
  int D.51359;
  unsigned int D.51360;
  sizetype D.51363;
  sizetype D.51364;
  struct MonoInst * * D.51365;
  _Bool D.51367;
  long int D.51368;
  long int D.51369;
  _Bool D.51372;
  long int D.51373;
  long int D.51374;
  unsigned char D.51377;
  unsigned char D.51378;
  unsigned char D.51379;
  unsigned char D.51380;
  int D.51384;
  struct MonoInst * D.51385;
  int D.51386;
  int D.51387;
  int D.51388;
  int D.51392;
  struct MonoInst * D.51393;
  int D.51394;
  int D.51395;
  unsigned int D.51398;
  unsigned int D.51399;
  int D.51400;
  unsigned char * D.51404;
  int D.51407;
  int D.51408;
  unsigned int D.51409;
  unsigned int D.51410;
  struct MonoBasicBlock * * D.51411;
  short unsigned int D.51416;
  short unsigned int D.51417;
  _Bool D.51418;
  short unsigned int D.51419;
  _Bool D.51420;
  _Bool D.51421;
  short unsigned int D.51427;
  _Bool D.51428;
  _Bool D.51429;
  _Bool D.51430;
  short unsigned int D.51432;
  short unsigned int D.51433;
  _Bool D.51434;
  short unsigned int D.51435;
  _Bool D.51436;
  _Bool D.51437;
  void * D.51440;
  struct MonoBasicBlock * * D.51441;
  struct MonoBasicBlock * * D.51442;
  unsigned int D.51448;
  unsigned int D.51449;
  int D.51450;
  short unsigned int D.51457;
  short unsigned int D.51458;
  _Bool D.51459;
  short unsigned int D.51460;
  _Bool D.51461;
  _Bool D.51462;
  short unsigned int D.51468;
  _Bool D.51469;
  _Bool D.51470;
  _Bool D.51471;
  short unsigned int D.51473;
  short unsigned int D.51474;
  _Bool D.51475;
  short unsigned int D.51476;
  _Bool D.51477;
  _Bool D.51478;
  unsigned char * D.51481;
  int D.51484;
  int D.51485;
  unsigned int D.51486;
  unsigned int D.51487;
  struct MonoBasicBlock * * D.51488;
  short unsigned int D.51493;
  short unsigned int D.51494;
  _Bool D.51495;
  short unsigned int D.51496;
  _Bool D.51497;
  _Bool D.51498;
  short unsigned int D.51504;
  _Bool D.51505;
  _Bool D.51506;
  _Bool D.51507;
  short unsigned int D.51509;
  short unsigned int D.51510;
  _Bool D.51511;
  short unsigned int D.51512;
  _Bool D.51513;
  _Bool D.51514;
  struct MonoClass * D.51516;
  struct MonoType * D.51517;
  int D.51518;
  int D.51522;
  struct MonoInst * D.51523;
  int D.51524;
  int D.51525;
  unsigned int D.51528;
  unsigned int D.51529;
  int D.51530;
  unsigned char * D.51534;
  int D.51537;
  int D.51538;
  unsigned int D.51539;
  unsigned int D.51540;
  struct MonoBasicBlock * * D.51541;
  short unsigned int D.51546;
  short unsigned int D.51547;
  _Bool D.51548;
  short unsigned int D.51549;
  _Bool D.51550;
  _Bool D.51551;
  short unsigned int D.51557;
  _Bool D.51558;
  _Bool D.51559;
  _Bool D.51560;
  short unsigned int D.51562;
  short unsigned int D.51563;
  _Bool D.51564;
  short unsigned int D.51565;
  _Bool D.51566;
  _Bool D.51567;
  void * D.51570;
  struct MonoBasicBlock * * D.51571;
  struct MonoBasicBlock * * D.51572;
  unsigned int D.51578;
  unsigned int D.51579;
  int D.51580;
  short unsigned int D.51587;
  short unsigned int D.51588;
  _Bool D.51589;
  short unsigned int D.51590;
  _Bool D.51591;
  _Bool D.51592;
  short unsigned int D.51598;
  _Bool D.51599;
  _Bool D.51600;
  _Bool D.51601;
  short unsigned int D.51603;
  short unsigned int D.51604;
  _Bool D.51605;
  short unsigned int D.51606;
  _Bool D.51607;
  _Bool D.51608;
  unsigned char * D.51611;
  int D.51614;
  int D.51615;
  unsigned int D.51616;
  unsigned int D.51617;
  struct MonoBasicBlock * * D.51618;
  short unsigned int D.51623;
  short unsigned int D.51624;
  _Bool D.51625;
  short unsigned int D.51626;
  _Bool D.51627;
  _Bool D.51628;
  short unsigned int D.51634;
  _Bool D.51635;
  _Bool D.51636;
  _Bool D.51637;
  short unsigned int D.51639;
  short unsigned int D.51640;
  _Bool D.51641;
  short unsigned int D.51642;
  _Bool D.51643;
  _Bool D.51644;
  unsigned int D.51648;
  short unsigned int D.51649;
  struct MonoClass * D.51650;
  struct MonoInst * alloc;
  struct MonoInst * ins;

  D.50891 = cfg->cbb;
  *out_cbb = D.50891;
  D.50892 = mono_class_is_nullable (klass);
  if (D.50892 != 0) goto <D.50893>; else goto <D.50894>;
  <D.50893>:
  {
    struct MonoMethod * method;

    method = mono_class_get_method_from_name (klass, "Box", 1);
    if (context_used != 0) goto <D.50895>; else goto <D.50896>;
    <D.50895>:
    {
      struct MonoInst * addr;
      struct MonoInst * rgctx;

      addr = emit_get_rgctx_method (cfg, context_used, method, 6);
      D.50897 = cfg->current_method;
      rgctx = emit_get_rgctx (cfg, D.50897, context_used);
      D.50899 = mono_method_signature (method);
      D.50898 = mono_emit_calli (cfg, D.50899, &val, addr, 0B, rgctx);
      return D.50898;
    }
    <D.50896>:
    {
      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.485 = pass_mrgctx;
          D.50901 = pass_mrgctx.485 != 0;
          D.50902 = (long int) D.50901;
          D.50903 = __builtin_expect (D.50902, 0);
          if (D.50903 != 0) goto <D.50904>; else goto <D.50905>;
          <D.50904>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3830, "!pass_mrgctx");
          <D.50905>:
          pass_vtable.486 = pass_vtable;
          if (pass_vtable.486 != 0) goto <D.50907>; else goto <D.50908>;
          <D.50907>:
          {
            struct MonoVTable * vtable;

            D.50909 = cfg->domain;
            D.50910 = method->klass;
            vtable = mono_class_vtable (D.50909, D.50910);
            D.50911 = vtable == 0B;
            D.50912 = (long int) D.50911;
            D.50913 = __builtin_expect (D.50912, 0);
            if (D.50913 != 0) goto <D.50914>; else goto <D.50915>;
            <D.50914>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3835, "vtable");
            <D.50915>:
            D.50916 = cfg->mempool;
            rgctx_arg = mono_mempool_alloc (D.50916, 56);
            rgctx_arg->data.op[1].const_val = 0;
            D.50917 = rgctx_arg->data.op[1].const_val;
            rgctx_arg->data.op[0].const_val = D.50917;
            rgctx_arg->prev = 0B;
            D.50918 = rgctx_arg->prev;
            rgctx_arg->next = D.50918;
            D.50920 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.50921 = D.50920 & 64;
            if (D.50921 != 0) goto <D.50922>; else goto <D.50923>;
            <D.50922>:
            iftmp.487 = 732;
            goto <D.50924>;
            <D.50923>:
            iftmp.487 = 362;
            <D.50924>:
            rgctx_arg->opcode = iftmp.487;
            rgctx_arg->flags = 0;
            rgctx_arg->type = 0;
            rgctx_arg->dreg = -1;
            rgctx_arg->sreg3 = -1;
            D.50925 = rgctx_arg->sreg3;
            rgctx_arg->sreg2 = D.50925;
            D.50926 = rgctx_arg->sreg2;
            rgctx_arg->sreg1 = D.50926;
            D.50927 = cfg->ip;
            rgctx_arg->cil_code = D.50927;
            D.50920 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.50921 = D.50920 & 64;
            if (D.50921 != 0) goto <D.50929>; else goto <D.50930>;
            <D.50929>:
            iftmp.488 = vtable->klass;
            goto <D.50931>;
            <D.50930>:
            iftmp.488 = vtable;
            <D.50931>:
            rgctx_arg->data.op[0].p = iftmp.488;
            rgctx_arg->data.op[1].src = 14B;
            rgctx_arg->type = 3;
            D.50932 = alloc_dreg (cfg, 3);
            D.50933 = (int) D.50932;
            rgctx_arg->dreg = D.50933;
            D.50891 = cfg->cbb;
            D.50934 = D.50891->last_ins;
            if (D.50934 != 0B) goto <D.50935>; else goto <D.50936>;
            <D.50935>:
            D.50891 = cfg->cbb;
            D.50934 = D.50891->last_ins;
            D.50934->next = rgctx_arg;
            D.50891 = cfg->cbb;
            D.50934 = D.50891->last_ins;
            rgctx_arg->prev = D.50934;
            D.50891 = cfg->cbb;
            D.50891->last_ins = rgctx_arg;
            goto <D.50937>;
            <D.50936>:
            D.50891 = cfg->cbb;
            D.50891 = cfg->cbb;
            D.50891->last_ins = rgctx_arg;
            D.50934 = D.50891->last_ins;
            D.50891->code = D.50934;
            <D.50937>:
          }
          <D.50908>:
          D.50898 = mono_emit_method_call_full (cfg, method, 0B, 0, &val, 0B, 0B, rgctx_arg);
          return D.50898;
        }
      finally
        {
          pass_vtable = {CLOBBER};
          pass_mrgctx = {CLOBBER};
        }
    }
  }
  <D.50894>:
  D.50938 = mini_is_gsharedvt_klass (cfg, klass);
  if (D.50938 != 0) goto <D.50939>; else goto <D.50940>;
  <D.50939>:
  {
    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.50941 = alloc_ireg (cfg);
    dreg = (int) D.50941;
    D.50916 = cfg->mempool;
    is_ref_bb = mono_mempool_alloc0 (D.50916, 172);
    D.50942 = cfg->num_bblocks;
    D.50943 = D.50942;
    D.50944 = D.50943 + 1;
    cfg->num_bblocks = D.50944;
    D.50945 = (int) D.50943;
    is_ref_bb->block_num = D.50945;
    D.50916 = cfg->mempool;
    is_nullable_bb = mono_mempool_alloc0 (D.50916, 172);
    D.50942 = cfg->num_bblocks;
    D.50946 = D.50942;
    D.50947 = D.50946 + 1;
    cfg->num_bblocks = D.50947;
    D.50948 = (int) D.50946;
    is_nullable_bb->block_num = D.50948;
    D.50916 = cfg->mempool;
    end_bb = mono_mempool_alloc0 (D.50916, 172);
    D.50942 = cfg->num_bblocks;
    D.50949 = D.50942;
    D.50950 = D.50949 + 1;
    cfg->num_bblocks = D.50950;
    D.50951 = (int) D.50949;
    end_bb->block_num = D.50951;
    is_ref = emit_get_gsharedvt_info_klass (cfg, klass, 19);
    {
      struct MonoInst * inst;

      D.50916 = cfg->mempool;
      inst = mono_mempool_alloc (D.50916, 56);
      inst->data.op[1].const_val = 0;
      D.50952 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50952;
      inst->prev = 0B;
      D.50953 = inst->prev;
      inst->next = D.50953;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50954 = inst->sreg3;
      inst->sreg2 = D.50954;
      D.50955 = inst->sreg2;
      inst->sreg1 = D.50955;
      D.50927 = cfg->ip;
      inst->cil_code = D.50927;
      inst->dreg = -1;
      D.50956 = is_ref->dreg;
      inst->sreg1 = D.50956;
      inst->data.op[1].const_val = 1;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.50957>; else goto <D.50958>;
      <D.50957>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50934->next = inst;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      inst->prev = D.50934;
      D.50891 = cfg->cbb;
      D.50891->last_ins = inst;
      goto <D.50959>;
      <D.50958>:
      D.50891 = cfg->cbb;
      D.50891 = cfg->cbb;
      D.50891->last_ins = inst;
      D.50934 = D.50891->last_ins;
      D.50891->code = D.50934;
      <D.50959>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.50916 = cfg->mempool;
      ins = mono_mempool_alloc (D.50916, 56);
      ins->data.op[1].const_val = 0;
      D.50960 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.50960;
      ins->prev = 0B;
      D.50961 = ins->prev;
      ins->next = D.50961;
      ins->opcode = 648;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.50962 = ins->sreg3;
      ins->sreg2 = D.50962;
      D.50963 = ins->sreg2;
      ins->sreg1 = D.50963;
      D.50927 = cfg->ip;
      ins->cil_code = D.50927;
      if (0 != 0) goto <D.50964>; else goto <D.50965>;
      <D.50964>:
      D.50916 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.50916, 172);
      D.50942 = cfg->num_bblocks;
      D.50966 = D.50942;
      D.50967 = D.50966 + 1;
      cfg->num_bblocks = D.50967;
      D.50968 = (int) D.50966;
      falsebb->block_num = D.50968;
      ins->data.op[0].target_block = is_ref_bb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, is_ref_bb);
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.50969>; else goto <D.50970>;
      <D.50969>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50934->next = ins;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      ins->prev = D.50934;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      goto <D.50971>;
      <D.50970>:
      D.50891 = cfg->cbb;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      D.50934 = D.50891->last_ins;
      D.50891->code = D.50934;
      <D.50971>:
      D.50972 = falsebb->cil_code;
      if (D.50972 != 0B) goto <D.50973>; else goto <D.50974>;
      <D.50973>:
      D.50975 = cfg->cil_offset_to_bb;
      D.50972 = falsebb->cil_code;
      D.50976 = (int) D.50972;
      D.50977 = cfg->cil_start;
      D.50978 = (int) D.50977;
      D.50979 = D.50976 - D.50978;
      D.50980 = (unsigned int) D.50979;
      D.50981 = D.50980 * 4;
      D.50982 = D.50975 + D.50981;
      *D.50982 = falsebb;
      <D.50974>:
      D.50983 = cfg->real_offset;
      falsebb->real_offset = D.50983;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.50987>; else goto <D.50984>;
      <D.50987>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50988 = D.50934->opcode;
      D.50989 = D.50988 + 64985;
      D.50990 = D.50989 <= 9;
      D.50991 = D.50988 + 64878;
      D.50992 = D.50991 <= 9;
      D.50993 = D.50990 | D.50992;
      if (D.50993 != 0) goto <D.50985>; else goto <D.50994>;
      <D.50994>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 <= 9) goto <D.50985>; else goto <D.50984>;
      <D.50985>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      D.50999 = *D.50998;
      if (D.50999 == 0B) goto <D.51000>; else goto <D.50984>;
      <D.51000>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      *D.50998 = falsebb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      goto <D.50986>;
      <D.50984>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 == 0B) goto <D.51001>; else goto <D.51003>;
      <D.51003>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51004 = D.50934->opcode;
      D.51005 = D.51004 != 442;
      D.51006 = D.51004 != 759;
      D.51007 = D.51005 & D.51006;
      if (D.51007 != 0) goto <D.51008>; else goto <D.51002>;
      <D.51008>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51009 = D.50934->opcode;
      D.51010 = D.51009 + 64985;
      D.51011 = D.51010 > 9;
      D.51012 = D.51009 + 64878;
      D.51013 = D.51012 > 9;
      D.51014 = D.51011 & D.51013;
      if (D.51014 != 0) goto <D.51015>; else goto <D.51002>;
      <D.51015>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 > 9) goto <D.51001>; else goto <D.51002>;
      <D.51001>:
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      <D.51002>:
      <D.50986>:
      D.50891 = cfg->cbb;
      D.50891->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.51016>;
      <D.50965>:
      D.50916 = cfg->mempool;
      D.51017 = mono_mempool_alloc (D.50916, 8);
      ins->data.op[1].many_blocks = D.51017;
      D.51018 = ins->data.op[1].many_blocks;
      *D.51018 = is_ref_bb;
      D.51018 = ins->data.op[1].many_blocks;
      D.51019 = D.51018 + 4;
      *D.51019 = 0B;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, is_ref_bb);
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51020>; else goto <D.51021>;
      <D.51020>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50934->next = ins;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      ins->prev = D.50934;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      goto <D.51022>;
      <D.51021>:
      D.50891 = cfg->cbb;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      D.50934 = D.50891->last_ins;
      D.50891->code = D.50934;
      <D.51022>:
      D.50920 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.51023 = D.50920 & 8;
      if (D.51023 == 0) goto <D.51024>; else goto <D.51025>;
      <D.51024>:
      D.50916 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.50916, 172);
      D.50942 = cfg->num_bblocks;
      D.51026 = D.50942;
      D.51027 = D.51026 + 1;
      cfg->num_bblocks = D.51027;
      D.51028 = (int) D.51026;
      falsebb->block_num = D.51028;
      D.51018 = ins->data.op[1].many_blocks;
      D.51019 = D.51018 + 4;
      *D.51019 = falsebb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      D.50972 = falsebb->cil_code;
      if (D.50972 != 0B) goto <D.51029>; else goto <D.51030>;
      <D.51029>:
      D.50975 = cfg->cil_offset_to_bb;
      D.50972 = falsebb->cil_code;
      D.50976 = (int) D.50972;
      D.50977 = cfg->cil_start;
      D.50978 = (int) D.50977;
      D.50979 = D.50976 - D.50978;
      D.50980 = (unsigned int) D.50979;
      D.50981 = D.50980 * 4;
      D.50982 = D.50975 + D.50981;
      *D.50982 = falsebb;
      <D.51030>:
      D.50983 = cfg->real_offset;
      falsebb->real_offset = D.50983;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51034>; else goto <D.51031>;
      <D.51034>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51035 = D.50934->opcode;
      D.51036 = D.51035 + 64985;
      D.51037 = D.51036 <= 9;
      D.51038 = D.51035 + 64878;
      D.51039 = D.51038 <= 9;
      D.51040 = D.51037 | D.51039;
      if (D.51040 != 0) goto <D.51032>; else goto <D.51041>;
      <D.51041>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 <= 9) goto <D.51032>; else goto <D.51031>;
      <D.51032>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      D.50999 = *D.50998;
      if (D.50999 == 0B) goto <D.51042>; else goto <D.51031>;
      <D.51042>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      *D.50998 = falsebb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      goto <D.51033>;
      <D.51031>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 == 0B) goto <D.51043>; else goto <D.51045>;
      <D.51045>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51046 = D.50934->opcode;
      D.51047 = D.51046 != 442;
      D.51048 = D.51046 != 759;
      D.51049 = D.51047 & D.51048;
      if (D.51049 != 0) goto <D.51050>; else goto <D.51044>;
      <D.51050>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51051 = D.50934->opcode;
      D.51052 = D.51051 + 64985;
      D.51053 = D.51052 > 9;
      D.51054 = D.51051 + 64878;
      D.51055 = D.51054 > 9;
      D.51056 = D.51053 & D.51055;
      if (D.51056 != 0) goto <D.51057>; else goto <D.51044>;
      <D.51057>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 > 9) goto <D.51043>; else goto <D.51044>;
      <D.51043>:
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      <D.51044>:
      <D.51033>:
      D.50891 = cfg->cbb;
      D.50891->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.51058>;
      <D.51025>:
      D.50891 = cfg->cbb;
      D.50891->extended = 1;
      <D.51058>:
      <D.51016>:
    }
    {
      struct MonoInst * inst;

      D.50916 = cfg->mempool;
      inst = mono_mempool_alloc (D.50916, 56);
      inst->data.op[1].const_val = 0;
      D.51059 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51059;
      inst->prev = 0B;
      D.51060 = inst->prev;
      inst->next = D.51060;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51061 = inst->sreg3;
      inst->sreg2 = D.51061;
      D.51062 = inst->sreg2;
      inst->sreg1 = D.51062;
      D.50927 = cfg->ip;
      inst->cil_code = D.50927;
      inst->dreg = -1;
      D.50956 = is_ref->dreg;
      inst->sreg1 = D.50956;
      inst->data.op[1].const_val = 2;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51063>; else goto <D.51064>;
      <D.51063>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50934->next = inst;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      inst->prev = D.50934;
      D.50891 = cfg->cbb;
      D.50891->last_ins = inst;
      goto <D.51065>;
      <D.51064>:
      D.50891 = cfg->cbb;
      D.50891 = cfg->cbb;
      D.50891->last_ins = inst;
      D.50934 = D.50891->last_ins;
      D.50891->code = D.50934;
      <D.51065>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.50916 = cfg->mempool;
      ins = mono_mempool_alloc (D.50916, 56);
      ins->data.op[1].const_val = 0;
      D.51066 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.51066;
      ins->prev = 0B;
      D.51067 = ins->prev;
      ins->next = D.51067;
      ins->opcode = 648;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.51068 = ins->sreg3;
      ins->sreg2 = D.51068;
      D.51069 = ins->sreg2;
      ins->sreg1 = D.51069;
      D.50927 = cfg->ip;
      ins->cil_code = D.50927;
      if (0 != 0) goto <D.51070>; else goto <D.51071>;
      <D.51070>:
      D.50916 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.50916, 172);
      D.50942 = cfg->num_bblocks;
      D.51072 = D.50942;
      D.51073 = D.51072 + 1;
      cfg->num_bblocks = D.51073;
      D.51074 = (int) D.51072;
      falsebb->block_num = D.51074;
      ins->data.op[0].target_block = is_nullable_bb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, is_nullable_bb);
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51075>; else goto <D.51076>;
      <D.51075>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50934->next = ins;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      ins->prev = D.50934;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      goto <D.51077>;
      <D.51076>:
      D.50891 = cfg->cbb;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      D.50934 = D.50891->last_ins;
      D.50891->code = D.50934;
      <D.51077>:
      D.51078 = falsebb->cil_code;
      if (D.51078 != 0B) goto <D.51079>; else goto <D.51080>;
      <D.51079>:
      D.50975 = cfg->cil_offset_to_bb;
      D.51078 = falsebb->cil_code;
      D.51081 = (int) D.51078;
      D.50977 = cfg->cil_start;
      D.50978 = (int) D.50977;
      D.51082 = D.51081 - D.50978;
      D.51083 = (unsigned int) D.51082;
      D.51084 = D.51083 * 4;
      D.51085 = D.50975 + D.51084;
      *D.51085 = falsebb;
      <D.51080>:
      D.50983 = cfg->real_offset;
      falsebb->real_offset = D.50983;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51089>; else goto <D.51086>;
      <D.51089>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51090 = D.50934->opcode;
      D.51091 = D.51090 + 64985;
      D.51092 = D.51091 <= 9;
      D.51093 = D.51090 + 64878;
      D.51094 = D.51093 <= 9;
      D.51095 = D.51092 | D.51094;
      if (D.51095 != 0) goto <D.51087>; else goto <D.51096>;
      <D.51096>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 <= 9) goto <D.51087>; else goto <D.51086>;
      <D.51087>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      D.50999 = *D.50998;
      if (D.50999 == 0B) goto <D.51097>; else goto <D.51086>;
      <D.51097>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      *D.50998 = falsebb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      goto <D.51088>;
      <D.51086>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 == 0B) goto <D.51098>; else goto <D.51100>;
      <D.51100>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51101 = D.50934->opcode;
      D.51102 = D.51101 != 442;
      D.51103 = D.51101 != 759;
      D.51104 = D.51102 & D.51103;
      if (D.51104 != 0) goto <D.51105>; else goto <D.51099>;
      <D.51105>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51106 = D.50934->opcode;
      D.51107 = D.51106 + 64985;
      D.51108 = D.51107 > 9;
      D.51109 = D.51106 + 64878;
      D.51110 = D.51109 > 9;
      D.51111 = D.51108 & D.51110;
      if (D.51111 != 0) goto <D.51112>; else goto <D.51099>;
      <D.51112>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 > 9) goto <D.51098>; else goto <D.51099>;
      <D.51098>:
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      <D.51099>:
      <D.51088>:
      D.50891 = cfg->cbb;
      D.50891->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.51113>;
      <D.51071>:
      D.50916 = cfg->mempool;
      D.51114 = mono_mempool_alloc (D.50916, 8);
      ins->data.op[1].many_blocks = D.51114;
      D.51115 = ins->data.op[1].many_blocks;
      *D.51115 = is_nullable_bb;
      D.51115 = ins->data.op[1].many_blocks;
      D.51116 = D.51115 + 4;
      *D.51116 = 0B;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, is_nullable_bb);
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51117>; else goto <D.51118>;
      <D.51117>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50934->next = ins;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      ins->prev = D.50934;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      goto <D.51119>;
      <D.51118>:
      D.50891 = cfg->cbb;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      D.50934 = D.50891->last_ins;
      D.50891->code = D.50934;
      <D.51119>:
      D.50920 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.51023 = D.50920 & 8;
      if (D.51023 == 0) goto <D.51120>; else goto <D.51121>;
      <D.51120>:
      D.50916 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.50916, 172);
      D.50942 = cfg->num_bblocks;
      D.51122 = D.50942;
      D.51123 = D.51122 + 1;
      cfg->num_bblocks = D.51123;
      D.51124 = (int) D.51122;
      falsebb->block_num = D.51124;
      D.51115 = ins->data.op[1].many_blocks;
      D.51116 = D.51115 + 4;
      *D.51116 = falsebb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      D.51078 = falsebb->cil_code;
      if (D.51078 != 0B) goto <D.51125>; else goto <D.51126>;
      <D.51125>:
      D.50975 = cfg->cil_offset_to_bb;
      D.51078 = falsebb->cil_code;
      D.51081 = (int) D.51078;
      D.50977 = cfg->cil_start;
      D.50978 = (int) D.50977;
      D.51082 = D.51081 - D.50978;
      D.51083 = (unsigned int) D.51082;
      D.51084 = D.51083 * 4;
      D.51085 = D.50975 + D.51084;
      *D.51085 = falsebb;
      <D.51126>:
      D.50983 = cfg->real_offset;
      falsebb->real_offset = D.50983;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51130>; else goto <D.51127>;
      <D.51130>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51131 = D.50934->opcode;
      D.51132 = D.51131 + 64985;
      D.51133 = D.51132 <= 9;
      D.51134 = D.51131 + 64878;
      D.51135 = D.51134 <= 9;
      D.51136 = D.51133 | D.51135;
      if (D.51136 != 0) goto <D.51128>; else goto <D.51137>;
      <D.51137>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 <= 9) goto <D.51128>; else goto <D.51127>;
      <D.51128>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      D.50999 = *D.50998;
      if (D.50999 == 0B) goto <D.51138>; else goto <D.51127>;
      <D.51138>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      *D.50998 = falsebb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      goto <D.51129>;
      <D.51127>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 == 0B) goto <D.51139>; else goto <D.51141>;
      <D.51141>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51142 = D.50934->opcode;
      D.51143 = D.51142 != 442;
      D.51144 = D.51142 != 759;
      D.51145 = D.51143 & D.51144;
      if (D.51145 != 0) goto <D.51146>; else goto <D.51140>;
      <D.51146>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51147 = D.50934->opcode;
      D.51148 = D.51147 + 64985;
      D.51149 = D.51148 > 9;
      D.51150 = D.51147 + 64878;
      D.51151 = D.51150 > 9;
      D.51152 = D.51149 & D.51151;
      if (D.51152 != 0) goto <D.51153>; else goto <D.51140>;
      <D.51153>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 > 9) goto <D.51139>; else goto <D.51140>;
      <D.51139>:
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      <D.51140>:
      <D.51129>:
      D.50891 = cfg->cbb;
      D.50891->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.51154>;
      <D.51121>:
      D.50891 = cfg->cbb;
      D.50891->extended = 1;
      <D.51154>:
      <D.51113>:
    }
    alloc = handle_alloc (cfg, klass, 1, context_used);
    if (alloc == 0B) goto <D.51155>; else goto <D.51156>;
    <D.51155>:
    D.50898 = 0B;
    return D.50898;
    <D.51156>:
    D.50916 = cfg->mempool;
    ins = mono_mempool_alloc (D.50916, 56);
    ins->data.op[1].const_val = 0;
    D.51157 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.51157;
    ins->prev = 0B;
    D.51158 = ins->prev;
    ins->next = D.51158;
    D.51159 = &klass->byval_arg;
    D.51160 = mono_type_to_store_membase (cfg, D.51159);
    D.51161 = (short unsigned int) D.51160;
    ins->opcode = D.51161;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.51162 = ins->sreg3;
    ins->sreg2 = D.51162;
    D.51163 = ins->sreg2;
    ins->sreg1 = D.51163;
    D.50927 = cfg->ip;
    ins->cil_code = D.50927;
    val.489 = val;
    D.51165 = val.489->dreg;
    ins->sreg1 = D.51165;
    D.51166 = alloc->dreg;
    ins->dreg = D.51166;
    ins->data.op[0].const_val = 8;
    D.51159 = &klass->byval_arg;
    type_to_eval_stack_type (cfg, D.51159, ins);
    D.51159 = &klass->byval_arg;
    D.51167 = mono_class_from_mono_type (D.51159);
    ins->klass = D.51167;
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    if (D.50934 != 0B) goto <D.51168>; else goto <D.51169>;
    <D.51168>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.50934->next = ins;
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    ins->prev = D.50934;
    D.50891 = cfg->cbb;
    D.50891->last_ins = ins;
    goto <D.51170>;
    <D.51169>:
    D.50891 = cfg->cbb;
    D.50891 = cfg->cbb;
    D.50891->last_ins = ins;
    D.50934 = D.50891->last_ins;
    D.50891->code = D.50934;
    <D.51170>:
    ins->opcode = 387;
    D.50916 = cfg->mempool;
    res = mono_mempool_alloc (D.50916, 56);
    res->data.op[1].const_val = 0;
    D.51171 = res->data.op[1].const_val;
    res->data.op[0].const_val = D.51171;
    res->prev = 0B;
    D.51172 = res->prev;
    res->next = D.51172;
    res->opcode = 424;
    res->flags = 0;
    res->type = 0;
    res->dreg = -1;
    res->sreg3 = -1;
    D.51173 = res->sreg3;
    res->sreg2 = D.51173;
    D.51174 = res->sreg2;
    res->sreg1 = D.51174;
    D.50927 = cfg->ip;
    res->cil_code = D.50927;
    res->dreg = dreg;
    D.51166 = alloc->dreg;
    res->sreg1 = D.51166;
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    if (D.50934 != 0B) goto <D.51175>; else goto <D.51176>;
    <D.51175>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.50934->next = res;
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    res->prev = D.50934;
    D.50891 = cfg->cbb;
    D.50891->last_ins = res;
    goto <D.51177>;
    <D.51176>:
    D.50891 = cfg->cbb;
    D.50891 = cfg->cbb;
    D.50891->last_ins = res;
    D.50934 = D.50891->last_ins;
    D.50891->code = D.50934;
    <D.51177>:
    res->type = 6;
    res->klass = klass;
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.50916 = cfg->mempool;
      ins = mono_mempool_alloc (D.50916, 56);
      ins->data.op[1].const_val = 0;
      D.51178 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.51178;
      ins->prev = 0B;
      D.51179 = ins->prev;
      ins->next = D.51179;
      ins->opcode = 442;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.51180 = ins->sreg3;
      ins->sreg2 = D.51180;
      D.51181 = ins->sreg2;
      ins->sreg1 = D.51181;
      D.50927 = cfg->ip;
      ins->cil_code = D.50927;
      if (1 != 0) goto <D.51182>; else goto <D.51183>;
      <D.51182>:
      D.50916 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.50916, 172);
      D.50942 = cfg->num_bblocks;
      D.51184 = D.50942;
      D.51185 = D.51184 + 1;
      cfg->num_bblocks = D.51185;
      D.51186 = (int) D.51184;
      falsebb->block_num = D.51186;
      ins->data.op[0].target_block = end_bb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, end_bb);
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51187>; else goto <D.51188>;
      <D.51187>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50934->next = ins;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      ins->prev = D.50934;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      goto <D.51189>;
      <D.51188>:
      D.50891 = cfg->cbb;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      D.50934 = D.50891->last_ins;
      D.50891->code = D.50934;
      <D.51189>:
      D.51190 = falsebb->cil_code;
      if (D.51190 != 0B) goto <D.51191>; else goto <D.51192>;
      <D.51191>:
      D.50975 = cfg->cil_offset_to_bb;
      D.51190 = falsebb->cil_code;
      D.51193 = (int) D.51190;
      D.50977 = cfg->cil_start;
      D.50978 = (int) D.50977;
      D.51194 = D.51193 - D.50978;
      D.51195 = (unsigned int) D.51194;
      D.51196 = D.51195 * 4;
      D.51197 = D.50975 + D.51196;
      *D.51197 = falsebb;
      <D.51192>:
      D.50983 = cfg->real_offset;
      falsebb->real_offset = D.50983;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51201>; else goto <D.51198>;
      <D.51201>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51202 = D.50934->opcode;
      D.51203 = D.51202 + 64985;
      D.51204 = D.51203 <= 9;
      D.51205 = D.51202 + 64878;
      D.51206 = D.51205 <= 9;
      D.51207 = D.51204 | D.51206;
      if (D.51207 != 0) goto <D.51199>; else goto <D.51208>;
      <D.51208>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 <= 9) goto <D.51199>; else goto <D.51198>;
      <D.51199>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      D.50999 = *D.50998;
      if (D.50999 == 0B) goto <D.51209>; else goto <D.51198>;
      <D.51209>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      *D.50998 = falsebb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      goto <D.51200>;
      <D.51198>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 == 0B) goto <D.51210>; else goto <D.51212>;
      <D.51212>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51213 = D.50934->opcode;
      D.51214 = D.51213 != 442;
      D.51215 = D.51213 != 759;
      D.51216 = D.51214 & D.51215;
      if (D.51216 != 0) goto <D.51217>; else goto <D.51211>;
      <D.51217>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51218 = D.50934->opcode;
      D.51219 = D.51218 + 64985;
      D.51220 = D.51219 > 9;
      D.51221 = D.51218 + 64878;
      D.51222 = D.51221 > 9;
      D.51223 = D.51220 & D.51222;
      if (D.51223 != 0) goto <D.51224>; else goto <D.51211>;
      <D.51224>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 > 9) goto <D.51210>; else goto <D.51211>;
      <D.51210>:
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      <D.51211>:
      <D.51200>:
      D.50891 = cfg->cbb;
      D.50891->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.51225>;
      <D.51183>:
      D.50916 = cfg->mempool;
      D.51226 = mono_mempool_alloc (D.50916, 8);
      ins->data.op[1].many_blocks = D.51226;
      D.51227 = ins->data.op[1].many_blocks;
      *D.51227 = end_bb;
      D.51227 = ins->data.op[1].many_blocks;
      D.51228 = D.51227 + 4;
      *D.51228 = 0B;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, end_bb);
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51229>; else goto <D.51230>;
      <D.51229>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50934->next = ins;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      ins->prev = D.50934;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      goto <D.51231>;
      <D.51230>:
      D.50891 = cfg->cbb;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      D.50934 = D.50891->last_ins;
      D.50891->code = D.50934;
      <D.51231>:
      D.50920 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.51023 = D.50920 & 8;
      if (D.51023 == 0) goto <D.51232>; else goto <D.51233>;
      <D.51232>:
      D.50916 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.50916, 172);
      D.50942 = cfg->num_bblocks;
      D.51234 = D.50942;
      D.51235 = D.51234 + 1;
      cfg->num_bblocks = D.51235;
      D.51236 = (int) D.51234;
      falsebb->block_num = D.51236;
      D.51227 = ins->data.op[1].many_blocks;
      D.51228 = D.51227 + 4;
      *D.51228 = falsebb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      D.51190 = falsebb->cil_code;
      if (D.51190 != 0B) goto <D.51237>; else goto <D.51238>;
      <D.51237>:
      D.50975 = cfg->cil_offset_to_bb;
      D.51190 = falsebb->cil_code;
      D.51193 = (int) D.51190;
      D.50977 = cfg->cil_start;
      D.50978 = (int) D.50977;
      D.51194 = D.51193 - D.50978;
      D.51195 = (unsigned int) D.51194;
      D.51196 = D.51195 * 4;
      D.51197 = D.50975 + D.51196;
      *D.51197 = falsebb;
      <D.51238>:
      D.50983 = cfg->real_offset;
      falsebb->real_offset = D.50983;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51242>; else goto <D.51239>;
      <D.51242>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51243 = D.50934->opcode;
      D.51244 = D.51243 + 64985;
      D.51245 = D.51244 <= 9;
      D.51246 = D.51243 + 64878;
      D.51247 = D.51246 <= 9;
      D.51248 = D.51245 | D.51247;
      if (D.51248 != 0) goto <D.51240>; else goto <D.51249>;
      <D.51249>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 <= 9) goto <D.51240>; else goto <D.51239>;
      <D.51240>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      D.50999 = *D.50998;
      if (D.50999 == 0B) goto <D.51250>; else goto <D.51239>;
      <D.51250>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      *D.50998 = falsebb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      goto <D.51241>;
      <D.51239>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 == 0B) goto <D.51251>; else goto <D.51253>;
      <D.51253>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51254 = D.50934->opcode;
      D.51255 = D.51254 != 442;
      D.51256 = D.51254 != 759;
      D.51257 = D.51255 & D.51256;
      if (D.51257 != 0) goto <D.51258>; else goto <D.51252>;
      <D.51258>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51259 = D.50934->opcode;
      D.51260 = D.51259 + 64985;
      D.51261 = D.51260 > 9;
      D.51262 = D.51259 + 64878;
      D.51263 = D.51262 > 9;
      D.51264 = D.51261 & D.51263;
      if (D.51264 != 0) goto <D.51265>; else goto <D.51252>;
      <D.51265>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 > 9) goto <D.51251>; else goto <D.51252>;
      <D.51251>:
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      <D.51252>:
      <D.51241>:
      D.50891 = cfg->cbb;
      D.50891->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.51266>;
      <D.51233>:
      D.50891 = cfg->cbb;
      D.50891->extended = 1;
      <D.51266>:
      <D.51225>:
    }
    D.51267 = is_ref_bb->cil_code;
    if (D.51267 != 0B) goto <D.51268>; else goto <D.51269>;
    <D.51268>:
    D.50975 = cfg->cil_offset_to_bb;
    D.51267 = is_ref_bb->cil_code;
    D.51270 = (int) D.51267;
    D.50977 = cfg->cil_start;
    D.50978 = (int) D.50977;
    D.51271 = D.51270 - D.50978;
    D.51272 = (unsigned int) D.51271;
    D.51273 = D.51272 * 4;
    D.51274 = D.50975 + D.51273;
    *D.51274 = is_ref_bb;
    <D.51269>:
    D.50983 = cfg->real_offset;
    is_ref_bb->real_offset = D.50983;
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    if (D.50934 != 0B) goto <D.51278>; else goto <D.51275>;
    <D.51278>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.51279 = D.50934->opcode;
    D.51280 = D.51279 + 64985;
    D.51281 = D.51280 <= 9;
    D.51282 = D.51279 + 64878;
    D.51283 = D.51282 <= 9;
    D.51284 = D.51281 | D.51283;
    if (D.51284 != 0) goto <D.51276>; else goto <D.51285>;
    <D.51285>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.50995 = D.50934->opcode;
    D.50996 = D.50995 + 64888;
    if (D.50996 <= 9) goto <D.51276>; else goto <D.51275>;
    <D.51276>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.50997 = D.50934->data.op[1].many_blocks;
    D.50998 = D.50997 + 4;
    D.50999 = *D.50998;
    if (D.50999 == 0B) goto <D.51286>; else goto <D.51275>;
    <D.51286>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.50997 = D.50934->data.op[1].many_blocks;
    D.50998 = D.50997 + 4;
    *D.50998 = is_ref_bb;
    D.50891 = cfg->cbb;
    mono_link_bblock (cfg, D.50891, is_ref_bb);
    goto <D.51277>;
    <D.51275>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    if (D.50934 == 0B) goto <D.51287>; else goto <D.51289>;
    <D.51289>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.51290 = D.50934->opcode;
    D.51291 = D.51290 != 442;
    D.51292 = D.51290 != 759;
    D.51293 = D.51291 & D.51292;
    if (D.51293 != 0) goto <D.51294>; else goto <D.51288>;
    <D.51294>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.51295 = D.50934->opcode;
    D.51296 = D.51295 + 64985;
    D.51297 = D.51296 > 9;
    D.51298 = D.51295 + 64878;
    D.51299 = D.51298 > 9;
    D.51300 = D.51297 & D.51299;
    if (D.51300 != 0) goto <D.51301>; else goto <D.51288>;
    <D.51301>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.50995 = D.50934->opcode;
    D.50996 = D.50995 + 64888;
    if (D.50996 > 9) goto <D.51287>; else goto <D.51288>;
    <D.51287>:
    D.50891 = cfg->cbb;
    mono_link_bblock (cfg, D.50891, is_ref_bb);
    <D.51288>:
    <D.51277>:
    D.50891 = cfg->cbb;
    D.50891->next_bb = is_ref_bb;
    cfg->cbb = is_ref_bb;
    D.51302 = alloc_ireg (cfg);
    addr_reg = (int) D.51302;
    val.489 = val;
    D.51165 = val.489->dreg;
    D.51304 = (unsigned int) D.51165;
    D.51305 = cfg->vreg_to_inst_len;
    if (D.51304 < D.51305) goto <D.51306>; else goto <D.51307>;
    <D.51306>:
    D.51308 = cfg->vreg_to_inst;
    val.489 = val;
    D.51165 = val.489->dreg;
    D.51309 = (unsigned int) D.51165;
    D.51310 = D.51309 * 4;
    D.51311 = D.51308 + D.51310;
    iftmp.490 = *D.51311;
    goto <D.51312>;
    <D.51307>:
    iftmp.490 = 0B;
    <D.51312>:
    src_var = iftmp.490;
    if (src_var == 0B) goto <D.51313>; else goto <D.51314>;
    <D.51313>:
    D.51159 = &klass->byval_arg;
    val.489 = val;
    D.51165 = val.489->dreg;
    src_var = mono_compile_create_var_for_vreg (cfg, D.51159, 329, D.51165);
    <D.51314>:
    D.50916 = cfg->mempool;
    addr = mono_mempool_alloc (D.50916, 56);
    addr->data.op[1].const_val = 0;
    D.51315 = addr->data.op[1].const_val;
    addr->data.op[0].const_val = D.51315;
    addr->prev = 0B;
    D.51316 = addr->prev;
    addr->next = D.51316;
    addr->opcode = 314;
    addr->flags = 0;
    addr->type = 0;
    addr->dreg = -1;
    addr->sreg3 = -1;
    D.51317 = addr->sreg3;
    addr->sreg2 = D.51317;
    D.51318 = addr->sreg2;
    addr->sreg1 = D.51318;
    D.50927 = cfg->ip;
    addr->cil_code = D.50927;
    addr->data.op[0].p = src_var;
    D.51319 = src_var->flags;
    D.51320 = D.51319 | 16;
    src_var->flags = D.51320;
    addr->type = 5;
    D.51321 = src_var->klass;
    addr->klass = D.51321;
    D.51322 = alloc_dreg (cfg, 5);
    D.51323 = (int) D.51322;
    addr->dreg = D.51323;
    cfg->has_indirection = 1;
    D.51324 = cfg->gsharedvt;
    D.51325 = D.51324 != 0;
    D.51326 = (long int) D.51325;
    D.51327 = __builtin_expect (D.51326, 0);
    if (D.51327 != 0) goto <D.51328>; else goto <D.51329>;
    <D.51328>:
    D.51330 = src_var->data.op[1].vtype;
    D.51331 = mini_is_gsharedvt_variable_type (cfg, D.51330);
    if (D.51331 != 0) goto <D.51332>; else goto <D.51333>;
    <D.51332>:
    handle_gsharedvt_ldaddr (cfg);
    <D.51333>:
    <D.51329>:
    D.51335 = mono_arch_is_soft_float ();
    if (D.51335 != 0) goto <D.51336>; else goto <D.51337>;
    <D.51336>:
    D.51338 = src_var->type;
    D.51339 = D.51338 == 2;
    D.51340 = D.51338 == 4;
    D.51341 = D.51339 | D.51340;
    D.51342 = (int) D.51341;
    iftmp.491 = (_Bool) D.51342;
    goto <D.51343>;
    <D.51337>:
    D.51344 = src_var->type;
    iftmp.491 = D.51344 == 2;
    <D.51343>:
    if (iftmp.491 != 0) goto <D.51345>; else goto <D.51346>;
    <D.51345>:
    {
      struct MonoInst * var1;
      struct MonoInst * var2;

      D.51348 = src_var->dreg;
      D.51349 = D.51348 + 1;
      D.51350 = (unsigned int) D.51349;
      D.51305 = cfg->vreg_to_inst_len;
      if (D.51350 < D.51305) goto <D.51351>; else goto <D.51352>;
      <D.51351>:
      D.51308 = cfg->vreg_to_inst;
      D.51348 = src_var->dreg;
      D.51353 = (sizetype) D.51348;
      D.51354 = D.51353 + 1;
      D.51355 = D.51354 * 4;
      D.51356 = D.51308 + D.51355;
      iftmp.492 = *D.51356;
      goto <D.51357>;
      <D.51352>:
      iftmp.492 = 0B;
      <D.51357>:
      var1 = iftmp.492;
      D.51348 = src_var->dreg;
      D.51359 = D.51348 + 2;
      D.51360 = (unsigned int) D.51359;
      D.51305 = cfg->vreg_to_inst_len;
      if (D.51360 < D.51305) goto <D.51361>; else goto <D.51362>;
      <D.51361>:
      D.51308 = cfg->vreg_to_inst;
      D.51348 = src_var->dreg;
      D.51353 = (sizetype) D.51348;
      D.51363 = D.51353 + 2;
      D.51364 = D.51363 * 4;
      D.51365 = D.51308 + D.51364;
      iftmp.493 = *D.51365;
      goto <D.51366>;
      <D.51362>:
      iftmp.493 = 0B;
      <D.51366>:
      var2 = iftmp.493;
      D.51367 = var1 == 0B;
      D.51368 = (long int) D.51367;
      D.51369 = __builtin_expect (D.51368, 0);
      if (D.51369 != 0) goto <D.51370>; else goto <D.51371>;
      <D.51370>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3880, "var1");
      <D.51371>:
      D.51372 = var2 == 0B;
      D.51373 = (long int) D.51372;
      D.51374 = __builtin_expect (D.51373, 0);
      if (D.51374 != 0) goto <D.51375>; else goto <D.51376>;
      <D.51375>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3880, "var2");
      <D.51376>:
      D.51377 = var1->flags;
      D.51378 = D.51377 | 16;
      var1->flags = D.51378;
      D.51379 = var2->flags;
      D.51380 = D.51379 | 16;
      var2->flags = D.51380;
    }
    <D.51346>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    if (D.50934 != 0B) goto <D.51381>; else goto <D.51382>;
    <D.51381>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.50934->next = addr;
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    addr->prev = D.50934;
    D.50891 = cfg->cbb;
    D.50891->last_ins = addr;
    goto <D.51383>;
    <D.51382>:
    D.50891 = cfg->cbb;
    D.50891 = cfg->cbb;
    D.50891->last_ins = addr;
    D.50934 = D.50891->last_ins;
    D.50891->code = D.50934;
    <D.51383>:
    {
      struct MonoInst * inst;

      D.50916 = cfg->mempool;
      inst = mono_mempool_alloc (D.50916, 56);
      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 = 388;
      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.50927 = cfg->ip;
      inst->cil_code = D.50927;
      inst->dreg = dreg;
      D.51388 = addr->dreg;
      inst->sreg1 = D.51388;
      inst->data.op[0].const_val = 0;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51389>; else goto <D.51390>;
      <D.51389>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50934->next = inst;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      inst->prev = D.50934;
      D.50891 = cfg->cbb;
      D.50891->last_ins = inst;
      goto <D.51391>;
      <D.51390>:
      D.50891 = cfg->cbb;
      D.50891 = cfg->cbb;
      D.50891->last_ins = inst;
      D.50934 = D.50891->last_ins;
      D.50891->code = D.50934;
      <D.51391>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.50916 = cfg->mempool;
      ins = mono_mempool_alloc (D.50916, 56);
      ins->data.op[1].const_val = 0;
      D.51392 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.51392;
      ins->prev = 0B;
      D.51393 = ins->prev;
      ins->next = D.51393;
      ins->opcode = 442;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.51394 = ins->sreg3;
      ins->sreg2 = D.51394;
      D.51395 = ins->sreg2;
      ins->sreg1 = D.51395;
      D.50927 = cfg->ip;
      ins->cil_code = D.50927;
      if (1 != 0) goto <D.51396>; else goto <D.51397>;
      <D.51396>:
      D.50916 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.50916, 172);
      D.50942 = cfg->num_bblocks;
      D.51398 = D.50942;
      D.51399 = D.51398 + 1;
      cfg->num_bblocks = D.51399;
      D.51400 = (int) D.51398;
      falsebb->block_num = D.51400;
      ins->data.op[0].target_block = end_bb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, end_bb);
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51401>; else goto <D.51402>;
      <D.51401>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50934->next = ins;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      ins->prev = D.50934;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      goto <D.51403>;
      <D.51402>:
      D.50891 = cfg->cbb;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      D.50934 = D.50891->last_ins;
      D.50891->code = D.50934;
      <D.51403>:
      D.51404 = falsebb->cil_code;
      if (D.51404 != 0B) goto <D.51405>; else goto <D.51406>;
      <D.51405>:
      D.50975 = cfg->cil_offset_to_bb;
      D.51404 = falsebb->cil_code;
      D.51407 = (int) D.51404;
      D.50977 = cfg->cil_start;
      D.50978 = (int) D.50977;
      D.51408 = D.51407 - D.50978;
      D.51409 = (unsigned int) D.51408;
      D.51410 = D.51409 * 4;
      D.51411 = D.50975 + D.51410;
      *D.51411 = falsebb;
      <D.51406>:
      D.50983 = cfg->real_offset;
      falsebb->real_offset = D.50983;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51415>; else goto <D.51412>;
      <D.51415>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51416 = D.50934->opcode;
      D.51417 = D.51416 + 64985;
      D.51418 = D.51417 <= 9;
      D.51419 = D.51416 + 64878;
      D.51420 = D.51419 <= 9;
      D.51421 = D.51418 | D.51420;
      if (D.51421 != 0) goto <D.51413>; else goto <D.51422>;
      <D.51422>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 <= 9) goto <D.51413>; else goto <D.51412>;
      <D.51413>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      D.50999 = *D.50998;
      if (D.50999 == 0B) goto <D.51423>; else goto <D.51412>;
      <D.51423>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      *D.50998 = falsebb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      goto <D.51414>;
      <D.51412>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 == 0B) goto <D.51424>; else goto <D.51426>;
      <D.51426>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51427 = D.50934->opcode;
      D.51428 = D.51427 != 442;
      D.51429 = D.51427 != 759;
      D.51430 = D.51428 & D.51429;
      if (D.51430 != 0) goto <D.51431>; else goto <D.51425>;
      <D.51431>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51432 = D.50934->opcode;
      D.51433 = D.51432 + 64985;
      D.51434 = D.51433 > 9;
      D.51435 = D.51432 + 64878;
      D.51436 = D.51435 > 9;
      D.51437 = D.51434 & D.51436;
      if (D.51437 != 0) goto <D.51438>; else goto <D.51425>;
      <D.51438>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 > 9) goto <D.51424>; else goto <D.51425>;
      <D.51424>:
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      <D.51425>:
      <D.51414>:
      D.50891 = cfg->cbb;
      D.50891->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.51439>;
      <D.51397>:
      D.50916 = cfg->mempool;
      D.51440 = mono_mempool_alloc (D.50916, 8);
      ins->data.op[1].many_blocks = D.51440;
      D.51441 = ins->data.op[1].many_blocks;
      *D.51441 = end_bb;
      D.51441 = ins->data.op[1].many_blocks;
      D.51442 = D.51441 + 4;
      *D.51442 = 0B;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, end_bb);
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51443>; else goto <D.51444>;
      <D.51443>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50934->next = ins;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      ins->prev = D.50934;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      goto <D.51445>;
      <D.51444>:
      D.50891 = cfg->cbb;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      D.50934 = D.50891->last_ins;
      D.50891->code = D.50934;
      <D.51445>:
      D.50920 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.51023 = D.50920 & 8;
      if (D.51023 == 0) goto <D.51446>; else goto <D.51447>;
      <D.51446>:
      D.50916 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.50916, 172);
      D.50942 = cfg->num_bblocks;
      D.51448 = D.50942;
      D.51449 = D.51448 + 1;
      cfg->num_bblocks = D.51449;
      D.51450 = (int) D.51448;
      falsebb->block_num = D.51450;
      D.51441 = ins->data.op[1].many_blocks;
      D.51442 = D.51441 + 4;
      *D.51442 = falsebb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      D.51404 = falsebb->cil_code;
      if (D.51404 != 0B) goto <D.51451>; else goto <D.51452>;
      <D.51451>:
      D.50975 = cfg->cil_offset_to_bb;
      D.51404 = falsebb->cil_code;
      D.51407 = (int) D.51404;
      D.50977 = cfg->cil_start;
      D.50978 = (int) D.50977;
      D.51408 = D.51407 - D.50978;
      D.51409 = (unsigned int) D.51408;
      D.51410 = D.51409 * 4;
      D.51411 = D.50975 + D.51410;
      *D.51411 = falsebb;
      <D.51452>:
      D.50983 = cfg->real_offset;
      falsebb->real_offset = D.50983;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51456>; else goto <D.51453>;
      <D.51456>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51457 = D.50934->opcode;
      D.51458 = D.51457 + 64985;
      D.51459 = D.51458 <= 9;
      D.51460 = D.51457 + 64878;
      D.51461 = D.51460 <= 9;
      D.51462 = D.51459 | D.51461;
      if (D.51462 != 0) goto <D.51454>; else goto <D.51463>;
      <D.51463>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 <= 9) goto <D.51454>; else goto <D.51453>;
      <D.51454>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      D.50999 = *D.50998;
      if (D.50999 == 0B) goto <D.51464>; else goto <D.51453>;
      <D.51464>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      *D.50998 = falsebb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      goto <D.51455>;
      <D.51453>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 == 0B) goto <D.51465>; else goto <D.51467>;
      <D.51467>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51468 = D.50934->opcode;
      D.51469 = D.51468 != 442;
      D.51470 = D.51468 != 759;
      D.51471 = D.51469 & D.51470;
      if (D.51471 != 0) goto <D.51472>; else goto <D.51466>;
      <D.51472>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51473 = D.50934->opcode;
      D.51474 = D.51473 + 64985;
      D.51475 = D.51474 > 9;
      D.51476 = D.51473 + 64878;
      D.51477 = D.51476 > 9;
      D.51478 = D.51475 & D.51477;
      if (D.51478 != 0) goto <D.51479>; else goto <D.51466>;
      <D.51479>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 > 9) goto <D.51465>; else goto <D.51466>;
      <D.51465>:
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      <D.51466>:
      <D.51455>:
      D.50891 = cfg->cbb;
      D.50891->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.51480>;
      <D.51447>:
      D.50891 = cfg->cbb;
      D.50891->extended = 1;
      <D.51480>:
      <D.51439>:
    }
    D.51481 = is_nullable_bb->cil_code;
    if (D.51481 != 0B) goto <D.51482>; else goto <D.51483>;
    <D.51482>:
    D.50975 = cfg->cil_offset_to_bb;
    D.51481 = is_nullable_bb->cil_code;
    D.51484 = (int) D.51481;
    D.50977 = cfg->cil_start;
    D.50978 = (int) D.50977;
    D.51485 = D.51484 - D.50978;
    D.51486 = (unsigned int) D.51485;
    D.51487 = D.51486 * 4;
    D.51488 = D.50975 + D.51487;
    *D.51488 = is_nullable_bb;
    <D.51483>:
    D.50983 = cfg->real_offset;
    is_nullable_bb->real_offset = D.50983;
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    if (D.50934 != 0B) goto <D.51492>; else goto <D.51489>;
    <D.51492>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.51493 = D.50934->opcode;
    D.51494 = D.51493 + 64985;
    D.51495 = D.51494 <= 9;
    D.51496 = D.51493 + 64878;
    D.51497 = D.51496 <= 9;
    D.51498 = D.51495 | D.51497;
    if (D.51498 != 0) goto <D.51490>; else goto <D.51499>;
    <D.51499>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.50995 = D.50934->opcode;
    D.50996 = D.50995 + 64888;
    if (D.50996 <= 9) goto <D.51490>; else goto <D.51489>;
    <D.51490>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.50997 = D.50934->data.op[1].many_blocks;
    D.50998 = D.50997 + 4;
    D.50999 = *D.50998;
    if (D.50999 == 0B) goto <D.51500>; else goto <D.51489>;
    <D.51500>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.50997 = D.50934->data.op[1].many_blocks;
    D.50998 = D.50997 + 4;
    *D.50998 = is_nullable_bb;
    D.50891 = cfg->cbb;
    mono_link_bblock (cfg, D.50891, is_nullable_bb);
    goto <D.51491>;
    <D.51489>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    if (D.50934 == 0B) goto <D.51501>; else goto <D.51503>;
    <D.51503>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.51504 = D.50934->opcode;
    D.51505 = D.51504 != 442;
    D.51506 = D.51504 != 759;
    D.51507 = D.51505 & D.51506;
    if (D.51507 != 0) goto <D.51508>; else goto <D.51502>;
    <D.51508>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.51509 = D.50934->opcode;
    D.51510 = D.51509 + 64985;
    D.51511 = D.51510 > 9;
    D.51512 = D.51509 + 64878;
    D.51513 = D.51512 > 9;
    D.51514 = D.51511 & D.51513;
    if (D.51514 != 0) goto <D.51515>; else goto <D.51502>;
    <D.51515>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.50995 = D.50934->opcode;
    D.50996 = D.50995 + 64888;
    if (D.50996 > 9) goto <D.51501>; else goto <D.51502>;
    <D.51501>:
    D.50891 = cfg->cbb;
    mono_link_bblock (cfg, D.50891, is_nullable_bb);
    <D.51502>:
    <D.51491>:
    D.50891 = cfg->cbb;
    D.50891->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.50916 = cfg->mempool;
      box_sig = mono_mempool_alloc0 (D.50916, 16);
      D.51516 = mono_defaults.object_class;
      D.51517 = &D.51516->byval_arg;
      box_sig->ret = D.51517;
      box_sig->param_count = 1;
      D.51159 = &klass->byval_arg;
      box_sig->params[0] = D.51159;
      box_call = mono_emit_calli (cfg, box_sig, &val, addr, 0B, 0B);
      D.50916 = cfg->mempool;
      res = mono_mempool_alloc (D.50916, 56);
      res->data.op[1].const_val = 0;
      D.51171 = res->data.op[1].const_val;
      res->data.op[0].const_val = D.51171;
      res->prev = 0B;
      D.51172 = res->prev;
      res->next = D.51172;
      res->opcode = 424;
      res->flags = 0;
      res->type = 0;
      res->dreg = -1;
      res->sreg3 = -1;
      D.51173 = res->sreg3;
      res->sreg2 = D.51173;
      D.51174 = res->sreg2;
      res->sreg1 = D.51174;
      D.50927 = cfg->ip;
      res->cil_code = D.50927;
      res->dreg = dreg;
      D.51518 = box_call->dreg;
      res->sreg1 = D.51518;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51519>; else goto <D.51520>;
      <D.51519>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50934->next = res;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      res->prev = D.50934;
      D.50891 = cfg->cbb;
      D.50891->last_ins = res;
      goto <D.51521>;
      <D.51520>:
      D.50891 = cfg->cbb;
      D.50891 = cfg->cbb;
      D.50891->last_ins = res;
      D.50934 = D.50891->last_ins;
      D.50891->code = D.50934;
      <D.51521>:
      res->type = 6;
      res->klass = klass;
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.50916 = cfg->mempool;
      ins = mono_mempool_alloc (D.50916, 56);
      ins->data.op[1].const_val = 0;
      D.51522 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.51522;
      ins->prev = 0B;
      D.51523 = ins->prev;
      ins->next = D.51523;
      ins->opcode = 442;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.51524 = ins->sreg3;
      ins->sreg2 = D.51524;
      D.51525 = ins->sreg2;
      ins->sreg1 = D.51525;
      D.50927 = cfg->ip;
      ins->cil_code = D.50927;
      if (1 != 0) goto <D.51526>; else goto <D.51527>;
      <D.51526>:
      D.50916 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.50916, 172);
      D.50942 = cfg->num_bblocks;
      D.51528 = D.50942;
      D.51529 = D.51528 + 1;
      cfg->num_bblocks = D.51529;
      D.51530 = (int) D.51528;
      falsebb->block_num = D.51530;
      ins->data.op[0].target_block = end_bb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, end_bb);
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51531>; else goto <D.51532>;
      <D.51531>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50934->next = ins;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      ins->prev = D.50934;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      goto <D.51533>;
      <D.51532>:
      D.50891 = cfg->cbb;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      D.50934 = D.50891->last_ins;
      D.50891->code = D.50934;
      <D.51533>:
      D.51534 = falsebb->cil_code;
      if (D.51534 != 0B) goto <D.51535>; else goto <D.51536>;
      <D.51535>:
      D.50975 = cfg->cil_offset_to_bb;
      D.51534 = falsebb->cil_code;
      D.51537 = (int) D.51534;
      D.50977 = cfg->cil_start;
      D.50978 = (int) D.50977;
      D.51538 = D.51537 - D.50978;
      D.51539 = (unsigned int) D.51538;
      D.51540 = D.51539 * 4;
      D.51541 = D.50975 + D.51540;
      *D.51541 = falsebb;
      <D.51536>:
      D.50983 = cfg->real_offset;
      falsebb->real_offset = D.50983;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51545>; else goto <D.51542>;
      <D.51545>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51546 = D.50934->opcode;
      D.51547 = D.51546 + 64985;
      D.51548 = D.51547 <= 9;
      D.51549 = D.51546 + 64878;
      D.51550 = D.51549 <= 9;
      D.51551 = D.51548 | D.51550;
      if (D.51551 != 0) goto <D.51543>; else goto <D.51552>;
      <D.51552>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 <= 9) goto <D.51543>; else goto <D.51542>;
      <D.51543>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      D.50999 = *D.50998;
      if (D.50999 == 0B) goto <D.51553>; else goto <D.51542>;
      <D.51553>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      *D.50998 = falsebb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      goto <D.51544>;
      <D.51542>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 == 0B) goto <D.51554>; else goto <D.51556>;
      <D.51556>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51557 = D.50934->opcode;
      D.51558 = D.51557 != 442;
      D.51559 = D.51557 != 759;
      D.51560 = D.51558 & D.51559;
      if (D.51560 != 0) goto <D.51561>; else goto <D.51555>;
      <D.51561>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51562 = D.50934->opcode;
      D.51563 = D.51562 + 64985;
      D.51564 = D.51563 > 9;
      D.51565 = D.51562 + 64878;
      D.51566 = D.51565 > 9;
      D.51567 = D.51564 & D.51566;
      if (D.51567 != 0) goto <D.51568>; else goto <D.51555>;
      <D.51568>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 > 9) goto <D.51554>; else goto <D.51555>;
      <D.51554>:
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      <D.51555>:
      <D.51544>:
      D.50891 = cfg->cbb;
      D.50891->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.51569>;
      <D.51527>:
      D.50916 = cfg->mempool;
      D.51570 = mono_mempool_alloc (D.50916, 8);
      ins->data.op[1].many_blocks = D.51570;
      D.51571 = ins->data.op[1].many_blocks;
      *D.51571 = end_bb;
      D.51571 = ins->data.op[1].many_blocks;
      D.51572 = D.51571 + 4;
      *D.51572 = 0B;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, end_bb);
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51573>; else goto <D.51574>;
      <D.51573>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50934->next = ins;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      ins->prev = D.50934;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      goto <D.51575>;
      <D.51574>:
      D.50891 = cfg->cbb;
      D.50891 = cfg->cbb;
      D.50891->last_ins = ins;
      D.50934 = D.50891->last_ins;
      D.50891->code = D.50934;
      <D.51575>:
      D.50920 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.51023 = D.50920 & 8;
      if (D.51023 == 0) goto <D.51576>; else goto <D.51577>;
      <D.51576>:
      D.50916 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.50916, 172);
      D.50942 = cfg->num_bblocks;
      D.51578 = D.50942;
      D.51579 = D.51578 + 1;
      cfg->num_bblocks = D.51579;
      D.51580 = (int) D.51578;
      falsebb->block_num = D.51580;
      D.51571 = ins->data.op[1].many_blocks;
      D.51572 = D.51571 + 4;
      *D.51572 = falsebb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      D.51534 = falsebb->cil_code;
      if (D.51534 != 0B) goto <D.51581>; else goto <D.51582>;
      <D.51581>:
      D.50975 = cfg->cil_offset_to_bb;
      D.51534 = falsebb->cil_code;
      D.51537 = (int) D.51534;
      D.50977 = cfg->cil_start;
      D.50978 = (int) D.50977;
      D.51538 = D.51537 - D.50978;
      D.51539 = (unsigned int) D.51538;
      D.51540 = D.51539 * 4;
      D.51541 = D.50975 + D.51540;
      *D.51541 = falsebb;
      <D.51582>:
      D.50983 = cfg->real_offset;
      falsebb->real_offset = D.50983;
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 != 0B) goto <D.51586>; else goto <D.51583>;
      <D.51586>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51587 = D.50934->opcode;
      D.51588 = D.51587 + 64985;
      D.51589 = D.51588 <= 9;
      D.51590 = D.51587 + 64878;
      D.51591 = D.51590 <= 9;
      D.51592 = D.51589 | D.51591;
      if (D.51592 != 0) goto <D.51584>; else goto <D.51593>;
      <D.51593>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 <= 9) goto <D.51584>; else goto <D.51583>;
      <D.51584>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      D.50999 = *D.50998;
      if (D.50999 == 0B) goto <D.51594>; else goto <D.51583>;
      <D.51594>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50997 = D.50934->data.op[1].many_blocks;
      D.50998 = D.50997 + 4;
      *D.50998 = falsebb;
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      goto <D.51585>;
      <D.51583>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      if (D.50934 == 0B) goto <D.51595>; else goto <D.51597>;
      <D.51597>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51598 = D.50934->opcode;
      D.51599 = D.51598 != 442;
      D.51600 = D.51598 != 759;
      D.51601 = D.51599 & D.51600;
      if (D.51601 != 0) goto <D.51602>; else goto <D.51596>;
      <D.51602>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.51603 = D.50934->opcode;
      D.51604 = D.51603 + 64985;
      D.51605 = D.51604 > 9;
      D.51606 = D.51603 + 64878;
      D.51607 = D.51606 > 9;
      D.51608 = D.51605 & D.51607;
      if (D.51608 != 0) goto <D.51609>; else goto <D.51596>;
      <D.51609>:
      D.50891 = cfg->cbb;
      D.50934 = D.50891->last_ins;
      D.50995 = D.50934->opcode;
      D.50996 = D.50995 + 64888;
      if (D.50996 > 9) goto <D.51595>; else goto <D.51596>;
      <D.51595>:
      D.50891 = cfg->cbb;
      mono_link_bblock (cfg, D.50891, falsebb);
      <D.51596>:
      <D.51585>:
      D.50891 = cfg->cbb;
      D.50891->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.51610>;
      <D.51577>:
      D.50891 = cfg->cbb;
      D.50891->extended = 1;
      <D.51610>:
      <D.51569>:
    }
    D.51611 = end_bb->cil_code;
    if (D.51611 != 0B) goto <D.51612>; else goto <D.51613>;
    <D.51612>:
    D.50975 = cfg->cil_offset_to_bb;
    D.51611 = end_bb->cil_code;
    D.51614 = (int) D.51611;
    D.50977 = cfg->cil_start;
    D.50978 = (int) D.50977;
    D.51615 = D.51614 - D.50978;
    D.51616 = (unsigned int) D.51615;
    D.51617 = D.51616 * 4;
    D.51618 = D.50975 + D.51617;
    *D.51618 = end_bb;
    <D.51613>:
    D.50983 = cfg->real_offset;
    end_bb->real_offset = D.50983;
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    if (D.50934 != 0B) goto <D.51622>; else goto <D.51619>;
    <D.51622>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.51623 = D.50934->opcode;
    D.51624 = D.51623 + 64985;
    D.51625 = D.51624 <= 9;
    D.51626 = D.51623 + 64878;
    D.51627 = D.51626 <= 9;
    D.51628 = D.51625 | D.51627;
    if (D.51628 != 0) goto <D.51620>; else goto <D.51629>;
    <D.51629>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.50995 = D.50934->opcode;
    D.50996 = D.50995 + 64888;
    if (D.50996 <= 9) goto <D.51620>; else goto <D.51619>;
    <D.51620>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.50997 = D.50934->data.op[1].many_blocks;
    D.50998 = D.50997 + 4;
    D.50999 = *D.50998;
    if (D.50999 == 0B) goto <D.51630>; else goto <D.51619>;
    <D.51630>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.50997 = D.50934->data.op[1].many_blocks;
    D.50998 = D.50997 + 4;
    *D.50998 = end_bb;
    D.50891 = cfg->cbb;
    mono_link_bblock (cfg, D.50891, end_bb);
    goto <D.51621>;
    <D.51619>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    if (D.50934 == 0B) goto <D.51631>; else goto <D.51633>;
    <D.51633>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.51634 = D.50934->opcode;
    D.51635 = D.51634 != 442;
    D.51636 = D.51634 != 759;
    D.51637 = D.51635 & D.51636;
    if (D.51637 != 0) goto <D.51638>; else goto <D.51632>;
    <D.51638>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.51639 = D.50934->opcode;
    D.51640 = D.51639 + 64985;
    D.51641 = D.51640 > 9;
    D.51642 = D.51639 + 64878;
    D.51643 = D.51642 > 9;
    D.51644 = D.51641 & D.51643;
    if (D.51644 != 0) goto <D.51645>; else goto <D.51632>;
    <D.51645>:
    D.50891 = cfg->cbb;
    D.50934 = D.50891->last_ins;
    D.50995 = D.50934->opcode;
    D.50996 = D.50995 + 64888;
    if (D.50996 > 9) goto <D.51631>; else goto <D.51632>;
    <D.51631>:
    D.50891 = cfg->cbb;
    mono_link_bblock (cfg, D.50891, end_bb);
    <D.51632>:
    <D.51621>:
    D.50891 = cfg->cbb;
    D.50891->next_bb = end_bb;
    cfg->cbb = end_bb;
    D.50891 = cfg->cbb;
    *out_cbb = D.50891;
    D.50898 = res;
    return D.50898;
  }
  <D.50940>:
  alloc = handle_alloc (cfg, klass, 1, context_used);
  if (alloc == 0B) goto <D.51646>; else goto <D.51647>;
  <D.51646>:
  D.50898 = 0B;
  return D.50898;
  <D.51647>:
  D.50916 = cfg->mempool;
  ins = mono_mempool_alloc (D.50916, 56);
  ins->data.op[1].const_val = 0;
  D.51157 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.51157;
  ins->prev = 0B;
  D.51158 = ins->prev;
  ins->next = D.51158;
  D.51159 = &klass->byval_arg;
  D.51648 = mono_type_to_store_membase (cfg, D.51159);
  D.51649 = (short unsigned int) D.51648;
  ins->opcode = D.51649;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.51162 = ins->sreg3;
  ins->sreg2 = D.51162;
  D.51163 = ins->sreg2;
  ins->sreg1 = D.51163;
  D.50927 = cfg->ip;
  ins->cil_code = D.50927;
  val.489 = val;
  D.51165 = val.489->dreg;
  ins->sreg1 = D.51165;
  D.51166 = alloc->dreg;
  ins->dreg = D.51166;
  ins->data.op[0].const_val = 8;
  D.51159 = &klass->byval_arg;
  type_to_eval_stack_type (cfg, D.51159, ins);
  D.51159 = &klass->byval_arg;
  D.51650 = mono_class_from_mono_type (D.51159);
  ins->klass = D.51650;
  D.50891 = cfg->cbb;
  D.50934 = D.50891->last_ins;
  if (D.50934 != 0B) goto <D.51651>; else goto <D.51652>;
  <D.51651>:
  D.50891 = cfg->cbb;
  D.50934 = D.50891->last_ins;
  D.50934->next = ins;
  D.50891 = cfg->cbb;
  D.50934 = D.50891->last_ins;
  ins->prev = D.50934;
  D.50891 = cfg->cbb;
  D.50891->last_ins = ins;
  goto <D.51653>;
  <D.51652>:
  D.50891 = cfg->cbb;
  D.50891 = cfg->cbb;
  D.50891->last_ins = ins;
  D.50934 = D.50891->last_ins;
  D.50891->code = D.50934;
  <D.51653>:
  D.50898 = alloc;
  return D.50898;
}


handle_unbox_nullable (struct MonoCompile * cfg, struct MonoInst * val, struct MonoClass * klass, int context_used)
{
  struct MonoMethod * D.51658;
  struct MonoInst * D.51659;
  struct MonoMethodSignature * D.51660;
  int pass_mrgctx.494;
  _Bool D.51662;
  long int D.51663;
  long int D.51664;
  int pass_vtable.495;
  struct MonoDomain * D.51670;
  struct MonoClass * D.51671;
  _Bool D.51672;
  long int D.51673;
  long int D.51674;
  struct MonoMemPool * D.51677;
  int D.51678;
  struct MonoInst * D.51679;
  guint16 iftmp.496;
  unsigned char D.51681;
  unsigned char D.51682;
  int D.51686;
  int D.51687;
  const unsigned char * D.51688;
  void * iftmp.497;
  unsigned int D.51693;
  int D.51694;
  struct MonoBasicBlock * D.51695;
  struct MonoInst * D.51696;
  struct MonoMethod * method;

  method = mono_class_get_method_from_name (klass, "Unbox", 1);
  if (context_used != 0) goto <D.51656>; else goto <D.51657>;
  <D.51656>:
  {
    struct MonoInst * rgctx;
    struct MonoInst * addr;

    addr = emit_get_rgctx_method (cfg, context_used, method, 6);
    D.51658 = cfg->current_method;
    rgctx = emit_get_rgctx (cfg, D.51658, context_used);
    D.51660 = mono_method_signature (method);
    D.51659 = mono_emit_calli (cfg, D.51660, &val, addr, 0B, rgctx);
    return D.51659;
  }
  <D.51657>:
  {
    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.494 = pass_mrgctx;
        D.51662 = pass_mrgctx.494 != 0;
        D.51663 = (long int) D.51662;
        D.51664 = __builtin_expect (D.51663, 0);
        if (D.51664 != 0) goto <D.51665>; else goto <D.51666>;
        <D.51665>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3578, "!pass_mrgctx");
        <D.51666>:
        pass_vtable.495 = pass_vtable;
        if (pass_vtable.495 != 0) goto <D.51668>; else goto <D.51669>;
        <D.51668>:
        {
          struct MonoVTable * vtable;

          D.51670 = cfg->domain;
          D.51671 = method->klass;
          vtable = mono_class_vtable (D.51670, D.51671);
          D.51672 = vtable == 0B;
          D.51673 = (long int) D.51672;
          D.51674 = __builtin_expect (D.51673, 0);
          if (D.51674 != 0) goto <D.51675>; else goto <D.51676>;
          <D.51675>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3583, "vtable");
          <D.51676>:
          D.51677 = cfg->mempool;
          rgctx_arg = mono_mempool_alloc (D.51677, 56);
          rgctx_arg->data.op[1].const_val = 0;
          D.51678 = rgctx_arg->data.op[1].const_val;
          rgctx_arg->data.op[0].const_val = D.51678;
          rgctx_arg->prev = 0B;
          D.51679 = rgctx_arg->prev;
          rgctx_arg->next = D.51679;
          D.51681 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.51682 = D.51681 & 64;
          if (D.51682 != 0) goto <D.51683>; else goto <D.51684>;
          <D.51683>:
          iftmp.496 = 732;
          goto <D.51685>;
          <D.51684>:
          iftmp.496 = 362;
          <D.51685>:
          rgctx_arg->opcode = iftmp.496;
          rgctx_arg->flags = 0;
          rgctx_arg->type = 0;
          rgctx_arg->dreg = -1;
          rgctx_arg->sreg3 = -1;
          D.51686 = rgctx_arg->sreg3;
          rgctx_arg->sreg2 = D.51686;
          D.51687 = rgctx_arg->sreg2;
          rgctx_arg->sreg1 = D.51687;
          D.51688 = cfg->ip;
          rgctx_arg->cil_code = D.51688;
          D.51681 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.51682 = D.51681 & 64;
          if (D.51682 != 0) goto <D.51690>; else goto <D.51691>;
          <D.51690>:
          iftmp.497 = vtable->klass;
          goto <D.51692>;
          <D.51691>:
          iftmp.497 = vtable;
          <D.51692>:
          rgctx_arg->data.op[0].p = iftmp.497;
          rgctx_arg->data.op[1].src = 14B;
          rgctx_arg->type = 3;
          D.51693 = alloc_dreg (cfg, 3);
          D.51694 = (int) D.51693;
          rgctx_arg->dreg = D.51694;
          D.51695 = cfg->cbb;
          D.51696 = D.51695->last_ins;
          if (D.51696 != 0B) goto <D.51697>; else goto <D.51698>;
          <D.51697>:
          D.51695 = cfg->cbb;
          D.51696 = D.51695->last_ins;
          D.51696->next = rgctx_arg;
          D.51695 = cfg->cbb;
          D.51696 = D.51695->last_ins;
          rgctx_arg->prev = D.51696;
          D.51695 = cfg->cbb;
          D.51695->last_ins = rgctx_arg;
          goto <D.51699>;
          <D.51698>:
          D.51695 = cfg->cbb;
          D.51695 = cfg->cbb;
          D.51695->last_ins = rgctx_arg;
          D.51696 = D.51695->last_ins;
          D.51695->code = D.51696;
          <D.51699>:
        }
        <D.51669>:
        D.51659 = mono_emit_method_call_full (cfg, method, 0B, 0, &val, 0B, 0B, rgctx_arg);
        return D.51659;
      }
    finally
      {
        pass_vtable = {CLOBBER};
        pass_mrgctx = {CLOBBER};
      }
  }
}


handle_unbox (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * * sp, int context_used)
{
  unsigned int D.51702;
  unsigned int D.51703;
  unsigned int D.51704;
  unsigned int D.51705;
  struct MonoInst * D.51706;
  int D.51707;
  unsigned char D.51710;
  unsigned char D.51711;
  struct MonoMemPool * D.51714;
  int D.51715;
  struct MonoInst * D.51716;
  int D.51717;
  int D.51718;
  const unsigned char * D.51719;
  struct MonoBasicBlock * D.51720;
  struct MonoInst * D.51721;
  int D.51725;
  struct MonoInst * D.51726;
  int D.51727;
  int D.51728;
  int D.51733;
  struct MonoInst * D.51734;
  int D.51735;
  int D.51736;
  unsigned char D.51737;
  int D.51741;
  struct MonoInst * D.51742;
  int D.51743;
  int D.51744;
  unsigned char D.51748;
  _Bool D.51749;
  long int D.51750;
  long int D.51751;
  int D.51754;
  struct MonoInst * D.51755;
  int D.51756;
  int D.51757;
  int D.51761;
  struct MonoInst * D.51762;
  int D.51763;
  int D.51764;
  int D.51768;
  struct MonoInst * D.51769;
  int D.51770;
  int D.51771;
  int D.51775;
  struct MonoInst * D.51776;
  int D.51777;
  int D.51778;
  struct MonoClass * D.51786;
  int D.51787;
  struct MonoInst * D.51788;
  int D.51789;
  int D.51790;
  int D.51791;
  int D.51795;
  struct MonoInst * D.51796;
  int D.51797;
  int D.51798;
  int D.51803;
  struct MonoInst * D.51804;
  int D.51805;
  int D.51806;
  unsigned int D.51807;
  int D.51808;
  struct MonoInst * D.51812;
  struct MonoInst * add;
  int obj_reg;
  int vtable_reg;
  int klass_reg;
  int eclass_reg;
  int rank_reg;

  D.51702 = alloc_dreg (cfg, 3);
  vtable_reg = (int) D.51702;
  D.51703 = alloc_dreg (cfg, 3);
  klass_reg = (int) D.51703;
  D.51704 = alloc_dreg (cfg, 3);
  eclass_reg = (int) D.51704;
  D.51705 = alloc_dreg (cfg, 1);
  rank_reg = (int) D.51705;
  D.51706 = *sp;
  obj_reg = D.51706->dreg;
  {
    struct MonoInst * inst;
    int __ins_flags;

    __ins_flags = 32;
    D.51707 = __ins_flags & 32;
    if (D.51707 != 0) goto <D.51708>; else goto <D.51709>;
    <D.51708>:
    D.51710 = BIT_FIELD_REF <*cfg, 8, 3424>;
    D.51711 = D.51710 & 64;
    if (D.51711 != 0) goto <D.51712>; else goto <D.51713>;
    <D.51712>:
    {
      struct MonoInst * inst;

      D.51714 = cfg->mempool;
      inst = mono_mempool_alloc (D.51714, 56);
      inst->data.op[1].const_val = 0;
      D.51715 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51715;
      inst->prev = 0B;
      D.51716 = inst->prev;
      inst->next = D.51716;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51717 = inst->sreg3;
      inst->sreg2 = D.51717;
      D.51718 = inst->sreg2;
      inst->sreg1 = D.51718;
      D.51719 = cfg->ip;
      inst->cil_code = D.51719;
      inst->dreg = -1;
      inst->sreg1 = obj_reg;
      inst->data.op[1].const_val = 0;
      D.51720 = cfg->cbb;
      D.51721 = D.51720->last_ins;
      if (D.51721 != 0B) goto <D.51722>; else goto <D.51723>;
      <D.51722>:
      D.51720 = cfg->cbb;
      D.51721 = D.51720->last_ins;
      D.51721->next = inst;
      D.51720 = cfg->cbb;
      D.51721 = D.51720->last_ins;
      inst->prev = D.51721;
      D.51720 = cfg->cbb;
      D.51720->last_ins = inst;
      goto <D.51724>;
      <D.51723>:
      D.51720 = cfg->cbb;
      D.51720 = cfg->cbb;
      D.51720->last_ins = inst;
      D.51721 = D.51720->last_ins;
      D.51720->code = D.51721;
      <D.51724>:
    }
    {
      struct MonoInst * inst;

      D.51714 = cfg->mempool;
      inst = mono_mempool_alloc (D.51714, 56);
      inst->data.op[1].const_val = 0;
      D.51725 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51725;
      inst->prev = 0B;
      D.51726 = inst->prev;
      inst->next = D.51726;
      inst->opcode = 451;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51727 = inst->sreg3;
      inst->sreg2 = D.51727;
      D.51728 = inst->sreg2;
      inst->sreg1 = D.51728;
      D.51719 = cfg->ip;
      inst->cil_code = D.51719;
      inst->data.op[1].p = "NullReferenceException";
      D.51720 = cfg->cbb;
      D.51721 = D.51720->last_ins;
      if (D.51721 != 0B) goto <D.51729>; else goto <D.51730>;
      <D.51729>:
      D.51720 = cfg->cbb;
      D.51721 = D.51720->last_ins;
      D.51721->next = inst;
      D.51720 = cfg->cbb;
      D.51721 = D.51720->last_ins;
      inst->prev = D.51721;
      D.51720 = cfg->cbb;
      D.51720->last_ins = inst;
      goto <D.51731>;
      <D.51730>:
      D.51720 = cfg->cbb;
      D.51720 = cfg->cbb;
      D.51720->last_ins = inst;
      D.51721 = D.51720->last_ins;
      D.51720->code = D.51721;
      <D.51731>:
    }
    goto <D.51732>;
    <D.51713>:
    <D.51732>:
    <D.51709>:
    D.51714 = cfg->mempool;
    inst = mono_mempool_alloc (D.51714, 56);
    inst->data.op[1].const_val = 0;
    D.51733 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51733;
    inst->prev = 0B;
    D.51734 = inst->prev;
    inst->next = D.51734;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51735 = inst->sreg3;
    inst->sreg2 = D.51735;
    D.51736 = inst->sreg2;
    inst->sreg1 = D.51736;
    D.51719 = cfg->ip;
    inst->cil_code = D.51719;
    inst->dreg = vtable_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    inst->type = 1;
    D.51737 = (unsigned char) __ins_flags;
    inst->flags = D.51737;
    D.51720 = cfg->cbb;
    D.51721 = D.51720->last_ins;
    if (D.51721 != 0B) goto <D.51738>; else goto <D.51739>;
    <D.51738>:
    D.51720 = cfg->cbb;
    D.51721 = D.51720->last_ins;
    D.51721->next = inst;
    D.51720 = cfg->cbb;
    D.51721 = D.51720->last_ins;
    inst->prev = D.51721;
    D.51720 = cfg->cbb;
    D.51720->last_ins = inst;
    goto <D.51740>;
    <D.51739>:
    D.51720 = cfg->cbb;
    D.51720 = cfg->cbb;
    D.51720->last_ins = inst;
    D.51721 = D.51720->last_ins;
    D.51720->code = D.51721;
    <D.51740>:
  }
  {
    struct MonoInst * inst;

    D.51714 = cfg->mempool;
    inst = mono_mempool_alloc (D.51714, 56);
    inst->data.op[1].const_val = 0;
    D.51741 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51741;
    inst->prev = 0B;
    D.51742 = inst->prev;
    inst->next = D.51742;
    inst->opcode = 390;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51743 = inst->sreg3;
    inst->sreg2 = D.51743;
    D.51744 = inst->sreg2;
    inst->sreg1 = D.51744;
    D.51719 = cfg->ip;
    inst->cil_code = D.51719;
    inst->dreg = rank_reg;
    inst->sreg1 = vtable_reg;
    inst->data.op[0].const_val = 22;
    D.51720 = cfg->cbb;
    D.51721 = D.51720->last_ins;
    if (D.51721 != 0B) goto <D.51745>; else goto <D.51746>;
    <D.51745>:
    D.51720 = cfg->cbb;
    D.51721 = D.51720->last_ins;
    D.51721->next = inst;
    D.51720 = cfg->cbb;
    D.51721 = D.51720->last_ins;
    inst->prev = D.51721;
    D.51720 = cfg->cbb;
    D.51720->last_ins = inst;
    goto <D.51747>;
    <D.51746>:
    D.51720 = cfg->cbb;
    D.51720 = cfg->cbb;
    D.51720->last_ins = inst;
    D.51721 = D.51720->last_ins;
    D.51720->code = D.51721;
    <D.51747>:
  }
  D.51748 = klass->rank;
  D.51749 = D.51748 != 0;
  D.51750 = (long int) D.51749;
  D.51751 = __builtin_expect (D.51750, 0);
  if (D.51751 != 0) goto <D.51752>; else goto <D.51753>;
  <D.51752>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3606, "klass->rank == 0");
  <D.51753>:
  {
    struct MonoInst * inst;

    D.51714 = cfg->mempool;
    inst = mono_mempool_alloc (D.51714, 56);
    inst->data.op[1].const_val = 0;
    D.51754 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51754;
    inst->prev = 0B;
    D.51755 = inst->prev;
    inst->next = D.51755;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51756 = inst->sreg3;
    inst->sreg2 = D.51756;
    D.51757 = inst->sreg2;
    inst->sreg1 = D.51757;
    D.51719 = cfg->ip;
    inst->cil_code = D.51719;
    inst->dreg = -1;
    inst->sreg1 = rank_reg;
    inst->data.op[1].const_val = 0;
    D.51720 = cfg->cbb;
    D.51721 = D.51720->last_ins;
    if (D.51721 != 0B) goto <D.51758>; else goto <D.51759>;
    <D.51758>:
    D.51720 = cfg->cbb;
    D.51721 = D.51720->last_ins;
    D.51721->next = inst;
    D.51720 = cfg->cbb;
    D.51721 = D.51720->last_ins;
    inst->prev = D.51721;
    D.51720 = cfg->cbb;
    D.51720->last_ins = inst;
    goto <D.51760>;
    <D.51759>:
    D.51720 = cfg->cbb;
    D.51720 = cfg->cbb;
    D.51720->last_ins = inst;
    D.51721 = D.51720->last_ins;
    D.51720->code = D.51721;
    <D.51760>:
  }
  {
    struct MonoInst * inst;

    D.51714 = cfg->mempool;
    inst = mono_mempool_alloc (D.51714, 56);
    inst->data.op[1].const_val = 0;
    D.51761 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51761;
    inst->prev = 0B;
    D.51762 = inst->prev;
    inst->next = D.51762;
    inst->opcode = 456;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51763 = inst->sreg3;
    inst->sreg2 = D.51763;
    D.51764 = inst->sreg2;
    inst->sreg1 = D.51764;
    D.51719 = cfg->ip;
    inst->cil_code = D.51719;
    inst->data.op[1].p = "InvalidCastException";
    D.51720 = cfg->cbb;
    D.51721 = D.51720->last_ins;
    if (D.51721 != 0B) goto <D.51765>; else goto <D.51766>;
    <D.51765>:
    D.51720 = cfg->cbb;
    D.51721 = D.51720->last_ins;
    D.51721->next = inst;
    D.51720 = cfg->cbb;
    D.51721 = D.51720->last_ins;
    inst->prev = D.51721;
    D.51720 = cfg->cbb;
    D.51720->last_ins = inst;
    goto <D.51767>;
    <D.51766>:
    D.51720 = cfg->cbb;
    D.51720 = cfg->cbb;
    D.51720->last_ins = inst;
    D.51721 = D.51720->last_ins;
    D.51720->code = D.51721;
    <D.51767>:
  }
  {
    struct MonoInst * inst;

    D.51714 = cfg->mempool;
    inst = mono_mempool_alloc (D.51714, 56);
    inst->data.op[1].const_val = 0;
    D.51768 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51768;
    inst->prev = 0B;
    D.51769 = inst->prev;
    inst->next = D.51769;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51770 = inst->sreg3;
    inst->sreg2 = D.51770;
    D.51771 = inst->sreg2;
    inst->sreg1 = D.51771;
    D.51719 = cfg->ip;
    inst->cil_code = D.51719;
    inst->dreg = klass_reg;
    inst->sreg1 = vtable_reg;
    inst->data.op[0].const_val = 0;
    D.51720 = cfg->cbb;
    D.51721 = D.51720->last_ins;
    if (D.51721 != 0B) goto <D.51772>; else goto <D.51773>;
    <D.51772>:
    D.51720 = cfg->cbb;
    D.51721 = D.51720->last_ins;
    D.51721->next = inst;
    D.51720 = cfg->cbb;
    D.51721 = D.51720->last_ins;
    inst->prev = D.51721;
    D.51720 = cfg->cbb;
    D.51720->last_ins = inst;
    goto <D.51774>;
    <D.51773>:
    D.51720 = cfg->cbb;
    D.51720 = cfg->cbb;
    D.51720->last_ins = inst;
    D.51721 = D.51720->last_ins;
    D.51720->code = D.51721;
    <D.51774>:
  }
  {
    struct MonoInst * inst;

    D.51714 = cfg->mempool;
    inst = mono_mempool_alloc (D.51714, 56);
    inst->data.op[1].const_val = 0;
    D.51775 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51775;
    inst->prev = 0B;
    D.51776 = inst->prev;
    inst->next = D.51776;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51777 = inst->sreg3;
    inst->sreg2 = D.51777;
    D.51778 = inst->sreg2;
    inst->sreg1 = D.51778;
    D.51719 = cfg->ip;
    inst->cil_code = D.51719;
    inst->dreg = eclass_reg;
    inst->sreg1 = klass_reg;
    inst->data.op[0].const_val = 0;
    D.51720 = cfg->cbb;
    D.51721 = D.51720->last_ins;
    if (D.51721 != 0B) goto <D.51779>; else goto <D.51780>;
    <D.51779>:
    D.51720 = cfg->cbb;
    D.51721 = D.51720->last_ins;
    D.51721->next = inst;
    D.51720 = cfg->cbb;
    D.51721 = D.51720->last_ins;
    inst->prev = D.51721;
    D.51720 = cfg->cbb;
    D.51720->last_ins = inst;
    goto <D.51781>;
    <D.51780>:
    D.51720 = cfg->cbb;
    D.51720 = cfg->cbb;
    D.51720->last_ins = inst;
    D.51721 = D.51720->last_ins;
    D.51720->code = D.51721;
    <D.51781>:
  }
  if (context_used != 0) goto <D.51782>; else goto <D.51783>;
  <D.51782>:
  {
    struct MonoInst * element_class;

    D.51748 = klass->rank;
    D.51749 = D.51748 != 0;
    D.51750 = (long int) D.51749;
    D.51751 = __builtin_expect (D.51750, 0);
    if (D.51751 != 0) goto <D.51784>; else goto <D.51785>;
    <D.51784>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3619, "klass->rank == 0");
    <D.51785>:
    D.51786 = klass->element_class;
    element_class = emit_get_rgctx_klass (cfg, context_used, D.51786, 1);
    {
      struct MonoInst * inst;

      D.51714 = cfg->mempool;
      inst = mono_mempool_alloc (D.51714, 56);
      inst->data.op[1].const_val = 0;
      D.51787 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51787;
      inst->prev = 0B;
      D.51788 = inst->prev;
      inst->next = D.51788;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51789 = inst->sreg3;
      inst->sreg2 = D.51789;
      D.51790 = inst->sreg2;
      inst->sreg1 = D.51790;
      D.51719 = cfg->ip;
      inst->cil_code = D.51719;
      inst->dreg = -1;
      inst->sreg1 = eclass_reg;
      D.51791 = element_class->dreg;
      inst->sreg2 = D.51791;
      D.51720 = cfg->cbb;
      D.51721 = D.51720->last_ins;
      if (D.51721 != 0B) goto <D.51792>; else goto <D.51793>;
      <D.51792>:
      D.51720 = cfg->cbb;
      D.51721 = D.51720->last_ins;
      D.51721->next = inst;
      D.51720 = cfg->cbb;
      D.51721 = D.51720->last_ins;
      inst->prev = D.51721;
      D.51720 = cfg->cbb;
      D.51720->last_ins = inst;
      goto <D.51794>;
      <D.51793>:
      D.51720 = cfg->cbb;
      D.51720 = cfg->cbb;
      D.51720->last_ins = inst;
      D.51721 = D.51720->last_ins;
      D.51720->code = D.51721;
      <D.51794>:
    }
    {
      struct MonoInst * inst;

      D.51714 = cfg->mempool;
      inst = mono_mempool_alloc (D.51714, 56);
      inst->data.op[1].const_val = 0;
      D.51795 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51795;
      inst->prev = 0B;
      D.51796 = inst->prev;
      inst->next = D.51796;
      inst->opcode = 456;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51797 = inst->sreg3;
      inst->sreg2 = D.51797;
      D.51798 = inst->sreg2;
      inst->sreg1 = D.51798;
      D.51719 = cfg->ip;
      inst->cil_code = D.51719;
      inst->data.op[1].p = "InvalidCastException";
      D.51720 = cfg->cbb;
      D.51721 = D.51720->last_ins;
      if (D.51721 != 0B) goto <D.51799>; else goto <D.51800>;
      <D.51799>:
      D.51720 = cfg->cbb;
      D.51721 = D.51720->last_ins;
      D.51721->next = inst;
      D.51720 = cfg->cbb;
      D.51721 = D.51720->last_ins;
      inst->prev = D.51721;
      D.51720 = cfg->cbb;
      D.51720->last_ins = inst;
      goto <D.51801>;
      <D.51800>:
      D.51720 = cfg->cbb;
      D.51720 = cfg->cbb;
      D.51720->last_ins = inst;
      D.51721 = D.51720->last_ins;
      D.51720->code = D.51721;
      <D.51801>:
    }
  }
  goto <D.51802>;
  <D.51783>:
  D.51786 = klass->element_class;
  save_cast_details (cfg, D.51786, obj_reg, 0, 0B);
  D.51786 = klass->element_class;
  mini_emit_class_check (cfg, eclass_reg, D.51786);
  reset_cast_details (cfg);
  <D.51802>:
  D.51714 = cfg->mempool;
  add = mono_mempool_alloc (D.51714, 56);
  add->data.op[1].const_val = 0;
  D.51803 = add->data.op[1].const_val;
  add->data.op[0].const_val = D.51803;
  add->prev = 0B;
  D.51804 = add->prev;
  add->next = D.51804;
  add->opcode = 429;
  add->flags = 0;
  add->type = 0;
  add->dreg = -1;
  add->sreg3 = -1;
  D.51805 = add->sreg3;
  add->sreg2 = D.51805;
  D.51806 = add->sreg2;
  add->sreg1 = D.51806;
  D.51719 = cfg->ip;
  add->cil_code = D.51719;
  D.51807 = alloc_dreg (cfg, 5);
  D.51808 = (int) D.51807;
  add->dreg = D.51808;
  add->sreg1 = obj_reg;
  add->data.op[1].const_val = 8;
  D.51720 = cfg->cbb;
  D.51721 = D.51720->last_ins;
  if (D.51721 != 0B) goto <D.51809>; else goto <D.51810>;
  <D.51809>:
  D.51720 = cfg->cbb;
  D.51721 = D.51720->last_ins;
  D.51721->next = add;
  D.51720 = cfg->cbb;
  D.51721 = D.51720->last_ins;
  add->prev = D.51721;
  D.51720 = cfg->cbb;
  D.51720->last_ins = add;
  goto <D.51811>;
  <D.51810>:
  D.51720 = cfg->cbb;
  D.51720 = cfg->cbb;
  D.51720->last_ins = add;
  D.51721 = D.51720->last_ins;
  D.51720->code = D.51721;
  <D.51811>:
  add->type = 5;
  add->klass = klass;
  D.51812 = add;
  return D.51812;
}


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.51814;
  struct MonoException * ex;

  D.51814 = get_original_method (caller);
  ex = mono_security_core_clr_is_field_access_allowed (D.51814, field);
  if (ex != 0B) goto <D.51815>; else goto <D.51816>;
  <D.51815>:
  emit_throw_exception (cfg, ex);
  <D.51816>:
}


get_original_method (struct MonoMethod * method)
{
  unsigned char D.51817;
  unsigned char D.51818;
  struct MonoMethod * D.51821;

  D.51817 = BIT_FIELD_REF <*method, 8, 160>;
  D.51818 = D.51817 & 124;
  if (D.51818 == 0) goto <D.51819>; else goto <D.51820>;
  <D.51819>:
  D.51821 = method;
  return D.51821;
  <D.51820>:
  D.51817 = BIT_FIELD_REF <*method, 8, 160>;
  D.51818 = D.51817 & 124;
  if (D.51818 == 20) goto <D.51822>; else goto <D.51823>;
  <D.51822>:
  D.51821 = 0B;
  return D.51821;
  <D.51823>:
  D.51821 = mono_marshal_method_from_wrapper (method);
  return D.51821;
}


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.51825;
  _Bool D.51826;
  long int D.51827;
  long int D.51828;
  int D.51833;
  int D.51836;
  struct MonoMethod * D.51839;
  int D.51840;
  unsigned int D.51843;
  char * D.51846;
  char * D.51847;
  unsigned char D.51848;
  unsigned char D.51849;
  int D.51852;
  int D.51853;
  struct MonoLoaderError * D.51857;
  _Bool D.51860;
  _Bool D.51861;
  _Bool D.51862;
  unsigned char D.51865;
  int D.51866;
  int D.51867;
  struct MonoType * D.51870;
  int D.51871;
  struct MonoMemPool * D.51874;
  short unsigned int D.51875;
  unsigned int D.51876;
  unsigned int D.51877;
  void * D.51878;
  struct MonoInst * * D.51879;
  unsigned int i.498;
  unsigned int D.51881;
  struct MonoInst * * D.51882;
  struct MonoType * D.51883;
  struct MonoInst * D.51884;
  int D.51885;
  unsigned int D.51886;
  unsigned int D.51887;
  unsigned int D.51888;
  int D.51889;
  unsigned int D.51890;
  unsigned int D.51891;
  int D.51892;
  unsigned int D.51893;
  unsigned int D.51894;
  int D.51895;
  unsigned int D.51896;
  unsigned int D.51897;
  int D.51898;
  <unnamed-unsigned:1> D.51899;
  unsigned char D.51900;
  short unsigned int D.51903;
  int D.51904;
  int D.51905;
  int prev_cil_offset_to_bb_len.499;
  unsigned char D.51909;
  <unnamed-unsigned:1> D.51910;
  unsigned int D.51911;
  unsigned int costs.500;
  _Bool D.51913;
  _Bool D.51914;
  char * D.51919;
  char * D.51920;
  int D.51921;
  int D.51922;
  int D.51923;
  struct MonoInst * D.51924;
  int D.51925;
  int D.51926;
  const unsigned char * D.51927;
  struct MonoInst * D.51928;
  short int D.51932;
  struct MonoBasicBlock * * D.51935;
  struct MonoBasicBlock * D.51936;
  short int D.51937;
  short int D.51944;
  struct MonoBasicBlock * * D.51946;
  struct MonoBasicBlock * D.51947;
  short int D.51948;
  struct MonoBasicBlock * * D.51958;
  struct MonoInst * D.51959;
  short unsigned int D.51962;
  int D.51965;
  int D.51966;
  struct MonoInst * * D.51971;
  int D.51972;
  unsigned int D.51973;
  unsigned int D.51974;
  struct MonoInst * * D.51975;
  struct MonoInst * D.51976;
  struct MonoType * D.51977;
  unsigned int D.51978;
  short unsigned int D.51979;
  struct MonoClass * D.51980;
  int D.51981;
  unsigned char D.51982;
  <unnamed type> D.51983;
  unsigned int D.51984;
  int D.51985;
  short unsigned int D.51986;
  struct MonoClass * D.51989;
  struct MonoBasicBlock * D.51990;
  struct MonoInst * D.51991;
  struct MonoInst * * sp.501;
  struct GSList * D.51996;
  struct GSList * D.51997;
  char * D.52000;
  struct GSList * D.52001;
  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.51825 = cfg->exception_type;
  D.51826 = D.51825 != 0;
  D.51827 = (long int) D.51826;
  D.51828 = __builtin_expect (D.51827, 0);
  if (D.51828 != 0) goto <D.51829>; else goto <D.51830>;
  <D.51829>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 5768, "cfg->exception_type == MONO_EXCEPTION_NONE");
  <D.51830>:
  if (inline_always == 0) goto <D.51831>; else goto <D.51832>;
  <D.51831>:
  D.51833 = check_inline_called_method_name_limit (cmethod);
  if (D.51833 == 0) goto <D.51834>; else goto <D.51835>;
  <D.51834>:
  D.51836 = 0;
  return D.51836;
  <D.51835>:
  <D.51832>:
  if (inline_always == 0) goto <D.51837>; else goto <D.51838>;
  <D.51837>:
  D.51839 = cfg->method;
  D.51840 = check_inline_caller_method_name_limit (D.51839);
  if (D.51840 == 0) goto <D.51841>; else goto <D.51842>;
  <D.51841>:
  D.51836 = 0;
  return D.51836;
  <D.51842>:
  <D.51838>:
  D.51843 = cfg->verbose_level;
  if (D.51843 > 2) goto <D.51844>; else goto <D.51845>;
  <D.51844>:
  D.51839 = cfg->method;
  D.51846 = mono_method_full_name (D.51839, 1);
  D.51847 = mono_method_full_name (cmethod, 1);
  printf ("INLINE START %p %s -> %s\n", cmethod, D.51846, D.51847);
  <D.51845>:
  D.51848 = BIT_FIELD_REF <*cmethod, 8, 160>;
  D.51849 = D.51848 & 1;
  if (D.51849 == 0) goto <D.51850>; else goto <D.51851>;
  <D.51850>:
  D.51852 = cfg->stat_inlineable_methods;
  D.51853 = D.51852 + 1;
  cfg->stat_inlineable_methods = D.51853;
  cmethod->inline_info = 1;
  <D.51851>:
  cheader = mono_method_get_header (cmethod);
  if (cheader == 0B) goto <D.51854>; else goto <D.51856>;
  <D.51856>:
  D.51857 = mono_loader_get_last_error ();
  if (D.51857 != 0B) goto <D.51854>; else goto <D.51855>;
  <D.51854>:
  {
    struct MonoLoaderError * error;

    error = mono_loader_get_last_error ();
    if (cheader != 0B) goto <D.51858>; else goto <D.51859>;
    <D.51858>:
    mono_metadata_free_mh (cheader);
    <D.51859>:
    D.51860 = inline_always != 0;
    D.51861 = error != 0B;
    D.51862 = D.51860 & D.51861;
    if (D.51862 != 0) goto <D.51863>; else goto <D.51864>;
    <D.51863>:
    D.51865 = error->exception_type;
    D.51866 = (int) D.51865;
    mono_cfg_set_exception (cfg, D.51866);
    <D.51864>:
    mono_loader_clear_error ();
    D.51836 = 0;
    return D.51836;
  }
  <D.51855>:
  D.51867 = mono_compile_is_broken (cfg, cmethod, 0);
  if (D.51867 != 0) goto <D.51868>; else goto <D.51869>;
  <D.51868>:
  mono_metadata_free_mh (cheader);
  D.51836 = 0;
  return D.51836;
  <D.51869>:
  D.51870 = fsig->ret;
  D.51871 = mono_type_is_void (D.51870);
  if (D.51871 == 0) goto <D.51872>; else goto <D.51873>;
  <D.51872>:
  D.51870 = fsig->ret;
  rvar = mono_compile_create_var (cfg, D.51870, 329);
  <D.51873>:
  prev_locals = cfg->locals;
  D.51874 = cfg->mempool;
  D.51875 = cheader->num_locals;
  D.51876 = (unsigned int) D.51875;
  D.51877 = D.51876 * 4;
  D.51878 = mono_mempool_alloc0 (D.51874, D.51877);
  cfg->locals = D.51878;
  i = 0;
  goto <D.29478>;
  <D.29477>:
  D.51879 = cfg->locals;
  i.498 = (unsigned int) i;
  D.51881 = i.498 * 4;
  D.51882 = D.51879 + D.51881;
  D.51883 = cheader->locals[i];
  D.51884 = mono_compile_create_var (cfg, D.51883, 329);
  *D.51882 = D.51884;
  i = i + 1;
  <D.29478>:
  D.51875 = cheader->num_locals;
  D.51885 = (int) D.51875;
  if (D.51885 > i) goto <D.29477>; else goto <D.29479>;
  <D.29479>:
  D.51874 = cfg->mempool;
  sbblock = mono_mempool_alloc0 (D.51874, 172);
  D.51886 = cfg->num_bblocks;
  D.51887 = D.51886;
  D.51888 = D.51887 + 1;
  cfg->num_bblocks = D.51888;
  D.51889 = (int) D.51887;
  sbblock->block_num = D.51889;
  sbblock->real_offset = real_offset;
  D.51874 = cfg->mempool;
  ebblock = mono_mempool_alloc0 (D.51874, 172);
  D.51886 = cfg->num_bblocks;
  D.51890 = D.51886;
  D.51891 = D.51890 + 1;
  cfg->num_bblocks = D.51891;
  D.51892 = (int) D.51890;
  ebblock->block_num = D.51892;
  D.51886 = cfg->num_bblocks;
  D.51893 = D.51886;
  D.51894 = D.51893 + 1;
  cfg->num_bblocks = D.51894;
  D.51895 = (int) D.51893;
  ebblock->block_num = D.51895;
  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.51896 = cfg->inline_depth;
  D.51897 = D.51896 + 1;
  cfg->inline_depth = D.51897;
  prev_real_offset = cfg->real_offset;
  prev_cbb_hash = cfg->cbb_hash;
  prev_cil_offset_to_bb = cfg->cil_offset_to_bb;
  D.51898 = cfg->cil_offset_to_bb_len;
  prev_cil_offset_to_bb_len = (guint32) D.51898;
  prev_cil_start = cfg->cil_start;
  prev_cbb = cfg->cbb;
  prev_current_method = cfg->current_method;
  prev_generic_context = cfg->generic_context;
  D.51899 = cfg->ret_var_set;
  prev_ret_var_set = (gboolean) D.51899;
  D.51900 = *ip;
  if (D.51900 == 111) goto <D.51901>; else goto <D.51902>;
  <D.51901>:
  D.51903 = cmethod->flags;
  D.51904 = (int) D.51903;
  D.51905 = D.51904 & 16;
  if (D.51905 == 0) goto <D.51906>; else goto <D.51907>;
  <D.51906>:
  virtual = 1;
  <D.51907>:
  <D.51902>:
  costs = mono_method_to_ir (cfg, cmethod, sbblock, ebblock, rvar, dont_inline, sp, real_offset, virtual);
  D.51899 = cfg->ret_var_set;
  ret_var_set = (gboolean) D.51899;
  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.499 = (int) prev_cil_offset_to_bb_len;
  cfg->cil_offset_to_bb_len = prev_cil_offset_to_bb_len.499;
  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.51909 = (unsigned char) prev_ret_var_set;
  D.51910 = (<unnamed-unsigned:1>) D.51909;
  cfg->ret_var_set = D.51910;
  D.51896 = cfg->inline_depth;
  D.51911 = D.51896 + 4294967295;
  cfg->inline_depth = D.51911;
  costs.500 = (unsigned int) costs;
  D.51913 = costs.500 <= 59;
  D.51860 = inline_always != 0;
  D.51914 = D.51913 | D.51860;
  if (D.51914 != 0) goto <D.51915>; else goto <D.51916>;
  <D.51915>:
  D.51843 = cfg->verbose_level;
  if (D.51843 > 2) goto <D.51917>; else goto <D.51918>;
  <D.51917>:
  D.51839 = cfg->method;
  D.51919 = mono_method_full_name (D.51839, 1);
  D.51920 = mono_method_full_name (cmethod, 1);
  printf ("INLINE END %s -> %s\n", D.51919, D.51920);
  <D.51918>:
  D.51921 = cfg->stat_inlined_methods;
  D.51922 = D.51921 + 1;
  cfg->stat_inlined_methods = D.51922;
  D.51874 = cfg->mempool;
  ins = mono_mempool_alloc (D.51874, 56);
  ins->data.op[1].const_val = 0;
  D.51923 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.51923;
  ins->prev = 0B;
  D.51924 = ins->prev;
  ins->next = D.51924;
  ins->opcode = 316;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.51925 = ins->sreg3;
  ins->sreg2 = D.51925;
  D.51926 = ins->sreg2;
  ins->sreg1 = D.51926;
  D.51927 = cfg->ip;
  ins->cil_code = D.51927;
  D.51928 = prev_cbb->last_ins;
  if (D.51928 != 0B) goto <D.51929>; else goto <D.51930>;
  <D.51929>:
  D.51928 = prev_cbb->last_ins;
  D.51928->next = ins;
  D.51928 = prev_cbb->last_ins;
  ins->prev = D.51928;
  prev_cbb->last_ins = ins;
  goto <D.51931>;
  <D.51930>:
  prev_cbb->last_ins = ins;
  D.51928 = prev_cbb->last_ins;
  prev_cbb->code = D.51928;
  <D.51931>:
  prev_cbb->next_bb = sbblock;
  link_bblock (cfg, prev_cbb, sbblock);
  mono_merge_basic_blocks (cfg, prev_cbb, sbblock);
  D.51932 = prev_cbb->out_count;
  if (D.51932 == 1) goto <D.51933>; else goto <D.51934>;
  <D.51933>:
  D.51935 = prev_cbb->out_bb;
  D.51936 = *D.51935;
  D.51937 = D.51936->in_count;
  if (D.51937 == 1) goto <D.51938>; else goto <D.51939>;
  <D.51938>:
  D.51935 = prev_cbb->out_bb;
  D.51936 = *D.51935;
  if (D.51936 != ebblock) goto <D.51940>; else goto <D.51941>;
  <D.51940>:
  D.51935 = prev_cbb->out_bb;
  D.51936 = *D.51935;
  mono_merge_basic_blocks (cfg, prev_cbb, D.51936);
  <D.51941>:
  <D.51939>:
  <D.51934>:
  D.51944 = ebblock->in_count;
  if (D.51944 == 1) goto <D.51945>; else goto <D.51942>;
  <D.51945>:
  D.51946 = ebblock->in_bb;
  D.51947 = *D.51946;
  D.51948 = D.51947->out_count;
  if (D.51948 == 1) goto <D.51949>; else goto <D.51942>;
  <D.51949>:
  {
    struct MonoBasicBlock * prev;

    D.51946 = ebblock->in_bb;
    prev = *D.51946;
    mono_merge_basic_blocks (cfg, prev, ebblock);
    cfg->cbb = prev;
    D.51932 = prev_cbb->out_count;
    if (D.51932 == 1) goto <D.51950>; else goto <D.51951>;
    <D.51950>:
    D.51935 = prev_cbb->out_bb;
    D.51936 = *D.51935;
    D.51937 = D.51936->in_count;
    if (D.51937 == 1) goto <D.51952>; else goto <D.51953>;
    <D.51952>:
    D.51935 = prev_cbb->out_bb;
    D.51936 = *D.51935;
    if (D.51936 == prev) goto <D.51954>; else goto <D.51955>;
    <D.51954>:
    mono_merge_basic_blocks (cfg, prev_cbb, prev);
    cfg->cbb = prev_cbb;
    <D.51955>:
    <D.51953>:
    <D.51951>:
  }
  goto <D.51943>;
  <D.51942>:
  if (rvar != 0B) goto <D.51956>; else goto <D.51957>;
  <D.51956>:
  {
    struct MonoBasicBlock * bb;

    i = 0;
    goto <D.29483>;
    <D.29482>:
    D.51946 = ebblock->in_bb;
    i.498 = (unsigned int) i;
    D.51881 = i.498 * 4;
    D.51958 = D.51946 + D.51881;
    bb = *D.51958;
    D.51959 = bb->last_ins;
    if (D.51959 != 0B) goto <D.51960>; else goto <D.51961>;
    <D.51960>:
    D.51959 = bb->last_ins;
    D.51962 = D.51959->opcode;
    if (D.51962 == 798) goto <D.51963>; else goto <D.51964>;
    <D.51963>:
    cfg->cbb = bb;
    D.51965 = rvar->dreg;
    D.51870 = fsig->ret;
    emit_init_rvar (cfg, D.51965, D.51870);
    <D.51964>:
    <D.51961>:
    i = i + 1;
    <D.29483>:
    D.51944 = ebblock->in_count;
    D.51966 = (int) D.51944;
    if (D.51966 > i) goto <D.29482>; else goto <D.29484>;
    <D.29484>:
  }
  <D.51957>:
  cfg->cbb = ebblock;
  <D.51943>:
  if (rvar != 0B) goto <D.51967>; else goto <D.51968>;
  <D.51967>:
  if (ret_var_set == 0) goto <D.51969>; else goto <D.51970>;
  <D.51969>:
  D.51965 = rvar->dreg;
  D.51870 = fsig->ret;
  emit_init_rvar (cfg, D.51965, D.51870);
  <D.51970>:
  D.51874 = cfg->mempool;
  ins = mono_mempool_alloc (D.51874, 56);
  ins->data.op[1].const_val = 0;
  D.51923 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.51923;
  ins->prev = 0B;
  D.51924 = ins->prev;
  ins->next = D.51924;
  ins->opcode = 424;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.51925 = ins->sreg3;
  ins->sreg2 = D.51925;
  D.51926 = ins->sreg2;
  ins->sreg1 = D.51926;
  D.51927 = cfg->ip;
  ins->cil_code = D.51927;
  D.51971 = cfg->varinfo;
  D.51972 = rvar->data.op[0].const_val;
  D.51973 = (unsigned int) D.51972;
  D.51974 = D.51973 * 4;
  D.51975 = D.51971 + D.51974;
  D.51976 = *D.51975;
  D.51977 = D.51976->data.op[1].vtype;
  D.51978 = mono_type_to_regmove (cfg, D.51977);
  D.51979 = (short unsigned int) D.51978;
  ins->opcode = D.51979;
  D.51971 = cfg->varinfo;
  D.51972 = rvar->data.op[0].const_val;
  D.51973 = (unsigned int) D.51972;
  D.51974 = D.51973 * 4;
  D.51975 = D.51971 + D.51974;
  D.51976 = *D.51975;
  D.51977 = D.51976->data.op[1].vtype;
  type_to_eval_stack_type (cfg, D.51977, ins);
  D.51971 = cfg->varinfo;
  D.51972 = rvar->data.op[0].const_val;
  D.51973 = (unsigned int) D.51972;
  D.51974 = D.51973 * 4;
  D.51975 = D.51971 + D.51974;
  D.51976 = *D.51975;
  D.51980 = D.51976->klass;
  ins->klass = D.51980;
  D.51971 = cfg->varinfo;
  D.51972 = rvar->data.op[0].const_val;
  D.51973 = (unsigned int) D.51972;
  D.51974 = D.51973 * 4;
  D.51975 = D.51971 + D.51974;
  D.51976 = *D.51975;
  D.51981 = D.51976->dreg;
  ins->sreg1 = D.51981;
  D.51982 = ins->type;
  D.51983 = (<unnamed type>) D.51982;
  D.51984 = alloc_dreg (cfg, D.51983);
  D.51985 = (int) D.51984;
  ins->dreg = D.51985;
  D.51986 = ins->opcode;
  if (D.51986 == 427) goto <D.51987>; else goto <D.51988>;
  <D.51987>:
  D.51971 = cfg->varinfo;
  D.51972 = rvar->data.op[0].const_val;
  D.51973 = (unsigned int) D.51972;
  D.51974 = D.51973 * 4;
  D.51975 = D.51971 + D.51974;
  D.51976 = *D.51975;
  D.51977 = D.51976->data.op[1].vtype;
  D.51989 = mono_class_from_mono_type (D.51977);
  ins->klass = D.51989;
  <D.51988>:
  D.51990 = cfg->cbb;
  D.51991 = D.51990->last_ins;
  if (D.51991 != 0B) goto <D.51992>; else goto <D.51993>;
  <D.51992>:
  D.51990 = cfg->cbb;
  D.51991 = D.51990->last_ins;
  D.51991->next = ins;
  D.51990 = cfg->cbb;
  D.51991 = D.51990->last_ins;
  ins->prev = D.51991;
  D.51990 = cfg->cbb;
  D.51990->last_ins = ins;
  goto <D.51994>;
  <D.51993>:
  D.51990 = cfg->cbb;
  D.51990 = cfg->cbb;
  D.51990->last_ins = ins;
  D.51991 = D.51990->last_ins;
  D.51990->code = D.51991;
  <D.51994>:
  sp.501 = sp;
  sp = sp.501 + 4;
  *sp.501 = ins;
  <D.51968>:
  D.51874 = cfg->mempool;
  D.51996 = cfg->headers_to_free;
  D.51997 = g_slist_prepend_mempool (D.51874, D.51996, cheader);
  cfg->headers_to_free = D.51997;
  D.51836 = costs + 1;
  return D.51836;
  <D.51916>:
  D.51843 = cfg->verbose_level;
  if (D.51843 > 2) goto <D.51998>; else goto <D.51999>;
  <D.51998>:
  D.52000 = mono_method_full_name (cmethod, 1);
  printf ("INLINE ABORTED %s (cost %d)\n", D.52000, costs);
  <D.51999>:
  cfg->exception_type = 0;
  mono_loader_clear_error ();
  cfg->cbb = prev_cbb;
  D.51874 = cfg->mempool;
  D.51996 = cfg->headers_to_free;
  D.52001 = g_slist_prepend_mempool (D.51874, D.51996, cheader);
  cfg->headers_to_free = D.52001;
  D.51836 = 0;
  return D.51836;
}


check_inline_called_method_name_limit (struct MonoMethod * called_method)
{
  const char * limit.502;
  char D.52009;
  unsigned int D.52012;
  gboolean D.52013;
  _Bool D.52014;
  int strncmp_result;
  static const char * limit = 0B;

  limit.502 = limit;
  if (limit.502 == 0B) goto <D.52004>; else goto <D.52005>;
  <D.52004>:
  {
    const char * limit_string;

    limit_string = monoeg_g_getenv ("MONO_INLINE_CALLED_METHOD_NAME_LIMIT");
    if (limit_string != 0B) goto <D.52006>; else goto <D.52007>;
    <D.52006>:
    limit = limit_string;
    goto <D.52008>;
    <D.52007>:
    limit = "";
    <D.52008>:
  }
  <D.52005>:
  limit.502 = limit;
  D.52009 = *limit.502;
  if (D.52009 != 0) goto <D.52010>; else goto <D.52011>;
  <D.52010>:
  {
    char * called_method_name;

    called_method_name = mono_method_full_name (called_method, 1);
    limit.502 = limit;
    limit.502 = limit;
    D.52012 = strlen (limit.502);
    strncmp_result = strncmp (called_method_name, limit.502, D.52012);
    monoeg_g_free (called_method_name);
    D.52014 = strncmp_result == 0;
    D.52013 = (gboolean) D.52014;
    return D.52013;
  }
  <D.52011>:
  D.52013 = 1;
  return D.52013;
}


check_inline_caller_method_name_limit (struct MonoMethod * caller_method)
{
  const char * limit.503;
  char D.52022;
  unsigned int D.52025;
  gboolean D.52026;
  _Bool D.52027;
  int strncmp_result;
  static const char * limit = 0B;

  limit.503 = limit;
  if (limit.503 == 0B) goto <D.52017>; else goto <D.52018>;
  <D.52017>:
  {
    const char * limit_string;

    limit_string = monoeg_g_getenv ("MONO_INLINE_CALLER_METHOD_NAME_LIMIT");
    if (limit_string != 0B) goto <D.52019>; else goto <D.52020>;
    <D.52019>:
    limit = limit_string;
    goto <D.52021>;
    <D.52020>:
    limit = "";
    <D.52021>:
  }
  <D.52018>:
  limit.503 = limit;
  D.52022 = *limit.503;
  if (D.52022 != 0) goto <D.52023>; else goto <D.52024>;
  <D.52023>:
  {
    char * caller_method_name;

    caller_method_name = mono_method_full_name (caller_method, 1);
    limit.503 = limit;
    limit.503 = limit;
    D.52025 = strlen (limit.503);
    strncmp_result = strncmp (caller_method_name, limit.503, D.52025);
    monoeg_g_free (caller_method_name);
    D.52027 = strncmp_result == 0;
    D.52026 = (gboolean) D.52027;
    return D.52026;
  }
  <D.52024>:
  D.52026 = 1;
  return D.52026;
}


is_magic_tls_access (struct MonoClassField * field)
{
  int D.29731;
  int iftmp.504;
  int D.29730;
  const char[8] * D.52032;
  unsigned char D.52033;
  int D.52034;
  unsigned char D.52035;
  int D.52036;
  _Bool D.52037;
  _Bool D.52038;
  _Bool D.52039;
  const unsigned char * D.52042;
  unsigned char D.52043;
  int D.52044;
  const unsigned char * D.52045;
  unsigned char D.52046;
  int D.52047;
  _Bool D.52048;
  _Bool D.52049;
  const unsigned char * D.52052;
  unsigned char D.52053;
  int D.52054;
  const unsigned char * D.52055;
  unsigned char D.52056;
  int D.52057;
  _Bool D.52058;
  _Bool D.52059;
  const unsigned char * D.52062;
  unsigned char D.52063;
  int D.52064;
  const unsigned char * D.52065;
  unsigned char D.52066;
  int D.52067;
  const char * D.52069;
  gboolean D.52072;
  int D.29740;
  int iftmp.505;
  int D.29739;
  struct MonoClass * D.52076;
  const char[14] * D.52077;
  unsigned char D.52078;
  int D.52079;
  unsigned char D.52080;
  int D.52081;
  _Bool D.52082;
  _Bool D.52083;
  _Bool D.52084;
  const unsigned char * D.52087;
  unsigned char D.52088;
  int D.52089;
  const unsigned char * D.52090;
  unsigned char D.52091;
  int D.52092;
  _Bool D.52093;
  _Bool D.52094;
  const unsigned char * D.52097;
  unsigned char D.52098;
  int D.52099;
  const unsigned char * D.52100;
  unsigned char D.52101;
  int D.52102;
  _Bool D.52103;
  _Bool D.52104;
  const unsigned char * D.52107;
  unsigned char D.52108;
  int D.52109;
  const unsigned char * D.52110;
  unsigned char D.52111;
  int D.52112;
  const char * D.52114;
  struct MonoImage * D.52117;
  struct MonoImage * D.52118;
  _Bool D.52119;

  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = field->name;
      D.52032 = "tlsdata";
      D.52033 = MEM[(const unsigned char *)D.52032];
      D.52034 = (int) D.52033;
      D.52035 = *__s2;
      D.52036 = (int) D.52035;
      __result = D.52034 - D.52036;
      {
        D.52037 = __s2_len != 0;
        D.52038 = __result == 0;
        D.52039 = D.52037 & D.52038;
        if (D.52039 != 0) goto <D.52040>; else goto <D.52041>;
        <D.52040>:
        D.52042 = &MEM[(void *)"tlsdata" + 1B];
        D.52043 = *D.52042;
        D.52044 = (int) D.52043;
        D.52045 = __s2 + 1;
        D.52046 = *D.52045;
        D.52047 = (int) D.52046;
        __result = D.52044 - D.52047;
        D.52048 = __s2_len > 1;
        D.52038 = __result == 0;
        D.52049 = D.52048 & D.52038;
        if (D.52049 != 0) goto <D.52050>; else goto <D.52051>;
        <D.52050>:
        D.52052 = &MEM[(void *)"tlsdata" + 2B];
        D.52053 = *D.52052;
        D.52054 = (int) D.52053;
        D.52055 = __s2 + 2;
        D.52056 = *D.52055;
        D.52057 = (int) D.52056;
        __result = D.52054 - D.52057;
        D.52058 = __s2_len > 2;
        D.52038 = __result == 0;
        D.52059 = D.52058 & D.52038;
        if (D.52059 != 0) goto <D.52060>; else goto <D.52061>;
        <D.52060>:
        D.52062 = &MEM[(void *)"tlsdata" + 3B];
        D.52063 = *D.52062;
        D.52064 = (int) D.52063;
        D.52065 = __s2 + 3;
        D.52066 = *D.52065;
        D.52067 = (int) D.52066;
        __result = D.52064 - D.52067;
        <D.52061>:
        <D.52051>:
        <D.52041>:
      }
      D.29730 = __result;
    }
    iftmp.504 = -D.29730;
    goto <D.52068>;
    <D.52031>:
    D.52069 = field->name;
    iftmp.504 = __builtin_strcmp (D.52069, "tlsdata");
    <D.52068>:
    D.29731 = iftmp.504;
  }
  if (D.29731 != 0) goto <D.52070>; else goto <D.52071>;
  <D.52070>:
  D.52072 = 0;
  return D.52072;
  <D.52071>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.52076 = field->parent;
      __s2 = D.52076->name;
      D.52077 = "ThreadLocal`1";
      D.52078 = MEM[(const unsigned char *)D.52077];
      D.52079 = (int) D.52078;
      D.52080 = *__s2;
      D.52081 = (int) D.52080;
      __result = D.52079 - D.52081;
      {
        D.52082 = __s2_len != 0;
        D.52083 = __result == 0;
        D.52084 = D.52082 & D.52083;
        if (D.52084 != 0) goto <D.52085>; else goto <D.52086>;
        <D.52085>:
        D.52087 = &MEM[(void *)"ThreadLocal`1" + 1B];
        D.52088 = *D.52087;
        D.52089 = (int) D.52088;
        D.52090 = __s2 + 1;
        D.52091 = *D.52090;
        D.52092 = (int) D.52091;
        __result = D.52089 - D.52092;
        D.52093 = __s2_len > 1;
        D.52083 = __result == 0;
        D.52094 = D.52093 & D.52083;
        if (D.52094 != 0) goto <D.52095>; else goto <D.52096>;
        <D.52095>:
        D.52097 = &MEM[(void *)"ThreadLocal`1" + 2B];
        D.52098 = *D.52097;
        D.52099 = (int) D.52098;
        D.52100 = __s2 + 2;
        D.52101 = *D.52100;
        D.52102 = (int) D.52101;
        __result = D.52099 - D.52102;
        D.52103 = __s2_len > 2;
        D.52083 = __result == 0;
        D.52104 = D.52103 & D.52083;
        if (D.52104 != 0) goto <D.52105>; else goto <D.52106>;
        <D.52105>:
        D.52107 = &MEM[(void *)"ThreadLocal`1" + 3B];
        D.52108 = *D.52107;
        D.52109 = (int) D.52108;
        D.52110 = __s2 + 3;
        D.52111 = *D.52110;
        D.52112 = (int) D.52111;
        __result = D.52109 - D.52112;
        <D.52106>:
        <D.52096>:
        <D.52086>:
      }
      D.29739 = __result;
    }
    iftmp.505 = -D.29739;
    goto <D.52113>;
    <D.52075>:
    D.52076 = field->parent;
    D.52114 = D.52076->name;
    iftmp.505 = __builtin_strcmp (D.52114, "ThreadLocal`1");
    <D.52113>:
    D.29740 = iftmp.505;
  }
  if (D.29740 != 0) goto <D.52115>; else goto <D.52116>;
  <D.52115>:
  D.52072 = 0;
  return D.52072;
  <D.52116>:
  D.52076 = field->parent;
  D.52117 = D.52076->image;
  D.52118 = mono_defaults.corlib;
  D.52119 = D.52117 == D.52118;
  D.52072 = (gboolean) D.52119;
  return D.52072;
}


create_magic_tls_access (struct MonoCompile * cfg, struct MonoClassField * tls_field, struct MonoInst * * cached_tls_addr, struct MonoInst * thread_local)
{
  struct MonoInst * D.52121;
  struct MonoMemPool * D.52124;
  int D.52125;
  struct MonoInst * D.52126;
  int D.52127;
  int D.52128;
  const unsigned char * D.52129;
  struct MonoInst * * D.52130;
  int D.52131;
  unsigned int D.52132;
  unsigned int D.52133;
  struct MonoInst * * D.52134;
  struct MonoInst * D.52135;
  struct MonoType * D.52136;
  unsigned int D.52137;
  short unsigned int D.52138;
  struct MonoClass * D.52139;
  int D.52140;
  unsigned char D.52141;
  <unnamed type> D.52142;
  unsigned int D.52143;
  int D.52144;
  short unsigned int D.52145;
  struct MonoClass * D.52148;
  struct MonoBasicBlock * D.52149;
  struct MonoInst * D.52150;
  struct MonoInst * D.52154;
  struct MonoClass * D.52155;
  int D.52156;
  struct MonoInst * D.52157;
  struct MonoType * D.52158;
  unsigned int D.52159;
  short unsigned int D.52160;
  int D.52161;
  int D.52162;
  int D.52163;
  int D.52164;
  unsigned char D.52165;
  <unnamed type> D.52166;
  unsigned int D.52167;
  int D.52168;
  struct MonoClass * D.52178;
  int D.52179;
  struct MonoType * D.52180;
  struct MonoClass * D.52181;
  struct MonoType * D.52182;
  int D.52183;
  struct MonoInst * D.52184;
  int D.52185;
  int D.52186;
  int D.52187;
  unsigned int D.52188;
  unsigned int D.52189;
  struct MonoInst * * D.52190;
  struct MonoInst * D.52191;
  struct MonoType * D.52192;
  unsigned int D.52193;
  short unsigned int D.52194;
  struct MonoClass * D.52195;
  int D.52196;
  int D.52197;
  short unsigned int D.52198;
  struct MonoClass * D.52201;
  unsigned int D.52205;
  short unsigned int D.52206;
  unsigned int D.52207;
  int D.52208;
  struct MonoClass * D.52211;
  struct MonoInst * load;
  struct MonoInst * addr;
  struct MonoInst * temp;
  struct MonoInst * store;
  struct MonoInst * thread_ins;
  struct MonoClassField * offset_field;

  D.52121 = *cached_tls_addr;
  if (D.52121 != 0B) goto <D.52122>; else goto <D.52123>;
  <D.52122>:
  D.52124 = cfg->mempool;
  addr = mono_mempool_alloc (D.52124, 56);
  addr->data.op[1].const_val = 0;
  D.52125 = addr->data.op[1].const_val;
  addr->data.op[0].const_val = D.52125;
  addr->prev = 0B;
  D.52126 = addr->prev;
  addr->next = D.52126;
  addr->opcode = 424;
  addr->flags = 0;
  addr->type = 0;
  addr->dreg = -1;
  addr->sreg3 = -1;
  D.52127 = addr->sreg3;
  addr->sreg2 = D.52127;
  D.52128 = addr->sreg2;
  addr->sreg1 = D.52128;
  D.52129 = cfg->ip;
  addr->cil_code = D.52129;
  D.52130 = cfg->varinfo;
  D.52121 = *cached_tls_addr;
  D.52131 = D.52121->data.op[0].const_val;
  D.52132 = (unsigned int) D.52131;
  D.52133 = D.52132 * 4;
  D.52134 = D.52130 + D.52133;
  D.52135 = *D.52134;
  D.52136 = D.52135->data.op[1].vtype;
  D.52137 = mono_type_to_regmove (cfg, D.52136);
  D.52138 = (short unsigned int) D.52137;
  addr->opcode = D.52138;
  D.52130 = cfg->varinfo;
  D.52121 = *cached_tls_addr;
  D.52131 = D.52121->data.op[0].const_val;
  D.52132 = (unsigned int) D.52131;
  D.52133 = D.52132 * 4;
  D.52134 = D.52130 + D.52133;
  D.52135 = *D.52134;
  D.52136 = D.52135->data.op[1].vtype;
  type_to_eval_stack_type (cfg, D.52136, addr);
  D.52130 = cfg->varinfo;
  D.52121 = *cached_tls_addr;
  D.52131 = D.52121->data.op[0].const_val;
  D.52132 = (unsigned int) D.52131;
  D.52133 = D.52132 * 4;
  D.52134 = D.52130 + D.52133;
  D.52135 = *D.52134;
  D.52139 = D.52135->klass;
  addr->klass = D.52139;
  D.52130 = cfg->varinfo;
  D.52121 = *cached_tls_addr;
  D.52131 = D.52121->data.op[0].const_val;
  D.52132 = (unsigned int) D.52131;
  D.52133 = D.52132 * 4;
  D.52134 = D.52130 + D.52133;
  D.52135 = *D.52134;
  D.52140 = D.52135->dreg;
  addr->sreg1 = D.52140;
  D.52141 = addr->type;
  D.52142 = (<unnamed type>) D.52141;
  D.52143 = alloc_dreg (cfg, D.52142);
  D.52144 = (int) D.52143;
  addr->dreg = D.52144;
  D.52145 = addr->opcode;
  if (D.52145 == 427) goto <D.52146>; else goto <D.52147>;
  <D.52146>:
  D.52130 = cfg->varinfo;
  D.52121 = *cached_tls_addr;
  D.52131 = D.52121->data.op[0].const_val;
  D.52132 = (unsigned int) D.52131;
  D.52133 = D.52132 * 4;
  D.52134 = D.52130 + D.52133;
  D.52135 = *D.52134;
  D.52136 = D.52135->data.op[1].vtype;
  D.52148 = mono_class_from_mono_type (D.52136);
  addr->klass = D.52148;
  <D.52147>:
  D.52149 = cfg->cbb;
  D.52150 = D.52149->last_ins;
  if (D.52150 != 0B) goto <D.52151>; else goto <D.52152>;
  <D.52151>:
  D.52149 = cfg->cbb;
  D.52150 = D.52149->last_ins;
  D.52150->next = addr;
  D.52149 = cfg->cbb;
  D.52150 = D.52149->last_ins;
  addr->prev = D.52150;
  D.52149 = cfg->cbb;
  D.52149->last_ins = addr;
  goto <D.52153>;
  <D.52152>:
  D.52149 = cfg->cbb;
  D.52149 = cfg->cbb;
  D.52149->last_ins = addr;
  D.52150 = D.52149->last_ins;
  D.52149->code = D.52150;
  <D.52153>:
  D.52154 = addr;
  return D.52154;
  <D.52123>:
  thread_ins = mono_get_thread_intrinsic (cfg);
  D.52155 = tls_field->parent;
  offset_field = mono_class_get_field_from_name (D.52155, "tls_offset");
  D.52124 = cfg->mempool;
  load = mono_mempool_alloc (D.52124, 56);
  load->data.op[1].const_val = 0;
  D.52156 = load->data.op[1].const_val;
  load->data.op[0].const_val = D.52156;
  load->prev = 0B;
  D.52157 = load->prev;
  load->next = D.52157;
  D.52158 = offset_field->type;
  D.52159 = mono_type_to_load_membase (cfg, D.52158);
  D.52160 = (short unsigned int) D.52159;
  load->opcode = D.52160;
  load->flags = 0;
  load->type = 0;
  load->dreg = -1;
  load->sreg3 = -1;
  D.52161 = load->sreg3;
  load->sreg2 = D.52161;
  D.52162 = load->sreg2;
  load->sreg1 = D.52162;
  D.52129 = cfg->ip;
  load->cil_code = D.52129;
  load->dreg = 0;
  D.52163 = thread_local->dreg;
  load->sreg1 = D.52163;
  D.52164 = offset_field->offset;
  load->data.op[0].const_val = D.52164;
  load->type = 1;
  D.52158 = offset_field->type;
  type_to_eval_stack_type (cfg, D.52158, load);
  D.52165 = load->type;
  D.52166 = (<unnamed type>) D.52165;
  D.52167 = alloc_dreg (cfg, D.52166);
  D.52168 = (int) D.52167;
  load->dreg = D.52168;
  D.52149 = cfg->cbb;
  D.52150 = D.52149->last_ins;
  if (D.52150 != 0B) goto <D.52169>; else goto <D.52170>;
  <D.52169>:
  D.52149 = cfg->cbb;
  D.52150 = D.52149->last_ins;
  D.52150->next = load;
  D.52149 = cfg->cbb;
  D.52150 = D.52149->last_ins;
  load->prev = D.52150;
  D.52149 = cfg->cbb;
  D.52149->last_ins = load;
  goto <D.52171>;
  <D.52170>:
  D.52149 = cfg->cbb;
  D.52149 = cfg->cbb;
  D.52149->last_ins = load;
  D.52150 = D.52149->last_ins;
  D.52149->code = D.52150;
  <D.52171>:
  if (thread_ins != 0B) goto <D.52172>; else goto <D.52173>;
  <D.52172>:
  D.52149 = cfg->cbb;
  D.52150 = D.52149->last_ins;
  if (D.52150 != 0B) goto <D.52174>; else goto <D.52175>;
  <D.52174>:
  D.52149 = cfg->cbb;
  D.52150 = D.52149->last_ins;
  D.52150->next = thread_ins;
  D.52149 = cfg->cbb;
  D.52150 = D.52149->last_ins;
  thread_ins->prev = D.52150;
  D.52149 = cfg->cbb;
  D.52149->last_ins = thread_ins;
  goto <D.52176>;
  <D.52175>:
  D.52149 = cfg->cbb;
  D.52149 = cfg->cbb;
  D.52149->last_ins = thread_ins;
  D.52150 = D.52149->last_ins;
  D.52149->code = D.52150;
  <D.52176>:
  goto <D.52177>;
  <D.52173>:
  {
    struct MonoMethod * thread_method;

    D.52178 = mono_get_thread_class ();
    thread_method = mono_class_get_method_from_name (D.52178, "CurrentInternalThread_internal", 0);
    thread_ins = mono_emit_method_call (cfg, thread_method, 0B, 0B);
  }
  <D.52177>:
  D.52179 = load->dreg;
  addr = emit_managed_static_data_access (cfg, thread_ins, D.52179);
  D.52180 = tls_field->type;
  D.52181 = mono_class_from_mono_type (D.52180);
  addr->klass = D.52181;
  addr->type = 5;
  D.52182 = type_from_stack_type (addr);
  temp = mono_compile_create_var (cfg, D.52182, 329);
  *cached_tls_addr = temp;
  D.52124 = cfg->mempool;
  store = mono_mempool_alloc (D.52124, 56);
  store->data.op[1].const_val = 0;
  D.52183 = store->data.op[1].const_val;
  store->data.op[0].const_val = D.52183;
  store->prev = 0B;
  D.52184 = store->prev;
  store->next = D.52184;
  store->opcode = 424;
  store->flags = 0;
  store->type = 0;
  store->dreg = -1;
  store->sreg3 = -1;
  D.52185 = store->sreg3;
  store->sreg2 = D.52185;
  D.52186 = store->sreg2;
  store->sreg1 = D.52186;
  D.52129 = cfg->ip;
  store->cil_code = D.52129;
  D.52130 = cfg->varinfo;
  D.52187 = temp->data.op[0].const_val;
  D.52188 = (unsigned int) D.52187;
  D.52189 = D.52188 * 4;
  D.52190 = D.52130 + D.52189;
  D.52191 = *D.52190;
  D.52192 = D.52191->data.op[1].vtype;
  D.52193 = mono_type_to_regmove (cfg, D.52192);
  D.52194 = (short unsigned int) D.52193;
  store->opcode = D.52194;
  D.52130 = cfg->varinfo;
  D.52187 = temp->data.op[0].const_val;
  D.52188 = (unsigned int) D.52187;
  D.52189 = D.52188 * 4;
  D.52190 = D.52130 + D.52189;
  D.52191 = *D.52190;
  D.52195 = D.52191->klass;
  store->klass = D.52195;
  D.52196 = addr->dreg;
  store->sreg1 = D.52196;
  D.52130 = cfg->varinfo;
  D.52187 = temp->data.op[0].const_val;
  D.52188 = (unsigned int) D.52187;
  D.52189 = D.52188 * 4;
  D.52190 = D.52130 + D.52189;
  D.52191 = *D.52190;
  D.52197 = D.52191->dreg;
  store->dreg = D.52197;
  D.52198 = store->opcode;
  if (D.52198 == 427) goto <D.52199>; else goto <D.52200>;
  <D.52199>:
  D.52130 = cfg->varinfo;
  D.52187 = temp->data.op[0].const_val;
  D.52188 = (unsigned int) D.52187;
  D.52189 = D.52188 * 4;
  D.52190 = D.52130 + D.52189;
  D.52191 = *D.52190;
  D.52192 = D.52191->data.op[1].vtype;
  D.52201 = mono_class_from_mono_type (D.52192);
  store->klass = D.52201;
  <D.52200>:
  D.52149 = cfg->cbb;
  D.52150 = D.52149->last_ins;
  if (D.52150 != 0B) goto <D.52202>; else goto <D.52203>;
  <D.52202>:
  D.52149 = cfg->cbb;
  D.52150 = D.52149->last_ins;
  D.52150->next = store;
  D.52149 = cfg->cbb;
  D.52150 = D.52149->last_ins;
  store->prev = D.52150;
  D.52149 = cfg->cbb;
  D.52149->last_ins = store;
  goto <D.52204>;
  <D.52203>:
  D.52149 = cfg->cbb;
  D.52149 = cfg->cbb;
  D.52149->last_ins = store;
  D.52150 = D.52149->last_ins;
  D.52149->code = D.52150;
  <D.52204>:
  D.52124 = cfg->mempool;
  addr = mono_mempool_alloc (D.52124, 56);
  addr->data.op[1].const_val = 0;
  D.52125 = addr->data.op[1].const_val;
  addr->data.op[0].const_val = D.52125;
  addr->prev = 0B;
  D.52126 = addr->prev;
  addr->next = D.52126;
  addr->opcode = 424;
  addr->flags = 0;
  addr->type = 0;
  addr->dreg = -1;
  addr->sreg3 = -1;
  D.52127 = addr->sreg3;
  addr->sreg2 = D.52127;
  D.52128 = addr->sreg2;
  addr->sreg1 = D.52128;
  D.52129 = cfg->ip;
  addr->cil_code = D.52129;
  D.52130 = cfg->varinfo;
  D.52187 = temp->data.op[0].const_val;
  D.52188 = (unsigned int) D.52187;
  D.52189 = D.52188 * 4;
  D.52190 = D.52130 + D.52189;
  D.52191 = *D.52190;
  D.52192 = D.52191->data.op[1].vtype;
  D.52205 = mono_type_to_regmove (cfg, D.52192);
  D.52206 = (short unsigned int) D.52205;
  addr->opcode = D.52206;
  D.52130 = cfg->varinfo;
  D.52187 = temp->data.op[0].const_val;
  D.52188 = (unsigned int) D.52187;
  D.52189 = D.52188 * 4;
  D.52190 = D.52130 + D.52189;
  D.52191 = *D.52190;
  D.52192 = D.52191->data.op[1].vtype;
  type_to_eval_stack_type (cfg, D.52192, addr);
  D.52130 = cfg->varinfo;
  D.52187 = temp->data.op[0].const_val;
  D.52188 = (unsigned int) D.52187;
  D.52189 = D.52188 * 4;
  D.52190 = D.52130 + D.52189;
  D.52191 = *D.52190;
  D.52195 = D.52191->klass;
  addr->klass = D.52195;
  D.52130 = cfg->varinfo;
  D.52187 = temp->data.op[0].const_val;
  D.52188 = (unsigned int) D.52187;
  D.52189 = D.52188 * 4;
  D.52190 = D.52130 + D.52189;
  D.52191 = *D.52190;
  D.52197 = D.52191->dreg;
  addr->sreg1 = D.52197;
  D.52141 = addr->type;
  D.52142 = (<unnamed type>) D.52141;
  D.52207 = alloc_dreg (cfg, D.52142);
  D.52208 = (int) D.52207;
  addr->dreg = D.52208;
  D.52145 = addr->opcode;
  if (D.52145 == 427) goto <D.52209>; else goto <D.52210>;
  <D.52209>:
  D.52130 = cfg->varinfo;
  D.52187 = temp->data.op[0].const_val;
  D.52188 = (unsigned int) D.52187;
  D.52189 = D.52188 * 4;
  D.52190 = D.52130 + D.52189;
  D.52191 = *D.52190;
  D.52192 = D.52191->data.op[1].vtype;
  D.52211 = mono_class_from_mono_type (D.52192);
  addr->klass = D.52211;
  <D.52210>:
  D.52149 = cfg->cbb;
  D.52150 = D.52149->last_ins;
  if (D.52150 != 0B) goto <D.52212>; else goto <D.52213>;
  <D.52212>:
  D.52149 = cfg->cbb;
  D.52150 = D.52149->last_ins;
  D.52150->next = addr;
  D.52149 = cfg->cbb;
  D.52150 = D.52149->last_ins;
  addr->prev = D.52150;
  D.52149 = cfg->cbb;
  D.52149->last_ins = addr;
  goto <D.52214>;
  <D.52213>:
  D.52149 = cfg->cbb;
  D.52149 = cfg->cbb;
  D.52149->last_ins = addr;
  D.52150 = D.52149->last_ins;
  D.52149->code = D.52150;
  <D.52214>:
  D.52154 = addr;
  return D.52154;
}


emit_managed_static_data_access (struct MonoCompile * cfg, struct MonoInst * thread_ins, int offset_reg)
{
  unsigned int D.52216;
  struct MonoMemPool * D.52217;
  int D.52218;
  struct MonoInst * D.52219;
  int D.52220;
  int D.52221;
  const unsigned char * D.52222;
  int D.52223;
  struct MonoBasicBlock * D.52224;
  struct MonoInst * D.52225;
  unsigned int D.52229;
  int D.52230;
  struct MonoInst * D.52231;
  int D.52232;
  int D.52233;
  int D.52237;
  struct MonoInst * D.52238;
  int D.52239;
  int D.52240;
  int D.52244;
  struct MonoInst * D.52245;
  int D.52246;
  int D.52247;
  int D.52251;
  struct MonoInst * D.52252;
  int D.52253;
  int D.52254;
  unsigned int D.52258;
  int D.52259;
  struct MonoInst * D.52260;
  int D.52261;
  int D.52262;
  unsigned int D.52266;
  int D.52267;
  struct MonoInst * D.52268;
  int D.52269;
  int D.52270;
  unsigned int D.52274;
  int D.52275;
  struct MonoInst * D.52276;
  int D.52277;
  int D.52278;
  struct MonoInst * D.52282;
  struct MonoInst * addr;
  int static_data_reg;
  int array_reg;
  int dreg;
  int offset2_reg;
  int idx_reg;

  D.52216 = alloc_ireg (cfg);
  static_data_reg = (int) D.52216;
  {
    struct MonoInst * inst;

    D.52217 = cfg->mempool;
    inst = mono_mempool_alloc (D.52217, 56);
    inst->data.op[1].const_val = 0;
    D.52218 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52218;
    inst->prev = 0B;
    D.52219 = inst->prev;
    inst->next = D.52219;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52220 = inst->sreg3;
    inst->sreg2 = D.52220;
    D.52221 = inst->sreg2;
    inst->sreg1 = D.52221;
    D.52222 = cfg->ip;
    inst->cil_code = D.52222;
    inst->dreg = static_data_reg;
    D.52223 = thread_ins->dreg;
    inst->sreg1 = D.52223;
    inst->data.op[0].const_val = 56;
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    if (D.52225 != 0B) goto <D.52226>; else goto <D.52227>;
    <D.52226>:
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    D.52225->next = inst;
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    inst->prev = D.52225;
    D.52224 = cfg->cbb;
    D.52224->last_ins = inst;
    goto <D.52228>;
    <D.52227>:
    D.52224 = cfg->cbb;
    D.52224 = cfg->cbb;
    D.52224->last_ins = inst;
    D.52225 = D.52224->last_ins;
    D.52224->code = D.52225;
    <D.52228>:
  }
  D.52229 = alloc_ireg (cfg);
  idx_reg = (int) D.52229;
  {
    struct MonoInst * inst;

    D.52217 = cfg->mempool;
    inst = mono_mempool_alloc (D.52217, 56);
    inst->data.op[1].const_val = 0;
    D.52230 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52230;
    inst->prev = 0B;
    D.52231 = inst->prev;
    inst->next = D.52231;
    inst->opcode = 636;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52232 = inst->sreg3;
    inst->sreg2 = D.52232;
    D.52233 = inst->sreg2;
    inst->sreg1 = D.52233;
    D.52222 = cfg->ip;
    inst->cil_code = D.52222;
    inst->dreg = idx_reg;
    inst->sreg1 = offset_reg;
    inst->data.op[1].const_val = 24;
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    if (D.52225 != 0B) goto <D.52234>; else goto <D.52235>;
    <D.52234>:
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    D.52225->next = inst;
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    inst->prev = D.52225;
    D.52224 = cfg->cbb;
    D.52224->last_ins = inst;
    goto <D.52236>;
    <D.52235>:
    D.52224 = cfg->cbb;
    D.52224 = cfg->cbb;
    D.52224->last_ins = inst;
    D.52225 = D.52224->last_ins;
    D.52224->code = D.52225;
    <D.52236>:
  }
  {
    struct MonoInst * inst;

    D.52217 = cfg->mempool;
    inst = mono_mempool_alloc (D.52217, 56);
    inst->data.op[1].const_val = 0;
    D.52237 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52237;
    inst->prev = 0B;
    D.52238 = inst->prev;
    inst->next = D.52238;
    inst->opcode = 626;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52239 = inst->sreg3;
    inst->sreg2 = D.52239;
    D.52240 = inst->sreg2;
    inst->sreg1 = D.52240;
    D.52222 = cfg->ip;
    inst->cil_code = D.52222;
    inst->dreg = idx_reg;
    inst->sreg1 = idx_reg;
    inst->data.op[1].const_val = 1;
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    if (D.52225 != 0B) goto <D.52241>; else goto <D.52242>;
    <D.52241>:
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    D.52225->next = inst;
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    inst->prev = D.52225;
    D.52224 = cfg->cbb;
    D.52224->last_ins = inst;
    goto <D.52243>;
    <D.52242>:
    D.52224 = cfg->cbb;
    D.52224 = cfg->cbb;
    D.52224->last_ins = inst;
    D.52225 = D.52224->last_ins;
    D.52224->code = D.52225;
    <D.52243>:
  }
  {
    struct MonoInst * inst;

    D.52217 = cfg->mempool;
    inst = mono_mempool_alloc (D.52217, 56);
    inst->data.op[1].const_val = 0;
    D.52244 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52244;
    inst->prev = 0B;
    D.52245 = inst->prev;
    inst->next = D.52245;
    inst->opcode = 635;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52246 = inst->sreg3;
    inst->sreg2 = D.52246;
    D.52247 = inst->sreg2;
    inst->sreg1 = D.52247;
    D.52222 = cfg->ip;
    inst->cil_code = D.52222;
    inst->dreg = idx_reg;
    inst->sreg1 = idx_reg;
    inst->data.op[1].const_val = 2;
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    if (D.52225 != 0B) goto <D.52248>; else goto <D.52249>;
    <D.52248>:
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    D.52225->next = inst;
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    inst->prev = D.52225;
    D.52224 = cfg->cbb;
    D.52224->last_ins = inst;
    goto <D.52250>;
    <D.52249>:
    D.52224 = cfg->cbb;
    D.52224 = cfg->cbb;
    D.52224->last_ins = inst;
    D.52225 = D.52224->last_ins;
    D.52224->code = D.52225;
    <D.52250>:
  }
  {
    struct MonoInst * inst;

    D.52217 = cfg->mempool;
    inst = mono_mempool_alloc (D.52217, 56);
    inst->data.op[1].const_val = 0;
    D.52251 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52251;
    inst->prev = 0B;
    D.52252 = inst->prev;
    inst->next = D.52252;
    inst->opcode = 565;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52253 = inst->sreg3;
    inst->sreg2 = D.52253;
    D.52254 = inst->sreg2;
    inst->sreg1 = D.52254;
    D.52222 = cfg->ip;
    inst->cil_code = D.52222;
    inst->dreg = static_data_reg;
    inst->sreg1 = static_data_reg;
    inst->sreg2 = idx_reg;
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    if (D.52225 != 0B) goto <D.52255>; else goto <D.52256>;
    <D.52255>:
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    D.52225->next = inst;
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    inst->prev = D.52225;
    D.52224 = cfg->cbb;
    D.52224->last_ins = inst;
    goto <D.52257>;
    <D.52256>:
    D.52224 = cfg->cbb;
    D.52224 = cfg->cbb;
    D.52224->last_ins = inst;
    D.52225 = D.52224->last_ins;
    D.52224->code = D.52225;
    <D.52257>:
  }
  D.52258 = alloc_ireg (cfg);
  array_reg = (int) D.52258;
  {
    struct MonoInst * inst;

    D.52217 = cfg->mempool;
    inst = mono_mempool_alloc (D.52217, 56);
    inst->data.op[1].const_val = 0;
    D.52259 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52259;
    inst->prev = 0B;
    D.52260 = inst->prev;
    inst->next = D.52260;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52261 = inst->sreg3;
    inst->sreg2 = D.52261;
    D.52262 = inst->sreg2;
    inst->sreg1 = D.52262;
    D.52222 = cfg->ip;
    inst->cil_code = D.52222;
    inst->dreg = array_reg;
    inst->sreg1 = static_data_reg;
    inst->data.op[0].const_val = 0;
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    if (D.52225 != 0B) goto <D.52263>; else goto <D.52264>;
    <D.52263>:
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    D.52225->next = inst;
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    inst->prev = D.52225;
    D.52224 = cfg->cbb;
    D.52224->last_ins = inst;
    goto <D.52265>;
    <D.52264>:
    D.52224 = cfg->cbb;
    D.52224 = cfg->cbb;
    D.52224->last_ins = inst;
    D.52225 = D.52224->last_ins;
    D.52224->code = D.52225;
    <D.52265>:
  }
  D.52266 = alloc_ireg (cfg);
  offset2_reg = (int) D.52266;
  {
    struct MonoInst * inst;

    D.52217 = cfg->mempool;
    inst = mono_mempool_alloc (D.52217, 56);
    inst->data.op[1].const_val = 0;
    D.52267 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52267;
    inst->prev = 0B;
    D.52268 = inst->prev;
    inst->next = D.52268;
    inst->opcode = 632;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52269 = inst->sreg3;
    inst->sreg2 = D.52269;
    D.52270 = inst->sreg2;
    inst->sreg1 = D.52270;
    D.52222 = cfg->ip;
    inst->cil_code = D.52222;
    inst->dreg = offset2_reg;
    inst->sreg1 = offset_reg;
    inst->data.op[1].const_val = 16777215;
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    if (D.52225 != 0B) goto <D.52271>; else goto <D.52272>;
    <D.52271>:
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    D.52225->next = inst;
    D.52224 = cfg->cbb;
    D.52225 = D.52224->last_ins;
    inst->prev = D.52225;
    D.52224 = cfg->cbb;
    D.52224->last_ins = inst;
    goto <D.52273>;
    <D.52272>:
    D.52224 = cfg->cbb;
    D.52224 = cfg->cbb;
    D.52224->last_ins = inst;
    D.52225 = D.52224->last_ins;
    D.52224->code = D.52225;
    <D.52273>:
  }
  D.52274 = alloc_ireg (cfg);
  dreg = (int) D.52274;
  D.52217 = cfg->mempool;
  addr = mono_mempool_alloc (D.52217, 56);
  addr->data.op[1].const_val = 0;
  D.52275 = addr->data.op[1].const_val;
  addr->data.op[0].const_val = D.52275;
  addr->prev = 0B;
  D.52276 = addr->prev;
  addr->next = D.52276;
  addr->opcode = 565;
  addr->flags = 0;
  addr->type = 0;
  addr->dreg = -1;
  addr->sreg3 = -1;
  D.52277 = addr->sreg3;
  addr->sreg2 = D.52277;
  D.52278 = addr->sreg2;
  addr->sreg1 = D.52278;
  D.52222 = cfg->ip;
  addr->cil_code = D.52222;
  addr->dreg = dreg;
  addr->sreg1 = array_reg;
  addr->sreg2 = offset2_reg;
  D.52224 = cfg->cbb;
  D.52225 = D.52224->last_ins;
  if (D.52225 != 0B) goto <D.52279>; else goto <D.52280>;
  <D.52279>:
  D.52224 = cfg->cbb;
  D.52225 = D.52224->last_ins;
  D.52225->next = addr;
  D.52224 = cfg->cbb;
  D.52225 = D.52224->last_ins;
  addr->prev = D.52225;
  D.52224 = cfg->cbb;
  D.52224->last_ins = addr;
  goto <D.52281>;
  <D.52280>:
  D.52224 = cfg->cbb;
  D.52224 = cfg->cbb;
  D.52224->last_ins = addr;
  D.52225 = D.52224->last_ins;
  D.52224->code = D.52225;
  <D.52281>:
  D.52282 = addr;
  return D.52282;
}


emit_generic_class_init (struct MonoCompile * cfg, struct MonoClass * klass)
{
  struct MonoInst * vtable_arg.506;
  struct MonoDomain * D.52288;
  struct MonoMemPool * D.52291;
  void * vtable_arg.507;
  struct MonoInst * vtable_arg.508;
  int D.52294;
  struct MonoInst * D.52295;
  guint16 iftmp.509;
  unsigned char D.52297;
  unsigned char D.52298;
  int D.52302;
  int D.52303;
  const unsigned char * D.52304;
  void * iftmp.510;
  unsigned int D.52309;
  int D.52310;
  struct MonoBasicBlock * D.52311;
  struct MonoInst * D.52312;
  struct MonoMethodSignature * helper_sig_generic_class_init_trampoline_llvm.511;
  struct MonoMethodSignature * helper_sig_generic_class_init_trampoline.512;
  int D.52321;
  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.52284>; else goto <D.52285>;
      <D.52284>:
      vtable_arg.506 = emit_get_rgctx_klass (cfg, context_used, klass, 2);
      vtable_arg = vtable_arg.506;
      goto <D.52287>;
      <D.52285>:
      {
        struct MonoVTable * vtable;

        D.52288 = cfg->domain;
        vtable = mono_class_vtable (D.52288, klass);
        if (vtable == 0B) goto <D.52289>; else goto <D.52290>;
        <D.52289>:
        return;
        <D.52290>:
        D.52291 = cfg->mempool;
        vtable_arg.507 = mono_mempool_alloc (D.52291, 56);
        vtable_arg = vtable_arg.507;
        vtable_arg.508 = vtable_arg;
        vtable_arg.508 = vtable_arg;
        vtable_arg.508->data.op[1].const_val = 0;
        D.52294 = vtable_arg.508->data.op[1].const_val;
        vtable_arg.508->data.op[0].const_val = D.52294;
        vtable_arg.508 = vtable_arg;
        vtable_arg.508 = vtable_arg;
        vtable_arg.508->prev = 0B;
        D.52295 = vtable_arg.508->prev;
        vtable_arg.508->next = D.52295;
        vtable_arg.508 = vtable_arg;
        D.52297 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.52298 = D.52297 & 64;
        if (D.52298 != 0) goto <D.52299>; else goto <D.52300>;
        <D.52299>:
        iftmp.509 = 732;
        goto <D.52301>;
        <D.52300>:
        iftmp.509 = 362;
        <D.52301>:
        vtable_arg.508->opcode = iftmp.509;
        vtable_arg.508 = vtable_arg;
        vtable_arg.508->flags = 0;
        vtable_arg.508 = vtable_arg;
        vtable_arg.508->type = 0;
        vtable_arg.508 = vtable_arg;
        vtable_arg.508->dreg = -1;
        vtable_arg.508 = vtable_arg;
        vtable_arg.508 = vtable_arg;
        vtable_arg.508 = vtable_arg;
        vtable_arg.508->sreg3 = -1;
        D.52302 = vtable_arg.508->sreg3;
        vtable_arg.508->sreg2 = D.52302;
        D.52303 = vtable_arg.508->sreg2;
        vtable_arg.508->sreg1 = D.52303;
        vtable_arg.508 = vtable_arg;
        D.52304 = cfg->ip;
        vtable_arg.508->cil_code = D.52304;
        vtable_arg.508 = vtable_arg;
        D.52297 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.52298 = D.52297 & 64;
        if (D.52298 != 0) goto <D.52306>; else goto <D.52307>;
        <D.52306>:
        iftmp.510 = vtable->klass;
        goto <D.52308>;
        <D.52307>:
        iftmp.510 = vtable;
        <D.52308>:
        vtable_arg.508->data.op[0].p = iftmp.510;
        vtable_arg.508 = vtable_arg;
        vtable_arg.508->data.op[1].src = 14B;
        vtable_arg.508 = vtable_arg;
        vtable_arg.508->type = 3;
        vtable_arg.508 = vtable_arg;
        D.52309 = alloc_dreg (cfg, 3);
        D.52310 = (int) D.52309;
        vtable_arg.508->dreg = D.52310;
        D.52311 = cfg->cbb;
        D.52312 = D.52311->last_ins;
        if (D.52312 != 0B) goto <D.52313>; else goto <D.52314>;
        <D.52313>:
        D.52311 = cfg->cbb;
        D.52312 = D.52311->last_ins;
        vtable_arg.508 = vtable_arg;
        D.52312->next = vtable_arg.508;
        vtable_arg.508 = vtable_arg;
        D.52311 = cfg->cbb;
        D.52312 = D.52311->last_ins;
        vtable_arg.508->prev = D.52312;
        D.52311 = cfg->cbb;
        vtable_arg.508 = vtable_arg;
        D.52311->last_ins = vtable_arg.508;
        goto <D.52315>;
        <D.52314>:
        D.52311 = cfg->cbb;
        D.52311 = cfg->cbb;
        vtable_arg.508 = vtable_arg;
        D.52311->last_ins = vtable_arg.508;
        D.52312 = D.52311->last_ins;
        D.52311->code = D.52312;
        <D.52315>:
      }
      <D.52287>:
      if (0 != 0) goto <D.52316>; else goto <D.52317>;
      <D.52316>:
      helper_sig_generic_class_init_trampoline_llvm.511 = helper_sig_generic_class_init_trampoline_llvm;
      call = mono_emit_abs_call (cfg, 36, 0B, helper_sig_generic_class_init_trampoline_llvm.511, &vtable_arg);
      goto <D.52319>;
      <D.52317>:
      helper_sig_generic_class_init_trampoline.512 = helper_sig_generic_class_init_trampoline;
      call = mono_emit_abs_call (cfg, 36, 0B, helper_sig_generic_class_init_trampoline.512, &vtable_arg);
      <D.52319>:
      vtable_arg.508 = vtable_arg;
      D.52321 = vtable_arg.508->dreg;
      mono_call_inst_add_outarg_reg (cfg, call, D.52321, 0, 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.52325;
  unsigned char D.52326;
  _Bool D.52329;
  long int D.52330;
  long int D.52331;
  unsigned char D.52334;
  unsigned char D.52335;
  gboolean D.52338;
  unsigned int D.52339;
  unsigned int D.52340;
  struct MonoMethod * D.52343;
  int D.52346;
  short unsigned int D.52349;
  int D.52350;
  int D.52351;
  struct MonoClass * D.52354;

  D.52325 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.52326 = D.52325 & 64;
  if (D.52326 == 0) goto <D.52327>; else goto <D.52328>;
  <D.52327>:
  D.52329 = vtable == 0B;
  D.52330 = (long int) D.52329;
  D.52331 = __builtin_expect (D.52330, 0);
  if (D.52331 != 0) goto <D.52332>; else goto <D.52333>;
  <D.52332>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4640, "vtable");
  <D.52333>:
  D.52334 = BIT_FIELD_REF <*vtable, 8, 184>;
  D.52335 = D.52334 & 2;
  if (D.52335 != 0) goto <D.52336>; else goto <D.52337>;
  <D.52336>:
  D.52338 = 0;
  return D.52338;
  <D.52337>:
  <D.52328>:
  D.52339 = klass->flags;
  D.52340 = D.52339 & 1048576;
  if (D.52340 != 0) goto <D.52341>; else goto <D.52342>;
  <D.52341>:
  D.52343 = cfg->method;
  if (D.52343 == method) goto <D.52344>; else goto <D.52345>;
  <D.52344>:
  D.52338 = 0;
  return D.52338;
  <D.52345>:
  <D.52342>:
  D.52346 = mono_class_needs_cctor_run (klass, method);
  if (D.52346 == 0) goto <D.52347>; else goto <D.52348>;
  <D.52347>:
  D.52338 = 0;
  return D.52338;
  <D.52348>:
  D.52349 = method->flags;
  D.52350 = (int) D.52349;
  D.52351 = D.52350 & 16;
  if (D.52351 == 0) goto <D.52352>; else goto <D.52353>;
  <D.52352>:
  D.52354 = method->klass;
  if (D.52354 == klass) goto <D.52355>; else goto <D.52356>;
  <D.52355>:
  D.52338 = 0;
  return D.52338;
  <D.52356>:
  <D.52353>:
  D.52338 = 1;
  return D.52338;
}


set_exception_object (struct MonoCompile * cfg, struct MonoException * exception)
{
  void * * D.52360;
  void * D.52361;

  mono_cfg_set_exception (cfg, 13);
  if (0 != 0) goto <D.52358>; else goto <D.52359>;
  <D.52358>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6342, "sizeof (cfg->exception_ptr) == sizeof (MonoObject*)");
  <D.52359>:
  D.52360 = &cfg->exception_ptr;
  D.52361 = mono_gc_make_root_descr_all_refs (1);
  mono_gc_register_root (D.52360, 4, D.52361);
  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.52362;
  unsigned char * D.52365;
  unsigned char D.52366;
  unsigned char * D.52369;
  unsigned char D.52370;
  unsigned char * D.52373;
  unsigned char D.52374;
  const unsigned char * D.52377;
  const unsigned char * D.52378;
  struct MonoClass * D.52379;
  struct MonoImage * D.52380;
  const char * D.52383;
  int D.29631;
  int iftmp.513;
  int D.29630;
  const char[16] * D.52391;
  unsigned char D.52392;
  int D.52393;
  unsigned char D.52394;
  int D.52395;
  _Bool D.52396;
  _Bool D.52397;
  _Bool D.52398;
  const unsigned char * D.52401;
  unsigned char D.52402;
  int D.52403;
  const unsigned char * D.52404;
  unsigned char D.52405;
  int D.52406;
  _Bool D.52407;
  _Bool D.52408;
  const unsigned char * D.52411;
  unsigned char D.52412;
  int D.52413;
  const unsigned char * D.52414;
  unsigned char D.52415;
  int D.52416;
  _Bool D.52417;
  _Bool D.52418;
  const unsigned char * D.52421;
  unsigned char D.52422;
  int D.52423;
  const unsigned char * D.52424;
  unsigned char D.52425;
  int D.52426;
  const char * D.52428;
  int D.29640;
  int iftmp.514;
  int D.29639;
  struct MonoClass * D.52433;
  const char[15] * D.52434;
  unsigned char D.52435;
  int D.52436;
  unsigned char D.52437;
  int D.52438;
  _Bool D.52439;
  _Bool D.52440;
  _Bool D.52441;
  const unsigned char * D.52444;
  unsigned char D.52445;
  int D.52446;
  const unsigned char * D.52447;
  unsigned char D.52448;
  int D.52449;
  _Bool D.52450;
  _Bool D.52451;
  const unsigned char * D.52454;
  unsigned char D.52455;
  int D.52456;
  const unsigned char * D.52457;
  unsigned char D.52458;
  int D.52459;
  _Bool D.52460;
  _Bool D.52461;
  const unsigned char * D.52464;
  unsigned char D.52465;
  int D.52466;
  const unsigned char * D.52467;
  unsigned char D.52468;
  int D.52469;
  const char * D.52471;
  struct MonoImage * D.52473;
  struct MonoImage * D.52474;
  struct MonoType * D.52475;
  struct MonoType * D.52476;
  unsigned char D.52477;
  int D.52478;
  unsigned int size.515;
  unsigned int D.52480;
  struct MonoType * D.52481;
  int D.52482;
  unsigned char D.52485;
  unsigned char D.52486;
  unsigned int D.52489;
  unsigned int D.52490;
  unsigned int rva.516;
  _Bool D.52492;
  _Bool D.52493;
  _Bool D.52494;
  long int D.52498;
  long int D.52499;

  D.52362 = *ip;
  if (D.52362 == 37) goto <D.52363>; else goto <D.52364>;
  <D.52363>:
  D.52365 = ip + 1;
  D.52366 = *D.52365;
  if (D.52366 == 208) goto <D.52367>; else goto <D.52368>;
  <D.52367>:
  D.52369 = ip + 5;
  D.52370 = *D.52369;
  if (D.52370 == 4) goto <D.52371>; else goto <D.52372>;
  <D.52371>:
  D.52373 = ip + 6;
  D.52374 = *D.52373;
  if (D.52374 == 40) goto <D.52375>; else goto <D.52376>;
  <D.52375>:
  {
    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
      {
        D.52377 = ip + 7;
        token = mono_read32 (D.52377);
        D.52378 = ip + 2;
        field_token = mono_read32 (D.52378);
        field_index = field_token & 16777215;
        size = 0;
        D.52379 = method->klass;
        D.52380 = D.52379->image;
        field = mono_field_from_token (D.52380, field_token, &dummy_class, 0B);
        if (field == 0B) goto <D.52381>; else goto <D.52382>;
        <D.52381>:
        D.52383 = 0B;
        return D.52383;
        <D.52382>:
        *out_field_token = field_token;
        cmethod = mini_get_method (0B, method, token, 0B, 0B);
        if (cmethod == 0B) goto <D.52384>; else goto <D.52385>;
        <D.52384>:
        D.52383 = 0B;
        return D.52383;
        <D.52385>:
        {
          size_t __s1_len;
          size_t __s2_len;

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

            __s2 = cmethod->name;
            D.52391 = "InitializeArray";
            D.52392 = MEM[(const unsigned char *)D.52391];
            D.52393 = (int) D.52392;
            D.52394 = *__s2;
            D.52395 = (int) D.52394;
            __result = D.52393 - D.52395;
            {
              D.52396 = __s2_len != 0;
              D.52397 = __result == 0;
              D.52398 = D.52396 & D.52397;
              if (D.52398 != 0) goto <D.52399>; else goto <D.52400>;
              <D.52399>:
              D.52401 = &MEM[(void *)"InitializeArray" + 1B];
              D.52402 = *D.52401;
              D.52403 = (int) D.52402;
              D.52404 = __s2 + 1;
              D.52405 = *D.52404;
              D.52406 = (int) D.52405;
              __result = D.52403 - D.52406;
              D.52407 = __s2_len > 1;
              D.52397 = __result == 0;
              D.52408 = D.52407 & D.52397;
              if (D.52408 != 0) goto <D.52409>; else goto <D.52410>;
              <D.52409>:
              D.52411 = &MEM[(void *)"InitializeArray" + 2B];
              D.52412 = *D.52411;
              D.52413 = (int) D.52412;
              D.52414 = __s2 + 2;
              D.52415 = *D.52414;
              D.52416 = (int) D.52415;
              __result = D.52413 - D.52416;
              D.52417 = __s2_len > 2;
              D.52397 = __result == 0;
              D.52418 = D.52417 & D.52397;
              if (D.52418 != 0) goto <D.52419>; else goto <D.52420>;
              <D.52419>:
              D.52421 = &MEM[(void *)"InitializeArray" + 3B];
              D.52422 = *D.52421;
              D.52423 = (int) D.52422;
              D.52424 = __s2 + 3;
              D.52425 = *D.52424;
              D.52426 = (int) D.52425;
              __result = D.52423 - D.52426;
              <D.52420>:
              <D.52410>:
              <D.52400>:
            }
            D.29630 = __result;
          }
          iftmp.513 = -D.29630;
          goto <D.52427>;
          <D.52390>:
          D.52428 = cmethod->name;
          iftmp.513 = __builtin_strcmp (D.52428, "InitializeArray");
          <D.52427>:
          D.29631 = iftmp.513;
        }
        if (D.29631 != 0) goto <D.52386>; else goto <D.52429>;
        <D.52429>:
        {
          size_t __s1_len;
          size_t __s2_len;

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

            D.52433 = cmethod->klass;
            __s2 = D.52433->name;
            D.52434 = "RuntimeHelpers";
            D.52435 = MEM[(const unsigned char *)D.52434];
            D.52436 = (int) D.52435;
            D.52437 = *__s2;
            D.52438 = (int) D.52437;
            __result = D.52436 - D.52438;
            {
              D.52439 = __s2_len != 0;
              D.52440 = __result == 0;
              D.52441 = D.52439 & D.52440;
              if (D.52441 != 0) goto <D.52442>; else goto <D.52443>;
              <D.52442>:
              D.52444 = &MEM[(void *)"RuntimeHelpers" + 1B];
              D.52445 = *D.52444;
              D.52446 = (int) D.52445;
              D.52447 = __s2 + 1;
              D.52448 = *D.52447;
              D.52449 = (int) D.52448;
              __result = D.52446 - D.52449;
              D.52450 = __s2_len > 1;
              D.52440 = __result == 0;
              D.52451 = D.52450 & D.52440;
              if (D.52451 != 0) goto <D.52452>; else goto <D.52453>;
              <D.52452>:
              D.52454 = &MEM[(void *)"RuntimeHelpers" + 2B];
              D.52455 = *D.52454;
              D.52456 = (int) D.52455;
              D.52457 = __s2 + 2;
              D.52458 = *D.52457;
              D.52459 = (int) D.52458;
              __result = D.52456 - D.52459;
              D.52460 = __s2_len > 2;
              D.52440 = __result == 0;
              D.52461 = D.52460 & D.52440;
              if (D.52461 != 0) goto <D.52462>; else goto <D.52463>;
              <D.52462>:
              D.52464 = &MEM[(void *)"RuntimeHelpers" + 3B];
              D.52465 = *D.52464;
              D.52466 = (int) D.52465;
              D.52467 = __s2 + 3;
              D.52468 = *D.52467;
              D.52469 = (int) D.52468;
              __result = D.52466 - D.52469;
              <D.52463>:
              <D.52453>:
              <D.52443>:
            }
            D.29639 = __result;
          }
          iftmp.514 = -D.29639;
          goto <D.52470>;
          <D.52432>:
          D.52433 = cmethod->klass;
          D.52471 = D.52433->name;
          iftmp.514 = __builtin_strcmp (D.52471, "RuntimeHelpers");
          <D.52470>:
          D.29640 = iftmp.514;
        }
        if (D.29640 != 0) goto <D.52386>; else goto <D.52472>;
        <D.52472>:
        D.52433 = cmethod->klass;
        D.52473 = D.52433->image;
        D.52474 = mono_defaults.corlib;
        if (D.52473 != D.52474) goto <D.52386>; else goto <D.52387>;
        <D.52386>:
        D.52383 = 0B;
        return D.52383;
        <D.52387>:
        D.52475 = &klass->byval_arg;
        D.52476 = mono_type_get_underlying_type (D.52475);
        D.52477 = D.52476->type;
        D.52478 = (int) D.52477;
        switch (D.52478) <default: <D.29654>, case 2: <D.29641>, case 3: <D.29645>, case 4: <D.29642>, case 5: <D.29643>, case 6: <D.29646>, case 7: <D.29647>, case 8: <D.29648>, case 9: <D.29649>, case 10: <D.29652>, case 11: <D.29653>, case 12: <D.29650>, case 13: <D.29651>>
        <D.29641>:
        <D.29642>:
        <D.29643>:
        size = 1;
        goto <D.29644>;
        <D.29645>:
        <D.29646>:
        <D.29647>:
        size = 2;
        goto <D.29644>;
        <D.29648>:
        <D.29649>:
        <D.29650>:
        size = 4;
        goto <D.29644>;
        <D.29651>:
        <D.29652>:
        <D.29653>:
        size = 8;
        goto <D.29644>;
        <D.29654>:
        D.52383 = 0B;
        return D.52383;
        <D.29644>:
        size.515 = (unsigned int) size;
        D.52480 = size.515 * len;
        size = (int) D.52480;
        D.52481 = field->type;
        D.52482 = mono_type_size (D.52481, &dummy_align);
        if (D.52482 < size) goto <D.52483>; else goto <D.52484>;
        <D.52483>:
        D.52383 = 0B;
        return D.52383;
        <D.52484>:
        *out_size = size;
        D.52379 = method->klass;
        D.52380 = D.52379->image;
        D.52485 = BIT_FIELD_REF <*D.52380, 8, 128>;
        D.52486 = D.52485 & 8;
        if (D.52486 == 0) goto <D.52487>; else goto <D.52488>;
        <D.52487>:
        D.52378 = ip + 2;
        D.52489 = mono_read32 (D.52378);
        field_index = D.52489 & 16777215;
        D.52379 = method->klass;
        D.52380 = D.52379->image;
        D.52490 = field_index + 4294967295;
        mono_metadata_field_info (D.52380, D.52490, 0B, &rva, 0B);
        D.52379 = method->klass;
        D.52380 = D.52379->image;
        rva.516 = rva;
        data_ptr = mono_image_rva_map (D.52380, rva.516);
        D.52492 = aot != 0;
        D.52493 = data_ptr != 0B;
        D.52494 = D.52492 & D.52493;
        if (D.52494 != 0) goto <D.52495>; else goto <D.52496>;
        <D.52495>:
        rva.516 = rva;
        D.52383 = (const char *) rva.516;
        return D.52383;
        <D.52496>:
        goto <D.52497>;
        <D.52488>:
        D.52492 = aot != 0;
        D.52498 = (long int) D.52492;
        D.52499 = __builtin_expect (D.52498, 0);
        if (D.52499 != 0) goto <D.52500>; else goto <D.52501>;
        <D.52500>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6312, "!aot");
        <D.52501>:
        data_ptr = mono_field_get_data (field);
        <D.52497>:
        D.52383 = data_ptr;
        return D.52383;
      }
    finally
      {
        rva = {CLOBBER};
        dummy_class = {CLOBBER};
        dummy_align = {CLOBBER};
      }
  }
  <D.52376>:
  <D.52372>:
  <D.52368>:
  <D.52364>:
  D.52383 = 0B;
  return D.52383;
}


mini_emit_check_array_type (struct MonoCompile * cfg, struct MonoInst * obj, struct MonoClass * array_class)
{
  unsigned int D.52504;
  int D.52505;
  int D.52506;
  unsigned char D.52509;
  unsigned char D.52510;
  struct MonoMemPool * D.52513;
  int D.52514;
  struct MonoInst * D.52515;
  int D.52516;
  int D.52517;
  const unsigned char * D.52518;
  struct MonoBasicBlock * D.52519;
  struct MonoInst * D.52520;
  int D.52524;
  struct MonoInst * D.52525;
  int D.52526;
  int D.52527;
  int D.52532;
  struct MonoInst * D.52533;
  int D.52534;
  int D.52535;
  unsigned char D.52536;
  unsigned int D.52540;
  unsigned int D.52541;
  unsigned int D.52544;
  int D.52545;
  struct MonoInst * D.52546;
  int D.52547;
  int D.52548;
  unsigned char D.52552;
  unsigned char D.52553;
  unsigned int D.52556;
  int D.52557;
  struct MonoInst * D.52558;
  guint16 iftmp.517;
  int D.52563;
  int D.52564;
  int D.52568;
  struct MonoInst * D.52569;
  int D.52570;
  int D.52571;
  int D.52576;
  struct MonoInst * D.52577;
  int D.52578;
  int D.52579;
  int array_class.518;
  int D.52587;
  struct MonoInst * D.52588;
  int D.52589;
  int D.52590;
  int D.52591;
  struct MonoDomain * D.52598;
  unsigned int D.52601;
  int D.52602;
  struct MonoInst * D.52603;
  guint16 iftmp.519;
  int D.52608;
  int D.52609;
  void * iftmp.520;
  int D.52617;
  struct MonoInst * D.52618;
  int D.52619;
  int D.52620;
  int D.52627;
  struct MonoInst * D.52628;
  int D.52629;
  int D.52630;
  int vtable.521;
  int D.52635;
  struct MonoInst * D.52636;
  int D.52637;
  int D.52638;
  int vtable_reg;
  int context_used;

  D.52504 = alloc_preg (cfg);
  vtable_reg = (int) D.52504;
  context_used = mini_class_check_context_used (cfg, array_class);
  D.52505 = obj->dreg;
  save_cast_details (cfg, array_class, D.52505, 0, 0B);
  {
    struct MonoInst * inst;
    int __ins_flags;

    __ins_flags = 32;
    D.52506 = __ins_flags & 32;
    if (D.52506 != 0) goto <D.52507>; else goto <D.52508>;
    <D.52507>:
    D.52509 = BIT_FIELD_REF <*cfg, 8, 3424>;
    D.52510 = D.52509 & 64;
    if (D.52510 != 0) goto <D.52511>; else goto <D.52512>;
    <D.52511>:
    {
      struct MonoInst * inst;

      D.52513 = cfg->mempool;
      inst = mono_mempool_alloc (D.52513, 56);
      inst->data.op[1].const_val = 0;
      D.52514 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.52514;
      inst->prev = 0B;
      D.52515 = inst->prev;
      inst->next = D.52515;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.52516 = inst->sreg3;
      inst->sreg2 = D.52516;
      D.52517 = inst->sreg2;
      inst->sreg1 = D.52517;
      D.52518 = cfg->ip;
      inst->cil_code = D.52518;
      inst->dreg = -1;
      D.52505 = obj->dreg;
      inst->sreg1 = D.52505;
      inst->data.op[1].const_val = 0;
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      if (D.52520 != 0B) goto <D.52521>; else goto <D.52522>;
      <D.52521>:
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      D.52520->next = inst;
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      inst->prev = D.52520;
      D.52519 = cfg->cbb;
      D.52519->last_ins = inst;
      goto <D.52523>;
      <D.52522>:
      D.52519 = cfg->cbb;
      D.52519 = cfg->cbb;
      D.52519->last_ins = inst;
      D.52520 = D.52519->last_ins;
      D.52519->code = D.52520;
      <D.52523>:
    }
    {
      struct MonoInst * inst;

      D.52513 = cfg->mempool;
      inst = mono_mempool_alloc (D.52513, 56);
      inst->data.op[1].const_val = 0;
      D.52524 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.52524;
      inst->prev = 0B;
      D.52525 = inst->prev;
      inst->next = D.52525;
      inst->opcode = 451;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.52526 = inst->sreg3;
      inst->sreg2 = D.52526;
      D.52527 = inst->sreg2;
      inst->sreg1 = D.52527;
      D.52518 = cfg->ip;
      inst->cil_code = D.52518;
      inst->data.op[1].p = "NullReferenceException";
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      if (D.52520 != 0B) goto <D.52528>; else goto <D.52529>;
      <D.52528>:
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      D.52520->next = inst;
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      inst->prev = D.52520;
      D.52519 = cfg->cbb;
      D.52519->last_ins = inst;
      goto <D.52530>;
      <D.52529>:
      D.52519 = cfg->cbb;
      D.52519 = cfg->cbb;
      D.52519->last_ins = inst;
      D.52520 = D.52519->last_ins;
      D.52519->code = D.52520;
      <D.52530>:
    }
    goto <D.52531>;
    <D.52512>:
    <D.52531>:
    <D.52508>:
    D.52513 = cfg->mempool;
    inst = mono_mempool_alloc (D.52513, 56);
    inst->data.op[1].const_val = 0;
    D.52532 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52532;
    inst->prev = 0B;
    D.52533 = inst->prev;
    inst->next = D.52533;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52534 = inst->sreg3;
    inst->sreg2 = D.52534;
    D.52535 = inst->sreg2;
    inst->sreg1 = D.52535;
    D.52518 = cfg->ip;
    inst->cil_code = D.52518;
    inst->dreg = vtable_reg;
    D.52505 = obj->dreg;
    inst->sreg1 = D.52505;
    inst->data.op[0].const_val = 0;
    inst->type = 1;
    D.52536 = (unsigned char) __ins_flags;
    inst->flags = D.52536;
    D.52519 = cfg->cbb;
    D.52520 = D.52519->last_ins;
    if (D.52520 != 0B) goto <D.52537>; else goto <D.52538>;
    <D.52537>:
    D.52519 = cfg->cbb;
    D.52520 = D.52519->last_ins;
    D.52520->next = inst;
    D.52519 = cfg->cbb;
    D.52520 = D.52519->last_ins;
    inst->prev = D.52520;
    D.52519 = cfg->cbb;
    D.52519->last_ins = inst;
    goto <D.52539>;
    <D.52538>:
    D.52519 = cfg->cbb;
    D.52519 = cfg->cbb;
    D.52519->last_ins = inst;
    D.52520 = D.52519->last_ins;
    D.52519->code = D.52520;
    <D.52539>:
  }
  D.52540 = cfg->opt;
  D.52541 = D.52540 & 512;
  if (D.52541 != 0) goto <D.52542>; else goto <D.52543>;
  <D.52542>:
  {
    int class_reg;

    D.52544 = alloc_preg (cfg);
    class_reg = (int) D.52544;
    {
      struct MonoInst * inst;

      D.52513 = cfg->mempool;
      inst = mono_mempool_alloc (D.52513, 56);
      inst->data.op[1].const_val = 0;
      D.52545 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.52545;
      inst->prev = 0B;
      D.52546 = inst->prev;
      inst->next = D.52546;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.52547 = inst->sreg3;
      inst->sreg2 = D.52547;
      D.52548 = inst->sreg2;
      inst->sreg1 = D.52548;
      D.52518 = cfg->ip;
      inst->cil_code = D.52518;
      inst->dreg = class_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      if (D.52520 != 0B) goto <D.52549>; else goto <D.52550>;
      <D.52549>:
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      D.52520->next = inst;
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      inst->prev = D.52520;
      D.52519 = cfg->cbb;
      D.52519->last_ins = inst;
      goto <D.52551>;
      <D.52550>:
      D.52519 = cfg->cbb;
      D.52519 = cfg->cbb;
      D.52519->last_ins = inst;
      D.52520 = D.52519->last_ins;
      D.52519->code = D.52520;
      <D.52551>:
    }
    D.52552 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.52553 = D.52552 & 64;
    if (D.52553 != 0) goto <D.52554>; else goto <D.52555>;
    <D.52554>:
    {
      int klass_reg;

      D.52556 = alloc_preg (cfg);
      klass_reg = (int) D.52556;
      {
        struct MonoInst * inst;

        D.52513 = cfg->mempool;
        inst = mono_mempool_alloc (D.52513, 56);
        inst->data.op[1].const_val = 0;
        D.52557 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.52557;
        inst->prev = 0B;
        D.52558 = inst->prev;
        inst->next = D.52558;
        D.52552 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.52553 = D.52552 & 64;
        if (D.52553 != 0) goto <D.52560>; else goto <D.52561>;
        <D.52560>:
        iftmp.517 = 732;
        goto <D.52562>;
        <D.52561>:
        iftmp.517 = 362;
        <D.52562>:
        inst->opcode = iftmp.517;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.52563 = inst->sreg3;
        inst->sreg2 = D.52563;
        D.52564 = inst->sreg2;
        inst->sreg1 = D.52564;
        D.52518 = cfg->ip;
        inst->cil_code = D.52518;
        inst->dreg = klass_reg;
        inst->data.op[0].p = array_class;
        inst->data.op[1].const_val = 11;
        D.52519 = cfg->cbb;
        D.52520 = D.52519->last_ins;
        if (D.52520 != 0B) goto <D.52565>; else goto <D.52566>;
        <D.52565>:
        D.52519 = cfg->cbb;
        D.52520 = D.52519->last_ins;
        D.52520->next = inst;
        D.52519 = cfg->cbb;
        D.52520 = D.52519->last_ins;
        inst->prev = D.52520;
        D.52519 = cfg->cbb;
        D.52519->last_ins = inst;
        goto <D.52567>;
        <D.52566>:
        D.52519 = cfg->cbb;
        D.52519 = cfg->cbb;
        D.52519->last_ins = inst;
        D.52520 = D.52519->last_ins;
        D.52519->code = D.52520;
        <D.52567>:
      }
      {
        struct MonoInst * inst;

        D.52513 = cfg->mempool;
        inst = mono_mempool_alloc (D.52513, 56);
        inst->data.op[1].const_val = 0;
        D.52568 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.52568;
        inst->prev = 0B;
        D.52569 = inst->prev;
        inst->next = D.52569;
        inst->opcode = 322;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.52570 = inst->sreg3;
        inst->sreg2 = D.52570;
        D.52571 = inst->sreg2;
        inst->sreg1 = D.52571;
        D.52518 = cfg->ip;
        inst->cil_code = D.52518;
        inst->dreg = -1;
        inst->sreg1 = class_reg;
        inst->sreg2 = klass_reg;
        D.52519 = cfg->cbb;
        D.52520 = D.52519->last_ins;
        if (D.52520 != 0B) goto <D.52572>; else goto <D.52573>;
        <D.52572>:
        D.52519 = cfg->cbb;
        D.52520 = D.52519->last_ins;
        D.52520->next = inst;
        D.52519 = cfg->cbb;
        D.52520 = D.52519->last_ins;
        inst->prev = D.52520;
        D.52519 = cfg->cbb;
        D.52519->last_ins = inst;
        goto <D.52574>;
        <D.52573>:
        D.52519 = cfg->cbb;
        D.52519 = cfg->cbb;
        D.52519->last_ins = inst;
        D.52520 = D.52519->last_ins;
        D.52519->code = D.52520;
        <D.52574>:
      }
    }
    goto <D.52575>;
    <D.52555>:
    {
      struct MonoInst * inst;

      D.52513 = cfg->mempool;
      inst = mono_mempool_alloc (D.52513, 56);
      inst->data.op[1].const_val = 0;
      D.52576 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.52576;
      inst->prev = 0B;
      D.52577 = inst->prev;
      inst->next = D.52577;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.52578 = inst->sreg3;
      inst->sreg2 = D.52578;
      D.52579 = inst->sreg2;
      inst->sreg1 = D.52579;
      D.52518 = cfg->ip;
      inst->cil_code = D.52518;
      inst->dreg = -1;
      inst->sreg1 = class_reg;
      array_class.518 = (int) array_class;
      inst->data.op[1].const_val = array_class.518;
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      if (D.52520 != 0B) goto <D.52581>; else goto <D.52582>;
      <D.52581>:
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      D.52520->next = inst;
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      inst->prev = D.52520;
      D.52519 = cfg->cbb;
      D.52519->last_ins = inst;
      goto <D.52583>;
      <D.52582>:
      D.52519 = cfg->cbb;
      D.52519 = cfg->cbb;
      D.52519->last_ins = inst;
      D.52520 = D.52519->last_ins;
      D.52519->code = D.52520;
      <D.52583>:
    }
    <D.52575>:
  }
  goto <D.52584>;
  <D.52543>:
  if (context_used != 0) goto <D.52585>; else goto <D.52586>;
  <D.52585>:
  {
    struct MonoInst * vtable_ins;

    vtable_ins = emit_get_rgctx_klass (cfg, context_used, array_class, 2);
    {
      struct MonoInst * inst;

      D.52513 = cfg->mempool;
      inst = mono_mempool_alloc (D.52513, 56);
      inst->data.op[1].const_val = 0;
      D.52587 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.52587;
      inst->prev = 0B;
      D.52588 = inst->prev;
      inst->next = D.52588;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.52589 = inst->sreg3;
      inst->sreg2 = D.52589;
      D.52590 = inst->sreg2;
      inst->sreg1 = D.52590;
      D.52518 = cfg->ip;
      inst->cil_code = D.52518;
      inst->dreg = -1;
      inst->sreg1 = vtable_reg;
      D.52591 = vtable_ins->dreg;
      inst->sreg2 = D.52591;
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      if (D.52520 != 0B) goto <D.52592>; else goto <D.52593>;
      <D.52592>:
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      D.52520->next = inst;
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      inst->prev = D.52520;
      D.52519 = cfg->cbb;
      D.52519->last_ins = inst;
      goto <D.52594>;
      <D.52593>:
      D.52519 = cfg->cbb;
      D.52519 = cfg->cbb;
      D.52519->last_ins = inst;
      D.52520 = D.52519->last_ins;
      D.52519->code = D.52520;
      <D.52594>:
    }
  }
  goto <D.52595>;
  <D.52586>:
  D.52552 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.52553 = D.52552 & 64;
  if (D.52553 != 0) goto <D.52596>; else goto <D.52597>;
  <D.52596>:
  {
    int vt_reg;
    struct MonoVTable * vtable;

    D.52598 = cfg->domain;
    vtable = mono_class_vtable (D.52598, array_class);
    if (vtable == 0B) goto <D.52599>; else goto <D.52600>;
    <D.52599>:
    return;
    <D.52600>:
    D.52601 = alloc_preg (cfg);
    vt_reg = (int) D.52601;
    {
      struct MonoInst * inst;

      D.52513 = cfg->mempool;
      inst = mono_mempool_alloc (D.52513, 56);
      inst->data.op[1].const_val = 0;
      D.52602 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.52602;
      inst->prev = 0B;
      D.52603 = inst->prev;
      inst->next = D.52603;
      D.52552 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.52553 = D.52552 & 64;
      if (D.52553 != 0) goto <D.52605>; else goto <D.52606>;
      <D.52605>:
      iftmp.519 = 732;
      goto <D.52607>;
      <D.52606>:
      iftmp.519 = 362;
      <D.52607>:
      inst->opcode = iftmp.519;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.52608 = inst->sreg3;
      inst->sreg2 = D.52608;
      D.52609 = inst->sreg2;
      inst->sreg1 = D.52609;
      D.52518 = cfg->ip;
      inst->cil_code = D.52518;
      inst->dreg = vt_reg;
      D.52552 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.52553 = D.52552 & 64;
      if (D.52553 != 0) goto <D.52611>; else goto <D.52612>;
      <D.52611>:
      iftmp.520 = vtable->klass;
      goto <D.52613>;
      <D.52612>:
      iftmp.520 = vtable;
      <D.52613>:
      inst->data.op[0].p = iftmp.520;
      inst->data.op[1].const_val = 14;
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      if (D.52520 != 0B) goto <D.52614>; else goto <D.52615>;
      <D.52614>:
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      D.52520->next = inst;
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      inst->prev = D.52520;
      D.52519 = cfg->cbb;
      D.52519->last_ins = inst;
      goto <D.52616>;
      <D.52615>:
      D.52519 = cfg->cbb;
      D.52519 = cfg->cbb;
      D.52519->last_ins = inst;
      D.52520 = D.52519->last_ins;
      D.52519->code = D.52520;
      <D.52616>:
    }
    {
      struct MonoInst * inst;

      D.52513 = cfg->mempool;
      inst = mono_mempool_alloc (D.52513, 56);
      inst->data.op[1].const_val = 0;
      D.52617 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.52617;
      inst->prev = 0B;
      D.52618 = inst->prev;
      inst->next = D.52618;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.52619 = inst->sreg3;
      inst->sreg2 = D.52619;
      D.52620 = inst->sreg2;
      inst->sreg1 = D.52620;
      D.52518 = cfg->ip;
      inst->cil_code = D.52518;
      inst->dreg = -1;
      inst->sreg1 = vtable_reg;
      inst->sreg2 = vt_reg;
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      if (D.52520 != 0B) goto <D.52621>; else goto <D.52622>;
      <D.52621>:
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      D.52520->next = inst;
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      inst->prev = D.52520;
      D.52519 = cfg->cbb;
      D.52519->last_ins = inst;
      goto <D.52623>;
      <D.52622>:
      D.52519 = cfg->cbb;
      D.52519 = cfg->cbb;
      D.52519->last_ins = inst;
      D.52520 = D.52519->last_ins;
      D.52519->code = D.52520;
      <D.52623>:
    }
  }
  goto <D.52624>;
  <D.52597>:
  {
    struct MonoVTable * vtable;

    D.52598 = cfg->domain;
    vtable = mono_class_vtable (D.52598, array_class);
    if (vtable == 0B) goto <D.52625>; else goto <D.52626>;
    <D.52625>:
    return;
    <D.52626>:
    {
      struct MonoInst * inst;

      D.52513 = cfg->mempool;
      inst = mono_mempool_alloc (D.52513, 56);
      inst->data.op[1].const_val = 0;
      D.52627 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.52627;
      inst->prev = 0B;
      D.52628 = inst->prev;
      inst->next = D.52628;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.52629 = inst->sreg3;
      inst->sreg2 = D.52629;
      D.52630 = inst->sreg2;
      inst->sreg1 = D.52630;
      D.52518 = cfg->ip;
      inst->cil_code = D.52518;
      inst->dreg = -1;
      inst->sreg1 = vtable_reg;
      vtable.521 = (int) vtable;
      inst->data.op[1].const_val = vtable.521;
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      if (D.52520 != 0B) goto <D.52632>; else goto <D.52633>;
      <D.52632>:
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      D.52520->next = inst;
      D.52519 = cfg->cbb;
      D.52520 = D.52519->last_ins;
      inst->prev = D.52520;
      D.52519 = cfg->cbb;
      D.52519->last_ins = inst;
      goto <D.52634>;
      <D.52633>:
      D.52519 = cfg->cbb;
      D.52519 = cfg->cbb;
      D.52519->last_ins = inst;
      D.52520 = D.52519->last_ins;
      D.52519->code = D.52520;
      <D.52634>:
    }
  }
  <D.52624>:
  <D.52595>:
  <D.52584>:
  {
    struct MonoInst * inst;

    D.52513 = cfg->mempool;
    inst = mono_mempool_alloc (D.52513, 56);
    inst->data.op[1].const_val = 0;
    D.52635 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52635;
    inst->prev = 0B;
    D.52636 = inst->prev;
    inst->next = D.52636;
    inst->opcode = 456;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52637 = inst->sreg3;
    inst->sreg2 = D.52637;
    D.52638 = inst->sreg2;
    inst->sreg1 = D.52638;
    D.52518 = cfg->ip;
    inst->cil_code = D.52518;
    inst->data.op[1].p = "ArrayTypeMismatchException";
    D.52519 = cfg->cbb;
    D.52520 = D.52519->last_ins;
    if (D.52520 != 0B) goto <D.52639>; else goto <D.52640>;
    <D.52639>:
    D.52519 = cfg->cbb;
    D.52520 = D.52519->last_ins;
    D.52520->next = inst;
    D.52519 = cfg->cbb;
    D.52520 = D.52519->last_ins;
    inst->prev = D.52520;
    D.52519 = cfg->cbb;
    D.52519->last_ins = inst;
    goto <D.52641>;
    <D.52640>:
    D.52519 = cfg->cbb;
    D.52519 = cfg->cbb;
    D.52519->last_ins = inst;
    D.52520 = D.52519->last_ins;
    D.52519->code = D.52520;
    <D.52641>:
  }
  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.52643;
  int D.52647;
  unsigned int D.52648;
  unsigned char D.52649;
  unsigned int D.52652;
  struct MonoMemPool * D.52653;
  int D.52654;
  struct MonoInst * D.52655;
  int D.52656;
  int D.52657;
  const unsigned char * D.52658;
  struct MonoBasicBlock * D.52659;
  struct MonoInst * D.52660;
  unsigned int D.52667;
  unsigned int D.52668;
  unsigned int D.52671;
  unsigned char D.52674;
  unsigned char D.52675;
  int D.52678;
  struct MonoInst * D.52679;
  int D.52680;
  int D.52681;
  int D.52685;
  struct MonoInst * D.52686;
  int D.52687;
  int D.52688;
  unsigned int D.52695;
  int D.52698;
  int D.52703;
  struct MonoInst * D.52704;
  int D.52705;
  int D.52706;
  int D.52710;
  struct MonoInst * D.52711;
  int D.52712;
  int D.52713;
  int D.52718;
  struct MonoInst * D.52719;
  int D.52720;
  int D.52721;
  unsigned char D.52722;
  int D.52727;
  int D.52732;
  struct MonoInst * D.52733;
  int D.52734;
  int D.52735;
  int D.52739;
  struct MonoInst * D.52740;
  int D.52741;
  int D.52742;
  int D.52747;
  struct MonoInst * D.52748;
  int D.52749;
  int D.52750;
  unsigned char D.52751;
  int D.52755;
  struct MonoInst * D.52756;
  int D.52757;
  int D.52758;
  int D.52762;
  struct MonoInst * D.52763;
  int D.52764;
  int D.52765;
  unsigned int D.52770;
  int D.52773;
  int D.52778;
  struct MonoInst * D.52779;
  int D.52780;
  int D.52781;
  int D.52785;
  struct MonoInst * D.52786;
  int D.52787;
  int D.52788;
  int D.52793;
  struct MonoInst * D.52794;
  int D.52795;
  int D.52796;
  unsigned char D.52797;
  int D.52802;
  int D.52807;
  struct MonoInst * D.52808;
  int D.52809;
  int D.52810;
  int D.52814;
  struct MonoInst * D.52815;
  int D.52816;
  int D.52817;
  int D.52822;
  struct MonoInst * D.52823;
  int D.52824;
  int D.52825;
  unsigned char D.52826;
  int D.52830;
  struct MonoInst * D.52831;
  int D.52832;
  int D.52833;
  int D.52837;
  struct MonoInst * D.52838;
  int D.52839;
  int D.52840;
  int D.52845;
  struct MonoInst * D.52846;
  int D.52847;
  int D.52848;
  unsigned char D.52849;
  unsigned char D.52850;
  unsigned int D.52854;
  unsigned int D.52855;
  unsigned int D.52856;
  struct MonoGenericSharingContext * D.52859;
  _Bool D.52860;
  long int D.52861;
  long int D.52862;
  _Bool D.52865;
  long int D.52866;
  long int D.52867;
  struct MonoType * D.52870;
  int D.52871;
  struct MonoInst * D.52872;
  int D.52873;
  int D.52874;
  int D.52875;
  int D.52880;
  struct MonoInst * D.52881;
  int D.52882;
  int D.52883;
  int size.522;
  int D.52888;
  struct MonoInst * D.52889;
  int D.52890;
  int D.52891;
  int D.52895;
  struct MonoInst * D.52896;
  int D.52897;
  int D.52898;
  struct MonoClass * D.52899;
  struct MonoInst * D.52903;
  struct MonoInst * ins;
  guint32 size;
  int mult_reg;
  int add_reg;
  int array_reg;
  int index_reg;
  int index2_reg;
  int context_used;

  D.52643 = mini_is_gsharedvt_variable_klass (cfg, klass);
  if (D.52643 != 0) goto <D.52644>; else goto <D.52645>;
  <D.52644>:
  size = 4294967295;
  goto <D.52646>;
  <D.52645>:
  mono_class_init (klass);
  D.52647 = mono_class_array_element_size (klass);
  size = (guint32) D.52647;
  <D.52646>:
  D.52648 = alloc_preg (cfg);
  mult_reg = (int) D.52648;
  array_reg = arr->dreg;
  index_reg = index->dreg;
  D.52649 = index->type;
  if (D.52649 == 2) goto <D.52650>; else goto <D.52651>;
  <D.52650>:
  D.52652 = alloc_preg (cfg);
  index2_reg = (int) D.52652;
  {
    struct MonoInst * inst;

    D.52653 = cfg->mempool;
    inst = mono_mempool_alloc (D.52653, 56);
    inst->data.op[1].const_val = 0;
    D.52654 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52654;
    inst->prev = 0B;
    D.52655 = inst->prev;
    inst->next = D.52655;
    inst->opcode = 496;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52656 = inst->sreg3;
    inst->sreg2 = D.52656;
    D.52657 = inst->sreg2;
    inst->sreg1 = D.52657;
    D.52658 = cfg->ip;
    inst->cil_code = D.52658;
    inst->dreg = index2_reg;
    inst->sreg1 = index_reg;
    D.52659 = cfg->cbb;
    D.52660 = D.52659->last_ins;
    if (D.52660 != 0B) goto <D.52661>; else goto <D.52662>;
    <D.52661>:
    D.52659 = cfg->cbb;
    D.52660 = D.52659->last_ins;
    D.52660->next = inst;
    D.52659 = cfg->cbb;
    D.52660 = D.52659->last_ins;
    inst->prev = D.52660;
    D.52659 = cfg->cbb;
    D.52659->last_ins = inst;
    goto <D.52663>;
    <D.52662>:
    D.52659 = cfg->cbb;
    D.52659 = cfg->cbb;
    D.52659->last_ins = inst;
    D.52660 = D.52659->last_ins;
    D.52659->code = D.52660;
    <D.52663>:
  }
  goto <D.52664>;
  <D.52651>:
  index2_reg = index_reg;
  <D.52664>:
  if (bcheck != 0) goto <D.52665>; else goto <D.52666>;
  <D.52665>:
  D.52667 = cfg->opt;
  D.52668 = D.52667 & 134217728;
  if (D.52668 == 0) goto <D.52669>; else goto <D.52670>;
  <D.52669>:
  D.52667 = cfg->opt;
  D.52671 = D.52667 & 262144;
  if (D.52671 == 0) goto <D.52672>; else goto <D.52673>;
  <D.52672>:
  D.52674 = BIT_FIELD_REF <*cfg, 8, 3424>;
  D.52675 = D.52674 & 64;
  if (D.52675 != 0) goto <D.52676>; else goto <D.52677>;
  <D.52676>:
  {
    struct MonoInst * inst;

    D.52653 = cfg->mempool;
    inst = mono_mempool_alloc (D.52653, 56);
    inst->data.op[1].const_val = 0;
    D.52678 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52678;
    inst->prev = 0B;
    D.52679 = inst->prev;
    inst->next = D.52679;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52680 = inst->sreg3;
    inst->sreg2 = D.52680;
    D.52681 = inst->sreg2;
    inst->sreg1 = D.52681;
    D.52658 = cfg->ip;
    inst->cil_code = D.52658;
    inst->dreg = -1;
    inst->sreg1 = array_reg;
    inst->data.op[1].const_val = 0;
    D.52659 = cfg->cbb;
    D.52660 = D.52659->last_ins;
    if (D.52660 != 0B) goto <D.52682>; else goto <D.52683>;
    <D.52682>:
    D.52659 = cfg->cbb;
    D.52660 = D.52659->last_ins;
    D.52660->next = inst;
    D.52659 = cfg->cbb;
    D.52660 = D.52659->last_ins;
    inst->prev = D.52660;
    D.52659 = cfg->cbb;
    D.52659->last_ins = inst;
    goto <D.52684>;
    <D.52683>:
    D.52659 = cfg->cbb;
    D.52659 = cfg->cbb;
    D.52659->last_ins = inst;
    D.52660 = D.52659->last_ins;
    D.52659->code = D.52660;
    <D.52684>:
  }
  {
    struct MonoInst * inst;

    D.52653 = cfg->mempool;
    inst = mono_mempool_alloc (D.52653, 56);
    inst->data.op[1].const_val = 0;
    D.52685 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52685;
    inst->prev = 0B;
    D.52686 = inst->prev;
    inst->next = D.52686;
    inst->opcode = 451;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52687 = inst->sreg3;
    inst->sreg2 = D.52687;
    D.52688 = inst->sreg2;
    inst->sreg1 = D.52688;
    D.52658 = cfg->ip;
    inst->cil_code = D.52658;
    inst->data.op[1].p = "NullReferenceException";
    D.52659 = cfg->cbb;
    D.52660 = D.52659->last_ins;
    if (D.52660 != 0B) goto <D.52689>; else goto <D.52690>;
    <D.52689>:
    D.52659 = cfg->cbb;
    D.52660 = D.52659->last_ins;
    D.52660->next = inst;
    D.52659 = cfg->cbb;
    D.52660 = D.52659->last_ins;
    inst->prev = D.52660;
    D.52659 = cfg->cbb;
    D.52659->last_ins = inst;
    goto <D.52691>;
    <D.52690>:
    D.52659 = cfg->cbb;
    D.52659 = cfg->cbb;
    D.52659->last_ins = inst;
    D.52660 = D.52659->last_ins;
    D.52659->code = D.52660;
    <D.52691>:
  }
  goto <D.52692>;
  <D.52677>:
  <D.52692>:
  if (0 != 0) goto <D.52693>; else goto <D.52694>;
  <D.52693>:
  {
    int _length_reg;

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

      __ins_flags = 32;
      D.52698 = __ins_flags & 32;
      if (D.52698 != 0) goto <D.52699>; else goto <D.52700>;
      <D.52699>:
      D.52674 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.52675 = D.52674 & 64;
      if (D.52675 != 0) goto <D.52701>; else goto <D.52702>;
      <D.52701>:
      {
        struct MonoInst * inst;

        D.52653 = cfg->mempool;
        inst = mono_mempool_alloc (D.52653, 56);
        inst->data.op[1].const_val = 0;
        D.52703 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.52703;
        inst->prev = 0B;
        D.52704 = inst->prev;
        inst->next = D.52704;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.52705 = inst->sreg3;
        inst->sreg2 = D.52705;
        D.52706 = inst->sreg2;
        inst->sreg1 = D.52706;
        D.52658 = cfg->ip;
        inst->cil_code = D.52658;
        inst->dreg = -1;
        inst->sreg1 = array_reg;
        inst->data.op[1].const_val = 0;
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        if (D.52660 != 0B) goto <D.52707>; else goto <D.52708>;
        <D.52707>:
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        D.52660->next = inst;
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        inst->prev = D.52660;
        D.52659 = cfg->cbb;
        D.52659->last_ins = inst;
        goto <D.52709>;
        <D.52708>:
        D.52659 = cfg->cbb;
        D.52659 = cfg->cbb;
        D.52659->last_ins = inst;
        D.52660 = D.52659->last_ins;
        D.52659->code = D.52660;
        <D.52709>:
      }
      {
        struct MonoInst * inst;

        D.52653 = cfg->mempool;
        inst = mono_mempool_alloc (D.52653, 56);
        inst->data.op[1].const_val = 0;
        D.52710 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.52710;
        inst->prev = 0B;
        D.52711 = inst->prev;
        inst->next = D.52711;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.52712 = inst->sreg3;
        inst->sreg2 = D.52712;
        D.52713 = inst->sreg2;
        inst->sreg1 = D.52713;
        D.52658 = cfg->ip;
        inst->cil_code = D.52658;
        inst->data.op[1].p = "NullReferenceException";
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        if (D.52660 != 0B) goto <D.52714>; else goto <D.52715>;
        <D.52714>:
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        D.52660->next = inst;
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        inst->prev = D.52660;
        D.52659 = cfg->cbb;
        D.52659->last_ins = inst;
        goto <D.52716>;
        <D.52715>:
        D.52659 = cfg->cbb;
        D.52659 = cfg->cbb;
        D.52659->last_ins = inst;
        D.52660 = D.52659->last_ins;
        D.52659->code = D.52660;
        <D.52716>:
      }
      goto <D.52717>;
      <D.52702>:
      <D.52717>:
      <D.52700>:
      D.52653 = cfg->mempool;
      inst = mono_mempool_alloc (D.52653, 56);
      inst->data.op[1].const_val = 0;
      D.52718 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.52718;
      inst->prev = 0B;
      D.52719 = inst->prev;
      inst->next = D.52719;
      inst->opcode = 393;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.52720 = inst->sreg3;
      inst->sreg2 = D.52720;
      D.52721 = inst->sreg2;
      inst->sreg1 = D.52721;
      D.52658 = cfg->ip;
      inst->cil_code = D.52658;
      inst->dreg = _length_reg;
      inst->sreg1 = array_reg;
      inst->data.op[0].const_val = 12;
      inst->type = 1;
      D.52722 = (unsigned char) __ins_flags;
      inst->flags = D.52722;
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      if (D.52660 != 0B) goto <D.52723>; else goto <D.52724>;
      <D.52723>:
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      D.52660->next = inst;
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      inst->prev = D.52660;
      D.52659 = cfg->cbb;
      D.52659->last_ins = inst;
      goto <D.52725>;
      <D.52724>:
      D.52659 = cfg->cbb;
      D.52659 = cfg->cbb;
      D.52659->last_ins = inst;
      D.52660 = D.52659->last_ins;
      D.52659->code = D.52660;
      <D.52725>:
    }
    goto <D.52726>;
    <D.52697>:
    {
      struct MonoInst * inst;
      int __ins_flags;

      __ins_flags = 64;
      D.52727 = __ins_flags & 32;
      if (D.52727 != 0) goto <D.52728>; else goto <D.52729>;
      <D.52728>:
      D.52674 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.52675 = D.52674 & 64;
      if (D.52675 != 0) goto <D.52730>; else goto <D.52731>;
      <D.52730>:
      {
        struct MonoInst * inst;

        D.52653 = cfg->mempool;
        inst = mono_mempool_alloc (D.52653, 56);
        inst->data.op[1].const_val = 0;
        D.52732 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.52732;
        inst->prev = 0B;
        D.52733 = inst->prev;
        inst->next = D.52733;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.52734 = inst->sreg3;
        inst->sreg2 = D.52734;
        D.52735 = inst->sreg2;
        inst->sreg1 = D.52735;
        D.52658 = cfg->ip;
        inst->cil_code = D.52658;
        inst->dreg = -1;
        inst->sreg1 = array_reg;
        inst->data.op[1].const_val = 0;
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        if (D.52660 != 0B) goto <D.52736>; else goto <D.52737>;
        <D.52736>:
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        D.52660->next = inst;
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        inst->prev = D.52660;
        D.52659 = cfg->cbb;
        D.52659->last_ins = inst;
        goto <D.52738>;
        <D.52737>:
        D.52659 = cfg->cbb;
        D.52659 = cfg->cbb;
        D.52659->last_ins = inst;
        D.52660 = D.52659->last_ins;
        D.52659->code = D.52660;
        <D.52738>:
      }
      {
        struct MonoInst * inst;

        D.52653 = cfg->mempool;
        inst = mono_mempool_alloc (D.52653, 56);
        inst->data.op[1].const_val = 0;
        D.52739 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.52739;
        inst->prev = 0B;
        D.52740 = inst->prev;
        inst->next = D.52740;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.52741 = inst->sreg3;
        inst->sreg2 = D.52741;
        D.52742 = inst->sreg2;
        inst->sreg1 = D.52742;
        D.52658 = cfg->ip;
        inst->cil_code = D.52658;
        inst->data.op[1].p = "NullReferenceException";
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        if (D.52660 != 0B) goto <D.52743>; else goto <D.52744>;
        <D.52743>:
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        D.52660->next = inst;
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        inst->prev = D.52660;
        D.52659 = cfg->cbb;
        D.52659->last_ins = inst;
        goto <D.52745>;
        <D.52744>:
        D.52659 = cfg->cbb;
        D.52659 = cfg->cbb;
        D.52659->last_ins = inst;
        D.52660 = D.52659->last_ins;
        D.52659->code = D.52660;
        <D.52745>:
      }
      goto <D.52746>;
      <D.52731>:
      <D.52746>:
      <D.52729>:
      D.52653 = cfg->mempool;
      inst = mono_mempool_alloc (D.52653, 56);
      inst->data.op[1].const_val = 0;
      D.52747 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.52747;
      inst->prev = 0B;
      D.52748 = inst->prev;
      inst->next = D.52748;
      inst->opcode = 393;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.52749 = inst->sreg3;
      inst->sreg2 = D.52749;
      D.52750 = inst->sreg2;
      inst->sreg1 = D.52750;
      D.52658 = cfg->ip;
      inst->cil_code = D.52658;
      inst->dreg = _length_reg;
      inst->sreg1 = array_reg;
      inst->data.op[0].const_val = 12;
      inst->type = 1;
      D.52751 = (unsigned char) __ins_flags;
      inst->flags = D.52751;
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      if (D.52660 != 0B) goto <D.52752>; else goto <D.52753>;
      <D.52752>:
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      D.52660->next = inst;
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      inst->prev = D.52660;
      D.52659 = cfg->cbb;
      D.52659->last_ins = inst;
      goto <D.52754>;
      <D.52753>:
      D.52659 = cfg->cbb;
      D.52659 = cfg->cbb;
      D.52659->last_ins = inst;
      D.52660 = D.52659->last_ins;
      D.52659->code = D.52660;
      <D.52754>:
    }
    <D.52726>:
    {
      struct MonoInst * inst;

      D.52653 = cfg->mempool;
      inst = mono_mempool_alloc (D.52653, 56);
      inst->data.op[1].const_val = 0;
      D.52755 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.52755;
      inst->prev = 0B;
      D.52756 = inst->prev;
      inst->next = D.52756;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.52757 = inst->sreg3;
      inst->sreg2 = D.52757;
      D.52758 = inst->sreg2;
      inst->sreg1 = D.52758;
      D.52658 = cfg->ip;
      inst->cil_code = D.52658;
      inst->dreg = -1;
      inst->sreg1 = _length_reg;
      inst->sreg2 = index2_reg;
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      if (D.52660 != 0B) goto <D.52759>; else goto <D.52760>;
      <D.52759>:
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      D.52660->next = inst;
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      inst->prev = D.52660;
      D.52659 = cfg->cbb;
      D.52659->last_ins = inst;
      goto <D.52761>;
      <D.52760>:
      D.52659 = cfg->cbb;
      D.52659 = cfg->cbb;
      D.52659->last_ins = inst;
      D.52660 = D.52659->last_ins;
      D.52659->code = D.52660;
      <D.52761>:
    }
    {
      struct MonoInst * inst;

      D.52653 = cfg->mempool;
      inst = mono_mempool_alloc (D.52653, 56);
      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 = 459;
      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.52658 = cfg->ip;
      inst->cil_code = D.52658;
      inst->data.op[1].p = "IndexOutOfRangeException";
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      if (D.52660 != 0B) goto <D.52766>; else goto <D.52767>;
      <D.52766>:
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      D.52660->next = inst;
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      inst->prev = D.52660;
      D.52659 = cfg->cbb;
      D.52659->last_ins = inst;
      goto <D.52768>;
      <D.52767>:
      D.52659 = cfg->cbb;
      D.52659 = cfg->cbb;
      D.52659->last_ins = inst;
      D.52660 = D.52659->last_ins;
      D.52659->code = D.52660;
      <D.52768>:
    }
  }
  goto <D.52769>;
  <D.52694>:
  {
    int _length_reg;

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

      __ins_flags = 32;
      D.52773 = __ins_flags & 32;
      if (D.52773 != 0) goto <D.52774>; else goto <D.52775>;
      <D.52774>:
      D.52674 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.52675 = D.52674 & 64;
      if (D.52675 != 0) goto <D.52776>; else goto <D.52777>;
      <D.52776>:
      {
        struct MonoInst * inst;

        D.52653 = cfg->mempool;
        inst = mono_mempool_alloc (D.52653, 56);
        inst->data.op[1].const_val = 0;
        D.52778 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.52778;
        inst->prev = 0B;
        D.52779 = inst->prev;
        inst->next = D.52779;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.52780 = inst->sreg3;
        inst->sreg2 = D.52780;
        D.52781 = inst->sreg2;
        inst->sreg1 = D.52781;
        D.52658 = cfg->ip;
        inst->cil_code = D.52658;
        inst->dreg = -1;
        inst->sreg1 = array_reg;
        inst->data.op[1].const_val = 0;
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        if (D.52660 != 0B) goto <D.52782>; else goto <D.52783>;
        <D.52782>:
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        D.52660->next = inst;
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        inst->prev = D.52660;
        D.52659 = cfg->cbb;
        D.52659->last_ins = inst;
        goto <D.52784>;
        <D.52783>:
        D.52659 = cfg->cbb;
        D.52659 = cfg->cbb;
        D.52659->last_ins = inst;
        D.52660 = D.52659->last_ins;
        D.52659->code = D.52660;
        <D.52784>:
      }
      {
        struct MonoInst * inst;

        D.52653 = cfg->mempool;
        inst = mono_mempool_alloc (D.52653, 56);
        inst->data.op[1].const_val = 0;
        D.52785 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.52785;
        inst->prev = 0B;
        D.52786 = inst->prev;
        inst->next = D.52786;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.52787 = inst->sreg3;
        inst->sreg2 = D.52787;
        D.52788 = inst->sreg2;
        inst->sreg1 = D.52788;
        D.52658 = cfg->ip;
        inst->cil_code = D.52658;
        inst->data.op[1].p = "NullReferenceException";
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        if (D.52660 != 0B) goto <D.52789>; else goto <D.52790>;
        <D.52789>:
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        D.52660->next = inst;
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        inst->prev = D.52660;
        D.52659 = cfg->cbb;
        D.52659->last_ins = inst;
        goto <D.52791>;
        <D.52790>:
        D.52659 = cfg->cbb;
        D.52659 = cfg->cbb;
        D.52659->last_ins = inst;
        D.52660 = D.52659->last_ins;
        D.52659->code = D.52660;
        <D.52791>:
      }
      goto <D.52792>;
      <D.52777>:
      <D.52792>:
      <D.52775>:
      D.52653 = cfg->mempool;
      inst = mono_mempool_alloc (D.52653, 56);
      inst->data.op[1].const_val = 0;
      D.52793 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.52793;
      inst->prev = 0B;
      D.52794 = inst->prev;
      inst->next = D.52794;
      inst->opcode = 393;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.52795 = inst->sreg3;
      inst->sreg2 = D.52795;
      D.52796 = inst->sreg2;
      inst->sreg1 = D.52796;
      D.52658 = cfg->ip;
      inst->cil_code = D.52658;
      inst->dreg = _length_reg;
      inst->sreg1 = array_reg;
      inst->data.op[0].const_val = 12;
      inst->type = 1;
      D.52797 = (unsigned char) __ins_flags;
      inst->flags = D.52797;
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      if (D.52660 != 0B) goto <D.52798>; else goto <D.52799>;
      <D.52798>:
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      D.52660->next = inst;
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      inst->prev = D.52660;
      D.52659 = cfg->cbb;
      D.52659->last_ins = inst;
      goto <D.52800>;
      <D.52799>:
      D.52659 = cfg->cbb;
      D.52659 = cfg->cbb;
      D.52659->last_ins = inst;
      D.52660 = D.52659->last_ins;
      D.52659->code = D.52660;
      <D.52800>:
    }
    goto <D.52801>;
    <D.52772>:
    {
      struct MonoInst * inst;
      int __ins_flags;

      __ins_flags = 64;
      D.52802 = __ins_flags & 32;
      if (D.52802 != 0) goto <D.52803>; else goto <D.52804>;
      <D.52803>:
      D.52674 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.52675 = D.52674 & 64;
      if (D.52675 != 0) goto <D.52805>; else goto <D.52806>;
      <D.52805>:
      {
        struct MonoInst * inst;

        D.52653 = cfg->mempool;
        inst = mono_mempool_alloc (D.52653, 56);
        inst->data.op[1].const_val = 0;
        D.52807 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.52807;
        inst->prev = 0B;
        D.52808 = inst->prev;
        inst->next = D.52808;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.52809 = inst->sreg3;
        inst->sreg2 = D.52809;
        D.52810 = inst->sreg2;
        inst->sreg1 = D.52810;
        D.52658 = cfg->ip;
        inst->cil_code = D.52658;
        inst->dreg = -1;
        inst->sreg1 = array_reg;
        inst->data.op[1].const_val = 0;
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        if (D.52660 != 0B) goto <D.52811>; else goto <D.52812>;
        <D.52811>:
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        D.52660->next = inst;
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        inst->prev = D.52660;
        D.52659 = cfg->cbb;
        D.52659->last_ins = inst;
        goto <D.52813>;
        <D.52812>:
        D.52659 = cfg->cbb;
        D.52659 = cfg->cbb;
        D.52659->last_ins = inst;
        D.52660 = D.52659->last_ins;
        D.52659->code = D.52660;
        <D.52813>:
      }
      {
        struct MonoInst * inst;

        D.52653 = cfg->mempool;
        inst = mono_mempool_alloc (D.52653, 56);
        inst->data.op[1].const_val = 0;
        D.52814 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.52814;
        inst->prev = 0B;
        D.52815 = inst->prev;
        inst->next = D.52815;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.52816 = inst->sreg3;
        inst->sreg2 = D.52816;
        D.52817 = inst->sreg2;
        inst->sreg1 = D.52817;
        D.52658 = cfg->ip;
        inst->cil_code = D.52658;
        inst->data.op[1].p = "NullReferenceException";
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        if (D.52660 != 0B) goto <D.52818>; else goto <D.52819>;
        <D.52818>:
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        D.52660->next = inst;
        D.52659 = cfg->cbb;
        D.52660 = D.52659->last_ins;
        inst->prev = D.52660;
        D.52659 = cfg->cbb;
        D.52659->last_ins = inst;
        goto <D.52820>;
        <D.52819>:
        D.52659 = cfg->cbb;
        D.52659 = cfg->cbb;
        D.52659->last_ins = inst;
        D.52660 = D.52659->last_ins;
        D.52659->code = D.52660;
        <D.52820>:
      }
      goto <D.52821>;
      <D.52806>:
      <D.52821>:
      <D.52804>:
      D.52653 = cfg->mempool;
      inst = mono_mempool_alloc (D.52653, 56);
      inst->data.op[1].const_val = 0;
      D.52822 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.52822;
      inst->prev = 0B;
      D.52823 = inst->prev;
      inst->next = D.52823;
      inst->opcode = 393;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.52824 = inst->sreg3;
      inst->sreg2 = D.52824;
      D.52825 = inst->sreg2;
      inst->sreg1 = D.52825;
      D.52658 = cfg->ip;
      inst->cil_code = D.52658;
      inst->dreg = _length_reg;
      inst->sreg1 = array_reg;
      inst->data.op[0].const_val = 12;
      inst->type = 1;
      D.52826 = (unsigned char) __ins_flags;
      inst->flags = D.52826;
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      if (D.52660 != 0B) goto <D.52827>; else goto <D.52828>;
      <D.52827>:
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      D.52660->next = inst;
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      inst->prev = D.52660;
      D.52659 = cfg->cbb;
      D.52659->last_ins = inst;
      goto <D.52829>;
      <D.52828>:
      D.52659 = cfg->cbb;
      D.52659 = cfg->cbb;
      D.52659->last_ins = inst;
      D.52660 = D.52659->last_ins;
      D.52659->code = D.52660;
      <D.52829>:
    }
    <D.52801>:
    {
      struct MonoInst * inst;

      D.52653 = cfg->mempool;
      inst = mono_mempool_alloc (D.52653, 56);
      inst->data.op[1].const_val = 0;
      D.52830 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.52830;
      inst->prev = 0B;
      D.52831 = inst->prev;
      inst->next = D.52831;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.52832 = inst->sreg3;
      inst->sreg2 = D.52832;
      D.52833 = inst->sreg2;
      inst->sreg1 = D.52833;
      D.52658 = cfg->ip;
      inst->cil_code = D.52658;
      inst->dreg = -1;
      inst->sreg1 = _length_reg;
      inst->sreg2 = index2_reg;
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      if (D.52660 != 0B) goto <D.52834>; else goto <D.52835>;
      <D.52834>:
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      D.52660->next = inst;
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      inst->prev = D.52660;
      D.52659 = cfg->cbb;
      D.52659->last_ins = inst;
      goto <D.52836>;
      <D.52835>:
      D.52659 = cfg->cbb;
      D.52659 = cfg->cbb;
      D.52659->last_ins = inst;
      D.52660 = D.52659->last_ins;
      D.52659->code = D.52660;
      <D.52836>:
    }
    {
      struct MonoInst * inst;

      D.52653 = cfg->mempool;
      inst = mono_mempool_alloc (D.52653, 56);
      inst->data.op[1].const_val = 0;
      D.52837 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.52837;
      inst->prev = 0B;
      D.52838 = inst->prev;
      inst->next = D.52838;
      inst->opcode = 459;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.52839 = inst->sreg3;
      inst->sreg2 = D.52839;
      D.52840 = inst->sreg2;
      inst->sreg1 = D.52840;
      D.52658 = cfg->ip;
      inst->cil_code = D.52658;
      inst->data.op[1].p = "IndexOutOfRangeException";
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      if (D.52660 != 0B) goto <D.52841>; else goto <D.52842>;
      <D.52841>:
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      D.52660->next = inst;
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      inst->prev = D.52660;
      D.52659 = cfg->cbb;
      D.52659->last_ins = inst;
      goto <D.52843>;
      <D.52842>:
      D.52659 = cfg->cbb;
      D.52659 = cfg->cbb;
      D.52659->last_ins = inst;
      D.52660 = D.52659->last_ins;
      D.52659->code = D.52660;
      <D.52843>:
    }
  }
  <D.52769>:
  goto <D.52844>;
  <D.52673>:
  {
    struct MonoInst * ins;

    D.52653 = cfg->mempool;
    ins = mono_mempool_alloc (D.52653, 56);
    ins->data.op[1].const_val = 0;
    D.52845 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.52845;
    ins->prev = 0B;
    D.52846 = ins->prev;
    ins->next = D.52846;
    ins->opcode = 784;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.52847 = ins->sreg3;
    ins->sreg2 = D.52847;
    D.52848 = ins->sreg2;
    ins->sreg1 = D.52848;
    D.52658 = cfg->ip;
    ins->cil_code = D.52658;
    ins->sreg1 = array_reg;
    ins->sreg2 = index2_reg;
    ins->data.op[1].const_val = 12;
    D.52849 = ins->flags;
    D.52850 = D.52849 | 32;
    ins->flags = D.52850;
    D.52659 = cfg->cbb;
    D.52660 = D.52659->last_ins;
    if (D.52660 != 0B) goto <D.52851>; else goto <D.52852>;
    <D.52851>:
    D.52659 = cfg->cbb;
    D.52660 = D.52659->last_ins;
    D.52660->next = ins;
    D.52659 = cfg->cbb;
    D.52660 = D.52659->last_ins;
    ins->prev = D.52660;
    D.52659 = cfg->cbb;
    D.52659->last_ins = ins;
    goto <D.52853>;
    <D.52852>:
    D.52659 = cfg->cbb;
    D.52659 = cfg->cbb;
    D.52659->last_ins = ins;
    D.52660 = D.52659->last_ins;
    D.52659->code = D.52660;
    <D.52853>:
    D.52854 = cfg->flags;
    D.52855 = D.52854 | 256;
    cfg->flags = D.52855;
    D.52659 = cfg->cbb;
    D.52659->has_array_access = 1;
  }
  <D.52844>:
  <D.52670>:
  <D.52666>:
  D.52856 = alloc_ireg_mp (cfg);
  add_reg = (int) D.52856;
  if (size == 4294967295) goto <D.52857>; else goto <D.52858>;
  <D.52857>:
  {
    struct MonoInst * rgctx_ins;

    D.52859 = cfg->generic_sharing_context;
    D.52860 = D.52859 == 0B;
    D.52861 = (long int) D.52860;
    D.52862 = __builtin_expect (D.52861, 0);
    if (D.52862 != 0) goto <D.52863>; else goto <D.52864>;
    <D.52863>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4718, "cfg->generic_sharing_context");
    <D.52864>:
    context_used = mini_class_check_context_used (cfg, klass);
    D.52865 = context_used == 0;
    D.52866 = (long int) D.52865;
    D.52867 = __builtin_expect (D.52866, 0);
    if (D.52867 != 0) goto <D.52868>; else goto <D.52869>;
    <D.52868>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4720, "context_used");
    <D.52869>:
    D.52870 = &klass->byval_arg;
    rgctx_ins = emit_get_gsharedvt_info (cfg, D.52870, 13);
    {
      struct MonoInst * inst;

      D.52653 = cfg->mempool;
      inst = mono_mempool_alloc (D.52653, 56);
      inst->data.op[1].const_val = 0;
      D.52871 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.52871;
      inst->prev = 0B;
      D.52872 = inst->prev;
      inst->next = D.52872;
      inst->opcode = 567;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.52873 = inst->sreg3;
      inst->sreg2 = D.52873;
      D.52874 = inst->sreg2;
      inst->sreg1 = D.52874;
      D.52658 = cfg->ip;
      inst->cil_code = D.52658;
      inst->dreg = mult_reg;
      inst->sreg1 = index2_reg;
      D.52875 = rgctx_ins->dreg;
      inst->sreg2 = D.52875;
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      if (D.52660 != 0B) goto <D.52876>; else goto <D.52877>;
      <D.52876>:
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      D.52660->next = inst;
      D.52659 = cfg->cbb;
      D.52660 = D.52659->last_ins;
      inst->prev = D.52660;
      D.52659 = cfg->cbb;
      D.52659->last_ins = inst;
      goto <D.52878>;
      <D.52877>:
      D.52659 = cfg->cbb;
      D.52659 = cfg->cbb;
      D.52659->last_ins = inst;
      D.52660 = D.52659->last_ins;
      D.52659->code = D.52660;
      <D.52878>:
    }
  }
  goto <D.52879>;
  <D.52858>:
  {
    struct MonoInst * inst;

    D.52653 = cfg->mempool;
    inst = mono_mempool_alloc (D.52653, 56);
    inst->data.op[1].const_val = 0;
    D.52880 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52880;
    inst->prev = 0B;
    D.52881 = inst->prev;
    inst->next = D.52881;
    inst->opcode = 431;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52882 = inst->sreg3;
    inst->sreg2 = D.52882;
    D.52883 = inst->sreg2;
    inst->sreg1 = D.52883;
    D.52658 = cfg->ip;
    inst->cil_code = D.52658;
    inst->dreg = mult_reg;
    inst->sreg1 = index2_reg;
    size.522 = (int) size;
    inst->data.op[1].const_val = size.522;
    D.52659 = cfg->cbb;
    D.52660 = D.52659->last_ins;
    if (D.52660 != 0B) goto <D.52885>; else goto <D.52886>;
    <D.52885>:
    D.52659 = cfg->cbb;
    D.52660 = D.52659->last_ins;
    D.52660->next = inst;
    D.52659 = cfg->cbb;
    D.52660 = D.52659->last_ins;
    inst->prev = D.52660;
    D.52659 = cfg->cbb;
    D.52659->last_ins = inst;
    goto <D.52887>;
    <D.52886>:
    D.52659 = cfg->cbb;
    D.52659 = cfg->cbb;
    D.52659->last_ins = inst;
    D.52660 = D.52659->last_ins;
    D.52659->code = D.52660;
    <D.52887>:
  }
  <D.52879>:
  {
    struct MonoInst * inst;

    D.52653 = cfg->mempool;
    inst = mono_mempool_alloc (D.52653, 56);
    inst->data.op[1].const_val = 0;
    D.52888 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52888;
    inst->prev = 0B;
    D.52889 = inst->prev;
    inst->next = D.52889;
    inst->opcode = 565;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52890 = inst->sreg3;
    inst->sreg2 = D.52890;
    D.52891 = inst->sreg2;
    inst->sreg1 = D.52891;
    D.52658 = cfg->ip;
    inst->cil_code = D.52658;
    inst->dreg = add_reg;
    inst->sreg1 = array_reg;
    inst->sreg2 = mult_reg;
    D.52659 = cfg->cbb;
    D.52660 = D.52659->last_ins;
    if (D.52660 != 0B) goto <D.52892>; else goto <D.52893>;
    <D.52892>:
    D.52659 = cfg->cbb;
    D.52660 = D.52659->last_ins;
    D.52660->next = inst;
    D.52659 = cfg->cbb;
    D.52660 = D.52659->last_ins;
    inst->prev = D.52660;
    D.52659 = cfg->cbb;
    D.52659->last_ins = inst;
    goto <D.52894>;
    <D.52893>:
    D.52659 = cfg->cbb;
    D.52659 = cfg->cbb;
    D.52659->last_ins = inst;
    D.52660 = D.52659->last_ins;
    D.52659->code = D.52660;
    <D.52894>:
  }
  D.52653 = cfg->mempool;
  ins = mono_mempool_alloc (D.52653, 56);
  ins->data.op[1].const_val = 0;
  D.52895 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.52895;
  ins->prev = 0B;
  D.52896 = ins->prev;
  ins->next = D.52896;
  ins->opcode = 625;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.52897 = ins->sreg3;
  ins->sreg2 = D.52897;
  D.52898 = ins->sreg2;
  ins->sreg1 = D.52898;
  D.52658 = cfg->ip;
  ins->cil_code = D.52658;
  ins->dreg = add_reg;
  ins->sreg1 = add_reg;
  ins->data.op[1].const_val = 16;
  D.52899 = mono_class_get_element_class (klass);
  ins->klass = D.52899;
  ins->type = 5;
  D.52659 = cfg->cbb;
  D.52660 = D.52659->last_ins;
  if (D.52660 != 0B) goto <D.52900>; else goto <D.52901>;
  <D.52900>:
  D.52659 = cfg->cbb;
  D.52660 = D.52659->last_ins;
  D.52660->next = ins;
  D.52659 = cfg->cbb;
  D.52660 = D.52659->last_ins;
  ins->prev = D.52660;
  D.52659 = cfg->cbb;
  D.52659->last_ins = ins;
  goto <D.52902>;
  <D.52901>:
  D.52659 = cfg->cbb;
  D.52659 = cfg->cbb;
  D.52659->last_ins = ins;
  D.52660 = D.52659->last_ins;
  D.52659->code = D.52660;
  <D.52902>:
  D.52903 = ins;
  return D.52903;
}


array_access_to_klass (int opcode)
{
  struct MonoClass * D.52905;

  switch (opcode) <default: <D.27478>, case 144: <D.27463>, case 145: <D.27459>, case 146: <D.27465>, case 147: <D.27460>, case 148: <D.27467>, case 149: <D.27469>, case 150: <D.27470>, case 151: <D.27461>, case 152: <D.27472>, case 153: <D.27474>, case 154: <D.27476>, case 155: <D.27462>, case 156: <D.27464>, case 157: <D.27466>, case 158: <D.27468>, case 159: <D.27471>, case 160: <D.27473>, case 161: <D.27475>, case 162: <D.27477>>
  <D.27459>:
  D.52905 = mono_defaults.byte_class;
  return D.52905;
  <D.27460>:
  D.52905 = mono_defaults.uint16_class;
  return D.52905;
  <D.27461>:
  <D.27462>:
  D.52905 = mono_defaults.int_class;
  return D.52905;
  <D.27463>:
  <D.27464>:
  D.52905 = mono_defaults.sbyte_class;
  return D.52905;
  <D.27465>:
  <D.27466>:
  D.52905 = mono_defaults.int16_class;
  return D.52905;
  <D.27467>:
  <D.27468>:
  D.52905 = mono_defaults.int32_class;
  return D.52905;
  <D.27469>:
  D.52905 = mono_defaults.uint32_class;
  return D.52905;
  <D.27470>:
  <D.27471>:
  D.52905 = mono_defaults.int64_class;
  return D.52905;
  <D.27472>:
  <D.27473>:
  D.52905 = mono_defaults.single_class;
  return D.52905;
  <D.27474>:
  <D.27475>:
  D.52905 = mono_defaults.double_class;
  return D.52905;
  <D.27476>:
  <D.27477>:
  D.52905 = mono_defaults.object_class;
  return D.52905;
  <D.27478>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 1271);
  D.52905 = 0B;
  return D.52905;
}


emit_array_store (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * * sp, gboolean safety_checks)
{
  int D.52910;
  struct MonoInst * * D.52912;
  struct MonoInst * D.52913;
  short unsigned int D.52914;
  void * D.52916;
  struct MonoClass * obj_array.525;
  struct MonoClass * tmp_klass.523;
  struct MonoClass * D.52920;
  struct MonoClass * tmp_klass.524;
  _Bool D.52922;
  long int D.52923;
  long int D.52924;
  short int D.52927;
  _Bool D.52930;
  long int D.52931;
  long int D.52932;
  struct MonoInst * D.52935;
  unsigned char D.52936;
  struct MonoInst * D.52939;
  unsigned char D.52940;
  struct MonoInst * D.52943;
  struct MonoInst * D.52944;
  int D.52945;
  struct MonoInst * * D.52948;
  struct MonoInst * D.52949;
  struct MonoMemPool * D.52950;
  int D.52951;
  struct MonoInst * D.52952;
  struct MonoType * D.52953;
  unsigned int D.52954;
  short unsigned int D.52955;
  int D.52956;
  int D.52957;
  const unsigned char * D.52958;
  int D.52959;
  int D.52960;
  struct MonoClass * D.52961;
  struct MonoBasicBlock * D.52962;
  struct MonoInst * D.52963;
  short unsigned int D.52968;
  int D.52971;
  int D.52972;
  int D.52973;
  unsigned int D.52974;
  unsigned int D.52975;
  unsigned int D.52978;
  unsigned int D.52979;
  unsigned int D.52982;
  unsigned char D.52985;
  unsigned char D.52986;
  int D.52989;
  struct MonoInst * D.52990;
  int D.52991;
  int D.52992;
  int D.52996;
  struct MonoInst * D.52997;
  int D.52998;
  int D.52999;
  unsigned int D.53006;
  int D.53009;
  int D.53014;
  struct MonoInst * D.53015;
  int D.53016;
  int D.53017;
  int D.53021;
  struct MonoInst * D.53022;
  int D.53023;
  int D.53024;
  int D.53029;
  struct MonoInst * D.53030;
  int D.53031;
  int D.53032;
  unsigned char D.53033;
  int D.53038;
  int D.53043;
  struct MonoInst * D.53044;
  int D.53045;
  int D.53046;
  int D.53050;
  struct MonoInst * D.53051;
  int D.53052;
  int D.53053;
  int D.53058;
  struct MonoInst * D.53059;
  int D.53060;
  int D.53061;
  unsigned char D.53062;
  int D.53066;
  struct MonoInst * D.53067;
  int D.53068;
  int D.53069;
  int D.53073;
  struct MonoInst * D.53074;
  int D.53075;
  int D.53076;
  unsigned int D.53081;
  int D.53084;
  int D.53089;
  struct MonoInst * D.53090;
  int D.53091;
  int D.53092;
  int D.53096;
  struct MonoInst * D.53097;
  int D.53098;
  int D.53099;
  int D.53104;
  struct MonoInst * D.53105;
  int D.53106;
  int D.53107;
  unsigned char D.53108;
  int D.53113;
  int D.53118;
  struct MonoInst * D.53119;
  int D.53120;
  int D.53121;
  int D.53125;
  struct MonoInst * D.53126;
  int D.53127;
  int D.53128;
  int D.53133;
  struct MonoInst * D.53134;
  int D.53135;
  int D.53136;
  unsigned char D.53137;
  int D.53141;
  struct MonoInst * D.53142;
  int D.53143;
  int D.53144;
  int D.53148;
  struct MonoInst * D.53149;
  int D.53150;
  int D.53151;
  int D.53156;
  struct MonoInst * D.53157;
  int D.53158;
  int D.53159;
  unsigned char D.53160;
  unsigned char D.53161;
  unsigned int D.53165;
  unsigned int D.53166;
  unsigned int D.53167;
  short unsigned int D.53168;
  struct MonoClass * D.53169;
  unsigned int D.53174;
  short unsigned int D.53175;
  int D.53176;
  struct MonoClass * D.53177;
  int D.53181;

  if (safety_checks != 0) goto <D.52909>; else goto <D.52907>;
  <D.52909>:
  D.52910 = generic_class_is_reference_type (cfg, klass);
  if (D.52910 != 0) goto <D.52911>; else goto <D.52907>;
  <D.52911>:
  D.52912 = sp + 8;
  D.52913 = *D.52912;
  D.52914 = D.52913->opcode;
  if (D.52914 != 362) goto <D.52908>; else goto <D.52915>;
  <D.52915>:
  D.52912 = sp + 8;
  D.52913 = *D.52912;
  D.52916 = D.52913->data.op[0].p;
  if (D.52916 != 0B) goto <D.52908>; else goto <D.52907>;
  <D.52908>:
  {
    struct MonoClass * obj_array;
    struct MonoMethod * helper;
    struct MonoInst * iargs[3];

    try
      {
        {
          static struct MonoClass * tmp_klass;

          {
            tmp_klass.523 = tmp_klass;
            if (tmp_klass.523 == 0B) goto <D.52918>; else goto <D.52919>;
            <D.52918>:
            D.52920 = mono_defaults.object_class;
            tmp_klass.524 = mono_array_class_get (D.52920, 1);
            tmp_klass = tmp_klass.524;
            tmp_klass.523 = tmp_klass;
            D.52922 = tmp_klass.523 == 0B;
            D.52923 = (long int) D.52922;
            D.52924 = __builtin_expect (D.52923, 0);
            if (D.52924 != 0) goto <D.52925>; else goto <D.52926>;
            <D.52925>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4919, "tmp_klass");
            <D.52926>:
            <D.52919>:
          }
          obj_array.525 = tmp_klass;
        }
        obj_array = obj_array.525;
        helper = mono_marshal_get_virtual_stelemref (obj_array);
        D.52927 = helper->slot;
        if (D.52927 == 0) goto <D.52928>; else goto <D.52929>;
        <D.52928>:
        mono_class_setup_vtable (obj_array);
        <D.52929>:
        D.52927 = helper->slot;
        D.52930 = D.52927 == 0;
        D.52931 = (long int) D.52930;
        D.52932 = __builtin_expect (D.52931, 0);
        if (D.52932 != 0) goto <D.52933>; else goto <D.52934>;
        <D.52933>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4925, "helper->slot");
        <D.52934>:
        D.52935 = *sp;
        D.52936 = D.52935->type;
        if (D.52936 != 6) goto <D.52937>; else goto <D.52938>;
        <D.52937>:
        D.52939 = 0B;
        return D.52939;
        <D.52938>:
        D.52912 = sp + 8;
        D.52913 = *D.52912;
        D.52940 = D.52913->type;
        if (D.52940 != 6) goto <D.52941>; else goto <D.52942>;
        <D.52941>:
        D.52939 = 0B;
        return D.52939;
        <D.52942>:
        D.52943 = MEM[(struct MonoInst * *)sp + 8B];
        iargs[2] = D.52943;
        D.52944 = MEM[(struct MonoInst * *)sp + 4B];
        iargs[1] = D.52944;
        D.52935 = *sp;
        iargs[0] = D.52935;
        D.52935 = *sp;
        D.52939 = mono_emit_method_call (cfg, helper, &iargs, D.52935);
        return D.52939;
      }
    finally
      {
        iargs = {CLOBBER};
      }
  }
  <D.52907>:
  {
    struct MonoInst * ins;

    D.52945 = mini_is_gsharedvt_variable_klass (cfg, klass);
    if (D.52945 != 0) goto <D.52946>; else goto <D.52947>;
    <D.52946>:
    {
      struct MonoInst * addr;

      D.52935 = *sp;
      D.52948 = sp + 4;
      D.52949 = *D.52948;
      addr = mini_emit_ldelema_1_ins (cfg, klass, D.52935, D.52949, 1);
      D.52950 = cfg->mempool;
      ins = mono_mempool_alloc (D.52950, 56);
      ins->data.op[1].const_val = 0;
      D.52951 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.52951;
      ins->prev = 0B;
      D.52952 = ins->prev;
      ins->next = D.52952;
      D.52953 = &klass->byval_arg;
      D.52954 = mono_type_to_store_membase (cfg, D.52953);
      D.52955 = (short unsigned int) D.52954;
      ins->opcode = D.52955;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.52956 = ins->sreg3;
      ins->sreg2 = D.52956;
      D.52957 = ins->sreg2;
      ins->sreg1 = D.52957;
      D.52958 = cfg->ip;
      ins->cil_code = D.52958;
      D.52912 = sp + 8;
      D.52913 = *D.52912;
      D.52959 = D.52913->dreg;
      ins->sreg1 = D.52959;
      D.52960 = addr->dreg;
      ins->dreg = D.52960;
      ins->data.op[0].const_val = 0;
      D.52953 = &klass->byval_arg;
      type_to_eval_stack_type (cfg, D.52953, ins);
      D.52953 = &klass->byval_arg;
      D.52961 = mono_class_from_mono_type (D.52953);
      ins->klass = D.52961;
      D.52962 = cfg->cbb;
      D.52963 = D.52962->last_ins;
      if (D.52963 != 0B) goto <D.52964>; else goto <D.52965>;
      <D.52964>:
      D.52962 = cfg->cbb;
      D.52963 = D.52962->last_ins;
      D.52963->next = ins;
      D.52962 = cfg->cbb;
      D.52963 = D.52962->last_ins;
      ins->prev = D.52963;
      D.52962 = cfg->cbb;
      D.52962->last_ins = ins;
      goto <D.52966>;
      <D.52965>:
      D.52962 = cfg->cbb;
      D.52962 = cfg->cbb;
      D.52962->last_ins = ins;
      D.52963 = D.52962->last_ins;
      D.52962->code = D.52963;
      <D.52966>:
      ins->opcode = 387;
    }
    goto <D.52967>;
    <D.52947>:
    D.52948 = sp + 4;
    D.52949 = *D.52948;
    D.52968 = D.52949->opcode;
    if (D.52968 == 362) goto <D.52969>; else goto <D.52970>;
    <D.52969>:
    {
      int array_reg;
      int index_reg;
      int offset;

      D.52935 = *sp;
      array_reg = D.52935->dreg;
      D.52948 = sp + 4;
      D.52949 = *D.52948;
      index_reg = D.52949->dreg;
      D.52971 = mono_class_array_element_size (klass);
      D.52948 = sp + 4;
      D.52949 = *D.52948;
      D.52972 = D.52949->data.op[0].const_val;
      D.52973 = D.52971 * D.52972;
      D.52974 = (unsigned int) D.52973;
      D.52975 = D.52974 + 16;
      offset = (int) D.52975;
      if (safety_checks != 0) goto <D.52976>; else goto <D.52977>;
      <D.52976>:
      D.52978 = cfg->opt;
      D.52979 = D.52978 & 134217728;
      if (D.52979 == 0) goto <D.52980>; else goto <D.52981>;
      <D.52980>:
      D.52978 = cfg->opt;
      D.52982 = D.52978 & 262144;
      if (D.52982 == 0) goto <D.52983>; else goto <D.52984>;
      <D.52983>:
      D.52985 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.52986 = D.52985 & 64;
      if (D.52986 != 0) goto <D.52987>; else goto <D.52988>;
      <D.52987>:
      {
        struct MonoInst * inst;

        D.52950 = cfg->mempool;
        inst = mono_mempool_alloc (D.52950, 56);
        inst->data.op[1].const_val = 0;
        D.52989 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.52989;
        inst->prev = 0B;
        D.52990 = inst->prev;
        inst->next = D.52990;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.52991 = inst->sreg3;
        inst->sreg2 = D.52991;
        D.52992 = inst->sreg2;
        inst->sreg1 = D.52992;
        D.52958 = cfg->ip;
        inst->cil_code = D.52958;
        inst->dreg = -1;
        inst->sreg1 = array_reg;
        inst->data.op[1].const_val = 0;
        D.52962 = cfg->cbb;
        D.52963 = D.52962->last_ins;
        if (D.52963 != 0B) goto <D.52993>; else goto <D.52994>;
        <D.52993>:
        D.52962 = cfg->cbb;
        D.52963 = D.52962->last_ins;
        D.52963->next = inst;
        D.52962 = cfg->cbb;
        D.52963 = D.52962->last_ins;
        inst->prev = D.52963;
        D.52962 = cfg->cbb;
        D.52962->last_ins = inst;
        goto <D.52995>;
        <D.52994>:
        D.52962 = cfg->cbb;
        D.52962 = cfg->cbb;
        D.52962->last_ins = inst;
        D.52963 = D.52962->last_ins;
        D.52962->code = D.52963;
        <D.52995>:
      }
      {
        struct MonoInst * inst;

        D.52950 = cfg->mempool;
        inst = mono_mempool_alloc (D.52950, 56);
        inst->data.op[1].const_val = 0;
        D.52996 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.52996;
        inst->prev = 0B;
        D.52997 = inst->prev;
        inst->next = D.52997;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.52998 = inst->sreg3;
        inst->sreg2 = D.52998;
        D.52999 = inst->sreg2;
        inst->sreg1 = D.52999;
        D.52958 = cfg->ip;
        inst->cil_code = D.52958;
        inst->data.op[1].p = "NullReferenceException";
        D.52962 = cfg->cbb;
        D.52963 = D.52962->last_ins;
        if (D.52963 != 0B) goto <D.53000>; else goto <D.53001>;
        <D.53000>:
        D.52962 = cfg->cbb;
        D.52963 = D.52962->last_ins;
        D.52963->next = inst;
        D.52962 = cfg->cbb;
        D.52963 = D.52962->last_ins;
        inst->prev = D.52963;
        D.52962 = cfg->cbb;
        D.52962->last_ins = inst;
        goto <D.53002>;
        <D.53001>:
        D.52962 = cfg->cbb;
        D.52962 = cfg->cbb;
        D.52962->last_ins = inst;
        D.52963 = D.52962->last_ins;
        D.52962->code = D.52963;
        <D.53002>:
      }
      goto <D.53003>;
      <D.52988>:
      <D.53003>:
      if (0 != 0) goto <D.53004>; else goto <D.53005>;
      <D.53004>:
      {
        int _length_reg;

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

          __ins_flags = 32;
          D.53009 = __ins_flags & 32;
          if (D.53009 != 0) goto <D.53010>; else goto <D.53011>;
          <D.53010>:
          D.52985 = BIT_FIELD_REF <*cfg, 8, 3424>;
          D.52986 = D.52985 & 64;
          if (D.52986 != 0) goto <D.53012>; else goto <D.53013>;
          <D.53012>:
          {
            struct MonoInst * inst;

            D.52950 = cfg->mempool;
            inst = mono_mempool_alloc (D.52950, 56);
            inst->data.op[1].const_val = 0;
            D.53014 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.53014;
            inst->prev = 0B;
            D.53015 = inst->prev;
            inst->next = D.53015;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.53016 = inst->sreg3;
            inst->sreg2 = D.53016;
            D.53017 = inst->sreg2;
            inst->sreg1 = D.53017;
            D.52958 = cfg->ip;
            inst->cil_code = D.52958;
            inst->dreg = -1;
            inst->sreg1 = array_reg;
            inst->data.op[1].const_val = 0;
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            if (D.52963 != 0B) goto <D.53018>; else goto <D.53019>;
            <D.53018>:
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            D.52963->next = inst;
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            inst->prev = D.52963;
            D.52962 = cfg->cbb;
            D.52962->last_ins = inst;
            goto <D.53020>;
            <D.53019>:
            D.52962 = cfg->cbb;
            D.52962 = cfg->cbb;
            D.52962->last_ins = inst;
            D.52963 = D.52962->last_ins;
            D.52962->code = D.52963;
            <D.53020>:
          }
          {
            struct MonoInst * inst;

            D.52950 = cfg->mempool;
            inst = mono_mempool_alloc (D.52950, 56);
            inst->data.op[1].const_val = 0;
            D.53021 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.53021;
            inst->prev = 0B;
            D.53022 = inst->prev;
            inst->next = D.53022;
            inst->opcode = 451;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.53023 = inst->sreg3;
            inst->sreg2 = D.53023;
            D.53024 = inst->sreg2;
            inst->sreg1 = D.53024;
            D.52958 = cfg->ip;
            inst->cil_code = D.52958;
            inst->data.op[1].p = "NullReferenceException";
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            if (D.52963 != 0B) goto <D.53025>; else goto <D.53026>;
            <D.53025>:
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            D.52963->next = inst;
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            inst->prev = D.52963;
            D.52962 = cfg->cbb;
            D.52962->last_ins = inst;
            goto <D.53027>;
            <D.53026>:
            D.52962 = cfg->cbb;
            D.52962 = cfg->cbb;
            D.52962->last_ins = inst;
            D.52963 = D.52962->last_ins;
            D.52962->code = D.52963;
            <D.53027>:
          }
          goto <D.53028>;
          <D.53013>:
          <D.53028>:
          <D.53011>:
          D.52950 = cfg->mempool;
          inst = mono_mempool_alloc (D.52950, 56);
          inst->data.op[1].const_val = 0;
          D.53029 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.53029;
          inst->prev = 0B;
          D.53030 = inst->prev;
          inst->next = D.53030;
          inst->opcode = 393;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.53031 = inst->sreg3;
          inst->sreg2 = D.53031;
          D.53032 = inst->sreg2;
          inst->sreg1 = D.53032;
          D.52958 = cfg->ip;
          inst->cil_code = D.52958;
          inst->dreg = _length_reg;
          inst->sreg1 = array_reg;
          inst->data.op[0].const_val = 12;
          inst->type = 1;
          D.53033 = (unsigned char) __ins_flags;
          inst->flags = D.53033;
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          if (D.52963 != 0B) goto <D.53034>; else goto <D.53035>;
          <D.53034>:
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          D.52963->next = inst;
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          inst->prev = D.52963;
          D.52962 = cfg->cbb;
          D.52962->last_ins = inst;
          goto <D.53036>;
          <D.53035>:
          D.52962 = cfg->cbb;
          D.52962 = cfg->cbb;
          D.52962->last_ins = inst;
          D.52963 = D.52962->last_ins;
          D.52962->code = D.52963;
          <D.53036>:
        }
        goto <D.53037>;
        <D.53008>:
        {
          struct MonoInst * inst;
          int __ins_flags;

          __ins_flags = 64;
          D.53038 = __ins_flags & 32;
          if (D.53038 != 0) goto <D.53039>; else goto <D.53040>;
          <D.53039>:
          D.52985 = BIT_FIELD_REF <*cfg, 8, 3424>;
          D.52986 = D.52985 & 64;
          if (D.52986 != 0) goto <D.53041>; else goto <D.53042>;
          <D.53041>:
          {
            struct MonoInst * inst;

            D.52950 = cfg->mempool;
            inst = mono_mempool_alloc (D.52950, 56);
            inst->data.op[1].const_val = 0;
            D.53043 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.53043;
            inst->prev = 0B;
            D.53044 = inst->prev;
            inst->next = D.53044;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.53045 = inst->sreg3;
            inst->sreg2 = D.53045;
            D.53046 = inst->sreg2;
            inst->sreg1 = D.53046;
            D.52958 = cfg->ip;
            inst->cil_code = D.52958;
            inst->dreg = -1;
            inst->sreg1 = array_reg;
            inst->data.op[1].const_val = 0;
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            if (D.52963 != 0B) goto <D.53047>; else goto <D.53048>;
            <D.53047>:
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            D.52963->next = inst;
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            inst->prev = D.52963;
            D.52962 = cfg->cbb;
            D.52962->last_ins = inst;
            goto <D.53049>;
            <D.53048>:
            D.52962 = cfg->cbb;
            D.52962 = cfg->cbb;
            D.52962->last_ins = inst;
            D.52963 = D.52962->last_ins;
            D.52962->code = D.52963;
            <D.53049>:
          }
          {
            struct MonoInst * inst;

            D.52950 = cfg->mempool;
            inst = mono_mempool_alloc (D.52950, 56);
            inst->data.op[1].const_val = 0;
            D.53050 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.53050;
            inst->prev = 0B;
            D.53051 = inst->prev;
            inst->next = D.53051;
            inst->opcode = 451;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.53052 = inst->sreg3;
            inst->sreg2 = D.53052;
            D.53053 = inst->sreg2;
            inst->sreg1 = D.53053;
            D.52958 = cfg->ip;
            inst->cil_code = D.52958;
            inst->data.op[1].p = "NullReferenceException";
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            if (D.52963 != 0B) goto <D.53054>; else goto <D.53055>;
            <D.53054>:
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            D.52963->next = inst;
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            inst->prev = D.52963;
            D.52962 = cfg->cbb;
            D.52962->last_ins = inst;
            goto <D.53056>;
            <D.53055>:
            D.52962 = cfg->cbb;
            D.52962 = cfg->cbb;
            D.52962->last_ins = inst;
            D.52963 = D.52962->last_ins;
            D.52962->code = D.52963;
            <D.53056>:
          }
          goto <D.53057>;
          <D.53042>:
          <D.53057>:
          <D.53040>:
          D.52950 = cfg->mempool;
          inst = mono_mempool_alloc (D.52950, 56);
          inst->data.op[1].const_val = 0;
          D.53058 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.53058;
          inst->prev = 0B;
          D.53059 = inst->prev;
          inst->next = D.53059;
          inst->opcode = 393;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.53060 = inst->sreg3;
          inst->sreg2 = D.53060;
          D.53061 = inst->sreg2;
          inst->sreg1 = D.53061;
          D.52958 = cfg->ip;
          inst->cil_code = D.52958;
          inst->dreg = _length_reg;
          inst->sreg1 = array_reg;
          inst->data.op[0].const_val = 12;
          inst->type = 1;
          D.53062 = (unsigned char) __ins_flags;
          inst->flags = D.53062;
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          if (D.52963 != 0B) goto <D.53063>; else goto <D.53064>;
          <D.53063>:
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          D.52963->next = inst;
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          inst->prev = D.52963;
          D.52962 = cfg->cbb;
          D.52962->last_ins = inst;
          goto <D.53065>;
          <D.53064>:
          D.52962 = cfg->cbb;
          D.52962 = cfg->cbb;
          D.52962->last_ins = inst;
          D.52963 = D.52962->last_ins;
          D.52962->code = D.52963;
          <D.53065>:
        }
        <D.53037>:
        {
          struct MonoInst * inst;

          D.52950 = cfg->mempool;
          inst = mono_mempool_alloc (D.52950, 56);
          inst->data.op[1].const_val = 0;
          D.53066 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.53066;
          inst->prev = 0B;
          D.53067 = inst->prev;
          inst->next = D.53067;
          inst->opcode = 322;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.53068 = inst->sreg3;
          inst->sreg2 = D.53068;
          D.53069 = inst->sreg2;
          inst->sreg1 = D.53069;
          D.52958 = cfg->ip;
          inst->cil_code = D.52958;
          inst->dreg = -1;
          inst->sreg1 = _length_reg;
          inst->sreg2 = index_reg;
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          if (D.52963 != 0B) goto <D.53070>; else goto <D.53071>;
          <D.53070>:
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          D.52963->next = inst;
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          inst->prev = D.52963;
          D.52962 = cfg->cbb;
          D.52962->last_ins = inst;
          goto <D.53072>;
          <D.53071>:
          D.52962 = cfg->cbb;
          D.52962 = cfg->cbb;
          D.52962->last_ins = inst;
          D.52963 = D.52962->last_ins;
          D.52962->code = D.52963;
          <D.53072>:
        }
        {
          struct MonoInst * inst;

          D.52950 = cfg->mempool;
          inst = mono_mempool_alloc (D.52950, 56);
          inst->data.op[1].const_val = 0;
          D.53073 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.53073;
          inst->prev = 0B;
          D.53074 = inst->prev;
          inst->next = D.53074;
          inst->opcode = 459;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.53075 = inst->sreg3;
          inst->sreg2 = D.53075;
          D.53076 = inst->sreg2;
          inst->sreg1 = D.53076;
          D.52958 = cfg->ip;
          inst->cil_code = D.52958;
          inst->data.op[1].p = "IndexOutOfRangeException";
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          if (D.52963 != 0B) goto <D.53077>; else goto <D.53078>;
          <D.53077>:
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          D.52963->next = inst;
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          inst->prev = D.52963;
          D.52962 = cfg->cbb;
          D.52962->last_ins = inst;
          goto <D.53079>;
          <D.53078>:
          D.52962 = cfg->cbb;
          D.52962 = cfg->cbb;
          D.52962->last_ins = inst;
          D.52963 = D.52962->last_ins;
          D.52962->code = D.52963;
          <D.53079>:
        }
      }
      goto <D.53080>;
      <D.53005>:
      {
        int _length_reg;

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

          __ins_flags = 32;
          D.53084 = __ins_flags & 32;
          if (D.53084 != 0) goto <D.53085>; else goto <D.53086>;
          <D.53085>:
          D.52985 = BIT_FIELD_REF <*cfg, 8, 3424>;
          D.52986 = D.52985 & 64;
          if (D.52986 != 0) goto <D.53087>; else goto <D.53088>;
          <D.53087>:
          {
            struct MonoInst * inst;

            D.52950 = cfg->mempool;
            inst = mono_mempool_alloc (D.52950, 56);
            inst->data.op[1].const_val = 0;
            D.53089 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.53089;
            inst->prev = 0B;
            D.53090 = inst->prev;
            inst->next = D.53090;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.53091 = inst->sreg3;
            inst->sreg2 = D.53091;
            D.53092 = inst->sreg2;
            inst->sreg1 = D.53092;
            D.52958 = cfg->ip;
            inst->cil_code = D.52958;
            inst->dreg = -1;
            inst->sreg1 = array_reg;
            inst->data.op[1].const_val = 0;
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            if (D.52963 != 0B) goto <D.53093>; else goto <D.53094>;
            <D.53093>:
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            D.52963->next = inst;
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            inst->prev = D.52963;
            D.52962 = cfg->cbb;
            D.52962->last_ins = inst;
            goto <D.53095>;
            <D.53094>:
            D.52962 = cfg->cbb;
            D.52962 = cfg->cbb;
            D.52962->last_ins = inst;
            D.52963 = D.52962->last_ins;
            D.52962->code = D.52963;
            <D.53095>:
          }
          {
            struct MonoInst * inst;

            D.52950 = cfg->mempool;
            inst = mono_mempool_alloc (D.52950, 56);
            inst->data.op[1].const_val = 0;
            D.53096 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.53096;
            inst->prev = 0B;
            D.53097 = inst->prev;
            inst->next = D.53097;
            inst->opcode = 451;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.53098 = inst->sreg3;
            inst->sreg2 = D.53098;
            D.53099 = inst->sreg2;
            inst->sreg1 = D.53099;
            D.52958 = cfg->ip;
            inst->cil_code = D.52958;
            inst->data.op[1].p = "NullReferenceException";
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            if (D.52963 != 0B) goto <D.53100>; else goto <D.53101>;
            <D.53100>:
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            D.52963->next = inst;
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            inst->prev = D.52963;
            D.52962 = cfg->cbb;
            D.52962->last_ins = inst;
            goto <D.53102>;
            <D.53101>:
            D.52962 = cfg->cbb;
            D.52962 = cfg->cbb;
            D.52962->last_ins = inst;
            D.52963 = D.52962->last_ins;
            D.52962->code = D.52963;
            <D.53102>:
          }
          goto <D.53103>;
          <D.53088>:
          <D.53103>:
          <D.53086>:
          D.52950 = cfg->mempool;
          inst = mono_mempool_alloc (D.52950, 56);
          inst->data.op[1].const_val = 0;
          D.53104 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.53104;
          inst->prev = 0B;
          D.53105 = inst->prev;
          inst->next = D.53105;
          inst->opcode = 393;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.53106 = inst->sreg3;
          inst->sreg2 = D.53106;
          D.53107 = inst->sreg2;
          inst->sreg1 = D.53107;
          D.52958 = cfg->ip;
          inst->cil_code = D.52958;
          inst->dreg = _length_reg;
          inst->sreg1 = array_reg;
          inst->data.op[0].const_val = 12;
          inst->type = 1;
          D.53108 = (unsigned char) __ins_flags;
          inst->flags = D.53108;
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          if (D.52963 != 0B) goto <D.53109>; else goto <D.53110>;
          <D.53109>:
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          D.52963->next = inst;
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          inst->prev = D.52963;
          D.52962 = cfg->cbb;
          D.52962->last_ins = inst;
          goto <D.53111>;
          <D.53110>:
          D.52962 = cfg->cbb;
          D.52962 = cfg->cbb;
          D.52962->last_ins = inst;
          D.52963 = D.52962->last_ins;
          D.52962->code = D.52963;
          <D.53111>:
        }
        goto <D.53112>;
        <D.53083>:
        {
          struct MonoInst * inst;
          int __ins_flags;

          __ins_flags = 64;
          D.53113 = __ins_flags & 32;
          if (D.53113 != 0) goto <D.53114>; else goto <D.53115>;
          <D.53114>:
          D.52985 = BIT_FIELD_REF <*cfg, 8, 3424>;
          D.52986 = D.52985 & 64;
          if (D.52986 != 0) goto <D.53116>; else goto <D.53117>;
          <D.53116>:
          {
            struct MonoInst * inst;

            D.52950 = cfg->mempool;
            inst = mono_mempool_alloc (D.52950, 56);
            inst->data.op[1].const_val = 0;
            D.53118 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.53118;
            inst->prev = 0B;
            D.53119 = inst->prev;
            inst->next = D.53119;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.53120 = inst->sreg3;
            inst->sreg2 = D.53120;
            D.53121 = inst->sreg2;
            inst->sreg1 = D.53121;
            D.52958 = cfg->ip;
            inst->cil_code = D.52958;
            inst->dreg = -1;
            inst->sreg1 = array_reg;
            inst->data.op[1].const_val = 0;
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            if (D.52963 != 0B) goto <D.53122>; else goto <D.53123>;
            <D.53122>:
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            D.52963->next = inst;
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            inst->prev = D.52963;
            D.52962 = cfg->cbb;
            D.52962->last_ins = inst;
            goto <D.53124>;
            <D.53123>:
            D.52962 = cfg->cbb;
            D.52962 = cfg->cbb;
            D.52962->last_ins = inst;
            D.52963 = D.52962->last_ins;
            D.52962->code = D.52963;
            <D.53124>:
          }
          {
            struct MonoInst * inst;

            D.52950 = cfg->mempool;
            inst = mono_mempool_alloc (D.52950, 56);
            inst->data.op[1].const_val = 0;
            D.53125 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.53125;
            inst->prev = 0B;
            D.53126 = inst->prev;
            inst->next = D.53126;
            inst->opcode = 451;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.53127 = inst->sreg3;
            inst->sreg2 = D.53127;
            D.53128 = inst->sreg2;
            inst->sreg1 = D.53128;
            D.52958 = cfg->ip;
            inst->cil_code = D.52958;
            inst->data.op[1].p = "NullReferenceException";
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            if (D.52963 != 0B) goto <D.53129>; else goto <D.53130>;
            <D.53129>:
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            D.52963->next = inst;
            D.52962 = cfg->cbb;
            D.52963 = D.52962->last_ins;
            inst->prev = D.52963;
            D.52962 = cfg->cbb;
            D.52962->last_ins = inst;
            goto <D.53131>;
            <D.53130>:
            D.52962 = cfg->cbb;
            D.52962 = cfg->cbb;
            D.52962->last_ins = inst;
            D.52963 = D.52962->last_ins;
            D.52962->code = D.52963;
            <D.53131>:
          }
          goto <D.53132>;
          <D.53117>:
          <D.53132>:
          <D.53115>:
          D.52950 = cfg->mempool;
          inst = mono_mempool_alloc (D.52950, 56);
          inst->data.op[1].const_val = 0;
          D.53133 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.53133;
          inst->prev = 0B;
          D.53134 = inst->prev;
          inst->next = D.53134;
          inst->opcode = 393;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.53135 = inst->sreg3;
          inst->sreg2 = D.53135;
          D.53136 = inst->sreg2;
          inst->sreg1 = D.53136;
          D.52958 = cfg->ip;
          inst->cil_code = D.52958;
          inst->dreg = _length_reg;
          inst->sreg1 = array_reg;
          inst->data.op[0].const_val = 12;
          inst->type = 1;
          D.53137 = (unsigned char) __ins_flags;
          inst->flags = D.53137;
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          if (D.52963 != 0B) goto <D.53138>; else goto <D.53139>;
          <D.53138>:
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          D.52963->next = inst;
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          inst->prev = D.52963;
          D.52962 = cfg->cbb;
          D.52962->last_ins = inst;
          goto <D.53140>;
          <D.53139>:
          D.52962 = cfg->cbb;
          D.52962 = cfg->cbb;
          D.52962->last_ins = inst;
          D.52963 = D.52962->last_ins;
          D.52962->code = D.52963;
          <D.53140>:
        }
        <D.53112>:
        {
          struct MonoInst * inst;

          D.52950 = cfg->mempool;
          inst = mono_mempool_alloc (D.52950, 56);
          inst->data.op[1].const_val = 0;
          D.53141 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.53141;
          inst->prev = 0B;
          D.53142 = inst->prev;
          inst->next = D.53142;
          inst->opcode = 322;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.53143 = inst->sreg3;
          inst->sreg2 = D.53143;
          D.53144 = inst->sreg2;
          inst->sreg1 = D.53144;
          D.52958 = cfg->ip;
          inst->cil_code = D.52958;
          inst->dreg = -1;
          inst->sreg1 = _length_reg;
          inst->sreg2 = index_reg;
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          if (D.52963 != 0B) goto <D.53145>; else goto <D.53146>;
          <D.53145>:
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          D.52963->next = inst;
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          inst->prev = D.52963;
          D.52962 = cfg->cbb;
          D.52962->last_ins = inst;
          goto <D.53147>;
          <D.53146>:
          D.52962 = cfg->cbb;
          D.52962 = cfg->cbb;
          D.52962->last_ins = inst;
          D.52963 = D.52962->last_ins;
          D.52962->code = D.52963;
          <D.53147>:
        }
        {
          struct MonoInst * inst;

          D.52950 = cfg->mempool;
          inst = mono_mempool_alloc (D.52950, 56);
          inst->data.op[1].const_val = 0;
          D.53148 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.53148;
          inst->prev = 0B;
          D.53149 = inst->prev;
          inst->next = D.53149;
          inst->opcode = 459;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.53150 = inst->sreg3;
          inst->sreg2 = D.53150;
          D.53151 = inst->sreg2;
          inst->sreg1 = D.53151;
          D.52958 = cfg->ip;
          inst->cil_code = D.52958;
          inst->data.op[1].p = "IndexOutOfRangeException";
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          if (D.52963 != 0B) goto <D.53152>; else goto <D.53153>;
          <D.53152>:
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          D.52963->next = inst;
          D.52962 = cfg->cbb;
          D.52963 = D.52962->last_ins;
          inst->prev = D.52963;
          D.52962 = cfg->cbb;
          D.52962->last_ins = inst;
          goto <D.53154>;
          <D.53153>:
          D.52962 = cfg->cbb;
          D.52962 = cfg->cbb;
          D.52962->last_ins = inst;
          D.52963 = D.52962->last_ins;
          D.52962->code = D.52963;
          <D.53154>:
        }
      }
      <D.53080>:
      goto <D.53155>;
      <D.52984>:
      {
        struct MonoInst * ins;

        D.52950 = cfg->mempool;
        ins = mono_mempool_alloc (D.52950, 56);
        ins->data.op[1].const_val = 0;
        D.53156 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.53156;
        ins->prev = 0B;
        D.53157 = ins->prev;
        ins->next = D.53157;
        ins->opcode = 784;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.53158 = ins->sreg3;
        ins->sreg2 = D.53158;
        D.53159 = ins->sreg2;
        ins->sreg1 = D.53159;
        D.52958 = cfg->ip;
        ins->cil_code = D.52958;
        ins->sreg1 = array_reg;
        ins->sreg2 = index_reg;
        ins->data.op[1].const_val = 12;
        D.53160 = ins->flags;
        D.53161 = D.53160 | 32;
        ins->flags = D.53161;
        D.52962 = cfg->cbb;
        D.52963 = D.52962->last_ins;
        if (D.52963 != 0B) goto <D.53162>; else goto <D.53163>;
        <D.53162>:
        D.52962 = cfg->cbb;
        D.52963 = D.52962->last_ins;
        D.52963->next = ins;
        D.52962 = cfg->cbb;
        D.52963 = D.52962->last_ins;
        ins->prev = D.52963;
        D.52962 = cfg->cbb;
        D.52962->last_ins = ins;
        goto <D.53164>;
        <D.53163>:
        D.52962 = cfg->cbb;
        D.52962 = cfg->cbb;
        D.52962->last_ins = ins;
        D.52963 = D.52962->last_ins;
        D.52962->code = D.52963;
        <D.53164>:
        D.53165 = cfg->flags;
        D.53166 = D.53165 | 256;
        cfg->flags = D.53166;
        D.52962 = cfg->cbb;
        D.52962->has_array_access = 1;
      }
      <D.53155>:
      <D.52981>:
      <D.52977>:
      D.52950 = cfg->mempool;
      ins = mono_mempool_alloc (D.52950, 56);
      ins->data.op[1].const_val = 0;
      D.52951 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.52951;
      ins->prev = 0B;
      D.52952 = ins->prev;
      ins->next = D.52952;
      D.52953 = &klass->byval_arg;
      D.53167 = mono_type_to_store_membase (cfg, D.52953);
      D.53168 = (short unsigned int) D.53167;
      ins->opcode = D.53168;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.52956 = ins->sreg3;
      ins->sreg2 = D.52956;
      D.52957 = ins->sreg2;
      ins->sreg1 = D.52957;
      D.52958 = cfg->ip;
      ins->cil_code = D.52958;
      D.52912 = sp + 8;
      D.52913 = *D.52912;
      D.52959 = D.52913->dreg;
      ins->sreg1 = D.52959;
      ins->dreg = array_reg;
      ins->data.op[0].const_val = offset;
      D.52953 = &klass->byval_arg;
      type_to_eval_stack_type (cfg, D.52953, ins);
      D.52953 = &klass->byval_arg;
      D.53169 = mono_class_from_mono_type (D.52953);
      ins->klass = D.53169;
      D.52962 = cfg->cbb;
      D.52963 = D.52962->last_ins;
      if (D.52963 != 0B) goto <D.53170>; else goto <D.53171>;
      <D.53170>:
      D.52962 = cfg->cbb;
      D.52963 = D.52962->last_ins;
      D.52963->next = ins;
      D.52962 = cfg->cbb;
      D.52963 = D.52962->last_ins;
      ins->prev = D.52963;
      D.52962 = cfg->cbb;
      D.52962->last_ins = ins;
      goto <D.53172>;
      <D.53171>:
      D.52962 = cfg->cbb;
      D.52962 = cfg->cbb;
      D.52962->last_ins = ins;
      D.52963 = D.52962->last_ins;
      D.52962->code = D.52963;
      <D.53172>:
    }
    goto <D.53173>;
    <D.52970>:
    {
      struct MonoInst * addr;

      D.52935 = *sp;
      D.52948 = sp + 4;
      D.52949 = *D.52948;
      addr = mini_emit_ldelema_1_ins (cfg, klass, D.52935, D.52949, safety_checks);
      D.52950 = cfg->mempool;
      ins = mono_mempool_alloc (D.52950, 56);
      ins->data.op[1].const_val = 0;
      D.52951 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.52951;
      ins->prev = 0B;
      D.52952 = ins->prev;
      ins->next = D.52952;
      D.52953 = &klass->byval_arg;
      D.53174 = mono_type_to_store_membase (cfg, D.52953);
      D.53175 = (short unsigned int) D.53174;
      ins->opcode = D.53175;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.52956 = ins->sreg3;
      ins->sreg2 = D.52956;
      D.52957 = ins->sreg2;
      ins->sreg1 = D.52957;
      D.52958 = cfg->ip;
      ins->cil_code = D.52958;
      D.52912 = sp + 8;
      D.52913 = *D.52912;
      D.52959 = D.52913->dreg;
      ins->sreg1 = D.52959;
      D.53176 = addr->dreg;
      ins->dreg = D.53176;
      ins->data.op[0].const_val = 0;
      D.52953 = &klass->byval_arg;
      type_to_eval_stack_type (cfg, D.52953, ins);
      D.52953 = &klass->byval_arg;
      D.53177 = mono_class_from_mono_type (D.52953);
      ins->klass = D.53177;
      D.52962 = cfg->cbb;
      D.52963 = D.52962->last_ins;
      if (D.52963 != 0B) goto <D.53178>; else goto <D.53179>;
      <D.53178>:
      D.52962 = cfg->cbb;
      D.52963 = D.52962->last_ins;
      D.52963->next = ins;
      D.52962 = cfg->cbb;
      D.52963 = D.52962->last_ins;
      ins->prev = D.52963;
      D.52962 = cfg->cbb;
      D.52962->last_ins = ins;
      goto <D.53180>;
      <D.53179>:
      D.52962 = cfg->cbb;
      D.52962 = cfg->cbb;
      D.52962->last_ins = ins;
      D.52963 = D.52962->last_ins;
      D.52962->code = D.52963;
      <D.53180>:
      D.53181 = generic_class_is_reference_type (cfg, klass);
      if (D.53181 != 0) goto <D.53182>; else goto <D.53183>;
      <D.53182>:
      D.52912 = sp + 8;
      D.52913 = *D.52912;
      emit_write_barrier (cfg, addr, D.52913);
      <D.53183>:
    }
    <D.53173>:
    <D.52967>:
    D.52939 = ins;
    return D.52939;
  }
}


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)
{
  struct MonoMemPool * D.53186;
  struct MonoMethod * D.53187;
  int D.53188;
  struct MonoInst * D.53189;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.53186 = cfg->mempool;
  D.53187 = cfg->current_method;
  D.53188 = context_used & 2;
  entry = mono_patch_info_rgctx_entry_new (D.53186, D.53187, D.53188, 13, field, rgctx_type);
  D.53187 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.53187, context_used);
  D.53189 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.53189;
}


emit_seq_point (struct MonoCompile * cfg, struct MonoMethod * method, guint8 * ip, gboolean intr_loc, gboolean nonempty_stack)
{
  unsigned char D.53191;
  unsigned char D.53192;
  struct MonoMethod * D.53195;
  struct MonoMemPool * D.53198;
  int D.53199;
  struct MonoInst * D.53200;
  int D.53201;
  int D.53202;
  const unsigned char * D.53203;
  int ip.526;
  struct MonoMethodHeader * D.53205;
  const unsigned char * D.53206;
  int D.53207;
  int D.53208;
  _Bool D.53209;
  unsigned char D.53210;
  unsigned char D.53213;
  unsigned char D.53214;
  struct MonoBasicBlock * D.53215;
  struct MonoInst * D.53216;
  struct MonoInst * ins;

  D.53191 = BIT_FIELD_REF <*cfg, 8, 3424>;
  D.53192 = D.53191 & 32;
  if (D.53192 != 0) goto <D.53193>; else goto <D.53194>;
  <D.53193>:
  D.53195 = cfg->method;
  if (D.53195 == method) goto <D.53196>; else goto <D.53197>;
  <D.53196>:
  D.53198 = cfg->mempool;
  ins = mono_mempool_alloc (D.53198, 56);
  ins->data.op[1].const_val = 0;
  D.53199 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.53199;
  ins->prev = 0B;
  D.53200 = ins->prev;
  ins->next = D.53200;
  ins->opcode = 341;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.53201 = ins->sreg3;
  ins->sreg2 = D.53201;
  D.53202 = ins->sreg2;
  ins->sreg1 = D.53202;
  D.53203 = cfg->ip;
  ins->cil_code = D.53203;
  ip.526 = (int) ip;
  D.53205 = cfg->header;
  D.53206 = D.53205->code;
  D.53207 = (int) D.53206;
  D.53208 = ip.526 - D.53207;
  ins->data.op[1].const_val = D.53208;
  D.53209 = intr_loc != 0;
  D.53210 = (unsigned char) D.53209;
  ins->flags = D.53210;
  if (nonempty_stack != 0) goto <D.53211>; else goto <D.53212>;
  <D.53211>:
  D.53213 = ins->flags;
  D.53214 = D.53213 | 4;
  ins->flags = D.53214;
  <D.53212>:
  D.53215 = cfg->cbb;
  D.53216 = D.53215->last_ins;
  if (D.53216 != 0B) goto <D.53217>; else goto <D.53218>;
  <D.53217>:
  D.53215 = cfg->cbb;
  D.53216 = D.53215->last_ins;
  D.53216->next = ins;
  D.53215 = cfg->cbb;
  D.53216 = D.53215->last_ins;
  ins->prev = D.53216;
  D.53215 = cfg->cbb;
  D.53215->last_ins = ins;
  goto <D.53219>;
  <D.53218>:
  D.53215 = cfg->cbb;
  D.53215 = cfg->cbb;
  D.53215->last_ins = ins;
  D.53216 = D.53215->last_ins;
  D.53215->code = D.53216;
  <D.53219>:
  <D.53197>:
  <D.53194>:
}


mono_find_final_block (struct MonoCompile * cfg, unsigned char * ip, unsigned char * target, int type)
{
  struct MonoExceptionClause * D.53220;
  unsigned int i.527;
  unsigned int D.53222;
  unsigned int D.53225;
  int ip.528;
  const unsigned char * D.53227;
  int D.53228;
  int D.53229;
  unsigned int D.53230;
  unsigned int D.53233;
  unsigned int D.53234;
  int target.529;
  int D.53238;
  unsigned int D.53239;
  unsigned int D.53241;
  unsigned int type.530;
  <unnamed-unsigned:15> D.53245;
  int D.53246;
  struct GList * D.53247;
  struct MonoMethodHeader * header;
  struct MonoExceptionClause * clause;
  int i;
  struct GList * res;

  header = cfg->header;
  res = 0B;
  i = 0;
  goto <D.27240>;
  <D.27239>:
  D.53220 = header->clauses;
  i.527 = (unsigned int) i;
  D.53222 = i.527 * 24;
  clause = D.53220 + D.53222;
  D.53225 = clause->try_offset;
  ip.528 = (int) ip;
  D.53227 = header->code;
  D.53228 = (int) D.53227;
  D.53229 = ip.528 - D.53228;
  D.53230 = (unsigned int) D.53229;
  if (D.53225 <= D.53230) goto <D.53231>; else goto <D.53232>;
  <D.53231>:
  ip.528 = (int) ip;
  D.53227 = header->code;
  D.53228 = (int) D.53227;
  D.53229 = ip.528 - D.53228;
  D.53230 = (unsigned int) D.53229;
  D.53225 = clause->try_offset;
  D.53233 = clause->try_len;
  D.53234 = D.53225 + D.53233;
  if (D.53230 < D.53234) goto <D.53235>; else goto <D.53236>;
  <D.53235>:
  D.53225 = clause->try_offset;
  target.529 = (int) target;
  D.53227 = header->code;
  D.53228 = (int) D.53227;
  D.53238 = target.529 - D.53228;
  D.53239 = (unsigned int) D.53238;
  if (D.53225 > D.53239) goto <D.53223>; else goto <D.53240>;
  <D.53240>:
  target.529 = (int) target;
  D.53227 = header->code;
  D.53228 = (int) D.53227;
  D.53238 = target.529 - D.53228;
  D.53239 = (unsigned int) D.53238;
  D.53225 = clause->try_offset;
  D.53233 = clause->try_len;
  D.53234 = D.53225 + D.53233;
  if (D.53239 >= D.53234) goto <D.53223>; else goto <D.53224>;
  <D.53223>:
  D.53241 = clause->flags;
  type.530 = (unsigned int) type;
  if (D.53241 == type.530) goto <D.53243>; else goto <D.53244>;
  <D.53243>:
  res = monoeg_g_list_append (res, clause);
  <D.53244>:
  <D.53224>:
  <D.53236>:
  <D.53232>:
  i = i + 1;
  <D.27240>:
  D.53245 = header->num_clauses;
  D.53246 = (int) D.53245;
  if (D.53246 > i) goto <D.27239>; else goto <D.27241>;
  <D.27241>:
  D.53247 = res;
  return D.53247;
}


mono_get_domainvar (struct MonoCompile * cfg)
{
  struct MonoInst * D.53249;
  struct MonoClass * D.53252;
  struct MonoType * D.53253;
  struct MonoInst * D.53254;
  struct MonoInst * D.53255;

  D.53249 = cfg->domainvar;
  if (D.53249 == 0B) goto <D.53250>; else goto <D.53251>;
  <D.53250>:
  D.53252 = mono_defaults.int_class;
  D.53253 = &D.53252->byval_arg;
  D.53254 = mono_compile_create_var (cfg, D.53253, 329);
  cfg->domainvar = D.53254;
  <D.53251>:
  D.53255 = cfg->domainvar;
  return D.53255;
}


handle_cisinst (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * src)
{
  unsigned int D.53257;
  unsigned int D.53258;
  struct MonoMemPool * D.53259;
  unsigned int D.53260;
  unsigned int D.53261;
  unsigned int D.53262;
  int D.53263;
  unsigned int D.53264;
  unsigned int D.53265;
  int D.53266;
  unsigned int D.53267;
  unsigned int D.53268;
  int D.53269;
  unsigned int D.53270;
  unsigned int D.53271;
  int D.53272;
  unsigned int D.53273;
  unsigned int D.53274;
  int D.53275;
  int D.53276;
  struct MonoInst * D.53277;
  int D.53278;
  int D.53279;
  const unsigned char * D.53280;
  struct MonoBasicBlock * D.53281;
  struct MonoInst * D.53282;
  int D.53286;
  struct MonoInst * D.53287;
  int D.53288;
  int D.53289;
  unsigned int D.53292;
  unsigned int D.53293;
  int D.53294;
  unsigned char * D.53298;
  struct MonoBasicBlock * * D.53301;
  int D.53302;
  unsigned char * D.53303;
  int D.53304;
  int D.53305;
  unsigned int D.53306;
  unsigned int D.53307;
  struct MonoBasicBlock * * D.53308;
  unsigned int D.53309;
  short unsigned int D.53314;
  short unsigned int D.53315;
  _Bool D.53316;
  short unsigned int D.53317;
  _Bool D.53318;
  _Bool D.53319;
  short unsigned int D.53321;
  short unsigned int D.53322;
  struct MonoBasicBlock * * D.53323;
  struct MonoBasicBlock * * D.53324;
  struct MonoBasicBlock * D.53325;
  short unsigned int D.53330;
  _Bool D.53331;
  _Bool D.53332;
  _Bool D.53333;
  short unsigned int D.53335;
  short unsigned int D.53336;
  _Bool D.53337;
  short unsigned int D.53338;
  _Bool D.53339;
  _Bool D.53340;
  void * D.53343;
  struct MonoBasicBlock * * D.53344;
  struct MonoBasicBlock * * D.53345;
  unsigned char D.53349;
  unsigned char D.53350;
  unsigned int D.53353;
  unsigned int D.53354;
  int D.53355;
  short unsigned int D.53362;
  short unsigned int D.53363;
  _Bool D.53364;
  short unsigned int D.53365;
  _Bool D.53366;
  _Bool D.53367;
  short unsigned int D.53373;
  _Bool D.53374;
  _Bool D.53375;
  _Bool D.53376;
  short unsigned int D.53378;
  short unsigned int D.53379;
  _Bool D.53380;
  short unsigned int D.53381;
  _Bool D.53382;
  _Bool D.53383;
  unsigned int D.53386;
  unsigned int D.53387;
  unsigned int D.53390;
  unsigned int D.53391;
  int D.53392;
  unsigned int D.53393;
  int D.53394;
  struct MonoInst * D.53395;
  int D.53396;
  int D.53397;
  unsigned char * D.53401;
  int D.53404;
  int D.53405;
  unsigned int D.53406;
  unsigned int D.53407;
  struct MonoBasicBlock * * D.53408;
  short unsigned int D.53413;
  short unsigned int D.53414;
  _Bool D.53415;
  short unsigned int D.53416;
  _Bool D.53417;
  _Bool D.53418;
  short unsigned int D.53424;
  _Bool D.53425;
  _Bool D.53426;
  _Bool D.53427;
  short unsigned int D.53429;
  short unsigned int D.53430;
  _Bool D.53431;
  short unsigned int D.53432;
  _Bool D.53433;
  _Bool D.53434;
  int D.53436;
  struct MonoInst * D.53437;
  int D.53438;
  int D.53439;
  struct MonoClass * D.53443;
  unsigned int D.53444;
  int D.53445;
  struct MonoInst * D.53446;
  int D.53447;
  int D.53448;
  int D.53452;
  struct MonoInst * D.53453;
  int D.53454;
  int D.53455;
  int D.53459;
  struct MonoInst * D.53460;
  int D.53461;
  int D.53462;
  unsigned int D.53465;
  unsigned int D.53466;
  int D.53467;
  unsigned char * D.53471;
  int D.53474;
  int D.53475;
  unsigned int D.53476;
  unsigned int D.53477;
  struct MonoBasicBlock * * D.53478;
  short unsigned int D.53483;
  short unsigned int D.53484;
  _Bool D.53485;
  short unsigned int D.53486;
  _Bool D.53487;
  _Bool D.53488;
  short unsigned int D.53494;
  _Bool D.53495;
  _Bool D.53496;
  _Bool D.53497;
  short unsigned int D.53499;
  short unsigned int D.53500;
  _Bool D.53501;
  short unsigned int D.53502;
  _Bool D.53503;
  _Bool D.53504;
  void * D.53507;
  struct MonoBasicBlock * * D.53508;
  struct MonoBasicBlock * * D.53509;
  unsigned int D.53515;
  unsigned int D.53516;
  int D.53517;
  short unsigned int D.53524;
  short unsigned int D.53525;
  _Bool D.53526;
  short unsigned int D.53527;
  _Bool D.53528;
  _Bool D.53529;
  short unsigned int D.53535;
  _Bool D.53536;
  _Bool D.53537;
  _Bool D.53538;
  short unsigned int D.53540;
  short unsigned int D.53541;
  _Bool D.53542;
  short unsigned int D.53543;
  _Bool D.53544;
  _Bool D.53545;
  unsigned int D.53549;
  int D.53550;
  struct MonoInst * D.53551;
  int D.53552;
  int D.53553;
  int D.53557;
  struct MonoInst * D.53558;
  int D.53559;
  int D.53560;
  unsigned int D.53564;
  int D.53565;
  struct MonoInst * D.53566;
  int D.53567;
  int D.53568;
  int D.53572;
  struct MonoInst * D.53573;
  int D.53574;
  int D.53575;
  unsigned int D.53579;
  int D.53580;
  struct MonoInst * D.53581;
  int D.53582;
  int D.53583;
  int D.53587;
  struct MonoInst * D.53588;
  int D.53589;
  int D.53590;
  int D.53594;
  struct MonoInst * D.53595;
  int D.53596;
  int D.53597;
  unsigned int D.53600;
  unsigned int D.53601;
  int D.53602;
  unsigned char * D.53606;
  int D.53609;
  int D.53610;
  unsigned int D.53611;
  unsigned int D.53612;
  struct MonoBasicBlock * * D.53613;
  short unsigned int D.53618;
  short unsigned int D.53619;
  _Bool D.53620;
  short unsigned int D.53621;
  _Bool D.53622;
  _Bool D.53623;
  short unsigned int D.53629;
  _Bool D.53630;
  _Bool D.53631;
  _Bool D.53632;
  short unsigned int D.53634;
  short unsigned int D.53635;
  _Bool D.53636;
  short unsigned int D.53637;
  _Bool D.53638;
  _Bool D.53639;
  void * D.53642;
  struct MonoBasicBlock * * D.53643;
  struct MonoBasicBlock * * D.53644;
  unsigned int D.53650;
  unsigned int D.53651;
  int D.53652;
  short unsigned int D.53659;
  short unsigned int D.53660;
  _Bool D.53661;
  short unsigned int D.53662;
  _Bool D.53663;
  _Bool D.53664;
  short unsigned int D.53670;
  _Bool D.53671;
  _Bool D.53672;
  _Bool D.53673;
  short unsigned int D.53675;
  short unsigned int D.53676;
  _Bool D.53677;
  short unsigned int D.53678;
  _Bool D.53679;
  _Bool D.53680;
  int D.53683;
  struct MonoInst * D.53684;
  int D.53685;
  int D.53686;
  unsigned int D.53689;
  unsigned int D.53690;
  int D.53691;
  unsigned char * D.53695;
  int D.53698;
  int D.53699;
  unsigned int D.53700;
  unsigned int D.53701;
  struct MonoBasicBlock * * D.53702;
  short unsigned int D.53707;
  short unsigned int D.53708;
  _Bool D.53709;
  short unsigned int D.53710;
  _Bool D.53711;
  _Bool D.53712;
  short unsigned int D.53718;
  _Bool D.53719;
  _Bool D.53720;
  _Bool D.53721;
  short unsigned int D.53723;
  short unsigned int D.53724;
  _Bool D.53725;
  short unsigned int D.53726;
  _Bool D.53727;
  _Bool D.53728;
  void * D.53731;
  struct MonoBasicBlock * * D.53732;
  struct MonoBasicBlock * * D.53733;
  unsigned int D.53739;
  unsigned int D.53740;
  int D.53741;
  short unsigned int D.53748;
  short unsigned int D.53749;
  _Bool D.53750;
  short unsigned int D.53751;
  _Bool D.53752;
  _Bool D.53753;
  short unsigned int D.53759;
  _Bool D.53760;
  _Bool D.53761;
  _Bool D.53762;
  short unsigned int D.53764;
  short unsigned int D.53765;
  _Bool D.53766;
  short unsigned int D.53767;
  _Bool D.53768;
  _Bool D.53769;
  unsigned char * D.53772;
  int D.53775;
  int D.53776;
  unsigned int D.53777;
  unsigned int D.53778;
  struct MonoBasicBlock * * D.53779;
  short unsigned int D.53784;
  short unsigned int D.53785;
  _Bool D.53786;
  short unsigned int D.53787;
  _Bool D.53788;
  _Bool D.53789;
  short unsigned int D.53795;
  _Bool D.53796;
  _Bool D.53797;
  _Bool D.53798;
  short unsigned int D.53800;
  short unsigned int D.53801;
  _Bool D.53802;
  short unsigned int D.53803;
  _Bool D.53804;
  _Bool D.53805;
  unsigned char * D.53807;
  int D.53810;
  int D.53811;
  unsigned int D.53812;
  unsigned int D.53813;
  struct MonoBasicBlock * * D.53814;
  short unsigned int D.53819;
  short unsigned int D.53820;
  _Bool D.53821;
  short unsigned int D.53822;
  _Bool D.53823;
  _Bool D.53824;
  short unsigned int D.53830;
  _Bool D.53831;
  _Bool D.53832;
  _Bool D.53833;
  short unsigned int D.53835;
  short unsigned int D.53836;
  _Bool D.53837;
  short unsigned int D.53838;
  _Bool D.53839;
  _Bool D.53840;
  int D.53842;
  struct MonoInst * D.53843;
  int D.53844;
  int D.53845;
  int D.53849;
  struct MonoInst * D.53850;
  int D.53851;
  int D.53852;
  unsigned int D.53855;
  unsigned int D.53856;
  int D.53857;
  unsigned char * D.53861;
  int D.53864;
  int D.53865;
  unsigned int D.53866;
  unsigned int D.53867;
  struct MonoBasicBlock * * D.53868;
  short unsigned int D.53873;
  short unsigned int D.53874;
  _Bool D.53875;
  short unsigned int D.53876;
  _Bool D.53877;
  _Bool D.53878;
  short unsigned int D.53884;
  _Bool D.53885;
  _Bool D.53886;
  _Bool D.53887;
  short unsigned int D.53889;
  short unsigned int D.53890;
  _Bool D.53891;
  short unsigned int D.53892;
  _Bool D.53893;
  _Bool D.53894;
  void * D.53897;
  struct MonoBasicBlock * * D.53898;
  struct MonoBasicBlock * * D.53899;
  unsigned int D.53905;
  unsigned int D.53906;
  int D.53907;
  short unsigned int D.53914;
  short unsigned int D.53915;
  _Bool D.53916;
  short unsigned int D.53917;
  _Bool D.53918;
  _Bool D.53919;
  short unsigned int D.53925;
  _Bool D.53926;
  _Bool D.53927;
  _Bool D.53928;
  short unsigned int D.53930;
  short unsigned int D.53931;
  _Bool D.53932;
  short unsigned int D.53933;
  _Bool D.53934;
  _Bool D.53935;
  unsigned char * D.53938;
  int D.53941;
  int D.53942;
  unsigned int D.53943;
  unsigned int D.53944;
  struct MonoBasicBlock * * D.53945;
  short unsigned int D.53950;
  short unsigned int D.53951;
  _Bool D.53952;
  short unsigned int D.53953;
  _Bool D.53954;
  _Bool D.53955;
  short unsigned int D.53961;
  _Bool D.53962;
  _Bool D.53963;
  _Bool D.53964;
  short unsigned int D.53966;
  short unsigned int D.53967;
  _Bool D.53968;
  short unsigned int D.53969;
  _Bool D.53970;
  _Bool D.53971;
  int D.53973;
  struct MonoInst * D.53974;
  int D.53975;
  int D.53976;
  int D.53980;
  struct MonoInst * D.53981;
  int D.53982;
  int D.53983;
  unsigned int D.53986;
  unsigned int D.53987;
  int D.53988;
  unsigned char * D.53992;
  int D.53995;
  int D.53996;
  unsigned int D.53997;
  unsigned int D.53998;
  struct MonoBasicBlock * * D.53999;
  short unsigned int D.54004;
  short unsigned int D.54005;
  _Bool D.54006;
  short unsigned int D.54007;
  _Bool D.54008;
  _Bool D.54009;
  short unsigned int D.54015;
  _Bool D.54016;
  _Bool D.54017;
  _Bool D.54018;
  short unsigned int D.54020;
  short unsigned int D.54021;
  _Bool D.54022;
  short unsigned int D.54023;
  _Bool D.54024;
  _Bool D.54025;
  void * D.54028;
  struct MonoBasicBlock * * D.54029;
  struct MonoBasicBlock * * D.54030;
  unsigned int D.54036;
  unsigned int D.54037;
  int D.54038;
  short unsigned int D.54045;
  short unsigned int D.54046;
  _Bool D.54047;
  short unsigned int D.54048;
  _Bool D.54049;
  _Bool D.54050;
  short unsigned int D.54056;
  _Bool D.54057;
  _Bool D.54058;
  _Bool D.54059;
  short unsigned int D.54061;
  short unsigned int D.54062;
  _Bool D.54063;
  short unsigned int D.54064;
  _Bool D.54065;
  _Bool D.54066;
  unsigned char * D.54069;
  int D.54072;
  int D.54073;
  unsigned int D.54074;
  unsigned int D.54075;
  struct MonoBasicBlock * * D.54076;
  short unsigned int D.54081;
  short unsigned int D.54082;
  _Bool D.54083;
  short unsigned int D.54084;
  _Bool D.54085;
  _Bool D.54086;
  short unsigned int D.54092;
  _Bool D.54093;
  _Bool D.54094;
  _Bool D.54095;
  short unsigned int D.54097;
  short unsigned int D.54098;
  _Bool D.54099;
  short unsigned int D.54100;
  _Bool D.54101;
  _Bool D.54102;
  int D.54104;
  struct MonoInst * D.54105;
  int D.54106;
  int D.54107;
  unsigned char * D.54111;
  int D.54114;
  int D.54115;
  unsigned int D.54116;
  unsigned int D.54117;
  struct MonoBasicBlock * * D.54118;
  short unsigned int D.54123;
  short unsigned int D.54124;
  _Bool D.54125;
  short unsigned int D.54126;
  _Bool D.54127;
  _Bool D.54128;
  short unsigned int D.54134;
  _Bool D.54135;
  _Bool D.54136;
  _Bool D.54137;
  short unsigned int D.54139;
  short unsigned int D.54140;
  _Bool D.54141;
  short unsigned int D.54142;
  _Bool D.54143;
  _Bool D.54144;
  int D.54146;
  struct MonoInst * D.54147;
  int D.54148;
  int D.54149;
  struct MonoInst * D.54150;
  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.53257 = alloc_ireg (cfg);
  dreg = (int) D.53257;
  D.53258 = alloc_preg (cfg);
  klass_reg = (int) D.53258;
  D.53259 = cfg->mempool;
  true_bb = mono_mempool_alloc0 (D.53259, 172);
  D.53260 = cfg->num_bblocks;
  D.53261 = D.53260;
  D.53262 = D.53261 + 1;
  cfg->num_bblocks = D.53262;
  D.53263 = (int) D.53261;
  true_bb->block_num = D.53263;
  D.53259 = cfg->mempool;
  false_bb = mono_mempool_alloc0 (D.53259, 172);
  D.53260 = cfg->num_bblocks;
  D.53264 = D.53260;
  D.53265 = D.53264 + 1;
  cfg->num_bblocks = D.53265;
  D.53266 = (int) D.53264;
  false_bb->block_num = D.53266;
  D.53259 = cfg->mempool;
  end_bb = mono_mempool_alloc0 (D.53259, 172);
  D.53260 = cfg->num_bblocks;
  D.53267 = D.53260;
  D.53268 = D.53267 + 1;
  cfg->num_bblocks = D.53268;
  D.53269 = (int) D.53267;
  end_bb->block_num = D.53269;
  D.53259 = cfg->mempool;
  false2_bb = mono_mempool_alloc0 (D.53259, 172);
  D.53260 = cfg->num_bblocks;
  D.53270 = D.53260;
  D.53271 = D.53270 + 1;
  cfg->num_bblocks = D.53271;
  D.53272 = (int) D.53270;
  false2_bb->block_num = D.53272;
  D.53259 = cfg->mempool;
  no_proxy_bb = mono_mempool_alloc0 (D.53259, 172);
  D.53260 = cfg->num_bblocks;
  D.53273 = D.53260;
  D.53274 = D.53273 + 1;
  cfg->num_bblocks = D.53274;
  D.53275 = (int) D.53273;
  no_proxy_bb->block_num = D.53275;
  {
    struct MonoInst * inst;

    D.53259 = cfg->mempool;
    inst = mono_mempool_alloc (D.53259, 56);
    inst->data.op[1].const_val = 0;
    D.53276 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53276;
    inst->prev = 0B;
    D.53277 = inst->prev;
    inst->next = D.53277;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53278 = inst->sreg3;
    inst->sreg2 = D.53278;
    D.53279 = inst->sreg2;
    inst->sreg1 = D.53279;
    D.53280 = cfg->ip;
    inst->cil_code = D.53280;
    inst->dreg = -1;
    inst->sreg1 = obj_reg;
    inst->data.op[1].const_val = 0;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53283>; else goto <D.53284>;
    <D.53283>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = inst;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    inst->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    goto <D.53285>;
    <D.53284>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53285>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.53259 = cfg->mempool;
    ins = mono_mempool_alloc (D.53259, 56);
    ins->data.op[1].const_val = 0;
    D.53286 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.53286;
    ins->prev = 0B;
    D.53287 = ins->prev;
    ins->next = D.53287;
    ins->opcode = 648;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.53288 = ins->sreg3;
    ins->sreg2 = D.53288;
    D.53289 = ins->sreg2;
    ins->sreg1 = D.53289;
    D.53280 = cfg->ip;
    ins->cil_code = D.53280;
    if (0 != 0) goto <D.53290>; else goto <D.53291>;
    <D.53290>:
    D.53259 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.53259, 172);
    D.53260 = cfg->num_bblocks;
    D.53292 = D.53260;
    D.53293 = D.53292 + 1;
    cfg->num_bblocks = D.53293;
    D.53294 = (int) D.53292;
    falsebb->block_num = D.53294;
    ins->data.op[0].target_block = false_bb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, false_bb);
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53295>; else goto <D.53296>;
    <D.53295>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = ins;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    ins->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    goto <D.53297>;
    <D.53296>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53297>:
    D.53298 = falsebb->cil_code;
    if (D.53298 != 0B) goto <D.53299>; else goto <D.53300>;
    <D.53299>:
    D.53301 = cfg->cil_offset_to_bb;
    D.53298 = falsebb->cil_code;
    D.53302 = (int) D.53298;
    D.53303 = cfg->cil_start;
    D.53304 = (int) D.53303;
    D.53305 = D.53302 - D.53304;
    D.53306 = (unsigned int) D.53305;
    D.53307 = D.53306 * 4;
    D.53308 = D.53301 + D.53307;
    *D.53308 = falsebb;
    <D.53300>:
    D.53309 = cfg->real_offset;
    falsebb->real_offset = D.53309;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53313>; else goto <D.53310>;
    <D.53313>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53314 = D.53282->opcode;
    D.53315 = D.53314 + 64985;
    D.53316 = D.53315 <= 9;
    D.53317 = D.53314 + 64878;
    D.53318 = D.53317 <= 9;
    D.53319 = D.53316 | D.53318;
    if (D.53319 != 0) goto <D.53311>; else goto <D.53320>;
    <D.53320>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 <= 9) goto <D.53311>; else goto <D.53310>;
    <D.53311>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    D.53325 = *D.53324;
    if (D.53325 == 0B) goto <D.53326>; else goto <D.53310>;
    <D.53326>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    *D.53324 = falsebb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    goto <D.53312>;
    <D.53310>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 == 0B) goto <D.53327>; else goto <D.53329>;
    <D.53329>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53330 = D.53282->opcode;
    D.53331 = D.53330 != 442;
    D.53332 = D.53330 != 759;
    D.53333 = D.53331 & D.53332;
    if (D.53333 != 0) goto <D.53334>; else goto <D.53328>;
    <D.53334>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53335 = D.53282->opcode;
    D.53336 = D.53335 + 64985;
    D.53337 = D.53336 > 9;
    D.53338 = D.53335 + 64878;
    D.53339 = D.53338 > 9;
    D.53340 = D.53337 & D.53339;
    if (D.53340 != 0) goto <D.53341>; else goto <D.53328>;
    <D.53341>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 > 9) goto <D.53327>; else goto <D.53328>;
    <D.53327>:
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    <D.53328>:
    <D.53312>:
    D.53281 = cfg->cbb;
    D.53281->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.53342>;
    <D.53291>:
    D.53259 = cfg->mempool;
    D.53343 = mono_mempool_alloc (D.53259, 8);
    ins->data.op[1].many_blocks = D.53343;
    D.53344 = ins->data.op[1].many_blocks;
    *D.53344 = false_bb;
    D.53344 = ins->data.op[1].many_blocks;
    D.53345 = D.53344 + 4;
    *D.53345 = 0B;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, false_bb);
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53346>; else goto <D.53347>;
    <D.53346>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = ins;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    ins->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    goto <D.53348>;
    <D.53347>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53348>:
    D.53349 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.53350 = D.53349 & 8;
    if (D.53350 == 0) goto <D.53351>; else goto <D.53352>;
    <D.53351>:
    D.53259 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.53259, 172);
    D.53260 = cfg->num_bblocks;
    D.53353 = D.53260;
    D.53354 = D.53353 + 1;
    cfg->num_bblocks = D.53354;
    D.53355 = (int) D.53353;
    falsebb->block_num = D.53355;
    D.53344 = ins->data.op[1].many_blocks;
    D.53345 = D.53344 + 4;
    *D.53345 = falsebb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    D.53298 = falsebb->cil_code;
    if (D.53298 != 0B) goto <D.53356>; else goto <D.53357>;
    <D.53356>:
    D.53301 = cfg->cil_offset_to_bb;
    D.53298 = falsebb->cil_code;
    D.53302 = (int) D.53298;
    D.53303 = cfg->cil_start;
    D.53304 = (int) D.53303;
    D.53305 = D.53302 - D.53304;
    D.53306 = (unsigned int) D.53305;
    D.53307 = D.53306 * 4;
    D.53308 = D.53301 + D.53307;
    *D.53308 = falsebb;
    <D.53357>:
    D.53309 = cfg->real_offset;
    falsebb->real_offset = D.53309;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53361>; else goto <D.53358>;
    <D.53361>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53362 = D.53282->opcode;
    D.53363 = D.53362 + 64985;
    D.53364 = D.53363 <= 9;
    D.53365 = D.53362 + 64878;
    D.53366 = D.53365 <= 9;
    D.53367 = D.53364 | D.53366;
    if (D.53367 != 0) goto <D.53359>; else goto <D.53368>;
    <D.53368>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 <= 9) goto <D.53359>; else goto <D.53358>;
    <D.53359>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    D.53325 = *D.53324;
    if (D.53325 == 0B) goto <D.53369>; else goto <D.53358>;
    <D.53369>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    *D.53324 = falsebb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    goto <D.53360>;
    <D.53358>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 == 0B) goto <D.53370>; else goto <D.53372>;
    <D.53372>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53373 = D.53282->opcode;
    D.53374 = D.53373 != 442;
    D.53375 = D.53373 != 759;
    D.53376 = D.53374 & D.53375;
    if (D.53376 != 0) goto <D.53377>; else goto <D.53371>;
    <D.53377>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53378 = D.53282->opcode;
    D.53379 = D.53378 + 64985;
    D.53380 = D.53379 > 9;
    D.53381 = D.53378 + 64878;
    D.53382 = D.53381 > 9;
    D.53383 = D.53380 & D.53382;
    if (D.53383 != 0) goto <D.53384>; else goto <D.53371>;
    <D.53384>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 > 9) goto <D.53370>; else goto <D.53371>;
    <D.53370>:
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    <D.53371>:
    <D.53360>:
    D.53281 = cfg->cbb;
    D.53281->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.53385>;
    <D.53352>:
    D.53281 = cfg->cbb;
    D.53281->extended = 1;
    <D.53385>:
    <D.53342>:
  }
  D.53386 = klass->flags;
  D.53387 = D.53386 & 32;
  if (D.53387 != 0) goto <D.53388>; else goto <D.53389>;
  <D.53388>:
  D.53259 = cfg->mempool;
  interface_fail_bb = mono_mempool_alloc0 (D.53259, 172);
  D.53260 = cfg->num_bblocks;
  D.53390 = D.53260;
  D.53391 = D.53390 + 1;
  cfg->num_bblocks = D.53391;
  D.53392 = (int) D.53390;
  interface_fail_bb->block_num = D.53392;
  D.53393 = alloc_preg (cfg);
  tmp_reg = (int) D.53393;
  {
    struct MonoInst * inst;

    D.53259 = cfg->mempool;
    inst = mono_mempool_alloc (D.53259, 56);
    inst->data.op[1].const_val = 0;
    D.53394 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53394;
    inst->prev = 0B;
    D.53395 = inst->prev;
    inst->next = D.53395;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53396 = inst->sreg3;
    inst->sreg2 = D.53396;
    D.53397 = inst->sreg2;
    inst->sreg1 = D.53397;
    D.53280 = cfg->ip;
    inst->cil_code = D.53280;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53398>; else goto <D.53399>;
    <D.53398>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = inst;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    inst->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    goto <D.53400>;
    <D.53399>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53400>:
  }
  mini_emit_iface_cast (cfg, tmp_reg, klass, interface_fail_bb, true_bb);
  D.53401 = interface_fail_bb->cil_code;
  if (D.53401 != 0B) goto <D.53402>; else goto <D.53403>;
  <D.53402>:
  D.53301 = cfg->cil_offset_to_bb;
  D.53401 = interface_fail_bb->cil_code;
  D.53404 = (int) D.53401;
  D.53303 = cfg->cil_start;
  D.53304 = (int) D.53303;
  D.53405 = D.53404 - D.53304;
  D.53406 = (unsigned int) D.53405;
  D.53407 = D.53406 * 4;
  D.53408 = D.53301 + D.53407;
  *D.53408 = interface_fail_bb;
  <D.53403>:
  D.53309 = cfg->real_offset;
  interface_fail_bb->real_offset = D.53309;
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  if (D.53282 != 0B) goto <D.53412>; else goto <D.53409>;
  <D.53412>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53413 = D.53282->opcode;
  D.53414 = D.53413 + 64985;
  D.53415 = D.53414 <= 9;
  D.53416 = D.53413 + 64878;
  D.53417 = D.53416 <= 9;
  D.53418 = D.53415 | D.53417;
  if (D.53418 != 0) goto <D.53410>; else goto <D.53419>;
  <D.53419>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53321 = D.53282->opcode;
  D.53322 = D.53321 + 64888;
  if (D.53322 <= 9) goto <D.53410>; else goto <D.53409>;
  <D.53410>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53323 = D.53282->data.op[1].many_blocks;
  D.53324 = D.53323 + 4;
  D.53325 = *D.53324;
  if (D.53325 == 0B) goto <D.53420>; else goto <D.53409>;
  <D.53420>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53323 = D.53282->data.op[1].many_blocks;
  D.53324 = D.53323 + 4;
  *D.53324 = interface_fail_bb;
  D.53281 = cfg->cbb;
  mono_link_bblock (cfg, D.53281, interface_fail_bb);
  goto <D.53411>;
  <D.53409>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  if (D.53282 == 0B) goto <D.53421>; else goto <D.53423>;
  <D.53423>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53424 = D.53282->opcode;
  D.53425 = D.53424 != 442;
  D.53426 = D.53424 != 759;
  D.53427 = D.53425 & D.53426;
  if (D.53427 != 0) goto <D.53428>; else goto <D.53422>;
  <D.53428>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53429 = D.53282->opcode;
  D.53430 = D.53429 + 64985;
  D.53431 = D.53430 > 9;
  D.53432 = D.53429 + 64878;
  D.53433 = D.53432 > 9;
  D.53434 = D.53431 & D.53433;
  if (D.53434 != 0) goto <D.53435>; else goto <D.53422>;
  <D.53435>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53321 = D.53282->opcode;
  D.53322 = D.53321 + 64888;
  if (D.53322 > 9) goto <D.53421>; else goto <D.53422>;
  <D.53421>:
  D.53281 = cfg->cbb;
  mono_link_bblock (cfg, D.53281, interface_fail_bb);
  <D.53422>:
  <D.53411>:
  D.53281 = cfg->cbb;
  D.53281->next_bb = interface_fail_bb;
  cfg->cbb = interface_fail_bb;
  {
    struct MonoInst * inst;

    D.53259 = cfg->mempool;
    inst = mono_mempool_alloc (D.53259, 56);
    inst->data.op[1].const_val = 0;
    D.53436 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53436;
    inst->prev = 0B;
    D.53437 = inst->prev;
    inst->next = D.53437;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53438 = inst->sreg3;
    inst->sreg2 = D.53438;
    D.53439 = inst->sreg2;
    inst->sreg1 = D.53439;
    D.53280 = cfg->ip;
    inst->cil_code = D.53280;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 0;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53440>; else goto <D.53441>;
    <D.53440>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = inst;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    inst->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    goto <D.53442>;
    <D.53441>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53442>:
  }
  D.53443 = mono_defaults.transparent_proxy_class;
  mini_emit_class_check_branch (cfg, klass_reg, D.53443, 653, false_bb);
  D.53444 = alloc_preg (cfg);
  tmp_reg = (int) D.53444;
  {
    struct MonoInst * inst;

    D.53259 = cfg->mempool;
    inst = mono_mempool_alloc (D.53259, 56);
    inst->data.op[1].const_val = 0;
    D.53445 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53445;
    inst->prev = 0B;
    D.53446 = inst->prev;
    inst->next = D.53446;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53447 = inst->sreg3;
    inst->sreg2 = D.53447;
    D.53448 = inst->sreg2;
    inst->sreg1 = D.53448;
    D.53280 = cfg->ip;
    inst->cil_code = D.53280;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 16;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53449>; else goto <D.53450>;
    <D.53449>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = inst;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    inst->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    goto <D.53451>;
    <D.53450>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53451>:
  }
  {
    struct MonoInst * inst;

    D.53259 = cfg->mempool;
    inst = mono_mempool_alloc (D.53259, 56);
    inst->data.op[1].const_val = 0;
    D.53452 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53452;
    inst->prev = 0B;
    D.53453 = inst->prev;
    inst->next = D.53453;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53454 = inst->sreg3;
    inst->sreg2 = D.53454;
    D.53455 = inst->sreg2;
    inst->sreg1 = D.53455;
    D.53280 = cfg->ip;
    inst->cil_code = D.53280;
    inst->dreg = -1;
    inst->sreg1 = tmp_reg;
    inst->data.op[1].const_val = 0;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53456>; else goto <D.53457>;
    <D.53456>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = inst;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    inst->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    goto <D.53458>;
    <D.53457>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53458>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.53259 = cfg->mempool;
    ins = mono_mempool_alloc (D.53259, 56);
    ins->data.op[1].const_val = 0;
    D.53459 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.53459;
    ins->prev = 0B;
    D.53460 = ins->prev;
    ins->next = D.53460;
    ins->opcode = 653;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.53461 = ins->sreg3;
    ins->sreg2 = D.53461;
    D.53462 = ins->sreg2;
    ins->sreg1 = D.53462;
    D.53280 = cfg->ip;
    ins->cil_code = D.53280;
    if (0 != 0) goto <D.53463>; else goto <D.53464>;
    <D.53463>:
    D.53259 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.53259, 172);
    D.53260 = cfg->num_bblocks;
    D.53465 = D.53260;
    D.53466 = D.53465 + 1;
    cfg->num_bblocks = D.53466;
    D.53467 = (int) D.53465;
    falsebb->block_num = D.53467;
    ins->data.op[0].target_block = false2_bb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, false2_bb);
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53468>; else goto <D.53469>;
    <D.53468>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = ins;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    ins->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    goto <D.53470>;
    <D.53469>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53470>:
    D.53471 = falsebb->cil_code;
    if (D.53471 != 0B) goto <D.53472>; else goto <D.53473>;
    <D.53472>:
    D.53301 = cfg->cil_offset_to_bb;
    D.53471 = falsebb->cil_code;
    D.53474 = (int) D.53471;
    D.53303 = cfg->cil_start;
    D.53304 = (int) D.53303;
    D.53475 = D.53474 - D.53304;
    D.53476 = (unsigned int) D.53475;
    D.53477 = D.53476 * 4;
    D.53478 = D.53301 + D.53477;
    *D.53478 = falsebb;
    <D.53473>:
    D.53309 = cfg->real_offset;
    falsebb->real_offset = D.53309;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53482>; else goto <D.53479>;
    <D.53482>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53483 = D.53282->opcode;
    D.53484 = D.53483 + 64985;
    D.53485 = D.53484 <= 9;
    D.53486 = D.53483 + 64878;
    D.53487 = D.53486 <= 9;
    D.53488 = D.53485 | D.53487;
    if (D.53488 != 0) goto <D.53480>; else goto <D.53489>;
    <D.53489>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 <= 9) goto <D.53480>; else goto <D.53479>;
    <D.53480>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    D.53325 = *D.53324;
    if (D.53325 == 0B) goto <D.53490>; else goto <D.53479>;
    <D.53490>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    *D.53324 = falsebb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    goto <D.53481>;
    <D.53479>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 == 0B) goto <D.53491>; else goto <D.53493>;
    <D.53493>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53494 = D.53282->opcode;
    D.53495 = D.53494 != 442;
    D.53496 = D.53494 != 759;
    D.53497 = D.53495 & D.53496;
    if (D.53497 != 0) goto <D.53498>; else goto <D.53492>;
    <D.53498>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53499 = D.53282->opcode;
    D.53500 = D.53499 + 64985;
    D.53501 = D.53500 > 9;
    D.53502 = D.53499 + 64878;
    D.53503 = D.53502 > 9;
    D.53504 = D.53501 & D.53503;
    if (D.53504 != 0) goto <D.53505>; else goto <D.53492>;
    <D.53505>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 > 9) goto <D.53491>; else goto <D.53492>;
    <D.53491>:
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    <D.53492>:
    <D.53481>:
    D.53281 = cfg->cbb;
    D.53281->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.53506>;
    <D.53464>:
    D.53259 = cfg->mempool;
    D.53507 = mono_mempool_alloc (D.53259, 8);
    ins->data.op[1].many_blocks = D.53507;
    D.53508 = ins->data.op[1].many_blocks;
    *D.53508 = false2_bb;
    D.53508 = ins->data.op[1].many_blocks;
    D.53509 = D.53508 + 4;
    *D.53509 = 0B;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, false2_bb);
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53510>; else goto <D.53511>;
    <D.53510>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = ins;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    ins->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    goto <D.53512>;
    <D.53511>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53512>:
    D.53349 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.53350 = D.53349 & 8;
    if (D.53350 == 0) goto <D.53513>; else goto <D.53514>;
    <D.53513>:
    D.53259 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.53259, 172);
    D.53260 = cfg->num_bblocks;
    D.53515 = D.53260;
    D.53516 = D.53515 + 1;
    cfg->num_bblocks = D.53516;
    D.53517 = (int) D.53515;
    falsebb->block_num = D.53517;
    D.53508 = ins->data.op[1].many_blocks;
    D.53509 = D.53508 + 4;
    *D.53509 = falsebb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    D.53471 = falsebb->cil_code;
    if (D.53471 != 0B) goto <D.53518>; else goto <D.53519>;
    <D.53518>:
    D.53301 = cfg->cil_offset_to_bb;
    D.53471 = falsebb->cil_code;
    D.53474 = (int) D.53471;
    D.53303 = cfg->cil_start;
    D.53304 = (int) D.53303;
    D.53475 = D.53474 - D.53304;
    D.53476 = (unsigned int) D.53475;
    D.53477 = D.53476 * 4;
    D.53478 = D.53301 + D.53477;
    *D.53478 = falsebb;
    <D.53519>:
    D.53309 = cfg->real_offset;
    falsebb->real_offset = D.53309;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53523>; else goto <D.53520>;
    <D.53523>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53524 = D.53282->opcode;
    D.53525 = D.53524 + 64985;
    D.53526 = D.53525 <= 9;
    D.53527 = D.53524 + 64878;
    D.53528 = D.53527 <= 9;
    D.53529 = D.53526 | D.53528;
    if (D.53529 != 0) goto <D.53521>; else goto <D.53530>;
    <D.53530>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 <= 9) goto <D.53521>; else goto <D.53520>;
    <D.53521>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    D.53325 = *D.53324;
    if (D.53325 == 0B) goto <D.53531>; else goto <D.53520>;
    <D.53531>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    *D.53324 = falsebb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    goto <D.53522>;
    <D.53520>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 == 0B) goto <D.53532>; else goto <D.53534>;
    <D.53534>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53535 = D.53282->opcode;
    D.53536 = D.53535 != 442;
    D.53537 = D.53535 != 759;
    D.53538 = D.53536 & D.53537;
    if (D.53538 != 0) goto <D.53539>; else goto <D.53533>;
    <D.53539>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53540 = D.53282->opcode;
    D.53541 = D.53540 + 64985;
    D.53542 = D.53541 > 9;
    D.53543 = D.53540 + 64878;
    D.53544 = D.53543 > 9;
    D.53545 = D.53542 & D.53544;
    if (D.53545 != 0) goto <D.53546>; else goto <D.53533>;
    <D.53546>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 > 9) goto <D.53532>; else goto <D.53533>;
    <D.53532>:
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    <D.53533>:
    <D.53522>:
    D.53281 = cfg->cbb;
    D.53281->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.53547>;
    <D.53514>:
    D.53281 = cfg->cbb;
    D.53281->extended = 1;
    <D.53547>:
    <D.53506>:
  }
  goto <D.53548>;
  <D.53389>:
  D.53549 = alloc_preg (cfg);
  tmp_reg = (int) D.53549;
  {
    struct MonoInst * inst;

    D.53259 = cfg->mempool;
    inst = mono_mempool_alloc (D.53259, 56);
    inst->data.op[1].const_val = 0;
    D.53550 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53550;
    inst->prev = 0B;
    D.53551 = inst->prev;
    inst->next = D.53551;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53552 = inst->sreg3;
    inst->sreg2 = D.53552;
    D.53553 = inst->sreg2;
    inst->sreg1 = D.53553;
    D.53280 = cfg->ip;
    inst->cil_code = D.53280;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53554>; else goto <D.53555>;
    <D.53554>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = inst;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    inst->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    goto <D.53556>;
    <D.53555>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53556>:
  }
  {
    struct MonoInst * inst;

    D.53259 = cfg->mempool;
    inst = mono_mempool_alloc (D.53259, 56);
    inst->data.op[1].const_val = 0;
    D.53557 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53557;
    inst->prev = 0B;
    D.53558 = inst->prev;
    inst->next = D.53558;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53559 = inst->sreg3;
    inst->sreg2 = D.53559;
    D.53560 = inst->sreg2;
    inst->sreg1 = D.53560;
    D.53280 = cfg->ip;
    inst->cil_code = D.53280;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 0;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53561>; else goto <D.53562>;
    <D.53561>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = inst;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    inst->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    goto <D.53563>;
    <D.53562>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53563>:
  }
  D.53443 = mono_defaults.transparent_proxy_class;
  mini_emit_class_check_branch (cfg, klass_reg, D.53443, 653, no_proxy_bb);
  D.53564 = alloc_preg (cfg);
  tmp_reg = (int) D.53564;
  {
    struct MonoInst * inst;

    D.53259 = cfg->mempool;
    inst = mono_mempool_alloc (D.53259, 56);
    inst->data.op[1].const_val = 0;
    D.53565 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53565;
    inst->prev = 0B;
    D.53566 = inst->prev;
    inst->next = D.53566;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53567 = inst->sreg3;
    inst->sreg2 = D.53567;
    D.53568 = inst->sreg2;
    inst->sreg1 = D.53568;
    D.53280 = cfg->ip;
    inst->cil_code = D.53280;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 12;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53569>; else goto <D.53570>;
    <D.53569>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = inst;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    inst->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    goto <D.53571>;
    <D.53570>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53571>:
  }
  {
    struct MonoInst * inst;

    D.53259 = cfg->mempool;
    inst = mono_mempool_alloc (D.53259, 56);
    inst->data.op[1].const_val = 0;
    D.53572 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53572;
    inst->prev = 0B;
    D.53573 = inst->prev;
    inst->next = D.53573;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53574 = inst->sreg3;
    inst->sreg2 = D.53574;
    D.53575 = inst->sreg2;
    inst->sreg1 = D.53575;
    D.53280 = cfg->ip;
    inst->cil_code = D.53280;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 8;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53576>; else goto <D.53577>;
    <D.53576>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = inst;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    inst->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    goto <D.53578>;
    <D.53577>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53578>:
  }
  D.53579 = alloc_preg (cfg);
  tmp_reg = (int) D.53579;
  {
    struct MonoInst * inst;

    D.53259 = cfg->mempool;
    inst = mono_mempool_alloc (D.53259, 56);
    inst->data.op[1].const_val = 0;
    D.53580 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53580;
    inst->prev = 0B;
    D.53581 = inst->prev;
    inst->next = D.53581;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53582 = inst->sreg3;
    inst->sreg2 = D.53582;
    D.53583 = inst->sreg2;
    inst->sreg1 = D.53583;
    D.53280 = cfg->ip;
    inst->cil_code = D.53280;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 16;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53584>; else goto <D.53585>;
    <D.53584>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = inst;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    inst->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    goto <D.53586>;
    <D.53585>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53586>:
  }
  {
    struct MonoInst * inst;

    D.53259 = cfg->mempool;
    inst = mono_mempool_alloc (D.53259, 56);
    inst->data.op[1].const_val = 0;
    D.53587 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53587;
    inst->prev = 0B;
    D.53588 = inst->prev;
    inst->next = D.53588;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53589 = inst->sreg3;
    inst->sreg2 = D.53589;
    D.53590 = inst->sreg2;
    inst->sreg1 = D.53590;
    D.53280 = cfg->ip;
    inst->cil_code = D.53280;
    inst->dreg = -1;
    inst->sreg1 = tmp_reg;
    inst->data.op[1].const_val = 0;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53591>; else goto <D.53592>;
    <D.53591>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = inst;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    inst->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    goto <D.53593>;
    <D.53592>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53593>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.53259 = cfg->mempool;
    ins = mono_mempool_alloc (D.53259, 56);
    ins->data.op[1].const_val = 0;
    D.53594 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.53594;
    ins->prev = 0B;
    D.53595 = ins->prev;
    ins->next = D.53595;
    ins->opcode = 648;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.53596 = ins->sreg3;
    ins->sreg2 = D.53596;
    D.53597 = ins->sreg2;
    ins->sreg1 = D.53597;
    D.53280 = cfg->ip;
    ins->cil_code = D.53280;
    if (0 != 0) goto <D.53598>; else goto <D.53599>;
    <D.53598>:
    D.53259 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.53259, 172);
    D.53260 = cfg->num_bblocks;
    D.53600 = D.53260;
    D.53601 = D.53600 + 1;
    cfg->num_bblocks = D.53601;
    D.53602 = (int) D.53600;
    falsebb->block_num = D.53602;
    ins->data.op[0].target_block = no_proxy_bb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, no_proxy_bb);
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53603>; else goto <D.53604>;
    <D.53603>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = ins;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    ins->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    goto <D.53605>;
    <D.53604>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53605>:
    D.53606 = falsebb->cil_code;
    if (D.53606 != 0B) goto <D.53607>; else goto <D.53608>;
    <D.53607>:
    D.53301 = cfg->cil_offset_to_bb;
    D.53606 = falsebb->cil_code;
    D.53609 = (int) D.53606;
    D.53303 = cfg->cil_start;
    D.53304 = (int) D.53303;
    D.53610 = D.53609 - D.53304;
    D.53611 = (unsigned int) D.53610;
    D.53612 = D.53611 * 4;
    D.53613 = D.53301 + D.53612;
    *D.53613 = falsebb;
    <D.53608>:
    D.53309 = cfg->real_offset;
    falsebb->real_offset = D.53309;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53617>; else goto <D.53614>;
    <D.53617>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53618 = D.53282->opcode;
    D.53619 = D.53618 + 64985;
    D.53620 = D.53619 <= 9;
    D.53621 = D.53618 + 64878;
    D.53622 = D.53621 <= 9;
    D.53623 = D.53620 | D.53622;
    if (D.53623 != 0) goto <D.53615>; else goto <D.53624>;
    <D.53624>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 <= 9) goto <D.53615>; else goto <D.53614>;
    <D.53615>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    D.53325 = *D.53324;
    if (D.53325 == 0B) goto <D.53625>; else goto <D.53614>;
    <D.53625>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    *D.53324 = falsebb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    goto <D.53616>;
    <D.53614>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 == 0B) goto <D.53626>; else goto <D.53628>;
    <D.53628>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53629 = D.53282->opcode;
    D.53630 = D.53629 != 442;
    D.53631 = D.53629 != 759;
    D.53632 = D.53630 & D.53631;
    if (D.53632 != 0) goto <D.53633>; else goto <D.53627>;
    <D.53633>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53634 = D.53282->opcode;
    D.53635 = D.53634 + 64985;
    D.53636 = D.53635 > 9;
    D.53637 = D.53634 + 64878;
    D.53638 = D.53637 > 9;
    D.53639 = D.53636 & D.53638;
    if (D.53639 != 0) goto <D.53640>; else goto <D.53627>;
    <D.53640>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 > 9) goto <D.53626>; else goto <D.53627>;
    <D.53626>:
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    <D.53627>:
    <D.53616>:
    D.53281 = cfg->cbb;
    D.53281->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.53641>;
    <D.53599>:
    D.53259 = cfg->mempool;
    D.53642 = mono_mempool_alloc (D.53259, 8);
    ins->data.op[1].many_blocks = D.53642;
    D.53643 = ins->data.op[1].many_blocks;
    *D.53643 = no_proxy_bb;
    D.53643 = ins->data.op[1].many_blocks;
    D.53644 = D.53643 + 4;
    *D.53644 = 0B;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, no_proxy_bb);
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53645>; else goto <D.53646>;
    <D.53645>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = ins;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    ins->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    goto <D.53647>;
    <D.53646>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53647>:
    D.53349 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.53350 = D.53349 & 8;
    if (D.53350 == 0) goto <D.53648>; else goto <D.53649>;
    <D.53648>:
    D.53259 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.53259, 172);
    D.53260 = cfg->num_bblocks;
    D.53650 = D.53260;
    D.53651 = D.53650 + 1;
    cfg->num_bblocks = D.53651;
    D.53652 = (int) D.53650;
    falsebb->block_num = D.53652;
    D.53643 = ins->data.op[1].many_blocks;
    D.53644 = D.53643 + 4;
    *D.53644 = falsebb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    D.53606 = falsebb->cil_code;
    if (D.53606 != 0B) goto <D.53653>; else goto <D.53654>;
    <D.53653>:
    D.53301 = cfg->cil_offset_to_bb;
    D.53606 = falsebb->cil_code;
    D.53609 = (int) D.53606;
    D.53303 = cfg->cil_start;
    D.53304 = (int) D.53303;
    D.53610 = D.53609 - D.53304;
    D.53611 = (unsigned int) D.53610;
    D.53612 = D.53611 * 4;
    D.53613 = D.53301 + D.53612;
    *D.53613 = falsebb;
    <D.53654>:
    D.53309 = cfg->real_offset;
    falsebb->real_offset = D.53309;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53658>; else goto <D.53655>;
    <D.53658>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53659 = D.53282->opcode;
    D.53660 = D.53659 + 64985;
    D.53661 = D.53660 <= 9;
    D.53662 = D.53659 + 64878;
    D.53663 = D.53662 <= 9;
    D.53664 = D.53661 | D.53663;
    if (D.53664 != 0) goto <D.53656>; else goto <D.53665>;
    <D.53665>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 <= 9) goto <D.53656>; else goto <D.53655>;
    <D.53656>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    D.53325 = *D.53324;
    if (D.53325 == 0B) goto <D.53666>; else goto <D.53655>;
    <D.53666>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    *D.53324 = falsebb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    goto <D.53657>;
    <D.53655>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 == 0B) goto <D.53667>; else goto <D.53669>;
    <D.53669>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53670 = D.53282->opcode;
    D.53671 = D.53670 != 442;
    D.53672 = D.53670 != 759;
    D.53673 = D.53671 & D.53672;
    if (D.53673 != 0) goto <D.53674>; else goto <D.53668>;
    <D.53674>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53675 = D.53282->opcode;
    D.53676 = D.53675 + 64985;
    D.53677 = D.53676 > 9;
    D.53678 = D.53675 + 64878;
    D.53679 = D.53678 > 9;
    D.53680 = D.53677 & D.53679;
    if (D.53680 != 0) goto <D.53681>; else goto <D.53668>;
    <D.53681>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 > 9) goto <D.53667>; else goto <D.53668>;
    <D.53667>:
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    <D.53668>:
    <D.53657>:
    D.53281 = cfg->cbb;
    D.53281->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.53682>;
    <D.53649>:
    D.53281 = cfg->cbb;
    D.53281->extended = 1;
    <D.53682>:
    <D.53641>:
  }
  mini_emit_isninst_cast (cfg, klass_reg, klass, false2_bb, true_bb);
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.53259 = cfg->mempool;
    ins = mono_mempool_alloc (D.53259, 56);
    ins->data.op[1].const_val = 0;
    D.53683 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.53683;
    ins->prev = 0B;
    D.53684 = ins->prev;
    ins->next = D.53684;
    ins->opcode = 442;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.53685 = ins->sreg3;
    ins->sreg2 = D.53685;
    D.53686 = ins->sreg2;
    ins->sreg1 = D.53686;
    D.53280 = cfg->ip;
    ins->cil_code = D.53280;
    if (1 != 0) goto <D.53687>; else goto <D.53688>;
    <D.53687>:
    D.53259 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.53259, 172);
    D.53260 = cfg->num_bblocks;
    D.53689 = D.53260;
    D.53690 = D.53689 + 1;
    cfg->num_bblocks = D.53690;
    D.53691 = (int) D.53689;
    falsebb->block_num = D.53691;
    ins->data.op[0].target_block = false2_bb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, false2_bb);
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53692>; else goto <D.53693>;
    <D.53692>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = ins;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    ins->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    goto <D.53694>;
    <D.53693>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53694>:
    D.53695 = falsebb->cil_code;
    if (D.53695 != 0B) goto <D.53696>; else goto <D.53697>;
    <D.53696>:
    D.53301 = cfg->cil_offset_to_bb;
    D.53695 = falsebb->cil_code;
    D.53698 = (int) D.53695;
    D.53303 = cfg->cil_start;
    D.53304 = (int) D.53303;
    D.53699 = D.53698 - D.53304;
    D.53700 = (unsigned int) D.53699;
    D.53701 = D.53700 * 4;
    D.53702 = D.53301 + D.53701;
    *D.53702 = falsebb;
    <D.53697>:
    D.53309 = cfg->real_offset;
    falsebb->real_offset = D.53309;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53706>; else goto <D.53703>;
    <D.53706>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53707 = D.53282->opcode;
    D.53708 = D.53707 + 64985;
    D.53709 = D.53708 <= 9;
    D.53710 = D.53707 + 64878;
    D.53711 = D.53710 <= 9;
    D.53712 = D.53709 | D.53711;
    if (D.53712 != 0) goto <D.53704>; else goto <D.53713>;
    <D.53713>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 <= 9) goto <D.53704>; else goto <D.53703>;
    <D.53704>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    D.53325 = *D.53324;
    if (D.53325 == 0B) goto <D.53714>; else goto <D.53703>;
    <D.53714>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    *D.53324 = falsebb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    goto <D.53705>;
    <D.53703>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 == 0B) goto <D.53715>; else goto <D.53717>;
    <D.53717>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53718 = D.53282->opcode;
    D.53719 = D.53718 != 442;
    D.53720 = D.53718 != 759;
    D.53721 = D.53719 & D.53720;
    if (D.53721 != 0) goto <D.53722>; else goto <D.53716>;
    <D.53722>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53723 = D.53282->opcode;
    D.53724 = D.53723 + 64985;
    D.53725 = D.53724 > 9;
    D.53726 = D.53723 + 64878;
    D.53727 = D.53726 > 9;
    D.53728 = D.53725 & D.53727;
    if (D.53728 != 0) goto <D.53729>; else goto <D.53716>;
    <D.53729>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 > 9) goto <D.53715>; else goto <D.53716>;
    <D.53715>:
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    <D.53716>:
    <D.53705>:
    D.53281 = cfg->cbb;
    D.53281->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.53730>;
    <D.53688>:
    D.53259 = cfg->mempool;
    D.53731 = mono_mempool_alloc (D.53259, 8);
    ins->data.op[1].many_blocks = D.53731;
    D.53732 = ins->data.op[1].many_blocks;
    *D.53732 = false2_bb;
    D.53732 = ins->data.op[1].many_blocks;
    D.53733 = D.53732 + 4;
    *D.53733 = 0B;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, false2_bb);
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53734>; else goto <D.53735>;
    <D.53734>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = ins;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    ins->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    goto <D.53736>;
    <D.53735>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53736>:
    D.53349 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.53350 = D.53349 & 8;
    if (D.53350 == 0) goto <D.53737>; else goto <D.53738>;
    <D.53737>:
    D.53259 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.53259, 172);
    D.53260 = cfg->num_bblocks;
    D.53739 = D.53260;
    D.53740 = D.53739 + 1;
    cfg->num_bblocks = D.53740;
    D.53741 = (int) D.53739;
    falsebb->block_num = D.53741;
    D.53732 = ins->data.op[1].many_blocks;
    D.53733 = D.53732 + 4;
    *D.53733 = falsebb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    D.53695 = falsebb->cil_code;
    if (D.53695 != 0B) goto <D.53742>; else goto <D.53743>;
    <D.53742>:
    D.53301 = cfg->cil_offset_to_bb;
    D.53695 = falsebb->cil_code;
    D.53698 = (int) D.53695;
    D.53303 = cfg->cil_start;
    D.53304 = (int) D.53303;
    D.53699 = D.53698 - D.53304;
    D.53700 = (unsigned int) D.53699;
    D.53701 = D.53700 * 4;
    D.53702 = D.53301 + D.53701;
    *D.53702 = falsebb;
    <D.53743>:
    D.53309 = cfg->real_offset;
    falsebb->real_offset = D.53309;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53747>; else goto <D.53744>;
    <D.53747>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53748 = D.53282->opcode;
    D.53749 = D.53748 + 64985;
    D.53750 = D.53749 <= 9;
    D.53751 = D.53748 + 64878;
    D.53752 = D.53751 <= 9;
    D.53753 = D.53750 | D.53752;
    if (D.53753 != 0) goto <D.53745>; else goto <D.53754>;
    <D.53754>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 <= 9) goto <D.53745>; else goto <D.53744>;
    <D.53745>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    D.53325 = *D.53324;
    if (D.53325 == 0B) goto <D.53755>; else goto <D.53744>;
    <D.53755>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    *D.53324 = falsebb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    goto <D.53746>;
    <D.53744>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 == 0B) goto <D.53756>; else goto <D.53758>;
    <D.53758>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53759 = D.53282->opcode;
    D.53760 = D.53759 != 442;
    D.53761 = D.53759 != 759;
    D.53762 = D.53760 & D.53761;
    if (D.53762 != 0) goto <D.53763>; else goto <D.53757>;
    <D.53763>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53764 = D.53282->opcode;
    D.53765 = D.53764 + 64985;
    D.53766 = D.53765 > 9;
    D.53767 = D.53764 + 64878;
    D.53768 = D.53767 > 9;
    D.53769 = D.53766 & D.53768;
    if (D.53769 != 0) goto <D.53770>; else goto <D.53757>;
    <D.53770>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 > 9) goto <D.53756>; else goto <D.53757>;
    <D.53756>:
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    <D.53757>:
    <D.53746>:
    D.53281 = cfg->cbb;
    D.53281->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.53771>;
    <D.53738>:
    D.53281 = cfg->cbb;
    D.53281->extended = 1;
    <D.53771>:
    <D.53730>:
  }
  D.53772 = no_proxy_bb->cil_code;
  if (D.53772 != 0B) goto <D.53773>; else goto <D.53774>;
  <D.53773>:
  D.53301 = cfg->cil_offset_to_bb;
  D.53772 = no_proxy_bb->cil_code;
  D.53775 = (int) D.53772;
  D.53303 = cfg->cil_start;
  D.53304 = (int) D.53303;
  D.53776 = D.53775 - D.53304;
  D.53777 = (unsigned int) D.53776;
  D.53778 = D.53777 * 4;
  D.53779 = D.53301 + D.53778;
  *D.53779 = no_proxy_bb;
  <D.53774>:
  D.53309 = cfg->real_offset;
  no_proxy_bb->real_offset = D.53309;
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  if (D.53282 != 0B) goto <D.53783>; else goto <D.53780>;
  <D.53783>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53784 = D.53282->opcode;
  D.53785 = D.53784 + 64985;
  D.53786 = D.53785 <= 9;
  D.53787 = D.53784 + 64878;
  D.53788 = D.53787 <= 9;
  D.53789 = D.53786 | D.53788;
  if (D.53789 != 0) goto <D.53781>; else goto <D.53790>;
  <D.53790>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53321 = D.53282->opcode;
  D.53322 = D.53321 + 64888;
  if (D.53322 <= 9) goto <D.53781>; else goto <D.53780>;
  <D.53781>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53323 = D.53282->data.op[1].many_blocks;
  D.53324 = D.53323 + 4;
  D.53325 = *D.53324;
  if (D.53325 == 0B) goto <D.53791>; else goto <D.53780>;
  <D.53791>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53323 = D.53282->data.op[1].many_blocks;
  D.53324 = D.53323 + 4;
  *D.53324 = no_proxy_bb;
  D.53281 = cfg->cbb;
  mono_link_bblock (cfg, D.53281, no_proxy_bb);
  goto <D.53782>;
  <D.53780>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  if (D.53282 == 0B) goto <D.53792>; else goto <D.53794>;
  <D.53794>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53795 = D.53282->opcode;
  D.53796 = D.53795 != 442;
  D.53797 = D.53795 != 759;
  D.53798 = D.53796 & D.53797;
  if (D.53798 != 0) goto <D.53799>; else goto <D.53793>;
  <D.53799>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53800 = D.53282->opcode;
  D.53801 = D.53800 + 64985;
  D.53802 = D.53801 > 9;
  D.53803 = D.53800 + 64878;
  D.53804 = D.53803 > 9;
  D.53805 = D.53802 & D.53804;
  if (D.53805 != 0) goto <D.53806>; else goto <D.53793>;
  <D.53806>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53321 = D.53282->opcode;
  D.53322 = D.53321 + 64888;
  if (D.53322 > 9) goto <D.53792>; else goto <D.53793>;
  <D.53792>:
  D.53281 = cfg->cbb;
  mono_link_bblock (cfg, D.53281, no_proxy_bb);
  <D.53793>:
  <D.53782>:
  D.53281 = cfg->cbb;
  D.53281->next_bb = no_proxy_bb;
  cfg->cbb = no_proxy_bb;
  mini_emit_isninst_cast (cfg, klass_reg, klass, false_bb, true_bb);
  <D.53548>:
  D.53807 = false_bb->cil_code;
  if (D.53807 != 0B) goto <D.53808>; else goto <D.53809>;
  <D.53808>:
  D.53301 = cfg->cil_offset_to_bb;
  D.53807 = false_bb->cil_code;
  D.53810 = (int) D.53807;
  D.53303 = cfg->cil_start;
  D.53304 = (int) D.53303;
  D.53811 = D.53810 - D.53304;
  D.53812 = (unsigned int) D.53811;
  D.53813 = D.53812 * 4;
  D.53814 = D.53301 + D.53813;
  *D.53814 = false_bb;
  <D.53809>:
  D.53309 = cfg->real_offset;
  false_bb->real_offset = D.53309;
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  if (D.53282 != 0B) goto <D.53818>; else goto <D.53815>;
  <D.53818>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53819 = D.53282->opcode;
  D.53820 = D.53819 + 64985;
  D.53821 = D.53820 <= 9;
  D.53822 = D.53819 + 64878;
  D.53823 = D.53822 <= 9;
  D.53824 = D.53821 | D.53823;
  if (D.53824 != 0) goto <D.53816>; else goto <D.53825>;
  <D.53825>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53321 = D.53282->opcode;
  D.53322 = D.53321 + 64888;
  if (D.53322 <= 9) goto <D.53816>; else goto <D.53815>;
  <D.53816>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53323 = D.53282->data.op[1].many_blocks;
  D.53324 = D.53323 + 4;
  D.53325 = *D.53324;
  if (D.53325 == 0B) goto <D.53826>; else goto <D.53815>;
  <D.53826>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53323 = D.53282->data.op[1].many_blocks;
  D.53324 = D.53323 + 4;
  *D.53324 = false_bb;
  D.53281 = cfg->cbb;
  mono_link_bblock (cfg, D.53281, false_bb);
  goto <D.53817>;
  <D.53815>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  if (D.53282 == 0B) goto <D.53827>; else goto <D.53829>;
  <D.53829>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53830 = D.53282->opcode;
  D.53831 = D.53830 != 442;
  D.53832 = D.53830 != 759;
  D.53833 = D.53831 & D.53832;
  if (D.53833 != 0) goto <D.53834>; else goto <D.53828>;
  <D.53834>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53835 = D.53282->opcode;
  D.53836 = D.53835 + 64985;
  D.53837 = D.53836 > 9;
  D.53838 = D.53835 + 64878;
  D.53839 = D.53838 > 9;
  D.53840 = D.53837 & D.53839;
  if (D.53840 != 0) goto <D.53841>; else goto <D.53828>;
  <D.53841>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53321 = D.53282->opcode;
  D.53322 = D.53321 + 64888;
  if (D.53322 > 9) goto <D.53827>; else goto <D.53828>;
  <D.53827>:
  D.53281 = cfg->cbb;
  mono_link_bblock (cfg, D.53281, false_bb);
  <D.53828>:
  <D.53817>:
  D.53281 = cfg->cbb;
  D.53281->next_bb = false_bb;
  cfg->cbb = false_bb;
  {
    struct MonoInst * inst;

    D.53259 = cfg->mempool;
    inst = mono_mempool_alloc (D.53259, 56);
    inst->data.op[1].const_val = 0;
    D.53842 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53842;
    inst->prev = 0B;
    D.53843 = inst->prev;
    inst->next = D.53843;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53844 = inst->sreg3;
    inst->sreg2 = D.53844;
    D.53845 = inst->sreg2;
    inst->sreg1 = D.53845;
    D.53280 = cfg->ip;
    inst->cil_code = D.53280;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 1;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53846>; else goto <D.53847>;
    <D.53846>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = inst;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    inst->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    goto <D.53848>;
    <D.53847>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53848>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.53259 = cfg->mempool;
    ins = mono_mempool_alloc (D.53259, 56);
    ins->data.op[1].const_val = 0;
    D.53849 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.53849;
    ins->prev = 0B;
    D.53850 = ins->prev;
    ins->next = D.53850;
    ins->opcode = 442;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.53851 = ins->sreg3;
    ins->sreg2 = D.53851;
    D.53852 = ins->sreg2;
    ins->sreg1 = D.53852;
    D.53280 = cfg->ip;
    ins->cil_code = D.53280;
    if (1 != 0) goto <D.53853>; else goto <D.53854>;
    <D.53853>:
    D.53259 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.53259, 172);
    D.53260 = cfg->num_bblocks;
    D.53855 = D.53260;
    D.53856 = D.53855 + 1;
    cfg->num_bblocks = D.53856;
    D.53857 = (int) D.53855;
    falsebb->block_num = D.53857;
    ins->data.op[0].target_block = end_bb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, end_bb);
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53858>; else goto <D.53859>;
    <D.53858>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = ins;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    ins->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    goto <D.53860>;
    <D.53859>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53860>:
    D.53861 = falsebb->cil_code;
    if (D.53861 != 0B) goto <D.53862>; else goto <D.53863>;
    <D.53862>:
    D.53301 = cfg->cil_offset_to_bb;
    D.53861 = falsebb->cil_code;
    D.53864 = (int) D.53861;
    D.53303 = cfg->cil_start;
    D.53304 = (int) D.53303;
    D.53865 = D.53864 - D.53304;
    D.53866 = (unsigned int) D.53865;
    D.53867 = D.53866 * 4;
    D.53868 = D.53301 + D.53867;
    *D.53868 = falsebb;
    <D.53863>:
    D.53309 = cfg->real_offset;
    falsebb->real_offset = D.53309;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53872>; else goto <D.53869>;
    <D.53872>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53873 = D.53282->opcode;
    D.53874 = D.53873 + 64985;
    D.53875 = D.53874 <= 9;
    D.53876 = D.53873 + 64878;
    D.53877 = D.53876 <= 9;
    D.53878 = D.53875 | D.53877;
    if (D.53878 != 0) goto <D.53870>; else goto <D.53879>;
    <D.53879>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 <= 9) goto <D.53870>; else goto <D.53869>;
    <D.53870>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    D.53325 = *D.53324;
    if (D.53325 == 0B) goto <D.53880>; else goto <D.53869>;
    <D.53880>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    *D.53324 = falsebb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    goto <D.53871>;
    <D.53869>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 == 0B) goto <D.53881>; else goto <D.53883>;
    <D.53883>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53884 = D.53282->opcode;
    D.53885 = D.53884 != 442;
    D.53886 = D.53884 != 759;
    D.53887 = D.53885 & D.53886;
    if (D.53887 != 0) goto <D.53888>; else goto <D.53882>;
    <D.53888>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53889 = D.53282->opcode;
    D.53890 = D.53889 + 64985;
    D.53891 = D.53890 > 9;
    D.53892 = D.53889 + 64878;
    D.53893 = D.53892 > 9;
    D.53894 = D.53891 & D.53893;
    if (D.53894 != 0) goto <D.53895>; else goto <D.53882>;
    <D.53895>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 > 9) goto <D.53881>; else goto <D.53882>;
    <D.53881>:
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    <D.53882>:
    <D.53871>:
    D.53281 = cfg->cbb;
    D.53281->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.53896>;
    <D.53854>:
    D.53259 = cfg->mempool;
    D.53897 = mono_mempool_alloc (D.53259, 8);
    ins->data.op[1].many_blocks = D.53897;
    D.53898 = ins->data.op[1].many_blocks;
    *D.53898 = end_bb;
    D.53898 = ins->data.op[1].many_blocks;
    D.53899 = D.53898 + 4;
    *D.53899 = 0B;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, end_bb);
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53900>; else goto <D.53901>;
    <D.53900>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = ins;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    ins->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    goto <D.53902>;
    <D.53901>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53902>:
    D.53349 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.53350 = D.53349 & 8;
    if (D.53350 == 0) goto <D.53903>; else goto <D.53904>;
    <D.53903>:
    D.53259 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.53259, 172);
    D.53260 = cfg->num_bblocks;
    D.53905 = D.53260;
    D.53906 = D.53905 + 1;
    cfg->num_bblocks = D.53906;
    D.53907 = (int) D.53905;
    falsebb->block_num = D.53907;
    D.53898 = ins->data.op[1].many_blocks;
    D.53899 = D.53898 + 4;
    *D.53899 = falsebb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    D.53861 = falsebb->cil_code;
    if (D.53861 != 0B) goto <D.53908>; else goto <D.53909>;
    <D.53908>:
    D.53301 = cfg->cil_offset_to_bb;
    D.53861 = falsebb->cil_code;
    D.53864 = (int) D.53861;
    D.53303 = cfg->cil_start;
    D.53304 = (int) D.53303;
    D.53865 = D.53864 - D.53304;
    D.53866 = (unsigned int) D.53865;
    D.53867 = D.53866 * 4;
    D.53868 = D.53301 + D.53867;
    *D.53868 = falsebb;
    <D.53909>:
    D.53309 = cfg->real_offset;
    falsebb->real_offset = D.53309;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53913>; else goto <D.53910>;
    <D.53913>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53914 = D.53282->opcode;
    D.53915 = D.53914 + 64985;
    D.53916 = D.53915 <= 9;
    D.53917 = D.53914 + 64878;
    D.53918 = D.53917 <= 9;
    D.53919 = D.53916 | D.53918;
    if (D.53919 != 0) goto <D.53911>; else goto <D.53920>;
    <D.53920>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 <= 9) goto <D.53911>; else goto <D.53910>;
    <D.53911>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    D.53325 = *D.53324;
    if (D.53325 == 0B) goto <D.53921>; else goto <D.53910>;
    <D.53921>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    *D.53324 = falsebb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    goto <D.53912>;
    <D.53910>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 == 0B) goto <D.53922>; else goto <D.53924>;
    <D.53924>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53925 = D.53282->opcode;
    D.53926 = D.53925 != 442;
    D.53927 = D.53925 != 759;
    D.53928 = D.53926 & D.53927;
    if (D.53928 != 0) goto <D.53929>; else goto <D.53923>;
    <D.53929>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53930 = D.53282->opcode;
    D.53931 = D.53930 + 64985;
    D.53932 = D.53931 > 9;
    D.53933 = D.53930 + 64878;
    D.53934 = D.53933 > 9;
    D.53935 = D.53932 & D.53934;
    if (D.53935 != 0) goto <D.53936>; else goto <D.53923>;
    <D.53936>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 > 9) goto <D.53922>; else goto <D.53923>;
    <D.53922>:
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    <D.53923>:
    <D.53912>:
    D.53281 = cfg->cbb;
    D.53281->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.53937>;
    <D.53904>:
    D.53281 = cfg->cbb;
    D.53281->extended = 1;
    <D.53937>:
    <D.53896>:
  }
  D.53938 = false2_bb->cil_code;
  if (D.53938 != 0B) goto <D.53939>; else goto <D.53940>;
  <D.53939>:
  D.53301 = cfg->cil_offset_to_bb;
  D.53938 = false2_bb->cil_code;
  D.53941 = (int) D.53938;
  D.53303 = cfg->cil_start;
  D.53304 = (int) D.53303;
  D.53942 = D.53941 - D.53304;
  D.53943 = (unsigned int) D.53942;
  D.53944 = D.53943 * 4;
  D.53945 = D.53301 + D.53944;
  *D.53945 = false2_bb;
  <D.53940>:
  D.53309 = cfg->real_offset;
  false2_bb->real_offset = D.53309;
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  if (D.53282 != 0B) goto <D.53949>; else goto <D.53946>;
  <D.53949>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53950 = D.53282->opcode;
  D.53951 = D.53950 + 64985;
  D.53952 = D.53951 <= 9;
  D.53953 = D.53950 + 64878;
  D.53954 = D.53953 <= 9;
  D.53955 = D.53952 | D.53954;
  if (D.53955 != 0) goto <D.53947>; else goto <D.53956>;
  <D.53956>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53321 = D.53282->opcode;
  D.53322 = D.53321 + 64888;
  if (D.53322 <= 9) goto <D.53947>; else goto <D.53946>;
  <D.53947>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53323 = D.53282->data.op[1].many_blocks;
  D.53324 = D.53323 + 4;
  D.53325 = *D.53324;
  if (D.53325 == 0B) goto <D.53957>; else goto <D.53946>;
  <D.53957>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53323 = D.53282->data.op[1].many_blocks;
  D.53324 = D.53323 + 4;
  *D.53324 = false2_bb;
  D.53281 = cfg->cbb;
  mono_link_bblock (cfg, D.53281, false2_bb);
  goto <D.53948>;
  <D.53946>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  if (D.53282 == 0B) goto <D.53958>; else goto <D.53960>;
  <D.53960>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53961 = D.53282->opcode;
  D.53962 = D.53961 != 442;
  D.53963 = D.53961 != 759;
  D.53964 = D.53962 & D.53963;
  if (D.53964 != 0) goto <D.53965>; else goto <D.53959>;
  <D.53965>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53966 = D.53282->opcode;
  D.53967 = D.53966 + 64985;
  D.53968 = D.53967 > 9;
  D.53969 = D.53966 + 64878;
  D.53970 = D.53969 > 9;
  D.53971 = D.53968 & D.53970;
  if (D.53971 != 0) goto <D.53972>; else goto <D.53959>;
  <D.53972>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53321 = D.53282->opcode;
  D.53322 = D.53321 + 64888;
  if (D.53322 > 9) goto <D.53958>; else goto <D.53959>;
  <D.53958>:
  D.53281 = cfg->cbb;
  mono_link_bblock (cfg, D.53281, false2_bb);
  <D.53959>:
  <D.53948>:
  D.53281 = cfg->cbb;
  D.53281->next_bb = false2_bb;
  cfg->cbb = false2_bb;
  {
    struct MonoInst * inst;

    D.53259 = cfg->mempool;
    inst = mono_mempool_alloc (D.53259, 56);
    inst->data.op[1].const_val = 0;
    D.53973 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53973;
    inst->prev = 0B;
    D.53974 = inst->prev;
    inst->next = D.53974;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53975 = inst->sreg3;
    inst->sreg2 = D.53975;
    D.53976 = inst->sreg2;
    inst->sreg1 = D.53976;
    D.53280 = cfg->ip;
    inst->cil_code = D.53280;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 2;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53977>; else goto <D.53978>;
    <D.53977>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = inst;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    inst->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    goto <D.53979>;
    <D.53978>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53979>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.53259 = cfg->mempool;
    ins = mono_mempool_alloc (D.53259, 56);
    ins->data.op[1].const_val = 0;
    D.53980 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.53980;
    ins->prev = 0B;
    D.53981 = ins->prev;
    ins->next = D.53981;
    ins->opcode = 442;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.53982 = ins->sreg3;
    ins->sreg2 = D.53982;
    D.53983 = ins->sreg2;
    ins->sreg1 = D.53983;
    D.53280 = cfg->ip;
    ins->cil_code = D.53280;
    if (1 != 0) goto <D.53984>; else goto <D.53985>;
    <D.53984>:
    D.53259 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.53259, 172);
    D.53260 = cfg->num_bblocks;
    D.53986 = D.53260;
    D.53987 = D.53986 + 1;
    cfg->num_bblocks = D.53987;
    D.53988 = (int) D.53986;
    falsebb->block_num = D.53988;
    ins->data.op[0].target_block = end_bb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, end_bb);
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.53989>; else goto <D.53990>;
    <D.53989>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = ins;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    ins->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    goto <D.53991>;
    <D.53990>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.53991>:
    D.53992 = falsebb->cil_code;
    if (D.53992 != 0B) goto <D.53993>; else goto <D.53994>;
    <D.53993>:
    D.53301 = cfg->cil_offset_to_bb;
    D.53992 = falsebb->cil_code;
    D.53995 = (int) D.53992;
    D.53303 = cfg->cil_start;
    D.53304 = (int) D.53303;
    D.53996 = D.53995 - D.53304;
    D.53997 = (unsigned int) D.53996;
    D.53998 = D.53997 * 4;
    D.53999 = D.53301 + D.53998;
    *D.53999 = falsebb;
    <D.53994>:
    D.53309 = cfg->real_offset;
    falsebb->real_offset = D.53309;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.54003>; else goto <D.54000>;
    <D.54003>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.54004 = D.53282->opcode;
    D.54005 = D.54004 + 64985;
    D.54006 = D.54005 <= 9;
    D.54007 = D.54004 + 64878;
    D.54008 = D.54007 <= 9;
    D.54009 = D.54006 | D.54008;
    if (D.54009 != 0) goto <D.54001>; else goto <D.54010>;
    <D.54010>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 <= 9) goto <D.54001>; else goto <D.54000>;
    <D.54001>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    D.53325 = *D.53324;
    if (D.53325 == 0B) goto <D.54011>; else goto <D.54000>;
    <D.54011>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    *D.53324 = falsebb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    goto <D.54002>;
    <D.54000>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 == 0B) goto <D.54012>; else goto <D.54014>;
    <D.54014>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.54015 = D.53282->opcode;
    D.54016 = D.54015 != 442;
    D.54017 = D.54015 != 759;
    D.54018 = D.54016 & D.54017;
    if (D.54018 != 0) goto <D.54019>; else goto <D.54013>;
    <D.54019>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.54020 = D.53282->opcode;
    D.54021 = D.54020 + 64985;
    D.54022 = D.54021 > 9;
    D.54023 = D.54020 + 64878;
    D.54024 = D.54023 > 9;
    D.54025 = D.54022 & D.54024;
    if (D.54025 != 0) goto <D.54026>; else goto <D.54013>;
    <D.54026>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 > 9) goto <D.54012>; else goto <D.54013>;
    <D.54012>:
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    <D.54013>:
    <D.54002>:
    D.53281 = cfg->cbb;
    D.53281->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.54027>;
    <D.53985>:
    D.53259 = cfg->mempool;
    D.54028 = mono_mempool_alloc (D.53259, 8);
    ins->data.op[1].many_blocks = D.54028;
    D.54029 = ins->data.op[1].many_blocks;
    *D.54029 = end_bb;
    D.54029 = ins->data.op[1].many_blocks;
    D.54030 = D.54029 + 4;
    *D.54030 = 0B;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, end_bb);
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.54031>; else goto <D.54032>;
    <D.54031>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = ins;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    ins->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    goto <D.54033>;
    <D.54032>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = ins;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.54033>:
    D.53349 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.53350 = D.53349 & 8;
    if (D.53350 == 0) goto <D.54034>; else goto <D.54035>;
    <D.54034>:
    D.53259 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.53259, 172);
    D.53260 = cfg->num_bblocks;
    D.54036 = D.53260;
    D.54037 = D.54036 + 1;
    cfg->num_bblocks = D.54037;
    D.54038 = (int) D.54036;
    falsebb->block_num = D.54038;
    D.54029 = ins->data.op[1].many_blocks;
    D.54030 = D.54029 + 4;
    *D.54030 = falsebb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    D.53992 = falsebb->cil_code;
    if (D.53992 != 0B) goto <D.54039>; else goto <D.54040>;
    <D.54039>:
    D.53301 = cfg->cil_offset_to_bb;
    D.53992 = falsebb->cil_code;
    D.53995 = (int) D.53992;
    D.53303 = cfg->cil_start;
    D.53304 = (int) D.53303;
    D.53996 = D.53995 - D.53304;
    D.53997 = (unsigned int) D.53996;
    D.53998 = D.53997 * 4;
    D.53999 = D.53301 + D.53998;
    *D.53999 = falsebb;
    <D.54040>:
    D.53309 = cfg->real_offset;
    falsebb->real_offset = D.53309;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.54044>; else goto <D.54041>;
    <D.54044>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.54045 = D.53282->opcode;
    D.54046 = D.54045 + 64985;
    D.54047 = D.54046 <= 9;
    D.54048 = D.54045 + 64878;
    D.54049 = D.54048 <= 9;
    D.54050 = D.54047 | D.54049;
    if (D.54050 != 0) goto <D.54042>; else goto <D.54051>;
    <D.54051>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 <= 9) goto <D.54042>; else goto <D.54041>;
    <D.54042>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    D.53325 = *D.53324;
    if (D.53325 == 0B) goto <D.54052>; else goto <D.54041>;
    <D.54052>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53323 = D.53282->data.op[1].many_blocks;
    D.53324 = D.53323 + 4;
    *D.53324 = falsebb;
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    goto <D.54043>;
    <D.54041>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 == 0B) goto <D.54053>; else goto <D.54055>;
    <D.54055>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.54056 = D.53282->opcode;
    D.54057 = D.54056 != 442;
    D.54058 = D.54056 != 759;
    D.54059 = D.54057 & D.54058;
    if (D.54059 != 0) goto <D.54060>; else goto <D.54054>;
    <D.54060>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.54061 = D.53282->opcode;
    D.54062 = D.54061 + 64985;
    D.54063 = D.54062 > 9;
    D.54064 = D.54061 + 64878;
    D.54065 = D.54064 > 9;
    D.54066 = D.54063 & D.54065;
    if (D.54066 != 0) goto <D.54067>; else goto <D.54054>;
    <D.54067>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53321 = D.53282->opcode;
    D.53322 = D.53321 + 64888;
    if (D.53322 > 9) goto <D.54053>; else goto <D.54054>;
    <D.54053>:
    D.53281 = cfg->cbb;
    mono_link_bblock (cfg, D.53281, falsebb);
    <D.54054>:
    <D.54043>:
    D.53281 = cfg->cbb;
    D.53281->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.54068>;
    <D.54035>:
    D.53281 = cfg->cbb;
    D.53281->extended = 1;
    <D.54068>:
    <D.54027>:
  }
  D.54069 = true_bb->cil_code;
  if (D.54069 != 0B) goto <D.54070>; else goto <D.54071>;
  <D.54070>:
  D.53301 = cfg->cil_offset_to_bb;
  D.54069 = true_bb->cil_code;
  D.54072 = (int) D.54069;
  D.53303 = cfg->cil_start;
  D.53304 = (int) D.53303;
  D.54073 = D.54072 - D.53304;
  D.54074 = (unsigned int) D.54073;
  D.54075 = D.54074 * 4;
  D.54076 = D.53301 + D.54075;
  *D.54076 = true_bb;
  <D.54071>:
  D.53309 = cfg->real_offset;
  true_bb->real_offset = D.53309;
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  if (D.53282 != 0B) goto <D.54080>; else goto <D.54077>;
  <D.54080>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.54081 = D.53282->opcode;
  D.54082 = D.54081 + 64985;
  D.54083 = D.54082 <= 9;
  D.54084 = D.54081 + 64878;
  D.54085 = D.54084 <= 9;
  D.54086 = D.54083 | D.54085;
  if (D.54086 != 0) goto <D.54078>; else goto <D.54087>;
  <D.54087>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53321 = D.53282->opcode;
  D.53322 = D.53321 + 64888;
  if (D.53322 <= 9) goto <D.54078>; else goto <D.54077>;
  <D.54078>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53323 = D.53282->data.op[1].many_blocks;
  D.53324 = D.53323 + 4;
  D.53325 = *D.53324;
  if (D.53325 == 0B) goto <D.54088>; else goto <D.54077>;
  <D.54088>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53323 = D.53282->data.op[1].many_blocks;
  D.53324 = D.53323 + 4;
  *D.53324 = true_bb;
  D.53281 = cfg->cbb;
  mono_link_bblock (cfg, D.53281, true_bb);
  goto <D.54079>;
  <D.54077>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  if (D.53282 == 0B) goto <D.54089>; else goto <D.54091>;
  <D.54091>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.54092 = D.53282->opcode;
  D.54093 = D.54092 != 442;
  D.54094 = D.54092 != 759;
  D.54095 = D.54093 & D.54094;
  if (D.54095 != 0) goto <D.54096>; else goto <D.54090>;
  <D.54096>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.54097 = D.53282->opcode;
  D.54098 = D.54097 + 64985;
  D.54099 = D.54098 > 9;
  D.54100 = D.54097 + 64878;
  D.54101 = D.54100 > 9;
  D.54102 = D.54099 & D.54101;
  if (D.54102 != 0) goto <D.54103>; else goto <D.54090>;
  <D.54103>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53321 = D.53282->opcode;
  D.53322 = D.53321 + 64888;
  if (D.53322 > 9) goto <D.54089>; else goto <D.54090>;
  <D.54089>:
  D.53281 = cfg->cbb;
  mono_link_bblock (cfg, D.53281, true_bb);
  <D.54090>:
  <D.54079>:
  D.53281 = cfg->cbb;
  D.53281->next_bb = true_bb;
  cfg->cbb = true_bb;
  {
    struct MonoInst * inst;

    D.53259 = cfg->mempool;
    inst = mono_mempool_alloc (D.53259, 56);
    inst->data.op[1].const_val = 0;
    D.54104 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.54104;
    inst->prev = 0B;
    D.54105 = inst->prev;
    inst->next = D.54105;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.54106 = inst->sreg3;
    inst->sreg2 = D.54106;
    D.54107 = inst->sreg2;
    inst->sreg1 = D.54107;
    D.53280 = cfg->ip;
    inst->cil_code = D.53280;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 0;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    if (D.53282 != 0B) goto <D.54108>; else goto <D.54109>;
    <D.54108>:
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    D.53282->next = inst;
    D.53281 = cfg->cbb;
    D.53282 = D.53281->last_ins;
    inst->prev = D.53282;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    goto <D.54110>;
    <D.54109>:
    D.53281 = cfg->cbb;
    D.53281 = cfg->cbb;
    D.53281->last_ins = inst;
    D.53282 = D.53281->last_ins;
    D.53281->code = D.53282;
    <D.54110>:
  }
  D.54111 = end_bb->cil_code;
  if (D.54111 != 0B) goto <D.54112>; else goto <D.54113>;
  <D.54112>:
  D.53301 = cfg->cil_offset_to_bb;
  D.54111 = end_bb->cil_code;
  D.54114 = (int) D.54111;
  D.53303 = cfg->cil_start;
  D.53304 = (int) D.53303;
  D.54115 = D.54114 - D.53304;
  D.54116 = (unsigned int) D.54115;
  D.54117 = D.54116 * 4;
  D.54118 = D.53301 + D.54117;
  *D.54118 = end_bb;
  <D.54113>:
  D.53309 = cfg->real_offset;
  end_bb->real_offset = D.53309;
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  if (D.53282 != 0B) goto <D.54122>; else goto <D.54119>;
  <D.54122>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.54123 = D.53282->opcode;
  D.54124 = D.54123 + 64985;
  D.54125 = D.54124 <= 9;
  D.54126 = D.54123 + 64878;
  D.54127 = D.54126 <= 9;
  D.54128 = D.54125 | D.54127;
  if (D.54128 != 0) goto <D.54120>; else goto <D.54129>;
  <D.54129>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53321 = D.53282->opcode;
  D.53322 = D.53321 + 64888;
  if (D.53322 <= 9) goto <D.54120>; else goto <D.54119>;
  <D.54120>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53323 = D.53282->data.op[1].many_blocks;
  D.53324 = D.53323 + 4;
  D.53325 = *D.53324;
  if (D.53325 == 0B) goto <D.54130>; else goto <D.54119>;
  <D.54130>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53323 = D.53282->data.op[1].many_blocks;
  D.53324 = D.53323 + 4;
  *D.53324 = end_bb;
  D.53281 = cfg->cbb;
  mono_link_bblock (cfg, D.53281, end_bb);
  goto <D.54121>;
  <D.54119>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  if (D.53282 == 0B) goto <D.54131>; else goto <D.54133>;
  <D.54133>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.54134 = D.53282->opcode;
  D.54135 = D.54134 != 442;
  D.54136 = D.54134 != 759;
  D.54137 = D.54135 & D.54136;
  if (D.54137 != 0) goto <D.54138>; else goto <D.54132>;
  <D.54138>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.54139 = D.53282->opcode;
  D.54140 = D.54139 + 64985;
  D.54141 = D.54140 > 9;
  D.54142 = D.54139 + 64878;
  D.54143 = D.54142 > 9;
  D.54144 = D.54141 & D.54143;
  if (D.54144 != 0) goto <D.54145>; else goto <D.54132>;
  <D.54145>:
  D.53281 = cfg->cbb;
  D.53282 = D.53281->last_ins;
  D.53321 = D.53282->opcode;
  D.53322 = D.53321 + 64888;
  if (D.53322 > 9) goto <D.54131>; else goto <D.54132>;
  <D.54131>:
  D.53281 = cfg->cbb;
  mono_link_bblock (cfg, D.53281, end_bb);
  <D.54132>:
  <D.54121>:
  D.53281 = cfg->cbb;
  D.53281->next_bb = end_bb;
  cfg->cbb = end_bb;
  D.53259 = cfg->mempool;
  ins = mono_mempool_alloc (D.53259, 56);
  ins->data.op[1].const_val = 0;
  D.54146 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.54146;
  ins->prev = 0B;
  D.54147 = ins->prev;
  ins->next = D.54147;
  ins->opcode = 362;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.54148 = ins->sreg3;
  ins->sreg2 = D.54148;
  D.54149 = ins->sreg2;
  ins->sreg1 = D.54149;
  D.53280 = cfg->ip;
  ins->cil_code = D.53280;
  ins->dreg = dreg;
  ins->type = 1;
  D.54150 = ins;
  return D.54150;
}


handle_ccastclass (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * src)
{
  unsigned int D.54152;
  unsigned int D.54153;
  unsigned int D.54154;
  struct MonoMemPool * D.54155;
  unsigned int D.54156;
  unsigned int D.54157;
  unsigned int D.54158;
  int D.54159;
  unsigned int D.54160;
  unsigned int D.54161;
  int D.54162;
  int D.54163;
  struct MonoInst * D.54164;
  int D.54165;
  int D.54166;
  const unsigned char * D.54167;
  struct MonoBasicBlock * D.54168;
  struct MonoInst * D.54169;
  int D.54173;
  struct MonoInst * D.54174;
  int D.54175;
  int D.54176;
  unsigned int D.54179;
  unsigned int D.54180;
  int D.54181;
  unsigned char * D.54185;
  struct MonoBasicBlock * * D.54188;
  int D.54189;
  unsigned char * D.54190;
  int D.54191;
  int D.54192;
  unsigned int D.54193;
  unsigned int D.54194;
  struct MonoBasicBlock * * D.54195;
  unsigned int D.54196;
  short unsigned int D.54201;
  short unsigned int D.54202;
  _Bool D.54203;
  short unsigned int D.54204;
  _Bool D.54205;
  _Bool D.54206;
  short unsigned int D.54208;
  short unsigned int D.54209;
  struct MonoBasicBlock * * D.54210;
  struct MonoBasicBlock * * D.54211;
  struct MonoBasicBlock * D.54212;
  short unsigned int D.54217;
  _Bool D.54218;
  _Bool D.54219;
  _Bool D.54220;
  short unsigned int D.54222;
  short unsigned int D.54223;
  _Bool D.54224;
  short unsigned int D.54225;
  _Bool D.54226;
  _Bool D.54227;
  void * D.54230;
  struct MonoBasicBlock * * D.54231;
  struct MonoBasicBlock * * D.54232;
  unsigned char D.54236;
  unsigned char D.54237;
  unsigned int D.54240;
  unsigned int D.54241;
  int D.54242;
  short unsigned int D.54249;
  short unsigned int D.54250;
  _Bool D.54251;
  short unsigned int D.54252;
  _Bool D.54253;
  _Bool D.54254;
  short unsigned int D.54260;
  _Bool D.54261;
  _Bool D.54262;
  _Bool D.54263;
  short unsigned int D.54265;
  short unsigned int D.54266;
  _Bool D.54267;
  short unsigned int D.54268;
  _Bool D.54269;
  _Bool D.54270;
  unsigned int D.54273;
  unsigned int D.54274;
  unsigned int D.54277;
  unsigned int D.54278;
  int D.54279;
  int D.54280;
  struct MonoInst * D.54281;
  int D.54282;
  int D.54283;
  unsigned char * D.54287;
  int D.54290;
  int D.54291;
  unsigned int D.54292;
  unsigned int D.54293;
  struct MonoBasicBlock * * D.54294;
  short unsigned int D.54299;
  short unsigned int D.54300;
  _Bool D.54301;
  short unsigned int D.54302;
  _Bool D.54303;
  _Bool D.54304;
  short unsigned int D.54310;
  _Bool D.54311;
  _Bool D.54312;
  _Bool D.54313;
  short unsigned int D.54315;
  short unsigned int D.54316;
  _Bool D.54317;
  short unsigned int D.54318;
  _Bool D.54319;
  _Bool D.54320;
  int D.54322;
  struct MonoInst * D.54323;
  int D.54324;
  int D.54325;
  struct MonoClass * D.54329;
  unsigned int D.54330;
  int D.54331;
  struct MonoInst * D.54332;
  int D.54333;
  int D.54334;
  int D.54338;
  struct MonoInst * D.54339;
  int D.54340;
  int D.54341;
  int D.54345;
  struct MonoInst * D.54346;
  int D.54347;
  int D.54348;
  int D.54352;
  struct MonoInst * D.54353;
  int D.54354;
  int D.54355;
  int D.54359;
  struct MonoInst * D.54360;
  int D.54361;
  int D.54362;
  unsigned int D.54365;
  unsigned int D.54366;
  int D.54367;
  unsigned char * D.54371;
  int D.54374;
  int D.54375;
  unsigned int D.54376;
  unsigned int D.54377;
  struct MonoBasicBlock * * D.54378;
  short unsigned int D.54383;
  short unsigned int D.54384;
  _Bool D.54385;
  short unsigned int D.54386;
  _Bool D.54387;
  _Bool D.54388;
  short unsigned int D.54394;
  _Bool D.54395;
  _Bool D.54396;
  _Bool D.54397;
  short unsigned int D.54399;
  short unsigned int D.54400;
  _Bool D.54401;
  short unsigned int D.54402;
  _Bool D.54403;
  _Bool D.54404;
  void * D.54407;
  struct MonoBasicBlock * * D.54408;
  struct MonoBasicBlock * * D.54409;
  unsigned int D.54415;
  unsigned int D.54416;
  int D.54417;
  short unsigned int D.54424;
  short unsigned int D.54425;
  _Bool D.54426;
  short unsigned int D.54427;
  _Bool D.54428;
  _Bool D.54429;
  short unsigned int D.54435;
  _Bool D.54436;
  _Bool D.54437;
  _Bool D.54438;
  short unsigned int D.54440;
  short unsigned int D.54441;
  _Bool D.54442;
  short unsigned int D.54443;
  _Bool D.54444;
  _Bool D.54445;
  unsigned int D.54449;
  unsigned int D.54450;
  int D.54451;
  int D.54452;
  struct MonoInst * D.54453;
  int D.54454;
  int D.54455;
  int D.54459;
  struct MonoInst * D.54460;
  int D.54461;
  int D.54462;
  unsigned int D.54466;
  int D.54467;
  struct MonoInst * D.54468;
  int D.54469;
  int D.54470;
  int D.54474;
  struct MonoInst * D.54475;
  int D.54476;
  int D.54477;
  unsigned int D.54481;
  int D.54482;
  struct MonoInst * D.54483;
  int D.54484;
  int D.54485;
  int D.54489;
  struct MonoInst * D.54490;
  int D.54491;
  int D.54492;
  int D.54496;
  struct MonoInst * D.54497;
  int D.54498;
  int D.54499;
  unsigned int D.54502;
  unsigned int D.54503;
  int D.54504;
  unsigned char * D.54508;
  int D.54511;
  int D.54512;
  unsigned int D.54513;
  unsigned int D.54514;
  struct MonoBasicBlock * * D.54515;
  short unsigned int D.54520;
  short unsigned int D.54521;
  _Bool D.54522;
  short unsigned int D.54523;
  _Bool D.54524;
  _Bool D.54525;
  short unsigned int D.54531;
  _Bool D.54532;
  _Bool D.54533;
  _Bool D.54534;
  short unsigned int D.54536;
  short unsigned int D.54537;
  _Bool D.54538;
  short unsigned int D.54539;
  _Bool D.54540;
  _Bool D.54541;
  void * D.54544;
  struct MonoBasicBlock * * D.54545;
  struct MonoBasicBlock * * D.54546;
  unsigned int D.54552;
  unsigned int D.54553;
  int D.54554;
  short unsigned int D.54561;
  short unsigned int D.54562;
  _Bool D.54563;
  short unsigned int D.54564;
  _Bool D.54565;
  _Bool D.54566;
  short unsigned int D.54572;
  _Bool D.54573;
  _Bool D.54574;
  _Bool D.54575;
  short unsigned int D.54577;
  short unsigned int D.54578;
  _Bool D.54579;
  short unsigned int D.54580;
  _Bool D.54581;
  _Bool D.54582;
  unsigned int D.54585;
  unsigned int D.54586;
  int D.54587;
  unsigned char * D.54588;
  int D.54591;
  int D.54592;
  unsigned int D.54593;
  unsigned int D.54594;
  struct MonoBasicBlock * * D.54595;
  short unsigned int D.54600;
  short unsigned int D.54601;
  _Bool D.54602;
  short unsigned int D.54603;
  _Bool D.54604;
  _Bool D.54605;
  short unsigned int D.54611;
  _Bool D.54612;
  _Bool D.54613;
  _Bool D.54614;
  short unsigned int D.54616;
  short unsigned int D.54617;
  _Bool D.54618;
  short unsigned int D.54619;
  _Bool D.54620;
  _Bool D.54621;
  int D.54623;
  struct MonoInst * D.54624;
  int D.54625;
  int D.54626;
  int D.54630;
  struct MonoInst * D.54631;
  int D.54632;
  int D.54633;
  unsigned int D.54636;
  unsigned int D.54637;
  int D.54638;
  unsigned char * D.54642;
  int D.54645;
  int D.54646;
  unsigned int D.54647;
  unsigned int D.54648;
  struct MonoBasicBlock * * D.54649;
  short unsigned int D.54654;
  short unsigned int D.54655;
  _Bool D.54656;
  short unsigned int D.54657;
  _Bool D.54658;
  _Bool D.54659;
  short unsigned int D.54665;
  _Bool D.54666;
  _Bool D.54667;
  _Bool D.54668;
  short unsigned int D.54670;
  short unsigned int D.54671;
  _Bool D.54672;
  short unsigned int D.54673;
  _Bool D.54674;
  _Bool D.54675;
  void * D.54678;
  struct MonoBasicBlock * * D.54679;
  struct MonoBasicBlock * * D.54680;
  unsigned int D.54686;
  unsigned int D.54687;
  int D.54688;
  short unsigned int D.54695;
  short unsigned int D.54696;
  _Bool D.54697;
  short unsigned int D.54698;
  _Bool D.54699;
  _Bool D.54700;
  short unsigned int D.54706;
  _Bool D.54707;
  _Bool D.54708;
  _Bool D.54709;
  short unsigned int D.54711;
  short unsigned int D.54712;
  _Bool D.54713;
  short unsigned int D.54714;
  _Bool D.54715;
  _Bool D.54716;
  unsigned char * D.54719;
  int D.54722;
  int D.54723;
  unsigned int D.54724;
  unsigned int D.54725;
  struct MonoBasicBlock * * D.54726;
  short unsigned int D.54731;
  short unsigned int D.54732;
  _Bool D.54733;
  short unsigned int D.54734;
  _Bool D.54735;
  _Bool D.54736;
  short unsigned int D.54742;
  _Bool D.54743;
  _Bool D.54744;
  _Bool D.54745;
  short unsigned int D.54747;
  short unsigned int D.54748;
  _Bool D.54749;
  short unsigned int D.54750;
  _Bool D.54751;
  _Bool D.54752;
  unsigned char * D.54754;
  int D.54757;
  int D.54758;
  unsigned int D.54759;
  unsigned int D.54760;
  struct MonoBasicBlock * * D.54761;
  short unsigned int D.54766;
  short unsigned int D.54767;
  _Bool D.54768;
  short unsigned int D.54769;
  _Bool D.54770;
  _Bool D.54771;
  short unsigned int D.54777;
  _Bool D.54778;
  _Bool D.54779;
  _Bool D.54780;
  short unsigned int D.54782;
  short unsigned int D.54783;
  _Bool D.54784;
  short unsigned int D.54785;
  _Bool D.54786;
  _Bool D.54787;
  int D.54789;
  struct MonoInst * D.54790;
  int D.54791;
  int D.54792;
  unsigned char * D.54796;
  int D.54799;
  int D.54800;
  unsigned int D.54801;
  unsigned int D.54802;
  struct MonoBasicBlock * * D.54803;
  short unsigned int D.54808;
  short unsigned int D.54809;
  _Bool D.54810;
  short unsigned int D.54811;
  _Bool D.54812;
  _Bool D.54813;
  short unsigned int D.54819;
  _Bool D.54820;
  _Bool D.54821;
  _Bool D.54822;
  short unsigned int D.54824;
  short unsigned int D.54825;
  _Bool D.54826;
  short unsigned int D.54827;
  _Bool D.54828;
  _Bool D.54829;
  int D.54831;
  struct MonoInst * D.54832;
  int D.54833;
  int D.54834;
  struct MonoInst * D.54835;
  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.54152 = alloc_ireg (cfg);
  dreg = (int) D.54152;
  D.54153 = alloc_preg (cfg);
  tmp_reg = (int) D.54153;
  D.54154 = alloc_preg (cfg);
  klass_reg = (int) D.54154;
  D.54155 = cfg->mempool;
  end_bb = mono_mempool_alloc0 (D.54155, 172);
  D.54156 = cfg->num_bblocks;
  D.54157 = D.54156;
  D.54158 = D.54157 + 1;
  cfg->num_bblocks = D.54158;
  D.54159 = (int) D.54157;
  end_bb->block_num = D.54159;
  D.54155 = cfg->mempool;
  ok_result_bb = mono_mempool_alloc0 (D.54155, 172);
  D.54156 = cfg->num_bblocks;
  D.54160 = D.54156;
  D.54161 = D.54160 + 1;
  cfg->num_bblocks = D.54161;
  D.54162 = (int) D.54160;
  ok_result_bb->block_num = D.54162;
  {
    struct MonoInst * inst;

    D.54155 = cfg->mempool;
    inst = mono_mempool_alloc (D.54155, 56);
    inst->data.op[1].const_val = 0;
    D.54163 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.54163;
    inst->prev = 0B;
    D.54164 = inst->prev;
    inst->next = D.54164;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.54165 = inst->sreg3;
    inst->sreg2 = D.54165;
    D.54166 = inst->sreg2;
    inst->sreg1 = D.54166;
    D.54167 = cfg->ip;
    inst->cil_code = D.54167;
    inst->dreg = -1;
    inst->sreg1 = obj_reg;
    inst->data.op[1].const_val = 0;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54170>; else goto <D.54171>;
    <D.54170>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = inst;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    inst->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    goto <D.54172>;
    <D.54171>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54172>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.54155 = cfg->mempool;
    ins = mono_mempool_alloc (D.54155, 56);
    ins->data.op[1].const_val = 0;
    D.54173 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.54173;
    ins->prev = 0B;
    D.54174 = ins->prev;
    ins->next = D.54174;
    ins->opcode = 648;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.54175 = ins->sreg3;
    ins->sreg2 = D.54175;
    D.54176 = ins->sreg2;
    ins->sreg1 = D.54176;
    D.54167 = cfg->ip;
    ins->cil_code = D.54167;
    if (0 != 0) goto <D.54177>; else goto <D.54178>;
    <D.54177>:
    D.54155 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.54155, 172);
    D.54156 = cfg->num_bblocks;
    D.54179 = D.54156;
    D.54180 = D.54179 + 1;
    cfg->num_bblocks = D.54180;
    D.54181 = (int) D.54179;
    falsebb->block_num = D.54181;
    ins->data.op[0].target_block = ok_result_bb;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, ok_result_bb);
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54182>; else goto <D.54183>;
    <D.54182>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = ins;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    ins->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = ins;
    goto <D.54184>;
    <D.54183>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = ins;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54184>:
    D.54185 = falsebb->cil_code;
    if (D.54185 != 0B) goto <D.54186>; else goto <D.54187>;
    <D.54186>:
    D.54188 = cfg->cil_offset_to_bb;
    D.54185 = falsebb->cil_code;
    D.54189 = (int) D.54185;
    D.54190 = cfg->cil_start;
    D.54191 = (int) D.54190;
    D.54192 = D.54189 - D.54191;
    D.54193 = (unsigned int) D.54192;
    D.54194 = D.54193 * 4;
    D.54195 = D.54188 + D.54194;
    *D.54195 = falsebb;
    <D.54187>:
    D.54196 = cfg->real_offset;
    falsebb->real_offset = D.54196;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54200>; else goto <D.54197>;
    <D.54200>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54201 = D.54169->opcode;
    D.54202 = D.54201 + 64985;
    D.54203 = D.54202 <= 9;
    D.54204 = D.54201 + 64878;
    D.54205 = D.54204 <= 9;
    D.54206 = D.54203 | D.54205;
    if (D.54206 != 0) goto <D.54198>; else goto <D.54207>;
    <D.54207>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54208 = D.54169->opcode;
    D.54209 = D.54208 + 64888;
    if (D.54209 <= 9) goto <D.54198>; else goto <D.54197>;
    <D.54198>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54210 = D.54169->data.op[1].many_blocks;
    D.54211 = D.54210 + 4;
    D.54212 = *D.54211;
    if (D.54212 == 0B) goto <D.54213>; else goto <D.54197>;
    <D.54213>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54210 = D.54169->data.op[1].many_blocks;
    D.54211 = D.54210 + 4;
    *D.54211 = falsebb;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    goto <D.54199>;
    <D.54197>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 == 0B) goto <D.54214>; else goto <D.54216>;
    <D.54216>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54217 = D.54169->opcode;
    D.54218 = D.54217 != 442;
    D.54219 = D.54217 != 759;
    D.54220 = D.54218 & D.54219;
    if (D.54220 != 0) goto <D.54221>; else goto <D.54215>;
    <D.54221>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54222 = D.54169->opcode;
    D.54223 = D.54222 + 64985;
    D.54224 = D.54223 > 9;
    D.54225 = D.54222 + 64878;
    D.54226 = D.54225 > 9;
    D.54227 = D.54224 & D.54226;
    if (D.54227 != 0) goto <D.54228>; else goto <D.54215>;
    <D.54228>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54208 = D.54169->opcode;
    D.54209 = D.54208 + 64888;
    if (D.54209 > 9) goto <D.54214>; else goto <D.54215>;
    <D.54214>:
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    <D.54215>:
    <D.54199>:
    D.54168 = cfg->cbb;
    D.54168->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.54229>;
    <D.54178>:
    D.54155 = cfg->mempool;
    D.54230 = mono_mempool_alloc (D.54155, 8);
    ins->data.op[1].many_blocks = D.54230;
    D.54231 = ins->data.op[1].many_blocks;
    *D.54231 = ok_result_bb;
    D.54231 = ins->data.op[1].many_blocks;
    D.54232 = D.54231 + 4;
    *D.54232 = 0B;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, ok_result_bb);
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54233>; else goto <D.54234>;
    <D.54233>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = ins;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    ins->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = ins;
    goto <D.54235>;
    <D.54234>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = ins;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54235>:
    D.54236 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.54237 = D.54236 & 8;
    if (D.54237 == 0) goto <D.54238>; else goto <D.54239>;
    <D.54238>:
    D.54155 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.54155, 172);
    D.54156 = cfg->num_bblocks;
    D.54240 = D.54156;
    D.54241 = D.54240 + 1;
    cfg->num_bblocks = D.54241;
    D.54242 = (int) D.54240;
    falsebb->block_num = D.54242;
    D.54231 = ins->data.op[1].many_blocks;
    D.54232 = D.54231 + 4;
    *D.54232 = falsebb;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    D.54185 = falsebb->cil_code;
    if (D.54185 != 0B) goto <D.54243>; else goto <D.54244>;
    <D.54243>:
    D.54188 = cfg->cil_offset_to_bb;
    D.54185 = falsebb->cil_code;
    D.54189 = (int) D.54185;
    D.54190 = cfg->cil_start;
    D.54191 = (int) D.54190;
    D.54192 = D.54189 - D.54191;
    D.54193 = (unsigned int) D.54192;
    D.54194 = D.54193 * 4;
    D.54195 = D.54188 + D.54194;
    *D.54195 = falsebb;
    <D.54244>:
    D.54196 = cfg->real_offset;
    falsebb->real_offset = D.54196;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54248>; else goto <D.54245>;
    <D.54248>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54249 = D.54169->opcode;
    D.54250 = D.54249 + 64985;
    D.54251 = D.54250 <= 9;
    D.54252 = D.54249 + 64878;
    D.54253 = D.54252 <= 9;
    D.54254 = D.54251 | D.54253;
    if (D.54254 != 0) goto <D.54246>; else goto <D.54255>;
    <D.54255>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54208 = D.54169->opcode;
    D.54209 = D.54208 + 64888;
    if (D.54209 <= 9) goto <D.54246>; else goto <D.54245>;
    <D.54246>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54210 = D.54169->data.op[1].many_blocks;
    D.54211 = D.54210 + 4;
    D.54212 = *D.54211;
    if (D.54212 == 0B) goto <D.54256>; else goto <D.54245>;
    <D.54256>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54210 = D.54169->data.op[1].many_blocks;
    D.54211 = D.54210 + 4;
    *D.54211 = falsebb;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    goto <D.54247>;
    <D.54245>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 == 0B) goto <D.54257>; else goto <D.54259>;
    <D.54259>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54260 = D.54169->opcode;
    D.54261 = D.54260 != 442;
    D.54262 = D.54260 != 759;
    D.54263 = D.54261 & D.54262;
    if (D.54263 != 0) goto <D.54264>; else goto <D.54258>;
    <D.54264>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54265 = D.54169->opcode;
    D.54266 = D.54265 + 64985;
    D.54267 = D.54266 > 9;
    D.54268 = D.54265 + 64878;
    D.54269 = D.54268 > 9;
    D.54270 = D.54267 & D.54269;
    if (D.54270 != 0) goto <D.54271>; else goto <D.54258>;
    <D.54271>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54208 = D.54169->opcode;
    D.54209 = D.54208 + 64888;
    if (D.54209 > 9) goto <D.54257>; else goto <D.54258>;
    <D.54257>:
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    <D.54258>:
    <D.54247>:
    D.54168 = cfg->cbb;
    D.54168->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.54272>;
    <D.54239>:
    D.54168 = cfg->cbb;
    D.54168->extended = 1;
    <D.54272>:
    <D.54229>:
  }
  save_cast_details (cfg, klass, obj_reg, 0, 0B);
  D.54273 = klass->flags;
  D.54274 = D.54273 & 32;
  if (D.54274 != 0) goto <D.54275>; else goto <D.54276>;
  <D.54275>:
  D.54155 = cfg->mempool;
  interface_fail_bb = mono_mempool_alloc0 (D.54155, 172);
  D.54156 = cfg->num_bblocks;
  D.54277 = D.54156;
  D.54278 = D.54277 + 1;
  cfg->num_bblocks = D.54278;
  D.54279 = (int) D.54277;
  interface_fail_bb->block_num = D.54279;
  {
    struct MonoInst * inst;

    D.54155 = cfg->mempool;
    inst = mono_mempool_alloc (D.54155, 56);
    inst->data.op[1].const_val = 0;
    D.54280 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.54280;
    inst->prev = 0B;
    D.54281 = inst->prev;
    inst->next = D.54281;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.54282 = inst->sreg3;
    inst->sreg2 = D.54282;
    D.54283 = inst->sreg2;
    inst->sreg1 = D.54283;
    D.54167 = cfg->ip;
    inst->cil_code = D.54167;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54284>; else goto <D.54285>;
    <D.54284>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = inst;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    inst->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    goto <D.54286>;
    <D.54285>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54286>:
  }
  mini_emit_iface_cast (cfg, tmp_reg, klass, interface_fail_bb, ok_result_bb);
  D.54287 = interface_fail_bb->cil_code;
  if (D.54287 != 0B) goto <D.54288>; else goto <D.54289>;
  <D.54288>:
  D.54188 = cfg->cil_offset_to_bb;
  D.54287 = interface_fail_bb->cil_code;
  D.54290 = (int) D.54287;
  D.54190 = cfg->cil_start;
  D.54191 = (int) D.54190;
  D.54291 = D.54290 - D.54191;
  D.54292 = (unsigned int) D.54291;
  D.54293 = D.54292 * 4;
  D.54294 = D.54188 + D.54293;
  *D.54294 = interface_fail_bb;
  <D.54289>:
  D.54196 = cfg->real_offset;
  interface_fail_bb->real_offset = D.54196;
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  if (D.54169 != 0B) goto <D.54298>; else goto <D.54295>;
  <D.54298>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54299 = D.54169->opcode;
  D.54300 = D.54299 + 64985;
  D.54301 = D.54300 <= 9;
  D.54302 = D.54299 + 64878;
  D.54303 = D.54302 <= 9;
  D.54304 = D.54301 | D.54303;
  if (D.54304 != 0) goto <D.54296>; else goto <D.54305>;
  <D.54305>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54208 = D.54169->opcode;
  D.54209 = D.54208 + 64888;
  if (D.54209 <= 9) goto <D.54296>; else goto <D.54295>;
  <D.54296>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54210 = D.54169->data.op[1].many_blocks;
  D.54211 = D.54210 + 4;
  D.54212 = *D.54211;
  if (D.54212 == 0B) goto <D.54306>; else goto <D.54295>;
  <D.54306>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54210 = D.54169->data.op[1].many_blocks;
  D.54211 = D.54210 + 4;
  *D.54211 = interface_fail_bb;
  D.54168 = cfg->cbb;
  mono_link_bblock (cfg, D.54168, interface_fail_bb);
  goto <D.54297>;
  <D.54295>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  if (D.54169 == 0B) goto <D.54307>; else goto <D.54309>;
  <D.54309>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54310 = D.54169->opcode;
  D.54311 = D.54310 != 442;
  D.54312 = D.54310 != 759;
  D.54313 = D.54311 & D.54312;
  if (D.54313 != 0) goto <D.54314>; else goto <D.54308>;
  <D.54314>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54315 = D.54169->opcode;
  D.54316 = D.54315 + 64985;
  D.54317 = D.54316 > 9;
  D.54318 = D.54315 + 64878;
  D.54319 = D.54318 > 9;
  D.54320 = D.54317 & D.54319;
  if (D.54320 != 0) goto <D.54321>; else goto <D.54308>;
  <D.54321>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54208 = D.54169->opcode;
  D.54209 = D.54208 + 64888;
  if (D.54209 > 9) goto <D.54307>; else goto <D.54308>;
  <D.54307>:
  D.54168 = cfg->cbb;
  mono_link_bblock (cfg, D.54168, interface_fail_bb);
  <D.54308>:
  <D.54297>:
  D.54168 = cfg->cbb;
  D.54168->next_bb = interface_fail_bb;
  cfg->cbb = interface_fail_bb;
  {
    struct MonoInst * inst;

    D.54155 = cfg->mempool;
    inst = mono_mempool_alloc (D.54155, 56);
    inst->data.op[1].const_val = 0;
    D.54322 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.54322;
    inst->prev = 0B;
    D.54323 = inst->prev;
    inst->next = D.54323;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.54324 = inst->sreg3;
    inst->sreg2 = D.54324;
    D.54325 = inst->sreg2;
    inst->sreg1 = D.54325;
    D.54167 = cfg->ip;
    inst->cil_code = D.54167;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 0;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54326>; else goto <D.54327>;
    <D.54326>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = inst;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    inst->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    goto <D.54328>;
    <D.54327>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54328>:
  }
  D.54329 = mono_defaults.transparent_proxy_class;
  mini_emit_class_check (cfg, klass_reg, D.54329);
  D.54330 = alloc_preg (cfg);
  tmp_reg = (int) D.54330;
  {
    struct MonoInst * inst;

    D.54155 = cfg->mempool;
    inst = mono_mempool_alloc (D.54155, 56);
    inst->data.op[1].const_val = 0;
    D.54331 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.54331;
    inst->prev = 0B;
    D.54332 = inst->prev;
    inst->next = D.54332;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.54333 = inst->sreg3;
    inst->sreg2 = D.54333;
    D.54334 = inst->sreg2;
    inst->sreg1 = D.54334;
    D.54167 = cfg->ip;
    inst->cil_code = D.54167;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 16;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54335>; else goto <D.54336>;
    <D.54335>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = inst;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    inst->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    goto <D.54337>;
    <D.54336>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54337>:
  }
  {
    struct MonoInst * inst;

    D.54155 = cfg->mempool;
    inst = mono_mempool_alloc (D.54155, 56);
    inst->data.op[1].const_val = 0;
    D.54338 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.54338;
    inst->prev = 0B;
    D.54339 = inst->prev;
    inst->next = D.54339;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.54340 = inst->sreg3;
    inst->sreg2 = D.54340;
    D.54341 = inst->sreg2;
    inst->sreg1 = D.54341;
    D.54167 = cfg->ip;
    inst->cil_code = D.54167;
    inst->dreg = -1;
    inst->sreg1 = tmp_reg;
    inst->data.op[1].const_val = 0;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54342>; else goto <D.54343>;
    <D.54342>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = inst;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    inst->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    goto <D.54344>;
    <D.54343>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54344>:
  }
  {
    struct MonoInst * inst;

    D.54155 = cfg->mempool;
    inst = mono_mempool_alloc (D.54155, 56);
    inst->data.op[1].const_val = 0;
    D.54345 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.54345;
    inst->prev = 0B;
    D.54346 = inst->prev;
    inst->next = D.54346;
    inst->opcode = 451;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.54347 = inst->sreg3;
    inst->sreg2 = D.54347;
    D.54348 = inst->sreg2;
    inst->sreg1 = D.54348;
    D.54167 = cfg->ip;
    inst->cil_code = D.54167;
    inst->data.op[1].p = "InvalidCastException";
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54349>; else goto <D.54350>;
    <D.54349>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = inst;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    inst->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    goto <D.54351>;
    <D.54350>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54351>:
  }
  {
    struct MonoInst * inst;

    D.54155 = cfg->mempool;
    inst = mono_mempool_alloc (D.54155, 56);
    inst->data.op[1].const_val = 0;
    D.54352 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.54352;
    inst->prev = 0B;
    D.54353 = inst->prev;
    inst->next = D.54353;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.54354 = inst->sreg3;
    inst->sreg2 = D.54354;
    D.54355 = inst->sreg2;
    inst->sreg1 = D.54355;
    D.54167 = cfg->ip;
    inst->cil_code = D.54167;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 1;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54356>; else goto <D.54357>;
    <D.54356>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = inst;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    inst->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    goto <D.54358>;
    <D.54357>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54358>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.54155 = cfg->mempool;
    ins = mono_mempool_alloc (D.54155, 56);
    ins->data.op[1].const_val = 0;
    D.54359 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.54359;
    ins->prev = 0B;
    D.54360 = ins->prev;
    ins->next = D.54360;
    ins->opcode = 442;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.54361 = ins->sreg3;
    ins->sreg2 = D.54361;
    D.54362 = ins->sreg2;
    ins->sreg1 = D.54362;
    D.54167 = cfg->ip;
    ins->cil_code = D.54167;
    if (1 != 0) goto <D.54363>; else goto <D.54364>;
    <D.54363>:
    D.54155 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.54155, 172);
    D.54156 = cfg->num_bblocks;
    D.54365 = D.54156;
    D.54366 = D.54365 + 1;
    cfg->num_bblocks = D.54366;
    D.54367 = (int) D.54365;
    falsebb->block_num = D.54367;
    ins->data.op[0].target_block = end_bb;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, end_bb);
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54368>; else goto <D.54369>;
    <D.54368>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = ins;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    ins->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = ins;
    goto <D.54370>;
    <D.54369>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = ins;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54370>:
    D.54371 = falsebb->cil_code;
    if (D.54371 != 0B) goto <D.54372>; else goto <D.54373>;
    <D.54372>:
    D.54188 = cfg->cil_offset_to_bb;
    D.54371 = falsebb->cil_code;
    D.54374 = (int) D.54371;
    D.54190 = cfg->cil_start;
    D.54191 = (int) D.54190;
    D.54375 = D.54374 - D.54191;
    D.54376 = (unsigned int) D.54375;
    D.54377 = D.54376 * 4;
    D.54378 = D.54188 + D.54377;
    *D.54378 = falsebb;
    <D.54373>:
    D.54196 = cfg->real_offset;
    falsebb->real_offset = D.54196;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54382>; else goto <D.54379>;
    <D.54382>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54383 = D.54169->opcode;
    D.54384 = D.54383 + 64985;
    D.54385 = D.54384 <= 9;
    D.54386 = D.54383 + 64878;
    D.54387 = D.54386 <= 9;
    D.54388 = D.54385 | D.54387;
    if (D.54388 != 0) goto <D.54380>; else goto <D.54389>;
    <D.54389>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54208 = D.54169->opcode;
    D.54209 = D.54208 + 64888;
    if (D.54209 <= 9) goto <D.54380>; else goto <D.54379>;
    <D.54380>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54210 = D.54169->data.op[1].many_blocks;
    D.54211 = D.54210 + 4;
    D.54212 = *D.54211;
    if (D.54212 == 0B) goto <D.54390>; else goto <D.54379>;
    <D.54390>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54210 = D.54169->data.op[1].many_blocks;
    D.54211 = D.54210 + 4;
    *D.54211 = falsebb;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    goto <D.54381>;
    <D.54379>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 == 0B) goto <D.54391>; else goto <D.54393>;
    <D.54393>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54394 = D.54169->opcode;
    D.54395 = D.54394 != 442;
    D.54396 = D.54394 != 759;
    D.54397 = D.54395 & D.54396;
    if (D.54397 != 0) goto <D.54398>; else goto <D.54392>;
    <D.54398>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54399 = D.54169->opcode;
    D.54400 = D.54399 + 64985;
    D.54401 = D.54400 > 9;
    D.54402 = D.54399 + 64878;
    D.54403 = D.54402 > 9;
    D.54404 = D.54401 & D.54403;
    if (D.54404 != 0) goto <D.54405>; else goto <D.54392>;
    <D.54405>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54208 = D.54169->opcode;
    D.54209 = D.54208 + 64888;
    if (D.54209 > 9) goto <D.54391>; else goto <D.54392>;
    <D.54391>:
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    <D.54392>:
    <D.54381>:
    D.54168 = cfg->cbb;
    D.54168->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.54406>;
    <D.54364>:
    D.54155 = cfg->mempool;
    D.54407 = mono_mempool_alloc (D.54155, 8);
    ins->data.op[1].many_blocks = D.54407;
    D.54408 = ins->data.op[1].many_blocks;
    *D.54408 = end_bb;
    D.54408 = ins->data.op[1].many_blocks;
    D.54409 = D.54408 + 4;
    *D.54409 = 0B;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, end_bb);
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54410>; else goto <D.54411>;
    <D.54410>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = ins;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    ins->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = ins;
    goto <D.54412>;
    <D.54411>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = ins;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54412>:
    D.54236 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.54237 = D.54236 & 8;
    if (D.54237 == 0) goto <D.54413>; else goto <D.54414>;
    <D.54413>:
    D.54155 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.54155, 172);
    D.54156 = cfg->num_bblocks;
    D.54415 = D.54156;
    D.54416 = D.54415 + 1;
    cfg->num_bblocks = D.54416;
    D.54417 = (int) D.54415;
    falsebb->block_num = D.54417;
    D.54408 = ins->data.op[1].many_blocks;
    D.54409 = D.54408 + 4;
    *D.54409 = falsebb;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    D.54371 = falsebb->cil_code;
    if (D.54371 != 0B) goto <D.54418>; else goto <D.54419>;
    <D.54418>:
    D.54188 = cfg->cil_offset_to_bb;
    D.54371 = falsebb->cil_code;
    D.54374 = (int) D.54371;
    D.54190 = cfg->cil_start;
    D.54191 = (int) D.54190;
    D.54375 = D.54374 - D.54191;
    D.54376 = (unsigned int) D.54375;
    D.54377 = D.54376 * 4;
    D.54378 = D.54188 + D.54377;
    *D.54378 = falsebb;
    <D.54419>:
    D.54196 = cfg->real_offset;
    falsebb->real_offset = D.54196;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54423>; else goto <D.54420>;
    <D.54423>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54424 = D.54169->opcode;
    D.54425 = D.54424 + 64985;
    D.54426 = D.54425 <= 9;
    D.54427 = D.54424 + 64878;
    D.54428 = D.54427 <= 9;
    D.54429 = D.54426 | D.54428;
    if (D.54429 != 0) goto <D.54421>; else goto <D.54430>;
    <D.54430>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54208 = D.54169->opcode;
    D.54209 = D.54208 + 64888;
    if (D.54209 <= 9) goto <D.54421>; else goto <D.54420>;
    <D.54421>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54210 = D.54169->data.op[1].many_blocks;
    D.54211 = D.54210 + 4;
    D.54212 = *D.54211;
    if (D.54212 == 0B) goto <D.54431>; else goto <D.54420>;
    <D.54431>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54210 = D.54169->data.op[1].many_blocks;
    D.54211 = D.54210 + 4;
    *D.54211 = falsebb;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    goto <D.54422>;
    <D.54420>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 == 0B) goto <D.54432>; else goto <D.54434>;
    <D.54434>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54435 = D.54169->opcode;
    D.54436 = D.54435 != 442;
    D.54437 = D.54435 != 759;
    D.54438 = D.54436 & D.54437;
    if (D.54438 != 0) goto <D.54439>; else goto <D.54433>;
    <D.54439>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54440 = D.54169->opcode;
    D.54441 = D.54440 + 64985;
    D.54442 = D.54441 > 9;
    D.54443 = D.54440 + 64878;
    D.54444 = D.54443 > 9;
    D.54445 = D.54442 & D.54444;
    if (D.54445 != 0) goto <D.54446>; else goto <D.54433>;
    <D.54446>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54208 = D.54169->opcode;
    D.54209 = D.54208 + 64888;
    if (D.54209 > 9) goto <D.54432>; else goto <D.54433>;
    <D.54432>:
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    <D.54433>:
    <D.54422>:
    D.54168 = cfg->cbb;
    D.54168->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.54447>;
    <D.54414>:
    D.54168 = cfg->cbb;
    D.54168->extended = 1;
    <D.54447>:
    <D.54406>:
  }
  goto <D.54448>;
  <D.54276>:
  D.54155 = cfg->mempool;
  no_proxy_bb = mono_mempool_alloc0 (D.54155, 172);
  D.54156 = cfg->num_bblocks;
  D.54449 = D.54156;
  D.54450 = D.54449 + 1;
  cfg->num_bblocks = D.54450;
  D.54451 = (int) D.54449;
  no_proxy_bb->block_num = D.54451;
  {
    struct MonoInst * inst;

    D.54155 = cfg->mempool;
    inst = mono_mempool_alloc (D.54155, 56);
    inst->data.op[1].const_val = 0;
    D.54452 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.54452;
    inst->prev = 0B;
    D.54453 = inst->prev;
    inst->next = D.54453;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.54454 = inst->sreg3;
    inst->sreg2 = D.54454;
    D.54455 = inst->sreg2;
    inst->sreg1 = D.54455;
    D.54167 = cfg->ip;
    inst->cil_code = D.54167;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54456>; else goto <D.54457>;
    <D.54456>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = inst;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    inst->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    goto <D.54458>;
    <D.54457>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54458>:
  }
  {
    struct MonoInst * inst;

    D.54155 = cfg->mempool;
    inst = mono_mempool_alloc (D.54155, 56);
    inst->data.op[1].const_val = 0;
    D.54459 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.54459;
    inst->prev = 0B;
    D.54460 = inst->prev;
    inst->next = D.54460;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.54461 = inst->sreg3;
    inst->sreg2 = D.54461;
    D.54462 = inst->sreg2;
    inst->sreg1 = D.54462;
    D.54167 = cfg->ip;
    inst->cil_code = D.54167;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 0;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54463>; else goto <D.54464>;
    <D.54463>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = inst;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    inst->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    goto <D.54465>;
    <D.54464>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54465>:
  }
  D.54329 = mono_defaults.transparent_proxy_class;
  mini_emit_class_check_branch (cfg, klass_reg, D.54329, 653, no_proxy_bb);
  D.54466 = alloc_preg (cfg);
  tmp_reg = (int) D.54466;
  {
    struct MonoInst * inst;

    D.54155 = cfg->mempool;
    inst = mono_mempool_alloc (D.54155, 56);
    inst->data.op[1].const_val = 0;
    D.54467 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.54467;
    inst->prev = 0B;
    D.54468 = inst->prev;
    inst->next = D.54468;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.54469 = inst->sreg3;
    inst->sreg2 = D.54469;
    D.54470 = inst->sreg2;
    inst->sreg1 = D.54470;
    D.54167 = cfg->ip;
    inst->cil_code = D.54167;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 12;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54471>; else goto <D.54472>;
    <D.54471>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = inst;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    inst->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    goto <D.54473>;
    <D.54472>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54473>:
  }
  {
    struct MonoInst * inst;

    D.54155 = cfg->mempool;
    inst = mono_mempool_alloc (D.54155, 56);
    inst->data.op[1].const_val = 0;
    D.54474 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.54474;
    inst->prev = 0B;
    D.54475 = inst->prev;
    inst->next = D.54475;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.54476 = inst->sreg3;
    inst->sreg2 = D.54476;
    D.54477 = inst->sreg2;
    inst->sreg1 = D.54477;
    D.54167 = cfg->ip;
    inst->cil_code = D.54167;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 8;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54478>; else goto <D.54479>;
    <D.54478>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = inst;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    inst->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    goto <D.54480>;
    <D.54479>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54480>:
  }
  D.54481 = alloc_preg (cfg);
  tmp_reg = (int) D.54481;
  {
    struct MonoInst * inst;

    D.54155 = cfg->mempool;
    inst = mono_mempool_alloc (D.54155, 56);
    inst->data.op[1].const_val = 0;
    D.54482 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.54482;
    inst->prev = 0B;
    D.54483 = inst->prev;
    inst->next = D.54483;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.54484 = inst->sreg3;
    inst->sreg2 = D.54484;
    D.54485 = inst->sreg2;
    inst->sreg1 = D.54485;
    D.54167 = cfg->ip;
    inst->cil_code = D.54167;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 16;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54486>; else goto <D.54487>;
    <D.54486>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = inst;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    inst->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    goto <D.54488>;
    <D.54487>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54488>:
  }
  {
    struct MonoInst * inst;

    D.54155 = cfg->mempool;
    inst = mono_mempool_alloc (D.54155, 56);
    inst->data.op[1].const_val = 0;
    D.54489 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.54489;
    inst->prev = 0B;
    D.54490 = inst->prev;
    inst->next = D.54490;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.54491 = inst->sreg3;
    inst->sreg2 = D.54491;
    D.54492 = inst->sreg2;
    inst->sreg1 = D.54492;
    D.54167 = cfg->ip;
    inst->cil_code = D.54167;
    inst->dreg = -1;
    inst->sreg1 = tmp_reg;
    inst->data.op[1].const_val = 0;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54493>; else goto <D.54494>;
    <D.54493>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = inst;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    inst->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    goto <D.54495>;
    <D.54494>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54495>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.54155 = cfg->mempool;
    ins = mono_mempool_alloc (D.54155, 56);
    ins->data.op[1].const_val = 0;
    D.54496 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.54496;
    ins->prev = 0B;
    D.54497 = ins->prev;
    ins->next = D.54497;
    ins->opcode = 648;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.54498 = ins->sreg3;
    ins->sreg2 = D.54498;
    D.54499 = ins->sreg2;
    ins->sreg1 = D.54499;
    D.54167 = cfg->ip;
    ins->cil_code = D.54167;
    if (0 != 0) goto <D.54500>; else goto <D.54501>;
    <D.54500>:
    D.54155 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.54155, 172);
    D.54156 = cfg->num_bblocks;
    D.54502 = D.54156;
    D.54503 = D.54502 + 1;
    cfg->num_bblocks = D.54503;
    D.54504 = (int) D.54502;
    falsebb->block_num = D.54504;
    ins->data.op[0].target_block = no_proxy_bb;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, no_proxy_bb);
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54505>; else goto <D.54506>;
    <D.54505>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = ins;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    ins->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = ins;
    goto <D.54507>;
    <D.54506>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = ins;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54507>:
    D.54508 = falsebb->cil_code;
    if (D.54508 != 0B) goto <D.54509>; else goto <D.54510>;
    <D.54509>:
    D.54188 = cfg->cil_offset_to_bb;
    D.54508 = falsebb->cil_code;
    D.54511 = (int) D.54508;
    D.54190 = cfg->cil_start;
    D.54191 = (int) D.54190;
    D.54512 = D.54511 - D.54191;
    D.54513 = (unsigned int) D.54512;
    D.54514 = D.54513 * 4;
    D.54515 = D.54188 + D.54514;
    *D.54515 = falsebb;
    <D.54510>:
    D.54196 = cfg->real_offset;
    falsebb->real_offset = D.54196;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54519>; else goto <D.54516>;
    <D.54519>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54520 = D.54169->opcode;
    D.54521 = D.54520 + 64985;
    D.54522 = D.54521 <= 9;
    D.54523 = D.54520 + 64878;
    D.54524 = D.54523 <= 9;
    D.54525 = D.54522 | D.54524;
    if (D.54525 != 0) goto <D.54517>; else goto <D.54526>;
    <D.54526>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54208 = D.54169->opcode;
    D.54209 = D.54208 + 64888;
    if (D.54209 <= 9) goto <D.54517>; else goto <D.54516>;
    <D.54517>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54210 = D.54169->data.op[1].many_blocks;
    D.54211 = D.54210 + 4;
    D.54212 = *D.54211;
    if (D.54212 == 0B) goto <D.54527>; else goto <D.54516>;
    <D.54527>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54210 = D.54169->data.op[1].many_blocks;
    D.54211 = D.54210 + 4;
    *D.54211 = falsebb;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    goto <D.54518>;
    <D.54516>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 == 0B) goto <D.54528>; else goto <D.54530>;
    <D.54530>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54531 = D.54169->opcode;
    D.54532 = D.54531 != 442;
    D.54533 = D.54531 != 759;
    D.54534 = D.54532 & D.54533;
    if (D.54534 != 0) goto <D.54535>; else goto <D.54529>;
    <D.54535>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54536 = D.54169->opcode;
    D.54537 = D.54536 + 64985;
    D.54538 = D.54537 > 9;
    D.54539 = D.54536 + 64878;
    D.54540 = D.54539 > 9;
    D.54541 = D.54538 & D.54540;
    if (D.54541 != 0) goto <D.54542>; else goto <D.54529>;
    <D.54542>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54208 = D.54169->opcode;
    D.54209 = D.54208 + 64888;
    if (D.54209 > 9) goto <D.54528>; else goto <D.54529>;
    <D.54528>:
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    <D.54529>:
    <D.54518>:
    D.54168 = cfg->cbb;
    D.54168->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.54543>;
    <D.54501>:
    D.54155 = cfg->mempool;
    D.54544 = mono_mempool_alloc (D.54155, 8);
    ins->data.op[1].many_blocks = D.54544;
    D.54545 = ins->data.op[1].many_blocks;
    *D.54545 = no_proxy_bb;
    D.54545 = ins->data.op[1].many_blocks;
    D.54546 = D.54545 + 4;
    *D.54546 = 0B;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, no_proxy_bb);
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54547>; else goto <D.54548>;
    <D.54547>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = ins;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    ins->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = ins;
    goto <D.54549>;
    <D.54548>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = ins;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54549>:
    D.54236 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.54237 = D.54236 & 8;
    if (D.54237 == 0) goto <D.54550>; else goto <D.54551>;
    <D.54550>:
    D.54155 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.54155, 172);
    D.54156 = cfg->num_bblocks;
    D.54552 = D.54156;
    D.54553 = D.54552 + 1;
    cfg->num_bblocks = D.54553;
    D.54554 = (int) D.54552;
    falsebb->block_num = D.54554;
    D.54545 = ins->data.op[1].many_blocks;
    D.54546 = D.54545 + 4;
    *D.54546 = falsebb;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    D.54508 = falsebb->cil_code;
    if (D.54508 != 0B) goto <D.54555>; else goto <D.54556>;
    <D.54555>:
    D.54188 = cfg->cil_offset_to_bb;
    D.54508 = falsebb->cil_code;
    D.54511 = (int) D.54508;
    D.54190 = cfg->cil_start;
    D.54191 = (int) D.54190;
    D.54512 = D.54511 - D.54191;
    D.54513 = (unsigned int) D.54512;
    D.54514 = D.54513 * 4;
    D.54515 = D.54188 + D.54514;
    *D.54515 = falsebb;
    <D.54556>:
    D.54196 = cfg->real_offset;
    falsebb->real_offset = D.54196;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54560>; else goto <D.54557>;
    <D.54560>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54561 = D.54169->opcode;
    D.54562 = D.54561 + 64985;
    D.54563 = D.54562 <= 9;
    D.54564 = D.54561 + 64878;
    D.54565 = D.54564 <= 9;
    D.54566 = D.54563 | D.54565;
    if (D.54566 != 0) goto <D.54558>; else goto <D.54567>;
    <D.54567>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54208 = D.54169->opcode;
    D.54209 = D.54208 + 64888;
    if (D.54209 <= 9) goto <D.54558>; else goto <D.54557>;
    <D.54558>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54210 = D.54169->data.op[1].many_blocks;
    D.54211 = D.54210 + 4;
    D.54212 = *D.54211;
    if (D.54212 == 0B) goto <D.54568>; else goto <D.54557>;
    <D.54568>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54210 = D.54169->data.op[1].many_blocks;
    D.54211 = D.54210 + 4;
    *D.54211 = falsebb;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    goto <D.54559>;
    <D.54557>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 == 0B) goto <D.54569>; else goto <D.54571>;
    <D.54571>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54572 = D.54169->opcode;
    D.54573 = D.54572 != 442;
    D.54574 = D.54572 != 759;
    D.54575 = D.54573 & D.54574;
    if (D.54575 != 0) goto <D.54576>; else goto <D.54570>;
    <D.54576>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54577 = D.54169->opcode;
    D.54578 = D.54577 + 64985;
    D.54579 = D.54578 > 9;
    D.54580 = D.54577 + 64878;
    D.54581 = D.54580 > 9;
    D.54582 = D.54579 & D.54581;
    if (D.54582 != 0) goto <D.54583>; else goto <D.54570>;
    <D.54583>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54208 = D.54169->opcode;
    D.54209 = D.54208 + 64888;
    if (D.54209 > 9) goto <D.54569>; else goto <D.54570>;
    <D.54569>:
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    <D.54570>:
    <D.54559>:
    D.54168 = cfg->cbb;
    D.54168->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.54584>;
    <D.54551>:
    D.54168 = cfg->cbb;
    D.54168->extended = 1;
    <D.54584>:
    <D.54543>:
  }
  D.54155 = cfg->mempool;
  fail_1_bb = mono_mempool_alloc0 (D.54155, 172);
  D.54156 = cfg->num_bblocks;
  D.54585 = D.54156;
  D.54586 = D.54585 + 1;
  cfg->num_bblocks = D.54586;
  D.54587 = (int) D.54585;
  fail_1_bb->block_num = D.54587;
  mini_emit_isninst_cast (cfg, klass_reg, klass, fail_1_bb, ok_result_bb);
  D.54588 = fail_1_bb->cil_code;
  if (D.54588 != 0B) goto <D.54589>; else goto <D.54590>;
  <D.54589>:
  D.54188 = cfg->cil_offset_to_bb;
  D.54588 = fail_1_bb->cil_code;
  D.54591 = (int) D.54588;
  D.54190 = cfg->cil_start;
  D.54191 = (int) D.54190;
  D.54592 = D.54591 - D.54191;
  D.54593 = (unsigned int) D.54592;
  D.54594 = D.54593 * 4;
  D.54595 = D.54188 + D.54594;
  *D.54595 = fail_1_bb;
  <D.54590>:
  D.54196 = cfg->real_offset;
  fail_1_bb->real_offset = D.54196;
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  if (D.54169 != 0B) goto <D.54599>; else goto <D.54596>;
  <D.54599>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54600 = D.54169->opcode;
  D.54601 = D.54600 + 64985;
  D.54602 = D.54601 <= 9;
  D.54603 = D.54600 + 64878;
  D.54604 = D.54603 <= 9;
  D.54605 = D.54602 | D.54604;
  if (D.54605 != 0) goto <D.54597>; else goto <D.54606>;
  <D.54606>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54208 = D.54169->opcode;
  D.54209 = D.54208 + 64888;
  if (D.54209 <= 9) goto <D.54597>; else goto <D.54596>;
  <D.54597>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54210 = D.54169->data.op[1].many_blocks;
  D.54211 = D.54210 + 4;
  D.54212 = *D.54211;
  if (D.54212 == 0B) goto <D.54607>; else goto <D.54596>;
  <D.54607>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54210 = D.54169->data.op[1].many_blocks;
  D.54211 = D.54210 + 4;
  *D.54211 = fail_1_bb;
  D.54168 = cfg->cbb;
  mono_link_bblock (cfg, D.54168, fail_1_bb);
  goto <D.54598>;
  <D.54596>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  if (D.54169 == 0B) goto <D.54608>; else goto <D.54610>;
  <D.54610>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54611 = D.54169->opcode;
  D.54612 = D.54611 != 442;
  D.54613 = D.54611 != 759;
  D.54614 = D.54612 & D.54613;
  if (D.54614 != 0) goto <D.54615>; else goto <D.54609>;
  <D.54615>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54616 = D.54169->opcode;
  D.54617 = D.54616 + 64985;
  D.54618 = D.54617 > 9;
  D.54619 = D.54616 + 64878;
  D.54620 = D.54619 > 9;
  D.54621 = D.54618 & D.54620;
  if (D.54621 != 0) goto <D.54622>; else goto <D.54609>;
  <D.54622>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54208 = D.54169->opcode;
  D.54209 = D.54208 + 64888;
  if (D.54209 > 9) goto <D.54608>; else goto <D.54609>;
  <D.54608>:
  D.54168 = cfg->cbb;
  mono_link_bblock (cfg, D.54168, fail_1_bb);
  <D.54609>:
  <D.54598>:
  D.54168 = cfg->cbb;
  D.54168->next_bb = fail_1_bb;
  cfg->cbb = fail_1_bb;
  {
    struct MonoInst * inst;

    D.54155 = cfg->mempool;
    inst = mono_mempool_alloc (D.54155, 56);
    inst->data.op[1].const_val = 0;
    D.54623 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.54623;
    inst->prev = 0B;
    D.54624 = inst->prev;
    inst->next = D.54624;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.54625 = inst->sreg3;
    inst->sreg2 = D.54625;
    D.54626 = inst->sreg2;
    inst->sreg1 = D.54626;
    D.54167 = cfg->ip;
    inst->cil_code = D.54167;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 1;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54627>; else goto <D.54628>;
    <D.54627>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = inst;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    inst->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    goto <D.54629>;
    <D.54628>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54629>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.54155 = cfg->mempool;
    ins = mono_mempool_alloc (D.54155, 56);
    ins->data.op[1].const_val = 0;
    D.54630 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.54630;
    ins->prev = 0B;
    D.54631 = ins->prev;
    ins->next = D.54631;
    ins->opcode = 442;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.54632 = ins->sreg3;
    ins->sreg2 = D.54632;
    D.54633 = ins->sreg2;
    ins->sreg1 = D.54633;
    D.54167 = cfg->ip;
    ins->cil_code = D.54167;
    if (1 != 0) goto <D.54634>; else goto <D.54635>;
    <D.54634>:
    D.54155 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.54155, 172);
    D.54156 = cfg->num_bblocks;
    D.54636 = D.54156;
    D.54637 = D.54636 + 1;
    cfg->num_bblocks = D.54637;
    D.54638 = (int) D.54636;
    falsebb->block_num = D.54638;
    ins->data.op[0].target_block = end_bb;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, end_bb);
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54639>; else goto <D.54640>;
    <D.54639>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = ins;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    ins->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = ins;
    goto <D.54641>;
    <D.54640>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = ins;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54641>:
    D.54642 = falsebb->cil_code;
    if (D.54642 != 0B) goto <D.54643>; else goto <D.54644>;
    <D.54643>:
    D.54188 = cfg->cil_offset_to_bb;
    D.54642 = falsebb->cil_code;
    D.54645 = (int) D.54642;
    D.54190 = cfg->cil_start;
    D.54191 = (int) D.54190;
    D.54646 = D.54645 - D.54191;
    D.54647 = (unsigned int) D.54646;
    D.54648 = D.54647 * 4;
    D.54649 = D.54188 + D.54648;
    *D.54649 = falsebb;
    <D.54644>:
    D.54196 = cfg->real_offset;
    falsebb->real_offset = D.54196;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54653>; else goto <D.54650>;
    <D.54653>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54654 = D.54169->opcode;
    D.54655 = D.54654 + 64985;
    D.54656 = D.54655 <= 9;
    D.54657 = D.54654 + 64878;
    D.54658 = D.54657 <= 9;
    D.54659 = D.54656 | D.54658;
    if (D.54659 != 0) goto <D.54651>; else goto <D.54660>;
    <D.54660>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54208 = D.54169->opcode;
    D.54209 = D.54208 + 64888;
    if (D.54209 <= 9) goto <D.54651>; else goto <D.54650>;
    <D.54651>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54210 = D.54169->data.op[1].many_blocks;
    D.54211 = D.54210 + 4;
    D.54212 = *D.54211;
    if (D.54212 == 0B) goto <D.54661>; else goto <D.54650>;
    <D.54661>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54210 = D.54169->data.op[1].many_blocks;
    D.54211 = D.54210 + 4;
    *D.54211 = falsebb;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    goto <D.54652>;
    <D.54650>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 == 0B) goto <D.54662>; else goto <D.54664>;
    <D.54664>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54665 = D.54169->opcode;
    D.54666 = D.54665 != 442;
    D.54667 = D.54665 != 759;
    D.54668 = D.54666 & D.54667;
    if (D.54668 != 0) goto <D.54669>; else goto <D.54663>;
    <D.54669>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54670 = D.54169->opcode;
    D.54671 = D.54670 + 64985;
    D.54672 = D.54671 > 9;
    D.54673 = D.54670 + 64878;
    D.54674 = D.54673 > 9;
    D.54675 = D.54672 & D.54674;
    if (D.54675 != 0) goto <D.54676>; else goto <D.54663>;
    <D.54676>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54208 = D.54169->opcode;
    D.54209 = D.54208 + 64888;
    if (D.54209 > 9) goto <D.54662>; else goto <D.54663>;
    <D.54662>:
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    <D.54663>:
    <D.54652>:
    D.54168 = cfg->cbb;
    D.54168->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.54677>;
    <D.54635>:
    D.54155 = cfg->mempool;
    D.54678 = mono_mempool_alloc (D.54155, 8);
    ins->data.op[1].many_blocks = D.54678;
    D.54679 = ins->data.op[1].many_blocks;
    *D.54679 = end_bb;
    D.54679 = ins->data.op[1].many_blocks;
    D.54680 = D.54679 + 4;
    *D.54680 = 0B;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, end_bb);
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54681>; else goto <D.54682>;
    <D.54681>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = ins;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    ins->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = ins;
    goto <D.54683>;
    <D.54682>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = ins;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54683>:
    D.54236 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.54237 = D.54236 & 8;
    if (D.54237 == 0) goto <D.54684>; else goto <D.54685>;
    <D.54684>:
    D.54155 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.54155, 172);
    D.54156 = cfg->num_bblocks;
    D.54686 = D.54156;
    D.54687 = D.54686 + 1;
    cfg->num_bblocks = D.54687;
    D.54688 = (int) D.54686;
    falsebb->block_num = D.54688;
    D.54679 = ins->data.op[1].many_blocks;
    D.54680 = D.54679 + 4;
    *D.54680 = falsebb;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    D.54642 = falsebb->cil_code;
    if (D.54642 != 0B) goto <D.54689>; else goto <D.54690>;
    <D.54689>:
    D.54188 = cfg->cil_offset_to_bb;
    D.54642 = falsebb->cil_code;
    D.54645 = (int) D.54642;
    D.54190 = cfg->cil_start;
    D.54191 = (int) D.54190;
    D.54646 = D.54645 - D.54191;
    D.54647 = (unsigned int) D.54646;
    D.54648 = D.54647 * 4;
    D.54649 = D.54188 + D.54648;
    *D.54649 = falsebb;
    <D.54690>:
    D.54196 = cfg->real_offset;
    falsebb->real_offset = D.54196;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54694>; else goto <D.54691>;
    <D.54694>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54695 = D.54169->opcode;
    D.54696 = D.54695 + 64985;
    D.54697 = D.54696 <= 9;
    D.54698 = D.54695 + 64878;
    D.54699 = D.54698 <= 9;
    D.54700 = D.54697 | D.54699;
    if (D.54700 != 0) goto <D.54692>; else goto <D.54701>;
    <D.54701>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54208 = D.54169->opcode;
    D.54209 = D.54208 + 64888;
    if (D.54209 <= 9) goto <D.54692>; else goto <D.54691>;
    <D.54692>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54210 = D.54169->data.op[1].many_blocks;
    D.54211 = D.54210 + 4;
    D.54212 = *D.54211;
    if (D.54212 == 0B) goto <D.54702>; else goto <D.54691>;
    <D.54702>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54210 = D.54169->data.op[1].many_blocks;
    D.54211 = D.54210 + 4;
    *D.54211 = falsebb;
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    goto <D.54693>;
    <D.54691>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 == 0B) goto <D.54703>; else goto <D.54705>;
    <D.54705>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54706 = D.54169->opcode;
    D.54707 = D.54706 != 442;
    D.54708 = D.54706 != 759;
    D.54709 = D.54707 & D.54708;
    if (D.54709 != 0) goto <D.54710>; else goto <D.54704>;
    <D.54710>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54711 = D.54169->opcode;
    D.54712 = D.54711 + 64985;
    D.54713 = D.54712 > 9;
    D.54714 = D.54711 + 64878;
    D.54715 = D.54714 > 9;
    D.54716 = D.54713 & D.54715;
    if (D.54716 != 0) goto <D.54717>; else goto <D.54704>;
    <D.54717>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54208 = D.54169->opcode;
    D.54209 = D.54208 + 64888;
    if (D.54209 > 9) goto <D.54703>; else goto <D.54704>;
    <D.54703>:
    D.54168 = cfg->cbb;
    mono_link_bblock (cfg, D.54168, falsebb);
    <D.54704>:
    <D.54693>:
    D.54168 = cfg->cbb;
    D.54168->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.54718>;
    <D.54685>:
    D.54168 = cfg->cbb;
    D.54168->extended = 1;
    <D.54718>:
    <D.54677>:
  }
  D.54719 = no_proxy_bb->cil_code;
  if (D.54719 != 0B) goto <D.54720>; else goto <D.54721>;
  <D.54720>:
  D.54188 = cfg->cil_offset_to_bb;
  D.54719 = no_proxy_bb->cil_code;
  D.54722 = (int) D.54719;
  D.54190 = cfg->cil_start;
  D.54191 = (int) D.54190;
  D.54723 = D.54722 - D.54191;
  D.54724 = (unsigned int) D.54723;
  D.54725 = D.54724 * 4;
  D.54726 = D.54188 + D.54725;
  *D.54726 = no_proxy_bb;
  <D.54721>:
  D.54196 = cfg->real_offset;
  no_proxy_bb->real_offset = D.54196;
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  if (D.54169 != 0B) goto <D.54730>; else goto <D.54727>;
  <D.54730>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54731 = D.54169->opcode;
  D.54732 = D.54731 + 64985;
  D.54733 = D.54732 <= 9;
  D.54734 = D.54731 + 64878;
  D.54735 = D.54734 <= 9;
  D.54736 = D.54733 | D.54735;
  if (D.54736 != 0) goto <D.54728>; else goto <D.54737>;
  <D.54737>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54208 = D.54169->opcode;
  D.54209 = D.54208 + 64888;
  if (D.54209 <= 9) goto <D.54728>; else goto <D.54727>;
  <D.54728>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54210 = D.54169->data.op[1].many_blocks;
  D.54211 = D.54210 + 4;
  D.54212 = *D.54211;
  if (D.54212 == 0B) goto <D.54738>; else goto <D.54727>;
  <D.54738>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54210 = D.54169->data.op[1].many_blocks;
  D.54211 = D.54210 + 4;
  *D.54211 = no_proxy_bb;
  D.54168 = cfg->cbb;
  mono_link_bblock (cfg, D.54168, no_proxy_bb);
  goto <D.54729>;
  <D.54727>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  if (D.54169 == 0B) goto <D.54739>; else goto <D.54741>;
  <D.54741>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54742 = D.54169->opcode;
  D.54743 = D.54742 != 442;
  D.54744 = D.54742 != 759;
  D.54745 = D.54743 & D.54744;
  if (D.54745 != 0) goto <D.54746>; else goto <D.54740>;
  <D.54746>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54747 = D.54169->opcode;
  D.54748 = D.54747 + 64985;
  D.54749 = D.54748 > 9;
  D.54750 = D.54747 + 64878;
  D.54751 = D.54750 > 9;
  D.54752 = D.54749 & D.54751;
  if (D.54752 != 0) goto <D.54753>; else goto <D.54740>;
  <D.54753>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54208 = D.54169->opcode;
  D.54209 = D.54208 + 64888;
  if (D.54209 > 9) goto <D.54739>; else goto <D.54740>;
  <D.54739>:
  D.54168 = cfg->cbb;
  mono_link_bblock (cfg, D.54168, no_proxy_bb);
  <D.54740>:
  <D.54729>:
  D.54168 = cfg->cbb;
  D.54168->next_bb = no_proxy_bb;
  cfg->cbb = no_proxy_bb;
  mini_emit_castclass (cfg, obj_reg, klass_reg, klass, ok_result_bb);
  <D.54448>:
  D.54754 = ok_result_bb->cil_code;
  if (D.54754 != 0B) goto <D.54755>; else goto <D.54756>;
  <D.54755>:
  D.54188 = cfg->cil_offset_to_bb;
  D.54754 = ok_result_bb->cil_code;
  D.54757 = (int) D.54754;
  D.54190 = cfg->cil_start;
  D.54191 = (int) D.54190;
  D.54758 = D.54757 - D.54191;
  D.54759 = (unsigned int) D.54758;
  D.54760 = D.54759 * 4;
  D.54761 = D.54188 + D.54760;
  *D.54761 = ok_result_bb;
  <D.54756>:
  D.54196 = cfg->real_offset;
  ok_result_bb->real_offset = D.54196;
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  if (D.54169 != 0B) goto <D.54765>; else goto <D.54762>;
  <D.54765>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54766 = D.54169->opcode;
  D.54767 = D.54766 + 64985;
  D.54768 = D.54767 <= 9;
  D.54769 = D.54766 + 64878;
  D.54770 = D.54769 <= 9;
  D.54771 = D.54768 | D.54770;
  if (D.54771 != 0) goto <D.54763>; else goto <D.54772>;
  <D.54772>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54208 = D.54169->opcode;
  D.54209 = D.54208 + 64888;
  if (D.54209 <= 9) goto <D.54763>; else goto <D.54762>;
  <D.54763>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54210 = D.54169->data.op[1].many_blocks;
  D.54211 = D.54210 + 4;
  D.54212 = *D.54211;
  if (D.54212 == 0B) goto <D.54773>; else goto <D.54762>;
  <D.54773>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54210 = D.54169->data.op[1].many_blocks;
  D.54211 = D.54210 + 4;
  *D.54211 = ok_result_bb;
  D.54168 = cfg->cbb;
  mono_link_bblock (cfg, D.54168, ok_result_bb);
  goto <D.54764>;
  <D.54762>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  if (D.54169 == 0B) goto <D.54774>; else goto <D.54776>;
  <D.54776>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54777 = D.54169->opcode;
  D.54778 = D.54777 != 442;
  D.54779 = D.54777 != 759;
  D.54780 = D.54778 & D.54779;
  if (D.54780 != 0) goto <D.54781>; else goto <D.54775>;
  <D.54781>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54782 = D.54169->opcode;
  D.54783 = D.54782 + 64985;
  D.54784 = D.54783 > 9;
  D.54785 = D.54782 + 64878;
  D.54786 = D.54785 > 9;
  D.54787 = D.54784 & D.54786;
  if (D.54787 != 0) goto <D.54788>; else goto <D.54775>;
  <D.54788>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54208 = D.54169->opcode;
  D.54209 = D.54208 + 64888;
  if (D.54209 > 9) goto <D.54774>; else goto <D.54775>;
  <D.54774>:
  D.54168 = cfg->cbb;
  mono_link_bblock (cfg, D.54168, ok_result_bb);
  <D.54775>:
  <D.54764>:
  D.54168 = cfg->cbb;
  D.54168->next_bb = ok_result_bb;
  cfg->cbb = ok_result_bb;
  {
    struct MonoInst * inst;

    D.54155 = cfg->mempool;
    inst = mono_mempool_alloc (D.54155, 56);
    inst->data.op[1].const_val = 0;
    D.54789 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.54789;
    inst->prev = 0B;
    D.54790 = inst->prev;
    inst->next = D.54790;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.54791 = inst->sreg3;
    inst->sreg2 = D.54791;
    D.54792 = inst->sreg2;
    inst->sreg1 = D.54792;
    D.54167 = cfg->ip;
    inst->cil_code = D.54167;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 0;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    if (D.54169 != 0B) goto <D.54793>; else goto <D.54794>;
    <D.54793>:
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    D.54169->next = inst;
    D.54168 = cfg->cbb;
    D.54169 = D.54168->last_ins;
    inst->prev = D.54169;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    goto <D.54795>;
    <D.54794>:
    D.54168 = cfg->cbb;
    D.54168 = cfg->cbb;
    D.54168->last_ins = inst;
    D.54169 = D.54168->last_ins;
    D.54168->code = D.54169;
    <D.54795>:
  }
  D.54796 = end_bb->cil_code;
  if (D.54796 != 0B) goto <D.54797>; else goto <D.54798>;
  <D.54797>:
  D.54188 = cfg->cil_offset_to_bb;
  D.54796 = end_bb->cil_code;
  D.54799 = (int) D.54796;
  D.54190 = cfg->cil_start;
  D.54191 = (int) D.54190;
  D.54800 = D.54799 - D.54191;
  D.54801 = (unsigned int) D.54800;
  D.54802 = D.54801 * 4;
  D.54803 = D.54188 + D.54802;
  *D.54803 = end_bb;
  <D.54798>:
  D.54196 = cfg->real_offset;
  end_bb->real_offset = D.54196;
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  if (D.54169 != 0B) goto <D.54807>; else goto <D.54804>;
  <D.54807>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54808 = D.54169->opcode;
  D.54809 = D.54808 + 64985;
  D.54810 = D.54809 <= 9;
  D.54811 = D.54808 + 64878;
  D.54812 = D.54811 <= 9;
  D.54813 = D.54810 | D.54812;
  if (D.54813 != 0) goto <D.54805>; else goto <D.54814>;
  <D.54814>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54208 = D.54169->opcode;
  D.54209 = D.54208 + 64888;
  if (D.54209 <= 9) goto <D.54805>; else goto <D.54804>;
  <D.54805>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54210 = D.54169->data.op[1].many_blocks;
  D.54211 = D.54210 + 4;
  D.54212 = *D.54211;
  if (D.54212 == 0B) goto <D.54815>; else goto <D.54804>;
  <D.54815>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54210 = D.54169->data.op[1].many_blocks;
  D.54211 = D.54210 + 4;
  *D.54211 = end_bb;
  D.54168 = cfg->cbb;
  mono_link_bblock (cfg, D.54168, end_bb);
  goto <D.54806>;
  <D.54804>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  if (D.54169 == 0B) goto <D.54816>; else goto <D.54818>;
  <D.54818>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54819 = D.54169->opcode;
  D.54820 = D.54819 != 442;
  D.54821 = D.54819 != 759;
  D.54822 = D.54820 & D.54821;
  if (D.54822 != 0) goto <D.54823>; else goto <D.54817>;
  <D.54823>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54824 = D.54169->opcode;
  D.54825 = D.54824 + 64985;
  D.54826 = D.54825 > 9;
  D.54827 = D.54824 + 64878;
  D.54828 = D.54827 > 9;
  D.54829 = D.54826 & D.54828;
  if (D.54829 != 0) goto <D.54830>; else goto <D.54817>;
  <D.54830>:
  D.54168 = cfg->cbb;
  D.54169 = D.54168->last_ins;
  D.54208 = D.54169->opcode;
  D.54209 = D.54208 + 64888;
  if (D.54209 > 9) goto <D.54816>; else goto <D.54817>;
  <D.54816>:
  D.54168 = cfg->cbb;
  mono_link_bblock (cfg, D.54168, end_bb);
  <D.54817>:
  <D.54806>:
  D.54168 = cfg->cbb;
  D.54168->next_bb = end_bb;
  cfg->cbb = end_bb;
  D.54155 = cfg->mempool;
  ins = mono_mempool_alloc (D.54155, 56);
  ins->data.op[1].const_val = 0;
  D.54831 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.54831;
  ins->prev = 0B;
  D.54832 = ins->prev;
  ins->next = D.54832;
  ins->opcode = 362;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.54833 = ins->sreg3;
  ins->sreg2 = D.54833;
  D.54834 = ins->sreg2;
  ins->sreg1 = D.54834;
  D.54167 = cfg->ip;
  ins->cil_code = D.54167;
  ins->dreg = dreg;
  ins->type = 1;
  D.54835 = ins;
  return D.54835;
}


emit_memory_barrier (struct MonoCompile * cfg, int kind)
{
  struct MonoMemPool * D.54837;
  int D.54838;
  struct MonoInst * D.54839;
  int D.54840;
  int D.54841;
  const unsigned char * D.54842;
  struct MonoBasicBlock * D.54843;
  struct MonoInst * D.54844;
  struct MonoInst * D.54848;
  struct MonoInst * ins;

  ins = 0B;
  D.54837 = cfg->mempool;
  ins = mono_mempool_alloc (D.54837, 56);
  ins->data.op[1].const_val = 0;
  D.54838 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.54838;
  ins->prev = 0B;
  D.54839 = ins->prev;
  ins->next = D.54839;
  ins->opcode = 813;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.54840 = ins->sreg3;
  ins->sreg2 = D.54840;
  D.54841 = ins->sreg2;
  ins->sreg1 = D.54841;
  D.54842 = cfg->ip;
  ins->cil_code = D.54842;
  D.54843 = cfg->cbb;
  D.54844 = D.54843->last_ins;
  if (D.54844 != 0B) goto <D.54845>; else goto <D.54846>;
  <D.54845>:
  D.54843 = cfg->cbb;
  D.54844 = D.54843->last_ins;
  D.54844->next = ins;
  D.54843 = cfg->cbb;
  D.54844 = D.54843->last_ins;
  ins->prev = D.54844;
  D.54843 = cfg->cbb;
  D.54843->last_ins = ins;
  goto <D.54847>;
  <D.54846>:
  D.54843 = cfg->cbb;
  D.54843 = cfg->cbb;
  D.54843->last_ins = ins;
  D.54844 = D.54843->last_ins;
  D.54843->code = D.54844;
  <D.54847>:
  ins->backend.memory_barrier_kind = kind;
  D.54848 = ins;
  return D.54848;
}


type_from_op (struct MonoInst * ins, struct MonoInst * src1, struct MonoInst * src2)
{
  short unsigned int D.54850;
  int D.54851;
  unsigned char D.54852;
  int D.54853;
  unsigned char D.54854;
  int D.54855;
  char D.54856;
  unsigned char D.54857;
  int D.54858;
  short unsigned int D.54859;
  short unsigned int D.54860;
  char D.54861;
  char D.54862;
  char D.54863;
  _Bool D.54864;
  unsigned char D.54865;
  char D.54872;
  _Bool D.54873;
  unsigned char D.54874;
  short unsigned int D.54877;
  short unsigned int D.54878;
  short unsigned int D.54879;
  short unsigned int D.54880;
  int D.54881;
  int D.54882;
  _Bool D.54883;
  unsigned char D.54884;
  char D.54885;
  short unsigned int D.54886;
  short unsigned int D.54887;
  unsigned char D.54888;
  short unsigned int D.54892;
  short unsigned int D.54893;
  short unsigned int D.54895;
  short unsigned int D.54896;
  short unsigned int D.54897;
  short unsigned int D.54898;
  short unsigned int D.54900;
  short unsigned int D.54901;
  struct MonoClass * D.54906;

  D.54850 = ins->opcode;
  D.54851 = (int) D.54850;
  switch (D.54851) <default: <D.27404>, case 59: <D.27327>, case 60: <D.27328>, case 61: <D.27329>, case 62: <D.27330>, case 63: <D.27331>, case 64: <D.27332>, case 65: <D.27333>, case 66: <D.27334>, case 67: <D.27335>, case 68: <D.27336>, case 88: <D.27309>, case 89: <D.27310>, case 90: <D.27311>, case 91: <D.27312>, case 92: <D.27315>, case 93: <D.27313>, case 94: <D.27316>, case 95: <D.27317>, case 96: <D.27318>, case 97: <D.27319>, case 98: <D.27320>, case 99: <D.27321>, case 100: <D.27322>, case 101: <D.27342>, case 102: <D.27343>, case 103: <D.27344>, case 104: <D.27345>, case 105: <D.27346>, case 106: <D.27374>, case 107: <D.27380>, case 108: <D.27381>, case 109: <D.27347>, case 110: <D.27375>, case 118: <D.27348>, case 130: <D.27361>, case 131: <D.27362>, case 132: <D.27363>, case 133: <D.27379>, case 134: <D.27364>, case 135: <D.27365>, case 136: <D.27366>, case 137: <D.27378>, case 138: <D.27359>, case 139: <D.27360>, case 179: <D.27353>, case 180: <D.27354>, case 181: <D.27355>, case 182: <D.27356>, case 183: <D.27357>, case 184: <D.27358>, case 185: <D.27376>, case 186: <D.27377>, case 209: <D.27383>, case 210: <D.27384>, case 211: <D.27385>, case 212: <D.27386>, case 213: <D.27387>, case 214: <D.27388>, case 215: <D.27389>, case 216: <D.27390>, case 217: <D.27391>, case 218: <D.27392>, case 219: <D.27393>, case 224: <D.27367>, case 322: <D.27323>, case 325: <D.27324>, case 326: <D.27325>, case 327: <D.27326>, case 388: <D.27394>, case 389: <D.27395>, case 390: <D.27396>, case 391: <D.27397>, case 392: <D.27398>, case 393: <D.27399>, case 394: <D.27400>, case 395: <D.27401>, case 396: <D.27402>, case 397: <D.27403>, case 446: <D.27337>, case 447: <D.27338>, case 448: <D.27339>, case 449: <D.27340>, case 450: <D.27341>, case 728: <D.27382>>
  <D.27309>:
  <D.27310>:
  <D.27311>:
  <D.27312>:
  <D.27313>:
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54854 = src2->type;
  D.54855 = (int) D.54854;
  D.54856 = bin_num_table[D.54853][D.54855];
  ins->type = D.54856;
  D.54850 = ins->opcode;
  D.54857 = ins->type;
  D.54858 = (int) D.54857;
  D.54859 = binops_op_map[D.54858];
  D.54860 = D.54850 + D.54859;
  ins->opcode = D.54860;
  goto <D.27314>;
  <D.27315>:
  <D.27316>:
  <D.27317>:
  <D.27318>:
  <D.27319>:
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54854 = src2->type;
  D.54855 = (int) D.54854;
  D.54861 = bin_int_table[D.54853][D.54855];
  ins->type = D.54861;
  D.54850 = ins->opcode;
  D.54857 = ins->type;
  D.54858 = (int) D.54857;
  D.54859 = binops_op_map[D.54858];
  D.54860 = D.54850 + D.54859;
  ins->opcode = D.54860;
  goto <D.27314>;
  <D.27320>:
  <D.27321>:
  <D.27322>:
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54854 = src2->type;
  D.54855 = (int) D.54854;
  D.54862 = shift_table[D.54853][D.54855];
  ins->type = D.54862;
  D.54850 = ins->opcode;
  D.54857 = ins->type;
  D.54858 = (int) D.54857;
  D.54859 = binops_op_map[D.54858];
  D.54860 = D.54850 + D.54859;
  ins->opcode = D.54860;
  goto <D.27314>;
  <D.27323>:
  <D.27324>:
  <D.27325>:
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54854 = src2->type;
  D.54855 = (int) D.54854;
  D.54863 = bin_comp_table[D.54853][D.54855];
  D.54864 = D.54863 != 0;
  D.54865 = (unsigned char) D.54864;
  ins->type = D.54865;
  D.54852 = src1->type;
  if (D.54852 == 2) goto <D.54866>; else goto <D.54867>;
  <D.54866>:
  ins->opcode = 325;
  goto <D.54868>;
  <D.54867>:
  D.54852 = src1->type;
  if (D.54852 == 4) goto <D.54869>; else goto <D.54870>;
  <D.54869>:
  ins->opcode = 324;
  goto <D.54871>;
  <D.54870>:
  ins->opcode = 326;
  <D.54871>:
  <D.54868>:
  goto <D.27314>;
  <D.27326>:
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54872 = bin_comp_table[D.54853][D.54853];
  D.54873 = D.54872 != 0;
  D.54874 = (unsigned char) D.54873;
  ins->type = D.54874;
  D.54852 = src1->type;
  if (D.54852 == 2) goto <D.54875>; else goto <D.54876>;
  <D.54875>:
  ins->opcode = 328;
  <D.54876>:
  goto <D.27314>;
  <D.27327>:
  <D.27328>:
  <D.27329>:
  <D.27330>:
  <D.27331>:
  <D.27332>:
  <D.27333>:
  <D.27334>:
  <D.27335>:
  <D.27336>:
  D.54850 = ins->opcode;
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54877 = beqops_op_map[D.54853];
  D.54878 = D.54850 + D.54877;
  ins->opcode = D.54878;
  goto <D.27314>;
  <D.27337>:
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54854 = src2->type;
  D.54855 = (int) D.54854;
  D.54863 = bin_comp_table[D.54853][D.54855];
  D.54864 = D.54863 != 0;
  D.54865 = (unsigned char) D.54864;
  ins->type = D.54865;
  D.54850 = ins->opcode;
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54879 = ceqops_op_map[D.54853];
  D.54880 = D.54850 + D.54879;
  ins->opcode = D.54880;
  goto <D.27314>;
  <D.27338>:
  <D.27339>:
  <D.27340>:
  <D.27341>:
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54854 = src2->type;
  D.54855 = (int) D.54854;
  D.54863 = bin_comp_table[D.54853][D.54855];
  D.54881 = (int) D.54863;
  D.54882 = D.54881 & 1;
  D.54883 = D.54882 != 0;
  D.54884 = (unsigned char) D.54883;
  ins->type = D.54884;
  D.54850 = ins->opcode;
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54879 = ceqops_op_map[D.54853];
  D.54880 = D.54850 + D.54879;
  ins->opcode = D.54880;
  goto <D.27314>;
  <D.27342>:
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54885 = neg_table[D.54853];
  ins->type = D.54885;
  D.54850 = ins->opcode;
  D.54857 = ins->type;
  D.54858 = (int) D.54857;
  D.54886 = unops_op_map[D.54858];
  D.54887 = D.54850 + D.54886;
  ins->opcode = D.54887;
  goto <D.27314>;
  <D.27343>:
  D.54852 = src1->type;
  D.54888 = D.54852 + 255;
  if (D.54888 <= 2) goto <D.54889>; else goto <D.54890>;
  <D.54889>:
  D.54852 = src1->type;
  ins->type = D.54852;
  goto <D.54891>;
  <D.54890>:
  ins->type = 0;
  <D.54891>:
  D.54850 = ins->opcode;
  D.54857 = ins->type;
  D.54858 = (int) D.54857;
  D.54886 = unops_op_map[D.54858];
  D.54887 = D.54850 + D.54886;
  ins->opcode = D.54887;
  goto <D.27314>;
  <D.27344>:
  <D.27345>:
  <D.27346>:
  <D.27347>:
  ins->type = 1;
  D.54850 = ins->opcode;
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54892 = unops_op_map[D.54853];
  D.54893 = D.54850 + D.54892;
  ins->opcode = D.54893;
  goto <D.27314>;
  <D.27348>:
  ins->type = 4;
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  switch (D.54853) <default: <D.54894>, case 1: <D.27349>, case 2: <D.27352>, case 3: <D.27350>>
  <D.27349>:
  <D.27350>:
  ins->opcode = 588;
  goto <D.27351>;
  <D.27352>:
  ins->opcode = 536;
  goto <D.27351>;
  <D.54894>:
  <D.27351>:
  goto <D.27314>;
  <D.27353>:
  <D.27354>:
  <D.27355>:
  <D.27356>:
  <D.27357>:
  <D.27358>:
  ins->type = 1;
  D.54850 = ins->opcode;
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54895 = ovf3ops_op_map[D.54853];
  D.54896 = D.54850 + D.54895;
  ins->opcode = D.54896;
  goto <D.27314>;
  <D.27359>:
  <D.27360>:
  ins->type = 3;
  D.54850 = ins->opcode;
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54897 = ovf2ops_op_map[D.54853];
  D.54898 = D.54850 + D.54897;
  ins->opcode = D.54898;
  goto <D.27314>;
  <D.27361>:
  <D.27362>:
  <D.27363>:
  <D.27364>:
  <D.27365>:
  <D.27366>:
  ins->type = 1;
  D.54850 = ins->opcode;
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54897 = ovf2ops_op_map[D.54853];
  D.54898 = D.54850 + D.54897;
  ins->opcode = D.54898;
  goto <D.27314>;
  <D.27367>:
  ins->type = 3;
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  switch (D.54853) <default: <D.54899>, case 1: <D.27368>, case 2: <D.27372>, case 3: <D.27370>, case 4: <D.27373>, case 5: <D.27371>>
  <D.27368>:
  ins->opcode = 589;
  goto <D.27369>;
  <D.27370>:
  <D.27371>:
  ins->opcode = 424;
  goto <D.27369>;
  <D.27372>:
  ins->opcode = 537;
  goto <D.27369>;
  <D.27373>:
  ins->opcode = 727;
  goto <D.27369>;
  <D.54899>:
  <D.27369>:
  goto <D.27314>;
  <D.27374>:
  <D.27375>:
  ins->type = 2;
  D.54850 = ins->opcode;
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54892 = unops_op_map[D.54853];
  D.54893 = D.54850 + D.54892;
  ins->opcode = D.54893;
  goto <D.27314>;
  <D.27376>:
  <D.27377>:
  ins->type = 2;
  D.54850 = ins->opcode;
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54895 = ovf3ops_op_map[D.54853];
  D.54896 = D.54850 + D.54895;
  ins->opcode = D.54896;
  goto <D.27314>;
  <D.27378>:
  <D.27379>:
  ins->type = 2;
  D.54850 = ins->opcode;
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54897 = ovf2ops_op_map[D.54853];
  D.54898 = D.54850 + D.54897;
  ins->opcode = D.54898;
  goto <D.27314>;
  <D.27380>:
  <D.27381>:
  ins->type = 4;
  D.54850 = ins->opcode;
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54892 = unops_op_map[D.54853];
  D.54893 = D.54850 + D.54892;
  ins->opcode = D.54893;
  goto <D.27314>;
  <D.27382>:
  ins->type = 4;
  goto <D.27314>;
  <D.27383>:
  <D.27384>:
  ins->type = 1;
  D.54850 = ins->opcode;
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54900 = ovfops_op_map[D.54853];
  D.54901 = D.54850 + D.54900;
  ins->opcode = D.54901;
  goto <D.27314>;
  <D.27385>:
  <D.27386>:
  <D.27387>:
  ins->type = 3;
  D.54850 = ins->opcode;
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54900 = ovfops_op_map[D.54853];
  D.54901 = D.54850 + D.54900;
  ins->opcode = D.54901;
  goto <D.27314>;
  <D.27388>:
  <D.27389>:
  <D.27390>:
  <D.27391>:
  <D.27392>:
  <D.27393>:
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54854 = src2->type;
  D.54855 = (int) D.54854;
  D.54856 = bin_num_table[D.54853][D.54855];
  ins->type = D.54856;
  D.54850 = ins->opcode;
  D.54852 = src1->type;
  D.54853 = (int) D.54852;
  D.54900 = ovfops_op_map[D.54853];
  D.54901 = D.54850 + D.54900;
  ins->opcode = D.54901;
  D.54857 = ins->type;
  if (D.54857 == 4) goto <D.54902>; else goto <D.54903>;
  <D.54902>:
  ins->type = 0;
  <D.54903>:
  goto <D.27314>;
  <D.27394>:
  ins->type = 3;
  goto <D.27314>;
  <D.27395>:
  <D.27396>:
  <D.27397>:
  <D.27398>:
  <D.27399>:
  <D.27400>:
  ins->type = 3;
  goto <D.27314>;
  <D.27401>:
  ins->type = 2;
  goto <D.27314>;
  <D.27402>:
  <D.27403>:
  ins->type = 4;
  goto <D.27314>;
  <D.27404>:
  D.54850 = ins->opcode;
  D.54851 = (int) D.54850;
  monoeg_g_log (0B, 4, "opcode 0x%04x not handled in type from op", D.54851);
  <D.27405>:
  goto <D.27405>;
  <D.27314>:
  D.54857 = ins->type;
  if (D.54857 == 5) goto <D.54904>; else goto <D.54905>;
  <D.54904>:
  D.54906 = mono_defaults.object_class;
  ins->klass = D.54906;
  <D.54905>:
}


mono_save_token_info (struct MonoCompile * cfg, struct MonoImage * image, guint32 token, void * key)
{
  unsigned char D.54908;
  unsigned char D.54909;
  struct MonoGenericContext * D.54912;
  unsigned int D.54915;
  struct MonoMemPool * D.54918;
  struct GHashTable * D.54919;

  D.54908 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.54909 = D.54908 & 64;
  if (D.54909 != 0) goto <D.54910>; else goto <D.54911>;
  <D.54910>:
  D.54912 = cfg->generic_context;
  if (D.54912 == 0B) goto <D.54913>; else goto <D.54914>;
  <D.54913>:
  D.54915 = token >> 24;
  if (D.54915 != 0) goto <D.54916>; else goto <D.54917>;
  <D.54916>:
  {
    struct MonoJumpInfoToken * jump_info_token;

    D.54918 = cfg->mempool;
    jump_info_token = mono_mempool_alloc0 (D.54918, 20);
    jump_info_token->image = image;
    jump_info_token->token = token;
    D.54919 = cfg->token_info_hash;
    monoeg_g_hash_table_insert_replace (D.54919, key, jump_info_token, 0);
  }
  <D.54917>:
  <D.54914>:
  <D.54911>:
}


ip_in_bb (struct MonoCompile * cfg, struct MonoBasicBlock * bb, const guint8 * ip)
{
  struct MonoBasicBlock * * D.54920;
  int ip.531;
  unsigned char * D.54922;
  int D.54923;
  int D.54924;
  unsigned int D.54925;
  unsigned int D.54926;
  struct MonoBasicBlock * * D.54927;
  gboolean D.54928;
  _Bool D.54929;
  _Bool D.54930;
  _Bool D.54931;
  struct MonoBasicBlock * b;

  D.54920 = cfg->cil_offset_to_bb;
  ip.531 = (int) ip;
  D.54922 = cfg->cil_start;
  D.54923 = (int) D.54922;
  D.54924 = ip.531 - D.54923;
  D.54925 = (unsigned int) D.54924;
  D.54926 = D.54925 * 4;
  D.54927 = D.54920 + D.54926;
  b = *D.54927;
  D.54929 = b == 0B;
  D.54930 = b == bb;
  D.54931 = D.54929 | D.54930;
  D.54928 = (gboolean) D.54931;
  return D.54928;
}


handle_delegate_ctor (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * target, struct MonoMethod * method, int context_used)
{
  struct MonoInst * D.54935;
  short unsigned int D.54938;
  void * D.54940;
  struct MonoMemPool * D.54941;
  int D.54942;
  struct MonoInst * D.54943;
  int D.54944;
  int D.54945;
  const unsigned char * D.54946;
  int D.54947;
  int D.54948;
  struct MonoBasicBlock * D.54949;
  struct MonoInst * D.54950;
  unsigned char D.54954;
  unsigned char D.54955;
  unsigned int D.54958;
  int D.54959;
  struct MonoInst * D.54960;
  int D.54961;
  int D.54962;
  int D.54966;
  struct MonoInst * D.54967;
  int D.54968;
  int D.54969;
  int D.54970;
  unsigned int D.54976;
  unsigned char D.54980;
  unsigned char D.54981;
  unsigned int D.54984;
  unsigned int D.54985;
  union mono_mutex_t * D.54991;
  _Bool D.54994;
  long int D.54995;
  long int D.54996;
  void * D.54999;
  struct GHashTable * D.55000;
  struct GHashTable * D.55003;
  _Bool D.55008;
  long int D.55009;
  long int D.55010;
  unsigned char D.55013;
  unsigned char D.55014;
  int D.55017;
  struct MonoInst * D.55018;
  guint16 iftmp.532;
  int D.55023;
  int D.55024;
  unsigned int D.55025;
  int D.55026;
  unsigned int D.55031;
  int D.55032;
  int D.55036;
  struct MonoInst * D.55037;
  int D.55038;
  int D.55039;
  int D.55040;
  int D.55046;
  struct MonoInst * D.55047;
  guint16 iftmp.533;
  int D.55052;
  int D.55053;
  unsigned int D.55054;
  int D.55055;
  struct MonoDomain * D.55060;
  unsigned int D.55061;
  int D.55062;
  int D.55066;
  struct MonoInst * D.55067;
  int D.55068;
  int D.55069;
  int D.55070;
  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.54933>; else goto <D.54934>;
  <D.54933>:
  D.54935 = 0B;
  return D.54935;
  <D.54934>:
  D.54938 = target->opcode;
  if (D.54938 != 362) goto <D.54936>; else goto <D.54939>;
  <D.54939>:
  D.54940 = target->data.op[0].p;
  if (D.54940 != 0B) goto <D.54936>; else goto <D.54937>;
  <D.54936>:
  {
    struct MonoInst * inst;

    D.54941 = cfg->mempool;
    inst = mono_mempool_alloc (D.54941, 56);
    inst->data.op[1].const_val = 0;
    D.54942 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.54942;
    inst->prev = 0B;
    D.54943 = inst->prev;
    inst->next = D.54943;
    inst->opcode = 374;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.54944 = inst->sreg3;
    inst->sreg2 = D.54944;
    D.54945 = inst->sreg2;
    inst->sreg1 = D.54945;
    D.54946 = cfg->ip;
    inst->cil_code = D.54946;
    D.54947 = target->dreg;
    inst->sreg1 = D.54947;
    D.54948 = obj->dreg;
    inst->dreg = D.54948;
    inst->data.op[0].const_val = 16;
    D.54949 = cfg->cbb;
    D.54950 = D.54949->last_ins;
    if (D.54950 != 0B) goto <D.54951>; else goto <D.54952>;
    <D.54951>:
    D.54949 = cfg->cbb;
    D.54950 = D.54949->last_ins;
    D.54950->next = inst;
    D.54949 = cfg->cbb;
    D.54950 = D.54949->last_ins;
    inst->prev = D.54950;
    D.54949 = cfg->cbb;
    D.54949->last_ins = inst;
    goto <D.54953>;
    <D.54952>:
    D.54949 = cfg->cbb;
    D.54949 = cfg->cbb;
    D.54949->last_ins = inst;
    D.54950 = D.54949->last_ins;
    D.54949->code = D.54950;
    <D.54953>:
  }
  D.54954 = BIT_FIELD_REF <*cfg, 8, 3416>;
  D.54955 = D.54954 & 16;
  if (D.54955 != 0) goto <D.54956>; else goto <D.54957>;
  <D.54956>:
  D.54958 = alloc_preg (cfg);
  dreg = (int) D.54958;
  D.54941 = cfg->mempool;
  ptr = mono_mempool_alloc (D.54941, 56);
  ptr->data.op[1].const_val = 0;
  D.54959 = ptr->data.op[1].const_val;
  ptr->data.op[0].const_val = D.54959;
  ptr->prev = 0B;
  D.54960 = ptr->prev;
  ptr->next = D.54960;
  ptr->opcode = 625;
  ptr->flags = 0;
  ptr->type = 0;
  ptr->dreg = -1;
  ptr->sreg3 = -1;
  D.54961 = ptr->sreg3;
  ptr->sreg2 = D.54961;
  D.54962 = ptr->sreg2;
  ptr->sreg1 = D.54962;
  D.54946 = cfg->ip;
  ptr->cil_code = D.54946;
  ptr->dreg = dreg;
  D.54948 = obj->dreg;
  ptr->sreg1 = D.54948;
  ptr->data.op[1].const_val = 16;
  D.54949 = cfg->cbb;
  D.54950 = D.54949->last_ins;
  if (D.54950 != 0B) goto <D.54963>; else goto <D.54964>;
  <D.54963>:
  D.54949 = cfg->cbb;
  D.54950 = D.54949->last_ins;
  D.54950->next = ptr;
  D.54949 = cfg->cbb;
  D.54950 = D.54949->last_ins;
  ptr->prev = D.54950;
  D.54949 = cfg->cbb;
  D.54949->last_ins = ptr;
  goto <D.54965>;
  <D.54964>:
  D.54949 = cfg->cbb;
  D.54949 = cfg->cbb;
  D.54949->last_ins = ptr;
  D.54950 = D.54949->last_ins;
  D.54949->code = D.54950;
  <D.54965>:
  emit_write_barrier (cfg, ptr, target);
  <D.54957>:
  <D.54937>:
  method_ins = emit_get_rgctx_method (cfg, context_used, method, 5);
  {
    struct MonoInst * inst;

    D.54941 = cfg->mempool;
    inst = mono_mempool_alloc (D.54941, 56);
    inst->data.op[1].const_val = 0;
    D.54966 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.54966;
    inst->prev = 0B;
    D.54967 = inst->prev;
    inst->next = D.54967;
    inst->opcode = 374;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.54968 = inst->sreg3;
    inst->sreg2 = D.54968;
    D.54969 = inst->sreg2;
    inst->sreg1 = D.54969;
    D.54946 = cfg->ip;
    inst->cil_code = D.54946;
    D.54970 = method_ins->dreg;
    inst->sreg1 = D.54970;
    D.54948 = obj->dreg;
    inst->dreg = D.54948;
    inst->data.op[0].const_val = 20;
    D.54949 = cfg->cbb;
    D.54950 = D.54949->last_ins;
    if (D.54950 != 0B) goto <D.54971>; else goto <D.54972>;
    <D.54971>:
    D.54949 = cfg->cbb;
    D.54950 = D.54949->last_ins;
    D.54950->next = inst;
    D.54949 = cfg->cbb;
    D.54950 = D.54949->last_ins;
    inst->prev = D.54950;
    D.54949 = cfg->cbb;
    D.54949->last_ins = inst;
    goto <D.54973>;
    <D.54972>:
    D.54949 = cfg->cbb;
    D.54949 = cfg->cbb;
    D.54949->last_ins = inst;
    D.54950 = D.54949->last_ins;
    D.54949->code = D.54950;
    <D.54973>:
  }
  D.54954 = BIT_FIELD_REF <*cfg, 8, 3416>;
  D.54955 = D.54954 & 16;
  if (D.54955 != 0) goto <D.54974>; else goto <D.54975>;
  <D.54974>:
  D.54976 = alloc_preg (cfg);
  dreg = (int) D.54976;
  D.54941 = cfg->mempool;
  ptr = mono_mempool_alloc (D.54941, 56);
  ptr->data.op[1].const_val = 0;
  D.54959 = ptr->data.op[1].const_val;
  ptr->data.op[0].const_val = D.54959;
  ptr->prev = 0B;
  D.54960 = ptr->prev;
  ptr->next = D.54960;
  ptr->opcode = 625;
  ptr->flags = 0;
  ptr->type = 0;
  ptr->dreg = -1;
  ptr->sreg3 = -1;
  D.54961 = ptr->sreg3;
  ptr->sreg2 = D.54961;
  D.54962 = ptr->sreg2;
  ptr->sreg1 = D.54962;
  D.54946 = cfg->ip;
  ptr->cil_code = D.54946;
  ptr->dreg = dreg;
  D.54948 = obj->dreg;
  ptr->sreg1 = D.54948;
  ptr->data.op[1].const_val = 20;
  D.54949 = cfg->cbb;
  D.54950 = D.54949->last_ins;
  if (D.54950 != 0B) goto <D.54977>; else goto <D.54978>;
  <D.54977>:
  D.54949 = cfg->cbb;
  D.54950 = D.54949->last_ins;
  D.54950->next = ptr;
  D.54949 = cfg->cbb;
  D.54950 = D.54949->last_ins;
  ptr->prev = D.54950;
  D.54949 = cfg->cbb;
  D.54949->last_ins = ptr;
  goto <D.54979>;
  <D.54978>:
  D.54949 = cfg->cbb;
  D.54949 = cfg->cbb;
  D.54949->last_ins = ptr;
  D.54950 = D.54949->last_ins;
  D.54949->code = D.54950;
  <D.54979>:
  emit_write_barrier (cfg, ptr, method_ins);
  <D.54975>:
  D.54980 = BIT_FIELD_REF <*method, 8, 168>;
  D.54981 = D.54980 & 2;
  if (D.54981 == 0) goto <D.54982>; else goto <D.54983>;
  <D.54982>:
  D.54984 = cfg->opt;
  D.54985 = D.54984 & 512;
  if (D.54985 == 0) goto <D.54986>; else goto <D.54987>;
  <D.54986>:
  {
    struct MonoInst * code_slot_ins;

    if (context_used != 0) goto <D.54988>; else goto <D.54989>;
    <D.54988>:
    code_slot_ins = emit_get_rgctx_method (cfg, context_used, method, 11);
    goto <D.54990>;
    <D.54989>:
    domain = mono_domain_get ();
    {
      int ret;

      D.54991 = &domain->lock.mutex;
      ret = pthread_mutex_lock (D.54991);
      if (ret != 0) goto <D.54992>; else goto <D.54993>;
      <D.54992>:
      monoeg_g_log (0B, 16, "Bad call to mono_mutex_lock result %d", ret);
      <D.54993>:
      D.54994 = ret != 0;
      D.54995 = (long int) D.54994;
      D.54996 = __builtin_expect (D.54995, 0);
      if (D.54996 != 0) goto <D.54997>; else goto <D.54998>;
      <D.54997>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4431, "ret == 0");
      <D.54998>:
    }
    D.54999 = domain->runtime_info;
    D.55000 = MEM[(struct MonoJitDomainInfo *)D.54999].method_code_hash;
    if (D.55000 == 0B) goto <D.55001>; else goto <D.55002>;
    <D.55001>:
    D.54999 = domain->runtime_info;
    D.55003 = monoeg_g_hash_table_new (0B, 0B);
    MEM[(struct MonoJitDomainInfo *)D.54999].method_code_hash = D.55003;
    <D.55002>:
    D.54999 = domain->runtime_info;
    D.55000 = MEM[(struct MonoJitDomainInfo *)D.54999].method_code_hash;
    code_slot = monoeg_g_hash_table_lookup (D.55000, method);
    if (code_slot == 0B) goto <D.55004>; else goto <D.55005>;
    <D.55004>:
    code_slot = mono_domain_alloc0 (domain, 4);
    D.54999 = domain->runtime_info;
    D.55000 = MEM[(struct MonoJitDomainInfo *)D.54999].method_code_hash;
    monoeg_g_hash_table_insert_replace (D.55000, method, code_slot, 0);
    <D.55005>:
    {
      int ret;

      D.54991 = &domain->lock.mutex;
      ret = pthread_mutex_unlock (D.54991);
      if (ret != 0) goto <D.55006>; else goto <D.55007>;
      <D.55006>:
      monoeg_g_log (0B, 16, "Bad call to mono_mutex_unlock result %d", ret);
      <D.55007>:
      D.55008 = ret != 0;
      D.55009 = (long int) D.55008;
      D.55010 = __builtin_expect (D.55009, 0);
      if (D.55010 != 0) goto <D.55011>; else goto <D.55012>;
      <D.55011>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4439, "ret == 0");
      <D.55012>:
    }
    D.55013 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.55014 = D.55013 & 64;
    if (D.55014 != 0) goto <D.55015>; else goto <D.55016>;
    <D.55015>:
    D.54941 = cfg->mempool;
    code_slot_ins = mono_mempool_alloc (D.54941, 56);
    code_slot_ins->data.op[1].const_val = 0;
    D.55017 = code_slot_ins->data.op[1].const_val;
    code_slot_ins->data.op[0].const_val = D.55017;
    code_slot_ins->prev = 0B;
    D.55018 = code_slot_ins->prev;
    code_slot_ins->next = D.55018;
    D.55013 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.55014 = D.55013 & 64;
    if (D.55014 != 0) goto <D.55020>; else goto <D.55021>;
    <D.55020>:
    iftmp.532 = 732;
    goto <D.55022>;
    <D.55021>:
    iftmp.532 = 362;
    <D.55022>:
    code_slot_ins->opcode = iftmp.532;
    code_slot_ins->flags = 0;
    code_slot_ins->type = 0;
    code_slot_ins->dreg = -1;
    code_slot_ins->sreg3 = -1;
    D.55023 = code_slot_ins->sreg3;
    code_slot_ins->sreg2 = D.55023;
    D.55024 = code_slot_ins->sreg2;
    code_slot_ins->sreg1 = D.55024;
    D.54946 = cfg->ip;
    code_slot_ins->cil_code = D.54946;
    code_slot_ins->data.op[0].p = method;
    code_slot_ins->data.op[1].src = 50B;
    code_slot_ins->type = 3;
    D.55025 = alloc_dreg (cfg, 3);
    D.55026 = (int) D.55025;
    code_slot_ins->dreg = D.55026;
    D.54949 = cfg->cbb;
    D.54950 = D.54949->last_ins;
    if (D.54950 != 0B) goto <D.55027>; else goto <D.55028>;
    <D.55027>:
    D.54949 = cfg->cbb;
    D.54950 = D.54949->last_ins;
    D.54950->next = code_slot_ins;
    D.54949 = cfg->cbb;
    D.54950 = D.54949->last_ins;
    code_slot_ins->prev = D.54950;
    D.54949 = cfg->cbb;
    D.54949->last_ins = code_slot_ins;
    goto <D.55029>;
    <D.55028>:
    D.54949 = cfg->cbb;
    D.54949 = cfg->cbb;
    D.54949->last_ins = code_slot_ins;
    D.54950 = D.54949->last_ins;
    D.54949->code = D.54950;
    <D.55029>:
    goto <D.55030>;
    <D.55016>:
    D.54941 = cfg->mempool;
    code_slot_ins = mono_mempool_alloc (D.54941, 56);
    code_slot_ins->data.op[1].const_val = 0;
    D.55017 = code_slot_ins->data.op[1].const_val;
    code_slot_ins->data.op[0].const_val = D.55017;
    code_slot_ins->prev = 0B;
    D.55018 = code_slot_ins->prev;
    code_slot_ins->next = D.55018;
    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.55023 = code_slot_ins->sreg3;
    code_slot_ins->sreg2 = D.55023;
    D.55024 = code_slot_ins->sreg2;
    code_slot_ins->sreg1 = D.55024;
    D.54946 = cfg->ip;
    code_slot_ins->cil_code = D.54946;
    code_slot_ins->data.op[0].p = code_slot;
    code_slot_ins->type = 3;
    D.55031 = alloc_dreg (cfg, 3);
    D.55032 = (int) D.55031;
    code_slot_ins->dreg = D.55032;
    D.54949 = cfg->cbb;
    D.54950 = D.54949->last_ins;
    if (D.54950 != 0B) goto <D.55033>; else goto <D.55034>;
    <D.55033>:
    D.54949 = cfg->cbb;
    D.54950 = D.54949->last_ins;
    D.54950->next = code_slot_ins;
    D.54949 = cfg->cbb;
    D.54950 = D.54949->last_ins;
    code_slot_ins->prev = D.54950;
    D.54949 = cfg->cbb;
    D.54949->last_ins = code_slot_ins;
    goto <D.55035>;
    <D.55034>:
    D.54949 = cfg->cbb;
    D.54949 = cfg->cbb;
    D.54949->last_ins = code_slot_ins;
    D.54950 = D.54949->last_ins;
    D.54949->code = D.54950;
    <D.55035>:
    <D.55030>:
    <D.54990>:
    {
      struct MonoInst * inst;

      D.54941 = cfg->mempool;
      inst = mono_mempool_alloc (D.54941, 56);
      inst->data.op[1].const_val = 0;
      D.55036 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.55036;
      inst->prev = 0B;
      D.55037 = inst->prev;
      inst->next = D.55037;
      inst->opcode = 374;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.55038 = inst->sreg3;
      inst->sreg2 = D.55038;
      D.55039 = inst->sreg2;
      inst->sreg1 = D.55039;
      D.54946 = cfg->ip;
      inst->cil_code = D.54946;
      D.55040 = code_slot_ins->dreg;
      inst->sreg1 = D.55040;
      D.54948 = obj->dreg;
      inst->dreg = D.54948;
      inst->data.op[0].const_val = 28;
      D.54949 = cfg->cbb;
      D.54950 = D.54949->last_ins;
      if (D.54950 != 0B) goto <D.55041>; else goto <D.55042>;
      <D.55041>:
      D.54949 = cfg->cbb;
      D.54950 = D.54949->last_ins;
      D.54950->next = inst;
      D.54949 = cfg->cbb;
      D.54950 = D.54949->last_ins;
      inst->prev = D.54950;
      D.54949 = cfg->cbb;
      D.54949->last_ins = inst;
      goto <D.55043>;
      <D.55042>:
      D.54949 = cfg->cbb;
      D.54949 = cfg->cbb;
      D.54949->last_ins = inst;
      D.54950 = D.54949->last_ins;
      D.54949->code = D.54950;
      <D.55043>:
    }
  }
  <D.54987>:
  <D.54983>:
  D.55013 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.55014 = D.55013 & 64;
  if (D.55014 != 0) goto <D.55044>; else goto <D.55045>;
  <D.55044>:
  D.54941 = cfg->mempool;
  tramp_ins = mono_mempool_alloc (D.54941, 56);
  tramp_ins->data.op[1].const_val = 0;
  D.55046 = tramp_ins->data.op[1].const_val;
  tramp_ins->data.op[0].const_val = D.55046;
  tramp_ins->prev = 0B;
  D.55047 = tramp_ins->prev;
  tramp_ins->next = D.55047;
  D.55013 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.55014 = D.55013 & 64;
  if (D.55014 != 0) goto <D.55049>; else goto <D.55050>;
  <D.55049>:
  iftmp.533 = 732;
  goto <D.55051>;
  <D.55050>:
  iftmp.533 = 362;
  <D.55051>:
  tramp_ins->opcode = iftmp.533;
  tramp_ins->flags = 0;
  tramp_ins->type = 0;
  tramp_ins->dreg = -1;
  tramp_ins->sreg3 = -1;
  D.55052 = tramp_ins->sreg3;
  tramp_ins->sreg2 = D.55052;
  D.55053 = tramp_ins->sreg2;
  tramp_ins->sreg1 = D.55053;
  D.54946 = cfg->ip;
  tramp_ins->cil_code = D.54946;
  tramp_ins->data.op[0].p = klass;
  tramp_ins->data.op[1].src = 30B;
  tramp_ins->type = 3;
  D.55054 = alloc_dreg (cfg, 3);
  D.55055 = (int) D.55054;
  tramp_ins->dreg = D.55055;
  D.54949 = cfg->cbb;
  D.54950 = D.54949->last_ins;
  if (D.54950 != 0B) goto <D.55056>; else goto <D.55057>;
  <D.55056>:
  D.54949 = cfg->cbb;
  D.54950 = D.54949->last_ins;
  D.54950->next = tramp_ins;
  D.54949 = cfg->cbb;
  D.54950 = D.54949->last_ins;
  tramp_ins->prev = D.54950;
  D.54949 = cfg->cbb;
  D.54949->last_ins = tramp_ins;
  goto <D.55058>;
  <D.55057>:
  D.54949 = cfg->cbb;
  D.54949 = cfg->cbb;
  D.54949->last_ins = tramp_ins;
  D.54950 = D.54949->last_ins;
  D.54949->code = D.54950;
  <D.55058>:
  goto <D.55059>;
  <D.55045>:
  D.55060 = cfg->domain;
  trampoline = mono_create_delegate_trampoline (D.55060, klass);
  D.54941 = cfg->mempool;
  tramp_ins = mono_mempool_alloc (D.54941, 56);
  tramp_ins->data.op[1].const_val = 0;
  D.55046 = tramp_ins->data.op[1].const_val;
  tramp_ins->data.op[0].const_val = D.55046;
  tramp_ins->prev = 0B;
  D.55047 = tramp_ins->prev;
  tramp_ins->next = D.55047;
  tramp_ins->opcode = 362;
  tramp_ins->flags = 0;
  tramp_ins->type = 0;
  tramp_ins->dreg = -1;
  tramp_ins->sreg3 = -1;
  D.55052 = tramp_ins->sreg3;
  tramp_ins->sreg2 = D.55052;
  D.55053 = tramp_ins->sreg2;
  tramp_ins->sreg1 = D.55053;
  D.54946 = cfg->ip;
  tramp_ins->cil_code = D.54946;
  tramp_ins->data.op[0].p = trampoline;
  tramp_ins->type = 3;
  D.55061 = alloc_dreg (cfg, 3);
  D.55062 = (int) D.55061;
  tramp_ins->dreg = D.55062;
  D.54949 = cfg->cbb;
  D.54950 = D.54949->last_ins;
  if (D.54950 != 0B) goto <D.55063>; else goto <D.55064>;
  <D.55063>:
  D.54949 = cfg->cbb;
  D.54950 = D.54949->last_ins;
  D.54950->next = tramp_ins;
  D.54949 = cfg->cbb;
  D.54950 = D.54949->last_ins;
  tramp_ins->prev = D.54950;
  D.54949 = cfg->cbb;
  D.54949->last_ins = tramp_ins;
  goto <D.55065>;
  <D.55064>:
  D.54949 = cfg->cbb;
  D.54949 = cfg->cbb;
  D.54949->last_ins = tramp_ins;
  D.54950 = D.54949->last_ins;
  D.54949->code = D.54950;
  <D.55065>:
  <D.55059>:
  {
    struct MonoInst * inst;

    D.54941 = cfg->mempool;
    inst = mono_mempool_alloc (D.54941, 56);
    inst->data.op[1].const_val = 0;
    D.55066 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.55066;
    inst->prev = 0B;
    D.55067 = inst->prev;
    inst->next = D.55067;
    inst->opcode = 374;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.55068 = inst->sreg3;
    inst->sreg2 = D.55068;
    D.55069 = inst->sreg2;
    inst->sreg1 = D.55069;
    D.54946 = cfg->ip;
    inst->cil_code = D.54946;
    D.55070 = tramp_ins->dreg;
    inst->sreg1 = D.55070;
    D.54948 = obj->dreg;
    inst->dreg = D.54948;
    inst->data.op[0].const_val = 12;
    D.54949 = cfg->cbb;
    D.54950 = D.54949->last_ins;
    if (D.54950 != 0B) goto <D.55071>; else goto <D.55072>;
    <D.55071>:
    D.54949 = cfg->cbb;
    D.54950 = D.54949->last_ins;
    D.54950->next = inst;
    D.54949 = cfg->cbb;
    D.54950 = D.54949->last_ins;
    inst->prev = D.54950;
    D.54949 = cfg->cbb;
    D.54949->last_ins = inst;
    goto <D.55073>;
    <D.55072>:
    D.54949 = cfg->cbb;
    D.54949 = cfg->cbb;
    D.54949->last_ins = inst;
    D.54950 = D.54949->last_ins;
    D.54949->code = D.54950;
    <D.55073>:
  }
  D.54935 = obj;
  return D.54935;
}


mini_get_method (struct MonoCompile * cfg, struct MonoMethod * m, guint32 token, struct MonoClass * klass, struct MonoGenericContext * context)
{
  _Bool D.55075;
  _Bool D.55076;
  _Bool D.55077;
  struct MonoGenericSharingContext * D.55080;
  struct MonoClass * D.55083;
  struct MonoType * D.55084;
  int D.55085;
  struct MonoMethod * D.55088;
  struct MonoMethod * method;

  method = mini_get_method_allow_open (m, token, klass, context);
  D.55075 = method != 0B;
  D.55076 = cfg != 0B;
  D.55077 = D.55075 & D.55076;
  if (D.55077 != 0) goto <D.55078>; else goto <D.55079>;
  <D.55078>:
  D.55080 = cfg->generic_sharing_context;
  if (D.55080 == 0B) goto <D.55081>; else goto <D.55082>;
  <D.55081>:
  D.55083 = method->klass;
  D.55084 = &D.55083->byval_arg;
  D.55085 = mono_class_is_open_constructed_type (D.55084);
  if (D.55085 != 0) goto <D.55086>; else goto <D.55087>;
  <D.55086>:
  D.55088 = 0B;
  return D.55088;
  <D.55087>:
  <D.55082>:
  <D.55079>:
  D.55088 = method;
  return D.55088;
}


check_linkdemand (struct MonoCompile * cfg, struct MonoMethod * caller, struct MonoMethod * callee)
{
  struct MonoMethod * D.55090;
  unsigned char D.55093;
  gboolean D.55096;
  struct MonoDomain * D.55097;
  struct MonoMemPool * D.55102;
  void * D.55103;
  struct MonoInst * D.55104;
  int D.55105;
  struct MonoInst * D.55106;
  int D.55107;
  int D.55108;
  const unsigned char * D.55109;
  unsigned int D.55110;
  int D.55111;
  void * D.55112;
  struct MonoInst * D.55113;
  int D.55114;
  struct MonoInst * D.55115;
  guint16 iftmp.534;
  unsigned char D.55117;
  unsigned char D.55118;
  int D.55122;
  int D.55123;
  unsigned int D.55124;
  int D.55125;
  struct MonoMethod * D.55126;
  unsigned int D.55128;
  guint32 result;

  D.55090 = cfg->method;
  if (D.55090 != caller) goto <D.55091>; else goto <D.55092>;
  <D.55091>:
  D.55093 = mono_method_has_declsec (callee);
  if (D.55093 != 0) goto <D.55094>; else goto <D.55095>;
  <D.55094>:
  D.55096 = 1;
  return D.55096;
  <D.55095>:
  <D.55092>:
  D.55097 = cfg->domain;
  result = mono_declsec_linkdemand (D.55097, caller, callee);
  if (result == 0) goto <D.55098>; else goto <D.55099>;
  <D.55098>:
  D.55096 = 0;
  return D.55096;
  <D.55099>:
  if (result == 4) goto <D.55100>; else goto <D.55101>;
  <D.55100>:
  {
    struct MonoSecurityManager * secman;
    struct MonoInst * args[2];

    try
      {
        secman = mono_security_manager_get_methods ();
        D.55102 = cfg->mempool;
        D.55103 = mono_mempool_alloc (D.55102, 56);
        args[0] = D.55103;
        D.55104 = args[0];
        D.55104 = args[0];
        D.55104->data.op[1].const_val = 0;
        D.55105 = D.55104->data.op[1].const_val;
        D.55104->data.op[0].const_val = D.55105;
        D.55104 = args[0];
        D.55104 = args[0];
        D.55104->prev = 0B;
        D.55106 = D.55104->prev;
        D.55104->next = D.55106;
        D.55104 = args[0];
        D.55104->opcode = 362;
        D.55104 = args[0];
        D.55104->flags = 0;
        D.55104 = args[0];
        D.55104->type = 0;
        D.55104 = args[0];
        D.55104->dreg = -1;
        D.55104 = args[0];
        D.55104 = args[0];
        D.55104 = args[0];
        D.55104->sreg3 = -1;
        D.55107 = D.55104->sreg3;
        D.55104->sreg2 = D.55107;
        D.55108 = D.55104->sreg2;
        D.55104->sreg1 = D.55108;
        D.55104 = args[0];
        D.55109 = cfg->ip;
        D.55104->cil_code = D.55109;
        D.55104 = args[0];
        D.55104->data.op[0].const_val = 4;
        D.55104 = args[0];
        D.55104->type = 1;
        D.55104 = args[0];
        D.55110 = alloc_dreg (cfg, 1);
        D.55111 = (int) D.55110;
        D.55104->dreg = D.55111;
        D.55102 = cfg->mempool;
        D.55112 = mono_mempool_alloc (D.55102, 56);
        args[1] = D.55112;
        D.55113 = args[1];
        D.55113 = args[1];
        D.55113->data.op[1].const_val = 0;
        D.55114 = D.55113->data.op[1].const_val;
        D.55113->data.op[0].const_val = D.55114;
        D.55113 = args[1];
        D.55113 = args[1];
        D.55113->prev = 0B;
        D.55115 = D.55113->prev;
        D.55113->next = D.55115;
        D.55113 = args[1];
        D.55117 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.55118 = D.55117 & 64;
        if (D.55118 != 0) goto <D.55119>; else goto <D.55120>;
        <D.55119>:
        iftmp.534 = 732;
        goto <D.55121>;
        <D.55120>:
        iftmp.534 = 362;
        <D.55121>:
        D.55113->opcode = iftmp.534;
        D.55113 = args[1];
        D.55113->flags = 0;
        D.55113 = args[1];
        D.55113->type = 0;
        D.55113 = args[1];
        D.55113->dreg = -1;
        D.55113 = args[1];
        D.55113 = args[1];
        D.55113 = args[1];
        D.55113->sreg3 = -1;
        D.55122 = D.55113->sreg3;
        D.55113->sreg2 = D.55122;
        D.55123 = D.55113->sreg2;
        D.55113->sreg1 = D.55123;
        D.55113 = args[1];
        D.55109 = cfg->ip;
        D.55113->cil_code = D.55109;
        D.55113 = args[1];
        D.55113->data.op[0].p = caller;
        D.55113 = args[1];
        D.55113->data.op[1].src = 6B;
        D.55113 = args[1];
        D.55113->type = 3;
        D.55113 = args[1];
        D.55124 = alloc_dreg (cfg, 3);
        D.55125 = (int) D.55124;
        D.55113->dreg = D.55125;
        D.55126 = secman->linkdemandsecurityexception;
        mono_emit_method_call (cfg, D.55126, &args, 0B);
      }
    finally
      {
        args = {CLOBBER};
      }
  }
  goto <D.55127>;
  <D.55101>:
  D.55128 = cfg->exception_type;
  if (D.55128 == 0) goto <D.55129>; else goto <D.55130>;
  <D.55129>:
  mono_cfg_set_exception (cfg, 1);
  cfg->exception_data = result;
  D.55096 = 1;
  return D.55096;
  <D.55130>:
  <D.55127>:
  D.55096 = 0;
  return D.55096;
}


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.55132;
  struct MonoException * ex;

  D.55132 = get_original_method (caller);
  ex = mono_security_core_clr_is_call_allowed (D.55132, callee);
  if (ex != 0B) goto <D.55133>; else goto <D.55134>;
  <D.55133>:
  emit_throw_exception (cfg, ex);
  <D.55134>:
}


emit_optimized_ldloca_ir (struct MonoCompile * cfg, unsigned char * ip, unsigned char * end, int size)
{
  unsigned char * D.55137;
  unsigned char D.55138;
  const unsigned char * D.55140;
  short unsigned int D.55141;
  unsigned char * D.55142;
  unsigned char D.55145;
  struct MonoBasicBlock * D.55150;
  const guint8 * D.55151;
  int D.55152;
  unsigned int D.55155;
  struct MonoMethod * D.55156;
  unsigned int token.535;
  struct MonoGenericContext * D.55158;
  unsigned char D.55162;
  struct MonoDebugOptions * D.55163;
  int D.55164;
  struct MonoType * D.55166;
  unsigned char * D.55167;
  int local;
  int token;
  struct MonoClass * klass;
  struct MonoType * type;
  void load_error = <<< error >>>;

  if (size == 1) goto <D.55135>; else goto <D.55136>;
  <D.55135>:
  D.55137 = ip + 1;
  D.55138 = *D.55137;
  local = (int) D.55138;
  ip = ip + 2;
  goto <D.55139>;
  <D.55136>:
  D.55140 = ip + 2;
  D.55141 = mono_read16 (D.55140);
  local = (int) D.55141;
  ip = ip + 4;
  <D.55139>:
  D.55142 = ip + 6;
  if (D.55142 < end) goto <D.55143>; else goto <D.55144>;
  <D.55143>:
  D.55145 = *ip;
  if (D.55145 == 254) goto <D.55146>; else goto <D.55147>;
  <D.55146>:
  D.55137 = ip + 1;
  D.55138 = *D.55137;
  if (D.55138 == 21) goto <D.55148>; else goto <D.55149>;
  <D.55148>:
  D.55150 = cfg->cbb;
  D.55151 = ip + 1;
  D.55152 = ip_in_bb (cfg, D.55150, D.55151);
  if (D.55152 != 0) goto <D.55153>; else goto <D.55154>;
  <D.55153>:
  D.55140 = ip + 2;
  D.55155 = mono_read32 (D.55140);
  token = (int) D.55155;
  D.55156 = cfg->current_method;
  token.535 = (unsigned int) token;
  D.55158 = cfg->generic_context;
  klass = mini_get_class (D.55156, token.535, D.55158);
  if (klass == 0B) goto <D.55159>; else goto <D.55161>;
  <D.55161>:
  D.55162 = klass->exception_type;
  if (D.55162 != 0) goto <D.55159>; else goto <D.55160>;
  <D.55159>:
  cfg->exception_ptr = klass;
  D.55163 = mini_get_debug_options ();
  D.55164 = D.55163->break_on_unverified;
  if (D.55164 != 0) goto <D.55165>; else goto load_error;
  <D.55165>:
  raise (5);
  <D.55160>:
  D.55166 = &klass->byval_arg;
  type = mini_replace_type (D.55166);
  emit_init_local (cfg, local, type);
  D.55167 = ip + 6;
  return D.55167;
  <D.55154>:
  <D.55149>:
  <D.55147>:
  <D.55144>:
  load_error:
  D.55167 = 0B;
  return D.55167;
}


target_type_is_incompatible (struct MonoCompile * cfg, struct MonoType * target, struct MonoInst * arg)
{
  unsigned char D.55169;
  unsigned char D.55170;
  unsigned char D.55173;
  int D.55176;
  struct MonoClass * D.55177;
  struct MonoClass * D.55178;
  _Bool D.55179;
  unsigned char D.55182;
  int D.55183;
  unsigned char D.55184;
  _Bool D.55185;
  _Bool D.55186;
  _Bool D.55187;
  unsigned char D.55190;
  _Bool D.55191;
  _Bool D.55192;
  _Bool D.55193;
  unsigned char D.55198;
  _Bool D.55199;
  _Bool D.55200;
  _Bool D.55201;
  int D.55220;
  struct MonoGenericSharingContext * D.55229;
  _Bool D.55230;
  long int D.55231;
  long int D.55232;
  int D.55235;
  struct MonoType * simple_type;
  struct MonoClass * klass;

  target = mini_replace_type (target);
  D.55169 = BIT_FIELD_REF <*target, 8, 56>;
  D.55170 = D.55169 & 64;
  if (D.55170 != 0) goto <D.55171>; else goto <D.55172>;
  <D.55171>:
  D.55173 = arg->type;
  if (D.55173 == 5) goto <D.55174>; else goto <D.55175>;
  <D.55174>:
  D.55177 = arg->klass;
  D.55178 = mono_class_from_mono_type (target);
  D.55179 = D.55177 != D.55178;
  D.55176 = (int) D.55179;
  return D.55176;
  <D.55175>:
  D.55173 = arg->type;
  if (D.55173 == 3) goto <D.55180>; else goto <D.55181>;
  <D.55180>:
  D.55176 = 0;
  return D.55176;
  <D.55181>:
  D.55176 = 1;
  return D.55176;
  <D.55172>:
  simple_type = mono_type_get_underlying_type (target);
  D.55182 = simple_type->type;
  D.55183 = (int) D.55182;
  switch (D.55183) <default: <D.27903>, case 1: <D.27876>, case 2: <D.27879>, case 3: <D.27882>, case 4: <D.27877>, case 5: <D.27878>, case 6: <D.27880>, case 7: <D.27881>, case 8: <D.27883>, case 9: <D.27884>, case 10: <D.27894>, case 11: <D.27895>, case 12: <D.27896>, case 13: <D.27897>, case 14: <D.27890>, case 15: <D.27885>, case 17: <D.27898>, case 18: <D.27889>, case 19: <D.27901>, case 20: <D.27893>, case 21: <D.27900>, case 22: <D.27899>, case 24: <D.27886>, case 25: <D.27887>, case 27: <D.27888>, case 28: <D.27891>, case 29: <D.27892>, case 30: <D.27902>>
  <D.27876>:
  D.55176 = 1;
  return D.55176;
  <D.27877>:
  <D.27878>:
  <D.27879>:
  <D.27880>:
  <D.27881>:
  <D.27882>:
  <D.27883>:
  <D.27884>:
  D.55184 = arg->type;
  D.55185 = D.55184 != 1;
  D.55186 = D.55184 != 3;
  D.55187 = D.55185 & D.55186;
  if (D.55187 != 0) goto <D.55188>; else goto <D.55189>;
  <D.55188>:
  D.55176 = 1;
  return D.55176;
  <D.55189>:
  D.55176 = 0;
  return D.55176;
  <D.27885>:
  D.55190 = arg->type;
  D.55191 = D.55190 != 1;
  D.55192 = D.55190 != 3;
  D.55193 = D.55191 & D.55192;
  if (D.55193 != 0) goto <D.55194>; else goto <D.55195>;
  <D.55194>:
  D.55173 = arg->type;
  if (D.55173 != 5) goto <D.55196>; else goto <D.55197>;
  <D.55196>:
  D.55176 = 1;
  return D.55176;
  <D.55197>:
  <D.55195>:
  D.55176 = 0;
  return D.55176;
  <D.27886>:
  <D.27887>:
  <D.27888>:
  D.55198 = arg->type;
  D.55199 = D.55198 != 1;
  D.55200 = D.55198 != 3;
  D.55201 = D.55199 & D.55200;
  if (D.55201 != 0) goto <D.55202>; else goto <D.55203>;
  <D.55202>:
  D.55173 = arg->type;
  if (D.55173 != 5) goto <D.55204>; else goto <D.55205>;
  <D.55204>:
  D.55176 = 1;
  return D.55176;
  <D.55205>:
  <D.55203>:
  D.55176 = 0;
  return D.55176;
  <D.27889>:
  <D.27890>:
  <D.27891>:
  <D.27892>:
  <D.27893>:
  D.55173 = arg->type;
  if (D.55173 != 6) goto <D.55206>; else goto <D.55207>;
  <D.55206>:
  D.55176 = 1;
  return D.55176;
  <D.55207>:
  D.55176 = 0;
  return D.55176;
  <D.27894>:
  <D.27895>:
  D.55173 = arg->type;
  if (D.55173 != 2) goto <D.55208>; else goto <D.55209>;
  <D.55208>:
  D.55176 = 1;
  return D.55176;
  <D.55209>:
  D.55176 = 0;
  return D.55176;
  <D.27896>:
  <D.27897>:
  D.55173 = arg->type;
  if (D.55173 != 4) goto <D.55210>; else goto <D.55211>;
  <D.55210>:
  D.55176 = 1;
  return D.55176;
  <D.55211>:
  D.55176 = 0;
  return D.55176;
  <D.27898>:
  D.55173 = arg->type;
  if (D.55173 != 7) goto <D.55212>; else goto <D.55213>;
  <D.55212>:
  D.55176 = 1;
  return D.55176;
  <D.55213>:
  klass = mono_class_from_mono_type (simple_type);
  D.55177 = arg->klass;
  if (D.55177 != klass) goto <D.55214>; else goto <D.55215>;
  <D.55214>:
  D.55176 = 1;
  return D.55176;
  <D.55215>:
  D.55176 = 0;
  return D.55176;
  <D.27899>:
  D.55173 = arg->type;
  if (D.55173 != 7) goto <D.55216>; else goto <D.55217>;
  <D.55216>:
  D.55176 = 1;
  return D.55176;
  <D.55217>:
  klass = mono_class_from_mono_type (simple_type);
  D.55177 = arg->klass;
  if (D.55177 != klass) goto <D.55218>; else goto <D.55219>;
  <D.55218>:
  D.55176 = 1;
  return D.55176;
  <D.55219>:
  D.55176 = 0;
  return D.55176;
  <D.27900>:
  D.55220 = mono_type_generic_inst_is_valuetype (simple_type);
  if (D.55220 != 0) goto <D.55221>; else goto <D.55222>;
  <D.55221>:
  D.55173 = arg->type;
  if (D.55173 != 7) goto <D.55223>; else goto <D.55224>;
  <D.55223>:
  D.55176 = 1;
  return D.55176;
  <D.55224>:
  klass = mono_class_from_mono_type (simple_type);
  D.55177 = arg->klass;
  if (D.55177 != klass) goto <D.55225>; else goto <D.55226>;
  <D.55225>:
  D.55176 = 1;
  return D.55176;
  <D.55226>:
  D.55176 = 0;
  return D.55176;
  <D.55222>:
  D.55173 = arg->type;
  if (D.55173 != 6) goto <D.55227>; else goto <D.55228>;
  <D.55227>:
  D.55176 = 1;
  return D.55176;
  <D.55228>:
  D.55176 = 0;
  return D.55176;
  <D.27901>:
  <D.27902>:
  D.55229 = cfg->generic_sharing_context;
  D.55230 = D.55229 == 0B;
  D.55231 = (long int) D.55230;
  D.55232 = __builtin_expect (D.55231, 0);
  if (D.55232 != 0) goto <D.55233>; else goto <D.55234>;
  <D.55233>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2160, "cfg->generic_sharing_context");
  <D.55234>:
  D.55235 = mini_type_var_is_vt (cfg, simple_type);
  if (D.55235 != 0) goto <D.55236>; else goto <D.55237>;
  <D.55236>:
  D.55173 = arg->type;
  if (D.55173 != 7) goto <D.55238>; else goto <D.55239>;
  <D.55238>:
  D.55176 = 1;
  return D.55176;
  <D.55239>:
  goto <D.55240>;
  <D.55237>:
  D.55173 = arg->type;
  if (D.55173 != 6) goto <D.55241>; else goto <D.55242>;
  <D.55241>:
  D.55176 = 1;
  return D.55176;
  <D.55242>:
  <D.55240>:
  D.55176 = 0;
  return D.55176;
  <D.27903>:
  D.55182 = simple_type->type;
  D.55183 = (int) D.55182;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in target_type_is_incompatible", D.55183);
  <D.27904>:
  goto <D.27904>;
  D.55176 = 1;
  return D.55176;
}


emit_stloc_ir (struct MonoCompile * cfg, struct MonoInst * * sp, struct MonoMethodHeader * header, int n)
{
  struct MonoType * D.55244;
  struct MonoBasicBlock * D.55248;
  struct MonoInst * D.55249;
  struct MonoInst * D.55250;
  short unsigned int D.55252;
  short unsigned int D.55253;
  struct MonoInst * * D.55255;
  unsigned int n.536;
  unsigned int D.55257;
  struct MonoInst * * D.55258;
  struct MonoInst * D.55259;
  int D.55260;
  struct MonoMemPool * D.55261;
  int D.55262;
  struct MonoInst * D.55263;
  int D.55264;
  int D.55265;
  const unsigned char * D.55266;
  struct MonoType * D.55267;
  unsigned int D.55268;
  short unsigned int D.55269;
  struct MonoClass * D.55270;
  int D.55271;
  short unsigned int D.55272;
  struct MonoClass * D.55275;
  struct MonoInst * ins;
  guint32 opcode;

  D.55244 = header->locals[n];
  opcode = mono_type_to_regmove (cfg, D.55244);
  if (opcode == 424) goto <D.55247>; else goto <D.55245>;
  <D.55247>:
  D.55248 = cfg->cbb;
  D.55249 = D.55248->last_ins;
  D.55250 = *sp;
  if (D.55249 == D.55250) goto <D.55251>; else goto <D.55245>;
  <D.55251>:
  D.55250 = *sp;
  D.55252 = D.55250->opcode;
  D.55253 = D.55252 + 65174;
  if (D.55253 <= 1) goto <D.55254>; else goto <D.55245>;
  <D.55254>:
  D.55250 = *sp;
  D.55255 = cfg->locals;
  n.536 = (unsigned int) n;
  D.55257 = n.536 * 4;
  D.55258 = D.55255 + D.55257;
  D.55259 = *D.55258;
  D.55260 = D.55259->dreg;
  D.55250->dreg = D.55260;
  goto <D.55246>;
  <D.55245>:
  D.55261 = cfg->mempool;
  ins = mono_mempool_alloc (D.55261, 56);
  ins->data.op[1].const_val = 0;
  D.55262 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.55262;
  ins->prev = 0B;
  D.55263 = ins->prev;
  ins->next = D.55263;
  ins->opcode = 424;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.55264 = ins->sreg3;
  ins->sreg2 = D.55264;
  D.55265 = ins->sreg2;
  ins->sreg1 = D.55265;
  D.55266 = cfg->ip;
  ins->cil_code = D.55266;
  D.55255 = cfg->locals;
  n.536 = (unsigned int) n;
  D.55257 = n.536 * 4;
  D.55258 = D.55255 + D.55257;
  D.55259 = *D.55258;
  D.55267 = D.55259->data.op[1].vtype;
  D.55268 = mono_type_to_regmove (cfg, D.55267);
  D.55269 = (short unsigned int) D.55268;
  ins->opcode = D.55269;
  D.55255 = cfg->locals;
  n.536 = (unsigned int) n;
  D.55257 = n.536 * 4;
  D.55258 = D.55255 + D.55257;
  D.55259 = *D.55258;
  D.55270 = D.55259->klass;
  ins->klass = D.55270;
  D.55250 = *sp;
  D.55271 = D.55250->dreg;
  ins->sreg1 = D.55271;
  D.55255 = cfg->locals;
  n.536 = (unsigned int) n;
  D.55257 = n.536 * 4;
  D.55258 = D.55255 + D.55257;
  D.55259 = *D.55258;
  D.55260 = D.55259->dreg;
  ins->dreg = D.55260;
  D.55272 = ins->opcode;
  if (D.55272 == 427) goto <D.55273>; else goto <D.55274>;
  <D.55273>:
  D.55255 = cfg->locals;
  n.536 = (unsigned int) n;
  D.55257 = n.536 * 4;
  D.55258 = D.55255 + D.55257;
  D.55259 = *D.55258;
  D.55267 = D.55259->data.op[1].vtype;
  D.55275 = mono_class_from_mono_type (D.55267);
  ins->klass = D.55275;
  <D.55274>:
  D.55248 = cfg->cbb;
  D.55249 = D.55248->last_ins;
  if (D.55249 != 0B) goto <D.55276>; else goto <D.55277>;
  <D.55276>:
  D.55248 = cfg->cbb;
  D.55249 = D.55248->last_ins;
  D.55249->next = ins;
  D.55248 = cfg->cbb;
  D.55249 = D.55248->last_ins;
  ins->prev = D.55249;
  D.55248 = cfg->cbb;
  D.55248->last_ins = ins;
  goto <D.55278>;
  <D.55277>:
  D.55248 = cfg->cbb;
  D.55248 = cfg->cbb;
  D.55248->last_ins = ins;
  D.55249 = D.55248->last_ins;
  D.55248->code = D.55249;
  <D.55278>:
  <D.55246>:
}


generic_class_is_reference_type (struct MonoCompile * cfg, struct MonoClass * klass)
{
  gboolean D.55279;
  struct MonoType * D.55280;

  D.55280 = &klass->byval_arg;
  D.55279 = mini_type_is_reference (cfg, D.55280);
  return D.55279;
}


mini_get_class (struct MonoMethod * method, guint32 token, struct MonoGenericContext * context)
{
  unsigned char D.55282;
  unsigned char D.55283;
  struct MonoClass * D.55289;
  struct MonoImage * D.55290;
  struct MonoClass * D.55293;
  struct MonoClass * klass;

  D.55282 = BIT_FIELD_REF <*method, 8, 160>;
  D.55283 = D.55282 & 124;
  if (D.55283 != 0) goto <D.55284>; else goto <D.55285>;
  <D.55284>:
  klass = mono_method_get_wrapper_data (method, token);
  if (context != 0B) goto <D.55286>; else goto <D.55287>;
  <D.55286>:
  klass = mono_class_inflate_generic_class (klass, context);
  <D.55287>:
  goto <D.55288>;
  <D.55285>:
  D.55289 = method->klass;
  D.55290 = D.55289->image;
  klass = mono_class_get_full (D.55290, token, context);
  <D.55288>:
  if (klass != 0B) goto <D.55291>; else goto <D.55292>;
  <D.55291>:
  mono_class_init (klass);
  <D.55292>:
  D.55293 = klass;
  return D.55293;
}


handle_gsharedvt_ldaddr (struct MonoCompile * cfg)
{
  struct MonoMemPool * D.55295;
  int D.55296;
  struct MonoInst * D.55297;
  int D.55298;
  int D.55299;
  const unsigned char * D.55300;
  struct MonoInst * D.55301;
  int D.55302;
  struct MonoBasicBlock * D.55303;
  struct MonoInst * D.55304;
  struct MonoInst * D.55308;
  int D.55309;
  struct MonoInst * use;

  D.55295 = cfg->mempool;
  use = mono_mempool_alloc (D.55295, 56);
  use->data.op[1].const_val = 0;
  D.55296 = use->data.op[1].const_val;
  use->data.op[0].const_val = D.55296;
  use->prev = 0B;
  D.55297 = use->prev;
  use->next = D.55297;
  use->opcode = 796;
  use->flags = 0;
  use->type = 0;
  use->dreg = -1;
  use->sreg3 = -1;
  D.55298 = use->sreg3;
  use->sreg2 = D.55298;
  D.55299 = use->sreg2;
  use->sreg1 = D.55299;
  D.55300 = cfg->ip;
  use->cil_code = D.55300;
  D.55301 = cfg->gsharedvt_info_var;
  D.55302 = D.55301->dreg;
  use->sreg1 = D.55302;
  D.55303 = cfg->cbb;
  D.55304 = D.55303->last_ins;
  if (D.55304 != 0B) goto <D.55305>; else goto <D.55306>;
  <D.55305>:
  D.55303 = cfg->cbb;
  D.55304 = D.55303->last_ins;
  D.55304->next = use;
  D.55303 = cfg->cbb;
  D.55304 = D.55303->last_ins;
  use->prev = D.55304;
  D.55303 = cfg->cbb;
  D.55303->last_ins = use;
  goto <D.55307>;
  <D.55306>:
  D.55303 = cfg->cbb;
  D.55303 = cfg->cbb;
  D.55303->last_ins = use;
  D.55304 = D.55303->last_ins;
  D.55303->code = D.55304;
  <D.55307>:
  D.55295 = cfg->mempool;
  use = mono_mempool_alloc (D.55295, 56);
  use->data.op[1].const_val = 0;
  D.55296 = use->data.op[1].const_val;
  use->data.op[0].const_val = D.55296;
  use->prev = 0B;
  D.55297 = use->prev;
  use->next = D.55297;
  use->opcode = 796;
  use->flags = 0;
  use->type = 0;
  use->dreg = -1;
  use->sreg3 = -1;
  D.55298 = use->sreg3;
  use->sreg2 = D.55298;
  D.55299 = use->sreg2;
  use->sreg1 = D.55299;
  D.55300 = cfg->ip;
  use->cil_code = D.55300;
  D.55308 = cfg->gsharedvt_locals_var;
  D.55309 = D.55308->dreg;
  use->sreg1 = D.55309;
  D.55303 = cfg->cbb;
  D.55304 = D.55303->last_ins;
  if (D.55304 != 0B) goto <D.55310>; else goto <D.55311>;
  <D.55310>:
  D.55303 = cfg->cbb;
  D.55304 = D.55303->last_ins;
  D.55304->next = use;
  D.55303 = cfg->cbb;
  D.55304 = D.55303->last_ins;
  use->prev = D.55304;
  D.55303 = cfg->cbb;
  D.55303->last_ins = use;
  goto <D.55312>;
  <D.55311>:
  D.55303 = cfg->cbb;
  D.55303 = cfg->cbb;
  D.55303->last_ins = use;
  D.55304 = D.55303->last_ins;
  D.55303->code = D.55304;
  <D.55312>:
}


mono_emit_load_got_addr (struct MonoCompile * cfg)
{
  struct MonoInst * D.55315;
  unsigned char D.55317;
  unsigned char D.55318;
  struct MonoMemPool * D.55319;
  int D.55320;
  struct MonoInst * D.55321;
  int D.55322;
  int D.55323;
  const unsigned char * D.55324;
  struct MonoMethodHeader * D.55325;
  const unsigned char * D.55326;
  int D.55327;
  struct MonoBasicBlock * D.55328;
  struct MonoInst * D.55329;
  struct MonoInst * D.55333;
  int D.55337;
  struct MonoInst * D.55338;
  int D.55339;
  int D.55340;
  struct MonoBasicBlock * D.55341;
  struct MonoInst * D.55342;
  struct MonoInst * getaddr;
  struct MonoInst * dummy_use;

  D.55315 = cfg->got_var;
  if (D.55315 == 0B) goto <D.55313>; else goto <D.55316>;
  <D.55316>:
  D.55317 = BIT_FIELD_REF <*cfg, 8, 3400>;
  D.55318 = D.55317 & 2;
  if (D.55318 != 0) goto <D.55313>; else goto <D.55314>;
  <D.55313>:
  return;
  <D.55314>:
  D.55319 = cfg->mempool;
  getaddr = mono_mempool_alloc (D.55319, 56);
  getaddr->data.op[1].const_val = 0;
  D.55320 = getaddr->data.op[1].const_val;
  getaddr->data.op[0].const_val = D.55320;
  getaddr->prev = 0B;
  D.55321 = getaddr->prev;
  getaddr->next = D.55321;
  getaddr->opcode = 795;
  getaddr->flags = 0;
  getaddr->type = 0;
  getaddr->dreg = -1;
  getaddr->sreg3 = -1;
  D.55322 = getaddr->sreg3;
  getaddr->sreg2 = D.55322;
  D.55323 = getaddr->sreg2;
  getaddr->sreg1 = D.55323;
  D.55324 = cfg->ip;
  getaddr->cil_code = D.55324;
  D.55325 = cfg->header;
  D.55326 = D.55325->code;
  getaddr->cil_code = D.55326;
  D.55315 = cfg->got_var;
  D.55327 = D.55315->dreg;
  getaddr->dreg = D.55327;
  D.55328 = cfg->bb_entry;
  D.55329 = D.55328->code;
  if (D.55329 != 0B) goto <D.55330>; else goto <D.55331>;
  <D.55330>:
  D.55328 = cfg->bb_entry;
  D.55329 = D.55328->code;
  getaddr->next = D.55329;
  D.55328 = cfg->bb_entry;
  D.55328->code = getaddr;
  goto <D.55332>;
  <D.55331>:
  D.55328 = cfg->bb_entry;
  D.55333 = D.55328->last_ins;
  if (D.55333 != 0B) goto <D.55334>; else goto <D.55335>;
  <D.55334>:
  D.55328 = cfg->bb_entry;
  D.55333 = D.55328->last_ins;
  D.55333->next = getaddr;
  D.55328 = cfg->bb_entry;
  D.55333 = D.55328->last_ins;
  getaddr->prev = D.55333;
  D.55328 = cfg->bb_entry;
  D.55328->last_ins = getaddr;
  goto <D.55336>;
  <D.55335>:
  D.55328 = cfg->bb_entry;
  D.55328 = cfg->bb_entry;
  D.55328->last_ins = getaddr;
  D.55333 = D.55328->last_ins;
  D.55328->code = D.55333;
  <D.55336>:
  <D.55332>:
  cfg->got_var_allocated = 1;
  D.55319 = cfg->mempool;
  dummy_use = mono_mempool_alloc (D.55319, 56);
  dummy_use->data.op[1].const_val = 0;
  D.55337 = dummy_use->data.op[1].const_val;
  dummy_use->data.op[0].const_val = D.55337;
  dummy_use->prev = 0B;
  D.55338 = dummy_use->prev;
  dummy_use->next = D.55338;
  dummy_use->opcode = 796;
  dummy_use->flags = 0;
  dummy_use->type = 0;
  dummy_use->dreg = -1;
  dummy_use->sreg3 = -1;
  D.55339 = dummy_use->sreg3;
  dummy_use->sreg2 = D.55339;
  D.55340 = dummy_use->sreg2;
  dummy_use->sreg1 = D.55340;
  D.55324 = cfg->ip;
  dummy_use->cil_code = D.55324;
  D.55315 = cfg->got_var;
  D.55327 = D.55315->dreg;
  dummy_use->sreg1 = D.55327;
  D.55341 = cfg->bb_exit;
  D.55342 = D.55341->last_ins;
  if (D.55342 != 0B) goto <D.55343>; else goto <D.55344>;
  <D.55343>:
  D.55341 = cfg->bb_exit;
  D.55342 = D.55341->last_ins;
  D.55342->next = dummy_use;
  D.55341 = cfg->bb_exit;
  D.55342 = D.55341->last_ins;
  dummy_use->prev = D.55342;
  D.55341 = cfg->bb_exit;
  D.55341->last_ins = dummy_use;
  goto <D.55345>;
  <D.55344>:
  D.55341 = cfg->bb_exit;
  D.55341 = cfg->bb_exit;
  D.55341->last_ins = dummy_use;
  D.55342 = D.55341->last_ins;
  D.55341->code = D.55342;
  <D.55345>:
}


emit_init_local (struct MonoCompile * cfg, int local, struct MonoType * type)
{
  struct MonoInst * * D.55347;
  unsigned int local.537;
  unsigned int D.55349;
  struct MonoInst * * D.55350;
  unsigned char D.55353;
  <unnamed type> D.55354;
  unsigned int D.55355;
  struct MonoMemPool * D.55356;
  int D.55357;
  struct MonoInst * D.55358;
  int D.55359;
  int D.55360;
  const unsigned char * D.55361;
  struct MonoInst * D.55362;
  struct MonoType * D.55363;
  unsigned int D.55364;
  short unsigned int D.55365;
  struct MonoClass * D.55366;
  struct MonoBasicBlock * D.55367;
  struct MonoInst * D.55368;
  int D.55369;
  int D.55370;
  short unsigned int D.55371;
  struct MonoClass * D.55374;
  int D.55379;
  struct MonoInst * var;

  D.55347 = cfg->locals;
  local.537 = (unsigned int) local;
  D.55349 = local.537 * 4;
  D.55350 = D.55347 + D.55349;
  var = *D.55350;
  if (0 != 0) goto <D.55351>; else goto <D.55352>;
  <D.55351>:
  {
    struct MonoInst * store;
    int reg;

    D.55353 = var->type;
    D.55354 = (<unnamed type>) D.55353;
    D.55355 = alloc_dreg (cfg, D.55354);
    reg = (int) D.55355;
    emit_init_rvar (cfg, reg, type);
    D.55356 = cfg->mempool;
    store = mono_mempool_alloc (D.55356, 56);
    store->data.op[1].const_val = 0;
    D.55357 = store->data.op[1].const_val;
    store->data.op[0].const_val = D.55357;
    store->prev = 0B;
    D.55358 = store->prev;
    store->next = D.55358;
    store->opcode = 424;
    store->flags = 0;
    store->type = 0;
    store->dreg = -1;
    store->sreg3 = -1;
    D.55359 = store->sreg3;
    store->sreg2 = D.55359;
    D.55360 = store->sreg2;
    store->sreg1 = D.55360;
    D.55361 = cfg->ip;
    store->cil_code = D.55361;
    D.55347 = cfg->locals;
    local.537 = (unsigned int) local;
    D.55349 = local.537 * 4;
    D.55350 = D.55347 + D.55349;
    D.55362 = *D.55350;
    D.55363 = D.55362->data.op[1].vtype;
    D.55364 = mono_type_to_regmove (cfg, D.55363);
    D.55365 = (short unsigned int) D.55364;
    store->opcode = D.55365;
    D.55347 = cfg->locals;
    local.537 = (unsigned int) local;
    D.55349 = local.537 * 4;
    D.55350 = D.55347 + D.55349;
    D.55362 = *D.55350;
    D.55366 = D.55362->klass;
    store->klass = D.55366;
    D.55367 = cfg->cbb;
    D.55368 = D.55367->last_ins;
    D.55369 = D.55368->dreg;
    store->sreg1 = D.55369;
    D.55347 = cfg->locals;
    local.537 = (unsigned int) local;
    D.55349 = local.537 * 4;
    D.55350 = D.55347 + D.55349;
    D.55362 = *D.55350;
    D.55370 = D.55362->dreg;
    store->dreg = D.55370;
    D.55371 = store->opcode;
    if (D.55371 == 427) goto <D.55372>; else goto <D.55373>;
    <D.55372>:
    D.55347 = cfg->locals;
    local.537 = (unsigned int) local;
    D.55349 = local.537 * 4;
    D.55350 = D.55347 + D.55349;
    D.55362 = *D.55350;
    D.55363 = D.55362->data.op[1].vtype;
    D.55374 = mono_class_from_mono_type (D.55363);
    store->klass = D.55374;
    <D.55373>:
    D.55367 = cfg->cbb;
    D.55368 = D.55367->last_ins;
    if (D.55368 != 0B) goto <D.55375>; else goto <D.55376>;
    <D.55375>:
    D.55367 = cfg->cbb;
    D.55368 = D.55367->last_ins;
    D.55368->next = store;
    D.55367 = cfg->cbb;
    D.55368 = D.55367->last_ins;
    store->prev = D.55368;
    D.55367 = cfg->cbb;
    D.55367->last_ins = store;
    goto <D.55377>;
    <D.55376>:
    D.55367 = cfg->cbb;
    D.55367 = cfg->cbb;
    D.55367->last_ins = store;
    D.55368 = D.55367->last_ins;
    D.55367->code = D.55368;
    <D.55377>:
  }
  goto <D.55378>;
  <D.55352>:
  D.55379 = var->dreg;
  emit_init_rvar (cfg, D.55379, type);
  <D.55378>:
}


emit_push_lmf (struct MonoCompile * cfg)
{
  unsigned char D.55380;
  unsigned char D.55381;
  unsigned char D.55386;
  int D.55388;
  _Bool D.55390;
  long int D.55391;
  long int D.55392;
  struct MonoBasicBlock * D.55395;
  struct MonoInst * D.55396;
  struct MonoMemPool * D.55400;
  int D.55401;
  struct MonoInst * D.55402;
  int D.55403;
  int D.55404;
  const unsigned char * D.55405;
  struct MonoInst * D.55406;
  unsigned char D.55407;
  unsigned char D.55408;
  struct MonoClass * D.55409;
  unsigned int D.55410;
  int D.55411;
  int D.55412;
  _Bool D.55413;
  long int D.55414;
  long int D.55415;
  struct MonoType * D.55418;
  int D.55419;
  _Bool iftmp.538;
  int D.55423;
  unsigned char D.55426;
  _Bool D.55427;
  _Bool D.55428;
  _Bool D.55429;
  int D.55430;
  unsigned char D.55432;
  struct MonoInst * iftmp.539;
  int D.55436;
  int D.55437;
  unsigned int D.55438;
  unsigned int D.55439;
  struct MonoInst * * D.55442;
  sizetype D.55443;
  sizetype D.55444;
  sizetype D.55445;
  struct MonoInst * * D.55446;
  struct MonoInst * iftmp.540;
  int D.55449;
  unsigned int D.55450;
  sizetype D.55453;
  sizetype D.55454;
  struct MonoInst * * D.55455;
  _Bool D.55457;
  long int D.55458;
  long int D.55459;
  _Bool D.55462;
  long int D.55463;
  long int D.55464;
  unsigned char D.55467;
  unsigned char D.55468;
  unsigned char D.55469;
  unsigned char D.55470;
  int D.55474;
  struct MonoInst * D.55478;
  struct MonoClass * D.55481;
  struct MonoType * D.55482;
  struct MonoInst * D.55483;
  int D.55490;
  unsigned int D.55491;
  int D.55492;
  int D.55495;
  _Bool iftmp.541;
  int D.55499;
  unsigned char D.55502;
  _Bool D.55503;
  _Bool D.55504;
  _Bool D.55505;
  int D.55506;
  struct MonoInst * iftmp.542;
  struct MonoInst * iftmp.543;
  _Bool D.55518;
  long int D.55519;
  long int D.55520;
  _Bool D.55523;
  long int D.55524;
  long int D.55525;
  unsigned char D.55528;
  unsigned char D.55529;
  unsigned char D.55530;
  unsigned char D.55531;
  unsigned int D.55535;
  int lmf_reg;
  int prev_lmf_reg;
  struct MonoInst * ins;
  struct MonoInst * lmf_ins;

  D.55380 = BIT_FIELD_REF <*cfg, 8, 3416>;
  D.55381 = D.55380 & 4;
  if (D.55381 == 0) goto <D.55382>; else goto <D.55383>;
  <D.55382>:
  return;
  <D.55383>:
  D.55380 = BIT_FIELD_REF <*cfg, 8, 3416>;
  D.55386 = D.55380 & 8;
  if (D.55386 != 0) goto <D.55387>; else goto <D.55384>;
  <D.55387>:
  D.55388 = mini_tls_get_supported (cfg, 3);
  if (D.55388 != 0) goto <D.55389>; else goto <D.55384>;
  <D.55389>:
  lmf_ins = mono_get_lmf_intrinsic (cfg);
  D.55390 = lmf_ins == 0B;
  D.55391 = (long int) D.55390;
  D.55392 = __builtin_expect (D.55391, 0);
  if (D.55392 != 0) goto <D.55393>; else goto <D.55394>;
  <D.55393>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1922, "lmf_ins");
  <D.55394>:
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  if (D.55396 != 0B) goto <D.55397>; else goto <D.55398>;
  <D.55397>:
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  D.55396->next = lmf_ins;
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  lmf_ins->prev = D.55396;
  D.55395 = cfg->cbb;
  D.55395->last_ins = lmf_ins;
  goto <D.55399>;
  <D.55398>:
  D.55395 = cfg->cbb;
  D.55395 = cfg->cbb;
  D.55395->last_ins = lmf_ins;
  D.55396 = D.55395->last_ins;
  D.55395->code = D.55396;
  <D.55399>:
  D.55400 = cfg->mempool;
  ins = mono_mempool_alloc (D.55400, 56);
  ins->data.op[1].const_val = 0;
  D.55401 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.55401;
  ins->prev = 0B;
  D.55402 = ins->prev;
  ins->next = D.55402;
  ins->opcode = 314;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.55403 = ins->sreg3;
  ins->sreg2 = D.55403;
  D.55404 = ins->sreg2;
  ins->sreg1 = D.55404;
  D.55405 = cfg->ip;
  ins->cil_code = D.55405;
  D.55406 = cfg->lmf_var;
  ins->data.op[0].p = D.55406;
  D.55406 = cfg->lmf_var;
  D.55406 = cfg->lmf_var;
  D.55407 = D.55406->flags;
  D.55408 = D.55407 | 16;
  D.55406->flags = D.55408;
  ins->type = 5;
  D.55406 = cfg->lmf_var;
  D.55409 = D.55406->klass;
  ins->klass = D.55409;
  D.55410 = alloc_dreg (cfg, 5);
  D.55411 = (int) D.55410;
  ins->dreg = D.55411;
  cfg->has_indirection = 1;
  D.55412 = cfg->gsharedvt;
  D.55413 = D.55412 != 0;
  D.55414 = (long int) D.55413;
  D.55415 = __builtin_expect (D.55414, 0);
  if (D.55415 != 0) goto <D.55416>; else goto <D.55417>;
  <D.55416>:
  D.55406 = cfg->lmf_var;
  D.55418 = D.55406->data.op[1].vtype;
  D.55419 = mini_is_gsharedvt_variable_type (cfg, D.55418);
  if (D.55419 != 0) goto <D.55420>; else goto <D.55421>;
  <D.55420>:
  handle_gsharedvt_ldaddr (cfg);
  <D.55421>:
  <D.55417>:
  D.55423 = mono_arch_is_soft_float ();
  if (D.55423 != 0) goto <D.55424>; else goto <D.55425>;
  <D.55424>:
  D.55406 = cfg->lmf_var;
  D.55426 = D.55406->type;
  D.55427 = D.55426 == 2;
  D.55428 = D.55426 == 4;
  D.55429 = D.55427 | D.55428;
  D.55430 = (int) D.55429;
  iftmp.538 = (_Bool) D.55430;
  goto <D.55431>;
  <D.55425>:
  D.55406 = cfg->lmf_var;
  D.55432 = D.55406->type;
  iftmp.538 = D.55432 == 2;
  <D.55431>:
  if (iftmp.538 != 0) goto <D.55433>; else goto <D.55434>;
  <D.55433>:
  {
    struct MonoInst * var1;
    struct MonoInst * var2;

    D.55406 = cfg->lmf_var;
    D.55436 = D.55406->dreg;
    D.55437 = D.55436 + 1;
    D.55438 = (unsigned int) D.55437;
    D.55439 = cfg->vreg_to_inst_len;
    if (D.55438 < D.55439) goto <D.55440>; else goto <D.55441>;
    <D.55440>:
    D.55442 = cfg->vreg_to_inst;
    D.55406 = cfg->lmf_var;
    D.55436 = D.55406->dreg;
    D.55443 = (sizetype) D.55436;
    D.55444 = D.55443 + 1;
    D.55445 = D.55444 * 4;
    D.55446 = D.55442 + D.55445;
    iftmp.539 = *D.55446;
    goto <D.55447>;
    <D.55441>:
    iftmp.539 = 0B;
    <D.55447>:
    var1 = iftmp.539;
    D.55406 = cfg->lmf_var;
    D.55436 = D.55406->dreg;
    D.55449 = D.55436 + 2;
    D.55450 = (unsigned int) D.55449;
    D.55439 = cfg->vreg_to_inst_len;
    if (D.55450 < D.55439) goto <D.55451>; else goto <D.55452>;
    <D.55451>:
    D.55442 = cfg->vreg_to_inst;
    D.55406 = cfg->lmf_var;
    D.55436 = D.55406->dreg;
    D.55443 = (sizetype) D.55436;
    D.55453 = D.55443 + 2;
    D.55454 = D.55453 * 4;
    D.55455 = D.55442 + D.55454;
    iftmp.540 = *D.55455;
    goto <D.55456>;
    <D.55452>:
    iftmp.540 = 0B;
    <D.55456>:
    var2 = iftmp.540;
    D.55457 = var1 == 0B;
    D.55458 = (long int) D.55457;
    D.55459 = __builtin_expect (D.55458, 0);
    if (D.55459 != 0) goto <D.55460>; else goto <D.55461>;
    <D.55460>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1924, "var1");
    <D.55461>:
    D.55462 = var2 == 0B;
    D.55463 = (long int) D.55462;
    D.55464 = __builtin_expect (D.55463, 0);
    if (D.55464 != 0) goto <D.55465>; else goto <D.55466>;
    <D.55465>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1924, "var2");
    <D.55466>:
    D.55467 = var1->flags;
    D.55468 = D.55467 | 16;
    var1->flags = D.55468;
    D.55469 = var2->flags;
    D.55470 = D.55469 | 16;
    var2->flags = D.55470;
  }
  <D.55434>:
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  if (D.55396 != 0B) goto <D.55471>; else goto <D.55472>;
  <D.55471>:
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  D.55396->next = ins;
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  ins->prev = D.55396;
  D.55395 = cfg->cbb;
  D.55395->last_ins = ins;
  goto <D.55473>;
  <D.55472>:
  D.55395 = cfg->cbb;
  D.55395 = cfg->cbb;
  D.55395->last_ins = ins;
  D.55396 = D.55395->last_ins;
  D.55395->code = D.55396;
  <D.55473>:
  lmf_reg = ins->dreg;
  D.55400 = cfg->mempool;
  ins = mono_mempool_alloc (D.55400, 56);
  ins->data.op[1].const_val = 0;
  D.55401 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.55401;
  ins->prev = 0B;
  D.55402 = ins->prev;
  ins->next = D.55402;
  ins->opcode = 374;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.55403 = ins->sreg3;
  ins->sreg2 = D.55403;
  D.55404 = ins->sreg2;
  ins->sreg1 = D.55404;
  D.55405 = cfg->ip;
  ins->cil_code = D.55405;
  D.55474 = lmf_ins->dreg;
  ins->sreg1 = D.55474;
  ins->dreg = lmf_reg;
  ins->data.op[0].const_val = 0;
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  if (D.55396 != 0B) goto <D.55475>; else goto <D.55476>;
  <D.55475>:
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  D.55396->next = ins;
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  ins->prev = D.55396;
  D.55395 = cfg->cbb;
  D.55395->last_ins = ins;
  goto <D.55477>;
  <D.55476>:
  D.55395 = cfg->cbb;
  D.55395 = cfg->cbb;
  D.55395->last_ins = ins;
  D.55396 = D.55395->last_ins;
  D.55395->code = D.55396;
  <D.55477>:
  emit_tls_set (cfg, lmf_reg, 3);
  goto <D.55385>;
  <D.55384>:
  D.55478 = cfg->lmf_addr_var;
  if (D.55478 == 0B) goto <D.55479>; else goto <D.55480>;
  <D.55479>:
  D.55481 = mono_defaults.int_class;
  D.55482 = &D.55481->byval_arg;
  D.55483 = mono_compile_create_var (cfg, D.55482, 329);
  cfg->lmf_addr_var = D.55483;
  <D.55480>:
  lmf_ins = mono_get_lmf_addr_intrinsic (cfg);
  if (lmf_ins != 0B) goto <D.55484>; else goto <D.55485>;
  <D.55484>:
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  if (D.55396 != 0B) goto <D.55486>; else goto <D.55487>;
  <D.55486>:
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  D.55396->next = lmf_ins;
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  lmf_ins->prev = D.55396;
  D.55395 = cfg->cbb;
  D.55395->last_ins = lmf_ins;
  goto <D.55488>;
  <D.55487>:
  D.55395 = cfg->cbb;
  D.55395 = cfg->cbb;
  D.55395->last_ins = lmf_ins;
  D.55396 = D.55395->last_ins;
  D.55395->code = D.55396;
  <D.55488>:
  goto <D.55489>;
  <D.55485>:
  lmf_ins = mono_emit_jit_icall (cfg, mono_get_lmf_addr, 0B);
  <D.55489>:
  D.55478 = cfg->lmf_addr_var;
  D.55490 = D.55478->dreg;
  lmf_ins->dreg = D.55490;
  D.55400 = cfg->mempool;
  ins = mono_mempool_alloc (D.55400, 56);
  ins->data.op[1].const_val = 0;
  D.55401 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.55401;
  ins->prev = 0B;
  D.55402 = ins->prev;
  ins->next = D.55402;
  ins->opcode = 314;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.55403 = ins->sreg3;
  ins->sreg2 = D.55403;
  D.55404 = ins->sreg2;
  ins->sreg1 = D.55404;
  D.55405 = cfg->ip;
  ins->cil_code = D.55405;
  D.55406 = cfg->lmf_var;
  ins->data.op[0].p = D.55406;
  D.55406 = cfg->lmf_var;
  D.55406 = cfg->lmf_var;
  D.55407 = D.55406->flags;
  D.55408 = D.55407 | 16;
  D.55406->flags = D.55408;
  ins->type = 5;
  D.55406 = cfg->lmf_var;
  D.55409 = D.55406->klass;
  ins->klass = D.55409;
  D.55491 = alloc_dreg (cfg, 5);
  D.55492 = (int) D.55491;
  ins->dreg = D.55492;
  cfg->has_indirection = 1;
  D.55412 = cfg->gsharedvt;
  D.55413 = D.55412 != 0;
  D.55414 = (long int) D.55413;
  D.55415 = __builtin_expect (D.55414, 0);
  if (D.55415 != 0) goto <D.55493>; else goto <D.55494>;
  <D.55493>:
  D.55406 = cfg->lmf_var;
  D.55418 = D.55406->data.op[1].vtype;
  D.55495 = mini_is_gsharedvt_variable_type (cfg, D.55418);
  if (D.55495 != 0) goto <D.55496>; else goto <D.55497>;
  <D.55496>:
  handle_gsharedvt_ldaddr (cfg);
  <D.55497>:
  <D.55494>:
  D.55499 = mono_arch_is_soft_float ();
  if (D.55499 != 0) goto <D.55500>; else goto <D.55501>;
  <D.55500>:
  D.55406 = cfg->lmf_var;
  D.55502 = D.55406->type;
  D.55503 = D.55502 == 2;
  D.55504 = D.55502 == 4;
  D.55505 = D.55503 | D.55504;
  D.55506 = (int) D.55505;
  iftmp.541 = (_Bool) D.55506;
  goto <D.55507>;
  <D.55501>:
  D.55406 = cfg->lmf_var;
  D.55432 = D.55406->type;
  iftmp.541 = D.55432 == 2;
  <D.55507>:
  if (iftmp.541 != 0) goto <D.55508>; else goto <D.55509>;
  <D.55508>:
  {
    struct MonoInst * var1;
    struct MonoInst * var2;

    D.55406 = cfg->lmf_var;
    D.55436 = D.55406->dreg;
    D.55437 = D.55436 + 1;
    D.55438 = (unsigned int) D.55437;
    D.55439 = cfg->vreg_to_inst_len;
    if (D.55438 < D.55439) goto <D.55511>; else goto <D.55512>;
    <D.55511>:
    D.55442 = cfg->vreg_to_inst;
    D.55406 = cfg->lmf_var;
    D.55436 = D.55406->dreg;
    D.55443 = (sizetype) D.55436;
    D.55444 = D.55443 + 1;
    D.55445 = D.55444 * 4;
    D.55446 = D.55442 + D.55445;
    iftmp.542 = *D.55446;
    goto <D.55513>;
    <D.55512>:
    iftmp.542 = 0B;
    <D.55513>:
    var1 = iftmp.542;
    D.55406 = cfg->lmf_var;
    D.55436 = D.55406->dreg;
    D.55449 = D.55436 + 2;
    D.55450 = (unsigned int) D.55449;
    D.55439 = cfg->vreg_to_inst_len;
    if (D.55450 < D.55439) goto <D.55515>; else goto <D.55516>;
    <D.55515>:
    D.55442 = cfg->vreg_to_inst;
    D.55406 = cfg->lmf_var;
    D.55436 = D.55406->dreg;
    D.55443 = (sizetype) D.55436;
    D.55453 = D.55443 + 2;
    D.55454 = D.55453 * 4;
    D.55455 = D.55442 + D.55454;
    iftmp.543 = *D.55455;
    goto <D.55517>;
    <D.55516>:
    iftmp.543 = 0B;
    <D.55517>:
    var2 = iftmp.543;
    D.55518 = var1 == 0B;
    D.55519 = (long int) D.55518;
    D.55520 = __builtin_expect (D.55519, 0);
    if (D.55520 != 0) goto <D.55521>; else goto <D.55522>;
    <D.55521>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1944, "var1");
    <D.55522>:
    D.55523 = var2 == 0B;
    D.55524 = (long int) D.55523;
    D.55525 = __builtin_expect (D.55524, 0);
    if (D.55525 != 0) goto <D.55526>; else goto <D.55527>;
    <D.55526>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1944, "var2");
    <D.55527>:
    D.55528 = var1->flags;
    D.55529 = D.55528 | 16;
    var1->flags = D.55529;
    D.55530 = var2->flags;
    D.55531 = D.55530 | 16;
    var2->flags = D.55531;
  }
  <D.55509>:
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  if (D.55396 != 0B) goto <D.55532>; else goto <D.55533>;
  <D.55532>:
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  D.55396->next = ins;
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  ins->prev = D.55396;
  D.55395 = cfg->cbb;
  D.55395->last_ins = ins;
  goto <D.55534>;
  <D.55533>:
  D.55395 = cfg->cbb;
  D.55395 = cfg->cbb;
  D.55395->last_ins = ins;
  D.55396 = D.55395->last_ins;
  D.55395->code = D.55396;
  <D.55534>:
  lmf_reg = ins->dreg;
  D.55535 = alloc_preg (cfg);
  prev_lmf_reg = (int) D.55535;
  D.55400 = cfg->mempool;
  ins = mono_mempool_alloc (D.55400, 56);
  ins->data.op[1].const_val = 0;
  D.55401 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.55401;
  ins->prev = 0B;
  D.55402 = ins->prev;
  ins->next = D.55402;
  ins->opcode = 388;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.55403 = ins->sreg3;
  ins->sreg2 = D.55403;
  D.55404 = ins->sreg2;
  ins->sreg1 = D.55404;
  D.55405 = cfg->ip;
  ins->cil_code = D.55405;
  ins->dreg = prev_lmf_reg;
  D.55478 = cfg->lmf_addr_var;
  D.55490 = D.55478->dreg;
  ins->sreg1 = D.55490;
  ins->data.op[0].const_val = 0;
  ins->type = 1;
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  if (D.55396 != 0B) goto <D.55536>; else goto <D.55537>;
  <D.55536>:
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  D.55396->next = ins;
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  ins->prev = D.55396;
  D.55395 = cfg->cbb;
  D.55395->last_ins = ins;
  goto <D.55538>;
  <D.55537>:
  D.55395 = cfg->cbb;
  D.55395 = cfg->cbb;
  D.55395->last_ins = ins;
  D.55396 = D.55395->last_ins;
  D.55395->code = D.55396;
  <D.55538>:
  D.55400 = cfg->mempool;
  ins = mono_mempool_alloc (D.55400, 56);
  ins->data.op[1].const_val = 0;
  D.55401 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.55401;
  ins->prev = 0B;
  D.55402 = ins->prev;
  ins->next = D.55402;
  ins->opcode = 374;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.55403 = ins->sreg3;
  ins->sreg2 = D.55403;
  D.55404 = ins->sreg2;
  ins->sreg1 = D.55404;
  D.55405 = cfg->ip;
  ins->cil_code = D.55405;
  ins->sreg1 = prev_lmf_reg;
  ins->dreg = lmf_reg;
  ins->data.op[0].const_val = 0;
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  if (D.55396 != 0B) goto <D.55539>; else goto <D.55540>;
  <D.55539>:
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  D.55396->next = ins;
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  ins->prev = D.55396;
  D.55395 = cfg->cbb;
  D.55395->last_ins = ins;
  goto <D.55541>;
  <D.55540>:
  D.55395 = cfg->cbb;
  D.55395 = cfg->cbb;
  D.55395->last_ins = ins;
  D.55396 = D.55395->last_ins;
  D.55395->code = D.55396;
  <D.55541>:
  D.55400 = cfg->mempool;
  ins = mono_mempool_alloc (D.55400, 56);
  ins->data.op[1].const_val = 0;
  D.55401 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.55401;
  ins->prev = 0B;
  D.55402 = ins->prev;
  ins->next = D.55402;
  ins->opcode = 374;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.55403 = ins->sreg3;
  ins->sreg2 = D.55403;
  D.55404 = ins->sreg2;
  ins->sreg1 = D.55404;
  D.55405 = cfg->ip;
  ins->cil_code = D.55405;
  ins->sreg1 = lmf_reg;
  D.55478 = cfg->lmf_addr_var;
  D.55490 = D.55478->dreg;
  ins->dreg = D.55490;
  ins->data.op[0].const_val = 0;
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  if (D.55396 != 0B) goto <D.55542>; else goto <D.55543>;
  <D.55542>:
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  D.55396->next = ins;
  D.55395 = cfg->cbb;
  D.55396 = D.55395->last_ins;
  ins->prev = D.55396;
  D.55395 = cfg->cbb;
  D.55395->last_ins = ins;
  goto <D.55544>;
  <D.55543>:
  D.55395 = cfg->cbb;
  D.55395 = cfg->cbb;
  D.55395->last_ins = ins;
  D.55396 = D.55395->last_ins;
  D.55395->code = D.55396;
  <D.55544>:
  <D.55385>:
}


mono_find_block_region (struct MonoCompile * cfg, int offset)
{
  struct MonoExceptionClause * D.55546;
  unsigned int i.544;
  unsigned int D.55548;
  unsigned int D.55549;
  unsigned int offset.545;
  unsigned int D.55553;
  unsigned int D.55556;
  int D.55559;
  int D.55560;
  int D.55561;
  unsigned int D.55562;
  unsigned int D.55563;
  unsigned int D.55564;
  unsigned int D.55567;
  unsigned int D.55568;
  unsigned int D.55573;
  unsigned int D.55576;
  unsigned int D.55577;
  unsigned int D.55578;
  unsigned int D.55581;
  unsigned int D.55582;
  <unnamed-unsigned:15> D.55585;
  int D.55586;
  struct MonoMethodHeader * header;
  struct MonoExceptionClause * clause;
  int i;

  header = cfg->header;
  i = 0;
  goto <D.27227>;
  <D.27226>:
  D.55546 = header->clauses;
  i.544 = (unsigned int) i;
  D.55548 = i.544 * 24;
  clause = D.55546 + D.55548;
  D.55549 = clause->flags;
  if (D.55549 == 1) goto <D.55550>; else goto <D.55551>;
  <D.55550>:
  offset.545 = (unsigned int) offset;
  D.55553 = clause->data.filter_offset;
  if (offset.545 >= D.55553) goto <D.55554>; else goto <D.55555>;
  <D.55554>:
  offset.545 = (unsigned int) offset;
  D.55556 = clause->handler_offset;
  if (offset.545 < D.55556) goto <D.55557>; else goto <D.55558>;
  <D.55557>:
  D.55560 = i + 1;
  D.55561 = D.55560 << 8;
  D.55562 = (unsigned int) D.55561;
  D.55549 = clause->flags;
  D.55563 = D.55562 | D.55549;
  D.55564 = D.55563 | 128;
  D.55559 = (int) D.55564;
  return D.55559;
  <D.55558>:
  <D.55555>:
  <D.55551>:
  D.55556 = clause->handler_offset;
  offset.545 = (unsigned int) offset;
  if (D.55556 <= offset.545) goto <D.55565>; else goto <D.55566>;
  <D.55565>:
  offset.545 = (unsigned int) offset;
  D.55556 = clause->handler_offset;
  D.55567 = clause->handler_len;
  D.55568 = D.55556 + D.55567;
  if (offset.545 < D.55568) goto <D.55569>; else goto <D.55570>;
  <D.55569>:
  D.55549 = clause->flags;
  if (D.55549 == 2) goto <D.55571>; else goto <D.55572>;
  <D.55571>:
  D.55560 = i + 1;
  D.55561 = D.55560 << 8;
  D.55562 = (unsigned int) D.55561;
  D.55549 = clause->flags;
  D.55563 = D.55562 | D.55549;
  D.55573 = D.55563 | 16;
  D.55559 = (int) D.55573;
  return D.55559;
  <D.55572>:
  D.55549 = clause->flags;
  if (D.55549 == 4) goto <D.55574>; else goto <D.55575>;
  <D.55574>:
  D.55560 = i + 1;
  D.55561 = D.55560 << 8;
  D.55562 = (unsigned int) D.55561;
  D.55549 = clause->flags;
  D.55563 = D.55562 | D.55549;
  D.55576 = D.55563 | 64;
  D.55559 = (int) D.55576;
  return D.55559;
  <D.55575>:
  D.55560 = i + 1;
  D.55561 = D.55560 << 8;
  D.55562 = (unsigned int) D.55561;
  D.55549 = clause->flags;
  D.55563 = D.55562 | D.55549;
  D.55577 = D.55563 | 32;
  D.55559 = (int) D.55577;
  return D.55559;
  <D.55570>:
  <D.55566>:
  D.55578 = clause->try_offset;
  offset.545 = (unsigned int) offset;
  if (D.55578 <= offset.545) goto <D.55579>; else goto <D.55580>;
  <D.55579>:
  offset.545 = (unsigned int) offset;
  D.55578 = clause->try_offset;
  D.55581 = clause->try_len;
  D.55582 = D.55578 + D.55581;
  if (offset.545 < D.55582) goto <D.55583>; else goto <D.55584>;
  <D.55583>:
  D.55560 = i + 1;
  D.55561 = D.55560 << 8;
  D.55562 = (unsigned int) D.55561;
  D.55549 = clause->flags;
  D.55563 = D.55562 | D.55549;
  D.55559 = (int) D.55563;
  return D.55559;
  <D.55584>:
  <D.55580>:
  i = i + 1;
  <D.27227>:
  D.55585 = header->num_clauses;
  D.55586 = (int) D.55585;
  if (D.55586 > i) goto <D.27226>; else goto <D.27228>;
  <D.27228>:
  D.55559 = -1;
  return D.55559;
}


mono_create_spvar_for_region (struct MonoCompile * cfg, int region)
{
  struct GHashTable * D.55588;
  const void * region.546;
  struct MonoClass * D.55592;
  struct MonoType * D.55593;
  unsigned char D.55594;
  unsigned char D.55595;
  void * region.547;
  struct MonoInst * var;

  D.55588 = cfg->spvars;
  region.546 = (const void *) region;
  var = monoeg_g_hash_table_lookup (D.55588, region.546);
  if (var != 0B) goto <D.55590>; else goto <D.55591>;
  <D.55590>:
  return;
  <D.55591>:
  D.55592 = mono_defaults.int_class;
  D.55593 = &D.55592->byval_arg;
  var = mono_compile_create_var (cfg, D.55593, 329);
  D.55594 = var->flags;
  D.55595 = D.55594 | 4;
  var->flags = D.55595;
  D.55588 = cfg->spvars;
  region.547 = (void *) region;
  monoeg_g_hash_table_insert_replace (D.55588, region.547, var, 0);
}


set_exception_type_from_invalid_il (struct MonoCompile * cfg, struct MonoMethod * method, unsigned char * ip)
{
  unsigned int D.55598;
  gchar * D.55602;
  struct MonoMemPool * D.55603;
  struct GSList * D.55604;
  struct GSList * D.55605;
  char * method_fname;
  char * method_code;
  struct MonoMethodHeader * header;

  method_fname = mono_method_full_name (method, 1);
  header = mono_method_get_header (method);
  D.55598 = header->code_size;
  if (D.55598 == 0) goto <D.55599>; else goto <D.55600>;
  <D.55599>:
  method_code = monoeg_strdup ("method body is empty.");
  goto <D.55601>;
  <D.55600>:
  method_code = mono_disasm_code_one (0B, method, ip, 0B);
  <D.55601>:
  mono_cfg_set_exception (cfg, 3);
  D.55602 = monoeg_g_strdup_printf ("Invalid IL code in %s: %s\n", method_fname, method_code);
  cfg->exception_message = D.55602;
  monoeg_g_free (method_fname);
  monoeg_g_free (method_code);
  D.55603 = cfg->mempool;
  D.55604 = cfg->headers_to_free;
  D.55605 = g_slist_prepend_mempool (D.55603, D.55604, header);
  cfg->headers_to_free = D.55605;
}


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

  if (str != 0B) goto <D.55606>; else goto <D.55607>;
  <D.55606>:
  D.55608 = __strdup (str);
  return D.55608;
  <D.55607>:
  D.55608 = 0B;
  return D.55608;
}


g_slist_prepend_mempool (struct MonoMemPool * mp, struct GSList * list, void * data)
{
  struct GSList * D.55610;
  struct GSList * new_list;

  new_list = mono_mempool_alloc (mp, 8);
  new_list->data = data;
  new_list->next = list;
  D.55610 = new_list;
  return D.55610;
}


mono_op_to_op_imm (int opcode)
{
  int D.55612;

  switch (opcode) <default: <D.55613>, case 322: <D.30787>, case 325: <D.30789>, case 326: <D.30788>, case 338: <D.30798>, case 344: <D.30794>, case 347: <D.30795>, case 350: <D.30797>, case 353: <D.30796>, case 374: <D.30790>, case 375: <D.30791>, case 376: <D.30792>, case 377: <D.30793>, case 479: <D.30779>, case 480: <D.30780>, case 486: <D.30781>, case 487: <D.30782>, case 488: <D.30783>, case 489: <D.30784>, case 490: <D.30785>, case 491: <D.30786>, case 565: <D.30766>, case 566: <D.30767>, case 567: <D.30772>, case 568: <D.30768>, case 569: <D.30769>, case 570: <D.30770>, case 571: <D.30771>, case 572: <D.30773>, case 573: <D.30774>, case 574: <D.30775>, case 575: <D.30776>, case 576: <D.30777>, case 577: <D.30778>>
  <D.30766>:
  D.55612 = 625;
  return D.55612;
  <D.30767>:
  D.55612 = 626;
  return D.55612;
  <D.30768>:
  D.55612 = 628;
  return D.55612;
  <D.30769>:
  D.55612 = 629;
  return D.55612;
  <D.30770>:
  D.55612 = 630;
  return D.55612;
  <D.30771>:
  D.55612 = 631;
  return D.55612;
  <D.30772>:
  D.55612 = 627;
  return D.55612;
  <D.30773>:
  D.55612 = 632;
  return D.55612;
  <D.30774>:
  D.55612 = 633;
  return D.55612;
  <D.30775>:
  D.55612 = 634;
  return D.55612;
  <D.30776>:
  D.55612 = 635;
  return D.55612;
  <D.30777>:
  D.55612 = 636;
  return D.55612;
  <D.30778>:
  D.55612 = 637;
  return D.55612;
  <D.30779>:
  D.55612 = 538;
  return D.55612;
  <D.30780>:
  D.55612 = 539;
  return D.55612;
  <D.30781>:
  D.55612 = 541;
  return D.55612;
  <D.30782>:
  D.55612 = 542;
  return D.55612;
  <D.30783>:
  D.55612 = 543;
  return D.55612;
  <D.30784>:
  D.55612 = 544;
  return D.55612;
  <D.30785>:
  D.55612 = 545;
  return D.55612;
  <D.30786>:
  D.55612 = 546;
  return D.55612;
  <D.30787>:
  D.55612 = 323;
  return D.55612;
  <D.30788>:
  D.55612 = 327;
  return D.55612;
  <D.30789>:
  D.55612 = 328;
  return D.55612;
  <D.30790>:
  D.55612 = 381;
  return D.55612;
  <D.30791>:
  D.55612 = 382;
  return D.55612;
  <D.30792>:
  D.55612 = 383;
  return D.55612;
  <D.30793>:
  D.55612 = 384;
  return D.55612;
  <D.30794>:
  D.55612 = 343;
  return D.55612;
  <D.30795>:
  D.55612 = 346;
  return D.55612;
  <D.30796>:
  D.55612 = 352;
  return D.55612;
  <D.30797>:
  D.55612 = 349;
  return D.55612;
  <D.30798>:
  D.55612 = 339;
  return D.55612;
  <D.55613>:
  D.55612 = -1;
  return D.55612;
}


mono_load_membase_to_load_mem (int opcode)
{
  int D.55615;

  D.55615 = -1;
  return D.55615;
}


mono_op_to_op_imm_noemul (int opcode)
{
  int D.55617;

  switch (opcode) <default: <D.30855>, case 489: <D.30849>, case 490: <D.30848>, case 491: <D.30850>, case 568: <D.30851>, case 569: <D.30852>, case 570: <D.30853>, case 571: <D.30854>>
  <D.30848>:
  <D.30849>:
  <D.30850>:
  D.55617 = -1;
  return D.55617;
  <D.30851>:
  <D.30852>:
  <D.30853>:
  <D.30854>:
  D.55617 = -1;
  return D.55617;
  <D.30855>:
  D.55617 = mono_op_to_op_imm (opcode);
  return D.55617;
}


mono_handle_global_vregs (struct MonoCompile * cfg)
{
  struct MonoMemPool * D.55619;
  unsigned int D.55620;
  unsigned int D.55621;
  unsigned int D.55622;
  unsigned int D.55623;
  int D.55626;
  short unsigned int D.55627;
  int D.55628;
  int D.55629;
  int D.55630;
  _Bool D.55631;
  long int D.55632;
  long int D.55633;
  _Bool D.55636;
  long int D.55637;
  long int D.55638;
  char D.55643;
  const char * D.55649;
  char D.55650;
  const char * D.55656;
  char D.55657;
  const char * D.55663;
  char D.55664;
  unsigned int vreg.548;
  unsigned int D.55672;
  struct MonoInst * * D.55674;
  unsigned int vreg.549;
  unsigned int D.55676;
  struct MonoInst * * D.55677;
  struct MonoInst * D.55678;
  struct MonoClass * D.55679;
  struct MonoType * D.55680;
  struct MonoInst * iftmp.550;
  int D.55684;
  unsigned int D.55685;
  sizetype vreg.551;
  sizetype D.55689;
  sizetype D.55690;
  struct MonoInst * * D.55691;
  struct MonoInst * iftmp.552;
  unsigned char D.55697;
  unsigned char D.55698;
  struct MonoInst * iftmp.553;
  int D.55700;
  unsigned int D.55701;
  sizetype D.55704;
  sizetype D.55705;
  struct MonoInst * * D.55706;
  struct MonoInst * iftmp.554;
  unsigned char D.55712;
  unsigned char D.55713;
  _Bool D.55714;
  long int D.55715;
  long int D.55716;
  gint32 * D.55719;
  int D.55722;
  _Bool D.55730;
  _Bool D.55731;
  _Bool D.55732;
  _Bool D.55734;
  _Bool D.55735;
  _Bool D.55736;
  int D.55741;
  unsigned int D.55744;
  gboolean * D.55746;
  gboolean * D.55747;
  int D.55748;
  struct MonoClass * D.55750;
  struct MonoType * D.55751;
  struct MonoClass * D.55752;
  struct MonoType * D.55753;
  struct MonoClass * D.55754;
  struct MonoType * D.55755;
  struct MonoClass * D.55756;
  struct MonoType * D.55757;
  struct MonoInst * * D.55758;
  unsigned int i.555;
  unsigned int D.55760;
  struct MonoInst * * D.55761;
  struct MonoMethodVar * D.55762;
  unsigned int D.55763;
  unsigned char D.55764;
  int D.55765;
  int D.55766;
  short unsigned int D.55768;
  struct MonoInst * D.55771;
  unsigned char D.55774;
  int D.55775;
  int D.55776;
  int D.55779;
  unsigned int D.55780;
  unsigned int D.55781;
  gint32 * D.55782;
  int D.55783;
  struct MonoClass * D.55786;
  unsigned char D.55787;
  unsigned char D.55790;
  unsigned char D.55791;
  struct MonoInst * D.55794;
  struct MonoInst * D.55797;
  struct MonoInst * D.55800;
  unsigned int D.55805;
  unsigned char D.55806;
  struct MonoInst * * D.55807;
  unsigned int i.556;
  unsigned int D.55810;
  unsigned int D.55813;
  unsigned int pos.557;
  unsigned char D.55817;
  int D.55818;
  int D.55819;
  unsigned int pos.558;
  unsigned int D.55825;
  struct MonoInst * * D.55826;
  struct MonoInst * D.55827;
  struct MonoInst * D.55828;
  unsigned int D.55829;
  struct MonoMethodVar * D.55830;
  struct MonoMethodVar * D.55831;
  unsigned char D.55832;
  struct MonoInst * iftmp.559;
  int D.55836;
  int D.55837;
  unsigned int D.55838;
  sizetype D.55841;
  sizetype D.55842;
  sizetype D.55843;
  struct MonoInst * * D.55844;
  struct MonoInst * iftmp.560;
  int D.55847;
  unsigned int D.55848;
  sizetype D.55851;
  sizetype D.55852;
  struct MonoInst * * D.55853;
  gint32 * vreg_to_bb;
  struct MonoBasicBlock * bb;
  int i;
  int pos;

  D.55619 = cfg->mempool;
  D.55620 = cfg->next_vreg;
  D.55621 = D.55620 * 4;
  D.55622 = D.55621 + 1;
  vreg_to_bb = mono_mempool_alloc0 (D.55619, D.55622);
  bb = cfg->bb_entry;
  goto <D.30884>;
  <D.30883>:
  {
    struct MonoInst * ins;
    int block_num;

    ins = bb->code;
    block_num = bb->block_num;
    D.55623 = cfg->verbose_level;
    if (D.55623 > 2) goto <D.55624>; else goto <D.55625>;
    <D.55624>:
    D.55626 = bb->block_num;
    printf ("\nHANDLE-GLOBAL-VREGS BLOCK %d:\n", D.55626);
    <D.55625>:
    cfg->cbb = bb;
    goto <D.30881>;
    <D.30880>:
    {
      const char * spec;
      int regtype;
      int regindex;
      gint32 prev_bb;

      D.55627 = ins->opcode;
      D.55628 = (int) D.55627;
      D.55629 = D.55628 + -313;
      D.55630 = D.55629 * 4;
      spec = &ins_info[D.55630];
      regtype = 0;
      D.55623 = cfg->verbose_level;
      D.55631 = D.55623 > 2;
      D.55632 = (long int) D.55631;
      D.55633 = __builtin_expect (D.55632, 0);
      if (D.55633 != 0) goto <D.55634>; else goto <D.55635>;
      <D.55634>:
      mono_print_ins (ins);
      <D.55635>:
      D.55627 = ins->opcode;
      D.55636 = D.55627 <= 312;
      D.55637 = (long int) D.55636;
      D.55638 = __builtin_expect (D.55637, 0);
      if (D.55638 != 0) goto <D.55639>; else goto <D.55640>;
      <D.55639>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12539, "ins->opcode >= MONO_CEE_LAST");
      <D.55640>:
      regindex = 0;
      goto <D.30878>;
      <D.30877>:
      {
        int vreg;

        vreg = 0;
        if (regindex == 0) goto <D.55641>; else goto <D.55642>;
        <D.55641>:
        D.55643 = *spec;
        regtype = (int) D.55643;
        if (regtype == 32) goto <D.55644>; else goto <D.55645>;
        <D.55644>:
        // predicted unlikely by continue predictor.
        goto <D.30870>;
        <D.55645>:
        vreg = ins->dreg;
        goto <D.55646>;
        <D.55642>:
        if (regindex == 1) goto <D.55647>; else goto <D.55648>;
        <D.55647>:
        D.55649 = spec + 1;
        D.55650 = *D.55649;
        regtype = (int) D.55650;
        if (regtype == 32) goto <D.55651>; else goto <D.55652>;
        <D.55651>:
        // predicted unlikely by continue predictor.
        goto <D.30870>;
        <D.55652>:
        vreg = ins->sreg1;
        goto <D.55653>;
        <D.55648>:
        if (regindex == 2) goto <D.55654>; else goto <D.55655>;
        <D.55654>:
        D.55656 = spec + 2;
        D.55657 = *D.55656;
        regtype = (int) D.55657;
        if (regtype == 32) goto <D.55658>; else goto <D.55659>;
        <D.55658>:
        // predicted unlikely by continue predictor.
        goto <D.30870>;
        <D.55659>:
        vreg = ins->sreg2;
        goto <D.55660>;
        <D.55655>:
        if (regindex == 3) goto <D.55661>; else goto <D.55662>;
        <D.55661>:
        D.55663 = spec + 3;
        D.55664 = *D.55663;
        regtype = (int) D.55664;
        if (regtype == 32) goto <D.55665>; else goto <D.55666>;
        <D.55665>:
        // predicted unlikely by continue predictor.
        goto <D.30870>;
        <D.55666>:
        vreg = ins->sreg3;
        <D.55662>:
        <D.55660>:
        <D.55653>:
        <D.55646>:
        if (regtype == 108) goto <D.55667>; else goto <D.55668>;
        <D.55667>:
        vreg.548 = (unsigned int) vreg;
        D.55672 = cfg->vreg_to_inst_len;
        if (vreg.548 >= D.55672) goto <D.55669>; else goto <D.55673>;
        <D.55673>:
        D.55674 = cfg->vreg_to_inst;
        vreg.549 = (unsigned int) vreg;
        D.55676 = vreg.549 * 4;
        D.55677 = D.55674 + D.55676;
        D.55678 = *D.55677;
        if (D.55678 == 0B) goto <D.55669>; else goto <D.55670>;
        <D.55669>:
        D.55679 = mono_defaults.int64_class;
        D.55680 = &D.55679->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.55680, 329, vreg);
        D.55623 = cfg->verbose_level;
        if (D.55623 > 2) goto <D.55681>; else goto <D.55682>;
        <D.55681>:
        printf ("LONG VREG R%d made global.\n", vreg);
        <D.55682>:
        <D.55670>:
        D.55684 = vreg + 1;
        D.55685 = (unsigned int) D.55684;
        D.55672 = cfg->vreg_to_inst_len;
        if (D.55685 < D.55672) goto <D.55686>; else goto <D.55687>;
        <D.55686>:
        D.55674 = cfg->vreg_to_inst;
        vreg.551 = (sizetype) vreg;
        D.55689 = vreg.551 + 1;
        D.55690 = D.55689 * 4;
        D.55691 = D.55674 + D.55690;
        iftmp.550 = *D.55691;
        goto <D.55692>;
        <D.55687>:
        iftmp.550 = 0B;
        <D.55692>:
        D.55684 = vreg + 1;
        D.55685 = (unsigned int) D.55684;
        D.55672 = cfg->vreg_to_inst_len;
        if (D.55685 < D.55672) goto <D.55694>; else goto <D.55695>;
        <D.55694>:
        D.55674 = cfg->vreg_to_inst;
        vreg.551 = (sizetype) vreg;
        D.55689 = vreg.551 + 1;
        D.55690 = D.55689 * 4;
        D.55691 = D.55674 + D.55690;
        iftmp.552 = *D.55691;
        goto <D.55696>;
        <D.55695>:
        iftmp.552 = 0B;
        <D.55696>:
        D.55697 = iftmp.552->flags;
        D.55698 = D.55697 | 4;
        iftmp.550->flags = D.55698;
        D.55700 = vreg + 2;
        D.55701 = (unsigned int) D.55700;
        D.55672 = cfg->vreg_to_inst_len;
        if (D.55701 < D.55672) goto <D.55702>; else goto <D.55703>;
        <D.55702>:
        D.55674 = cfg->vreg_to_inst;
        vreg.551 = (sizetype) vreg;
        D.55704 = vreg.551 + 2;
        D.55705 = D.55704 * 4;
        D.55706 = D.55674 + D.55705;
        iftmp.553 = *D.55706;
        goto <D.55707>;
        <D.55703>:
        iftmp.553 = 0B;
        <D.55707>:
        D.55700 = vreg + 2;
        D.55701 = (unsigned int) D.55700;
        D.55672 = cfg->vreg_to_inst_len;
        if (D.55701 < D.55672) goto <D.55709>; else goto <D.55710>;
        <D.55709>:
        D.55674 = cfg->vreg_to_inst;
        vreg.551 = (sizetype) vreg;
        D.55704 = vreg.551 + 2;
        D.55705 = D.55704 * 4;
        D.55706 = D.55674 + D.55705;
        iftmp.554 = *D.55706;
        goto <D.55711>;
        <D.55710>:
        iftmp.554 = 0B;
        <D.55711>:
        D.55712 = iftmp.554->flags;
        D.55713 = D.55712 | 4;
        iftmp.553->flags = D.55713;
        <D.55668>:
        D.55714 = vreg == -1;
        D.55715 = (long int) D.55714;
        D.55716 = __builtin_expect (D.55715, 0);
        if (D.55716 != 0) goto <D.55717>; else goto <D.55718>;
        <D.55717>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12590, "vreg != -1");
        <D.55718>:
        vreg.549 = (unsigned int) vreg;
        D.55676 = vreg.549 * 4;
        D.55719 = vreg_to_bb + D.55676;
        prev_bb = *D.55719;
        if (prev_bb == 0) goto <D.55720>; else goto <D.55721>;
        <D.55720>:
        vreg.549 = (unsigned int) vreg;
        D.55676 = vreg.549 * 4;
        D.55719 = vreg_to_bb + D.55676;
        D.55722 = block_num + 1;
        *D.55719 = D.55722;
        goto <D.55723>;
        <D.55721>:
        D.55722 = block_num + 1;
        if (D.55722 != prev_bb) goto <D.55724>; else goto <D.55725>;
        <D.55724>:
        if (prev_bb != -1) goto <D.55726>; else goto <D.55727>;
        <D.55726>:
        D.55730 = regtype == 105;
        D.55731 = vreg <= 15;
        D.55732 = D.55730 & D.55731;
        if (D.55732 != 0) goto <D.55728>; else goto <D.55733>;
        <D.55733>:
        D.55734 = regtype == 102;
        D.55735 = vreg <= 31;
        D.55736 = D.55734 & D.55735;
        if (D.55736 != 0) goto <D.55728>; else goto <D.55729>;
        <D.55728>:
        // predicted unlikely by continue predictor.
        goto <D.30870>;
        <D.55729>:
        vreg.548 = (unsigned int) vreg;
        D.55672 = cfg->vreg_to_inst_len;
        if (vreg.548 >= D.55672) goto <D.55737>; else goto <D.55738>;
        <D.55738>:
        D.55674 = cfg->vreg_to_inst;
        vreg.549 = (unsigned int) vreg;
        D.55676 = vreg.549 * 4;
        D.55677 = D.55674 + D.55676;
        D.55678 = *D.55677;
        if (D.55678 == 0B) goto <D.55737>; else goto <D.30872>;
        <D.55737>:
        D.55623 = cfg->verbose_level;
        D.55631 = D.55623 > 2;
        D.55632 = (long int) D.55631;
        D.55633 = __builtin_expect (D.55632, 0);
        if (D.55633 != 0) goto <D.55739>; else goto <D.55740>;
        <D.55739>:
        vreg.549 = (unsigned int) vreg;
        D.55676 = vreg.549 * 4;
        D.55719 = vreg_to_bb + D.55676;
        D.55741 = *D.55719;
        printf ("VREG R%d used in BB%d and BB%d made global.\n", vreg, D.55741, block_num);
        <D.55740>:
        switch (regtype) <default: <D.30876>, case 102: <D.30874>, case 105: <D.30871>, case 108: <D.30873>, case 118: <D.30875>>
        <D.30871>:
        vreg.548 = (unsigned int) vreg;
        D.55744 = cfg->vreg_is_ref_len;
        if (vreg.548 < D.55744) goto <D.55745>; else goto <D.55742>;
        <D.55745>:
        D.55746 = cfg->vreg_is_ref;
        vreg.549 = (unsigned int) vreg;
        D.55676 = vreg.549 * 4;
        D.55747 = D.55746 + D.55676;
        D.55748 = *D.55747;
        if (D.55748 != 0) goto <D.55749>; else goto <D.55742>;
        <D.55749>:
        D.55750 = mono_defaults.object_class;
        D.55751 = &D.55750->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.55751, 329, vreg);
        goto <D.55743>;
        <D.55742>:
        D.55752 = mono_defaults.int_class;
        D.55753 = &D.55752->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.55753, 329, vreg);
        <D.55743>:
        goto <D.30872>;
        <D.30873>:
        D.55679 = mono_defaults.int64_class;
        D.55680 = &D.55679->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.55680, 329, vreg);
        goto <D.30872>;
        <D.30874>:
        D.55754 = mono_defaults.double_class;
        D.55755 = &D.55754->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.55755, 329, vreg);
        goto <D.30872>;
        <D.30875>:
        D.55756 = ins->klass;
        D.55757 = &D.55756->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.55757, 329, vreg);
        goto <D.30872>;
        <D.30876>:
        monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12621);
        <D.30872>:
        vreg.549 = (unsigned int) vreg;
        D.55676 = vreg.549 * 4;
        D.55719 = vreg_to_bb + D.55676;
        *D.55719 = -1;
        <D.55727>:
        <D.55725>:
        <D.55723>:
      }
      <D.30870>:
      regindex = regindex + 1;
      <D.30878>:
      if (regindex <= 3) goto <D.30877>; else goto <D.30879>;
      <D.30879>:
    }
    ins = ins->next;
    <D.30881>:
    if (ins != 0B) goto <D.30880>; else goto <D.30882>;
    <D.30882>:
  }
  bb = bb->next_bb;
  <D.30884>:
  if (bb != 0B) goto <D.30883>; else goto <D.30885>;
  <D.30885>:
  i = 0;
  goto <D.30896>;
  <D.30895>:
  {
    struct MonoInst * var;
    struct MonoMethodVar * vmv;

    D.55758 = cfg->varinfo;
    i.555 = (unsigned int) i;
    D.55760 = i.555 * 4;
    D.55761 = D.55758 + D.55760;
    var = *D.55761;
    D.55762 = cfg->vars;
    i.555 = (unsigned int) i;
    D.55763 = i.555 * 56;
    vmv = D.55762 + D.55763;
    D.55764 = var->type;
    D.55765 = (int) D.55764;
    switch (D.55765) <default: <D.55808>, case 1: <D.30888>, case 3: <D.30890>, case 4: <D.30893>, case 5: <D.30891>, case 6: <D.30889>, case 7: <D.30892>>
    <D.30888>:
    <D.30889>:
    <D.30890>:
    <D.30891>:
    <D.30892>:
    <D.30893>:
    D.55766 = mono_arch_is_soft_float ();
    if (D.55766 != 0) goto <D.30894>; else goto <D.55767>;
    <D.55767>:
    D.55768 = var->opcode;
    if (D.55768 != 330) goto <D.55769>; else goto <D.55770>;
    <D.55769>:
    D.55771 = cfg->ret;
    if (D.55771 != var) goto <D.55772>; else goto <D.55773>;
    <D.55772>:
    D.55774 = var->flags;
    D.55775 = (int) D.55774;
    D.55776 = D.55775 & 20;
    if (D.55776 == 0) goto <D.55777>; else goto <D.55778>;
    <D.55777>:
    D.55779 = var->dreg;
    D.55780 = (unsigned int) D.55779;
    D.55781 = D.55780 * 4;
    D.55782 = vreg_to_bb + D.55781;
    D.55783 = *D.55782;
    if (D.55783 != -1) goto <D.55784>; else goto <D.55785>;
    <D.55784>:
    D.55786 = var->klass;
    D.55787 = D.55786->byval_arg.type;
    if (D.55787 != 12) goto <D.55788>; else goto <D.55789>;
    <D.55788>:
    D.55790 = BIT_FIELD_REF <*cfg, 8, 3408>;
    D.55791 = D.55790 & 64;
    if (D.55791 == 0) goto <D.55792>; else goto <D.55793>;
    <D.55792>:
    D.55794 = cfg->gsharedvt_info_var;
    if (D.55794 != var) goto <D.55795>; else goto <D.55796>;
    <D.55795>:
    D.55797 = cfg->gsharedvt_locals_var;
    if (D.55797 != var) goto <D.55798>; else goto <D.55799>;
    <D.55798>:
    D.55800 = cfg->lmf_addr_var;
    if (D.55800 != var) goto <D.55801>; else goto <D.55802>;
    <D.55801>:
    D.55623 = cfg->verbose_level;
    D.55631 = D.55623 > 2;
    D.55632 = (long int) D.55631;
    D.55633 = __builtin_expect (D.55632, 0);
    if (D.55633 != 0) goto <D.55803>; else goto <D.55804>;
    <D.55803>:
    D.55779 = var->dreg;
    D.55805 = vmv->idx;
    printf ("CONVERTED R%d(%d) TO VREG.\n", D.55779, D.55805);
    <D.55804>:
    D.55774 = var->flags;
    D.55806 = D.55774 | 2;
    var->flags = D.55806;
    D.55674 = cfg->vreg_to_inst;
    D.55779 = var->dreg;
    D.55780 = (unsigned int) D.55779;
    D.55781 = D.55780 * 4;
    D.55807 = D.55674 + D.55781;
    *D.55807 = 0B;
    <D.55802>:
    <D.55799>:
    <D.55796>:
    <D.55793>:
    <D.55789>:
    <D.55785>:
    <D.55778>:
    <D.55773>:
    <D.55770>:
    goto <D.30894>;
    <D.55808>:
    <D.30894>:
  }
  i = i + 1;
  <D.30896>:
  i.556 = (unsigned int) i;
  D.55810 = cfg->num_varinfo;
  if (i.556 < D.55810) goto <D.30895>; else goto <D.30897>;
  <D.30897>:
  pos = 0;
  i = 0;
  goto <D.30901>;
  <D.30900>:
  {
    struct MonoInst * var;

    D.55758 = cfg->varinfo;
    i.555 = (unsigned int) i;
    D.55760 = i.555 * 4;
    D.55761 = D.55758 + D.55760;
    var = *D.55761;
    if (pos < i) goto <D.55811>; else goto <D.55812>;
    <D.55811>:
    D.55813 = cfg->locals_start;
    i.556 = (unsigned int) i;
    if (D.55813 == i.556) goto <D.55814>; else goto <D.55815>;
    <D.55814>:
    pos.557 = (unsigned int) pos;
    cfg->locals_start = pos.557;
    <D.55815>:
    <D.55812>:
    D.55817 = var->flags;
    D.55818 = (int) D.55817;
    D.55819 = D.55818 & 2;
    if (D.55819 == 0) goto <D.55820>; else goto <D.55821>;
    <D.55820>:
    if (pos < i) goto <D.55822>; else goto <D.55823>;
    <D.55822>:
    D.55758 = cfg->varinfo;
    pos.558 = (unsigned int) pos;
    D.55825 = pos.558 * 4;
    D.55826 = D.55758 + D.55825;
    D.55758 = cfg->varinfo;
    i.555 = (unsigned int) i;
    D.55760 = i.555 * 4;
    D.55761 = D.55758 + D.55760;
    D.55827 = *D.55761;
    *D.55826 = D.55827;
    D.55758 = cfg->varinfo;
    pos.558 = (unsigned int) pos;
    D.55825 = pos.558 * 4;
    D.55826 = D.55758 + D.55825;
    D.55828 = *D.55826;
    D.55828->data.op[0].const_val = pos;
    D.55762 = cfg->vars;
    pos.558 = (unsigned int) pos;
    D.55829 = pos.558 * 56;
    D.55830 = D.55762 + D.55829;
    D.55762 = cfg->vars;
    i.555 = (unsigned int) i;
    D.55763 = i.555 * 56;
    D.55831 = D.55762 + D.55763;
    memcpy (D.55830, D.55831, 56);
    D.55762 = cfg->vars;
    pos.558 = (unsigned int) pos;
    D.55829 = pos.558 * 56;
    D.55830 = D.55762 + D.55829;
    pos.557 = (unsigned int) pos;
    D.55830->idx = pos.557;
    D.55758 = cfg->varinfo;
    pos.558 = (unsigned int) pos;
    D.55825 = pos.558 * 4;
    D.55826 = D.55758 + D.55825;
    D.55828 = *D.55826;
    D.55832 = D.55828->type;
    if (D.55832 == 2) goto <D.55833>; else goto <D.55834>;
    <D.55833>:
    {
      struct MonoInst * var1;

      D.55758 = cfg->varinfo;
      pos.558 = (unsigned int) pos;
      D.55825 = pos.558 * 4;
      D.55826 = D.55758 + D.55825;
      D.55828 = *D.55826;
      D.55836 = D.55828->dreg;
      D.55837 = D.55836 + 1;
      D.55838 = (unsigned int) D.55837;
      D.55672 = cfg->vreg_to_inst_len;
      if (D.55838 < D.55672) goto <D.55839>; else goto <D.55840>;
      <D.55839>:
      D.55674 = cfg->vreg_to_inst;
      D.55758 = cfg->varinfo;
      pos.558 = (unsigned int) pos;
      D.55825 = pos.558 * 4;
      D.55826 = D.55758 + D.55825;
      D.55828 = *D.55826;
      D.55836 = D.55828->dreg;
      D.55841 = (sizetype) D.55836;
      D.55842 = D.55841 + 1;
      D.55843 = D.55842 * 4;
      D.55844 = D.55674 + D.55843;
      iftmp.559 = *D.55844;
      goto <D.55845>;
      <D.55840>:
      iftmp.559 = 0B;
      <D.55845>:
      var1 = iftmp.559;
      var1->data.op[0].const_val = pos;
      D.55758 = cfg->varinfo;
      pos.558 = (unsigned int) pos;
      D.55825 = pos.558 * 4;
      D.55826 = D.55758 + D.55825;
      D.55828 = *D.55826;
      D.55836 = D.55828->dreg;
      D.55847 = D.55836 + 2;
      D.55848 = (unsigned int) D.55847;
      D.55672 = cfg->vreg_to_inst_len;
      if (D.55848 < D.55672) goto <D.55849>; else goto <D.55850>;
      <D.55849>:
      D.55674 = cfg->vreg_to_inst;
      D.55758 = cfg->varinfo;
      pos.558 = (unsigned int) pos;
      D.55825 = pos.558 * 4;
      D.55826 = D.55758 + D.55825;
      D.55828 = *D.55826;
      D.55836 = D.55828->dreg;
      D.55841 = (sizetype) D.55836;
      D.55851 = D.55841 + 2;
      D.55852 = D.55851 * 4;
      D.55853 = D.55674 + D.55852;
      iftmp.560 = *D.55853;
      goto <D.55854>;
      <D.55850>:
      iftmp.560 = 0B;
      <D.55854>:
      var1 = iftmp.560;
      var1->data.op[0].const_val = pos;
    }
    <D.55834>:
    <D.55823>:
    pos = pos + 1;
    <D.55821>:
  }
  i = i + 1;
  <D.30901>:
  i.556 = (unsigned int) i;
  D.55810 = cfg->num_varinfo;
  if (i.556 < D.55810) goto <D.30900>; else goto <D.30902>;
  <D.30902>:
  pos.557 = (unsigned int) pos;
  cfg->num_varinfo = pos.557;
  D.55813 = cfg->locals_start;
  D.55810 = cfg->num_varinfo;
  if (D.55813 > D.55810) goto <D.55855>; else goto <D.55856>;
  <D.55855>:
  D.55810 = cfg->num_varinfo;
  cfg->locals_start = D.55810;
  <D.55856>:
}


memcpy (void * restrict __dest, const void * restrict __src, size_t __len)
{
  void * D.55857;
  unsigned int D.55858;

  D.55858 = __builtin_object_size (__dest, 0);
  D.55857 = __builtin___memcpy_chk (__dest, __src, __len, D.55858);
  return D.55857;
}


mono_spill_global_vars (struct MonoCompile * cfg, gboolean * need_local_opts)
{
  struct MonoInst * * D.55860;
  unsigned int D.55861;
  struct MonoInst * * D.55862;
  short unsigned int D.55863;
  unsigned char D.55866;
  int D.55867;
  int D.55868;
  unsigned char D.55871;
  int D.55872;
  _Bool D.55874;
  long int D.55875;
  long int D.55876;
  struct MonoInst * iftmp.561;
  int D.55880;
  int D.55881;
  unsigned int D.55882;
  unsigned int D.55883;
  struct MonoInst * * D.55886;
  sizetype D.55887;
  sizetype D.55888;
  sizetype D.55889;
  struct MonoInst * * D.55890;
  _Bool D.55892;
  long int D.55893;
  long int D.55894;
  int D.55897;
  int D.55898;
  struct MonoInst * iftmp.562;
  int D.55900;
  unsigned int D.55901;
  sizetype D.55904;
  sizetype D.55905;
  struct MonoInst * * D.55906;
  int D.55910;
  unsigned int D.55911;
  unsigned char D.55912;
  unsigned char D.55913;
  short unsigned int D.55916;
  unsigned char D.55919;
  unsigned char D.55920;
  int D.55921;
  unsigned int D.55924;
  unsigned int D.55925;
  struct MonoType * D.55926;
  int D.55927;
  unsigned int D.55930;
  int D.55933;
  unsigned int D.55934;
  unsigned int D.55935;
  int * D.55936;
  int D.55937;
  struct MonoMemPool * D.55939;
  unsigned int D.55940;
  int D.55943;
  guint32 * D.55944;
  unsigned int D.55945;
  unsigned int D.55946;
  guint32 * D.55947;
  short unsigned int D.55948;
  int D.55949;
  int D.55950;
  int D.55951;
  _Bool D.55952;
  long int D.55953;
  long int D.55954;
  short unsigned int D.55961;
  short unsigned int D.55964;
  int D.55967;
  struct MonoInst * D.55969;
  short unsigned int D.55970;
  int D.55973;
  int D.55974;
  int D.55980;
  unsigned int D.55981;
  unsigned int D.55982;
  int * D.55983;
  int D.55984;
  _Bool D.55986;
  long int D.55987;
  long int D.55988;
  int D.55991;
  int D.55992;
  _Bool D.55997;
  long int D.55998;
  long int D.55999;
  _Bool D.56002;
  long int D.56003;
  long int D.56004;
  _Bool D.56007;
  long int D.56008;
  long int D.56009;
  short unsigned int D.56012;
  unsigned int D.56015;
  int D.56016;
  struct MonoInst * D.56017;
  int D.56018;
  int D.56019;
  const unsigned char * D.56020;
  int D.56021;
  int D.56022;
  unsigned int D.56027;
  int D.56028;
  struct MonoInst * D.56029;
  int D.56030;
  int D.56031;
  unsigned int idx.563;
  unsigned int D.56033;
  unsigned int D.56034;
  int D.56035;
  unsigned int D.56036;
  short unsigned int D.56037;
  int D.56040;
  struct MonoInst * D.56041;
  int D.56042;
  int D.56043;
  int D.56044;
  int D.56045;
  int D.56049;
  _Bool D.56053;
  long int D.56054;
  long int D.56055;
  short unsigned int D.56060;
  int D.56063;
  char D.56064;
  char D.56065;
  short unsigned int D.56067;
  int D.56072;
  int D.56073;
  int D.56074;
  signed char D.56075;
  int D.56076;
  int iftmp.564;
  _Bool D.56084;
  long int D.56085;
  long int D.56086;
  unsigned int D.56091;
  unsigned int D.56094;
  unsigned int D.56095;
  struct MonoInst * * D.56096;
  struct MonoInst * D.56097;
  struct MonoInst * iftmp.565;
  struct MonoType * D.56104;
  unsigned int D.56105;
  short unsigned int D.56106;
  int D.56109;
  const char * D.56115;
  char D.56116;
  guint32 * D.56118;
  unsigned int D.56119;
  int D.56121;
  _Bool D.56123;
  long int D.56124;
  long int D.56125;
  int D.56131;
  short unsigned int D.56132;
  int D.56133;
  int D.56134;
  unsigned int D.56139;
  unsigned int D.56140;
  int D.56141;
  int D.56144;
  struct MonoInst * D.56145;
  int D.56146;
  int D.56147;
  int D.56148;
  int D.56149;
  int D.56150;
  _Bool D.56152;
  long int D.56153;
  long int D.56154;
  int D.56163;
  int D.56164;
  short unsigned int D.56165;
  short unsigned int D.56170;
  _Bool D.56171;
  _Bool D.56172;
  _Bool D.56173;
  short unsigned int D.56175;
  int D.56179;
  int D.56181;
  short unsigned int D.56182;
  unsigned char D.56183;
  int D.56184;
  int D.56185;
  unsigned int dreg.566;
  unsigned int D.56191;
  struct MonoInst * * D.56192;
  struct MonoInst * D.56193;
  struct MonoBasicBlock * * D.56196;
  signed char D.56201;
  int D.56204;
  struct MonoInst * D.56205;
  int D.56206;
  int D.56207;
  int D.56208;
  sizetype D.56209;
  const char * D.56210;
  char D.56211;
  int iftmp.567;
  _Bool D.56215;
  _Bool D.56216;
  _Bool D.56217;
  _Bool D.56219;
  _Bool D.56220;
  _Bool D.56221;
  _Bool D.56223;
  long int D.56224;
  long int D.56225;
  unsigned int sreg.568;
  unsigned int sreg.569;
  unsigned int D.56234;
  struct MonoInst * * D.56235;
  struct MonoInst * D.56236;
  struct MonoInst * iftmp.570;
  short unsigned int D.56243;
  int D.56246;
  struct MonoInst * * D.56247;
  struct MonoBasicBlock * * D.56248;
  unsigned char D.56253;
  signed char D.56254;
  int D.56257;
  struct MonoInst * D.56258;
  int D.56259;
  int D.56260;
  _Bool D.56261;
  long int D.56262;
  long int D.56263;
  struct MonoType * D.56266;
  _Bool D.56267;
  long int D.56268;
  long int D.56269;
  guint32 * D.56272;
  unsigned int D.56273;
  _Bool D.56276;
  long int D.56277;
  long int D.56278;
  int D.56283;
  int load_opcode.571;
  int D.56288;
  int D.56290;
  short unsigned int D.56291;
  int D.56292;
  int D.56293;
  int D.56297;
  int D.56299;
  short unsigned int D.56300;
  short unsigned int D.56301;
  _Bool D.56302;
  _Bool D.56303;
  _Bool D.56304;
  unsigned int D.56308;
  int D.56309;
  int D.56310;
  int D.56311;
  long int D.56316;
  long int D.56317;
  unsigned int D.56320;
  unsigned int D.56321;
  guint32 * D.56322;
  _Bool D.56323;
  long int D.56324;
  long int D.56325;
  unsigned int lvregs_len.572;
  unsigned int D.56329;
  guint32 * D.56330;
  unsigned int D.56331;
  int D.56334;
  struct MonoInst * D.56335;
  int D.56336;
  int D.56337;
  int D.56338;
  int D.56339;
  int D.56340;
  _Bool D.56342;
  long int D.56343;
  long int D.56344;
  short unsigned int D.56347;
  struct MonoInst * * D.56350;
  struct MonoBasicBlock * * D.56351;
  int D.56358;
  struct MonoInst * D.56359;
  int D.56360;
  int D.56361;
  _Bool D.56364;
  long int D.56365;
  long int D.56366;
  unsigned int prev_dreg.573;
  unsigned int D.56370;
  guint32 * D.56371;
  unsigned int lvregs_len.574;
  unsigned int D.56375;
  guint32 * D.56376;
  unsigned int prev_dreg.575;
  short unsigned int D.56383;
  short unsigned int D.56384;
  _Bool D.56385;
  short unsigned int D.56386;
  _Bool D.56387;
  _Bool D.56388;
  short unsigned int D.56390;
  short unsigned int D.56392;
  short unsigned int D.56394;
  short unsigned int D.56396;
  unsigned char D.56402;
  unsigned char D.56403;
  struct MonoBitSet * D.56406;
  struct MonoInst * D.56409;
  struct MonoMethodVar * D.56412;
  unsigned int D.56413;
  int iftmp.576;
  int D.56417;
  unsigned int D.56418;
  unsigned int D.56420;
  unsigned int D.56421;
  struct MonoInst * * D.56422;
  struct MonoInst * D.56423;
  struct MonoInst * iftmp.577;
  unsigned char D.56429;
  int D.56430;
  int D.56431;
  _Bool D.56433;
  long int D.56434;
  long int D.56435;
  struct MonoBitSet * D.56438;
  unsigned int D.56439;
  unsigned int D.56440;
  int i.578;
  int D.56442;
  unsigned int D.56443;
  unsigned int D.56444;
  struct MonoInst * * D.56447;
  struct MonoInst * D.56448;
  struct MonoBasicBlock * * D.56451;
  unsigned int D.56452;
  unsigned int D.56453;
  struct MonoInst * * D.56456;
  struct MonoInst * D.56457;
  struct MonoBasicBlock * * D.56458;
  struct MonoInst * D.56459;
  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;
      i = 0;
      goto <D.30928>;
      <D.30927>:
      {
        struct MonoInst * ins;

        D.55860 = cfg->varinfo;
        D.55861 = i * 4;
        D.55862 = D.55860 + D.55861;
        ins = *D.55862;
        D.55863 = ins->opcode;
        if (D.55863 != 366) goto <D.55864>; else goto <D.55865>;
        <D.55864>:
        D.55866 = ins->flags;
        D.55867 = (int) D.55866;
        D.55868 = D.55867 & 2;
        if (D.55868 == 0) goto <D.55869>; else goto <D.55870>;
        <D.55869>:
        D.55871 = ins->type;
        D.55872 = (int) D.55871;
        switch (D.55872) <default: <D.30926>, case 2: <D.30923>, case 4: <D.30922>>
        <D.30922>:
        <D.30923>:
        {
          struct MonoInst * tree;

          D.55871 = ins->type;
          if (D.55871 == 4) goto <D.30925>; else goto <D.55873>;
          <D.55873>:
          D.55863 = ins->opcode;
          D.55874 = D.55863 != 367;
          D.55875 = (long int) D.55874;
          D.55876 = __builtin_expect (D.55875, 0);
          if (D.55876 != 0) goto <D.55877>; else goto <D.55878>;
          <D.55877>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12789, "ins->opcode == OP_REGOFFSET");
          <D.55878>:
          D.55880 = ins->dreg;
          D.55881 = D.55880 + 1;
          D.55882 = (unsigned int) D.55881;
          D.55883 = cfg->vreg_to_inst_len;
          if (D.55882 < D.55883) goto <D.55884>; else goto <D.55885>;
          <D.55884>:
          D.55886 = cfg->vreg_to_inst;
          D.55880 = ins->dreg;
          D.55887 = (sizetype) D.55880;
          D.55888 = D.55887 + 1;
          D.55889 = D.55888 * 4;
          D.55890 = D.55886 + D.55889;
          iftmp.561 = *D.55890;
          goto <D.55891>;
          <D.55885>:
          iftmp.561 = 0B;
          <D.55891>:
          tree = iftmp.561;
          D.55892 = tree == 0B;
          D.55893 = (long int) D.55892;
          D.55894 = __builtin_expect (D.55893, 0);
          if (D.55894 != 0) goto <D.55895>; else goto <D.55896>;
          <D.55895>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12792, "tree");
          <D.55896>:
          tree->opcode = 367;
          D.55897 = ins->sreg1;
          tree->sreg1 = D.55897;
          D.55898 = ins->data.op[0].const_val;
          tree->data.op[0].const_val = D.55898;
          D.55880 = ins->dreg;
          D.55900 = D.55880 + 2;
          D.55901 = (unsigned int) D.55900;
          D.55883 = cfg->vreg_to_inst_len;
          if (D.55901 < D.55883) goto <D.55902>; else goto <D.55903>;
          <D.55902>:
          D.55886 = cfg->vreg_to_inst;
          D.55880 = ins->dreg;
          D.55887 = (sizetype) D.55880;
          D.55904 = D.55887 + 2;
          D.55905 = D.55904 * 4;
          D.55906 = D.55886 + D.55905;
          iftmp.562 = *D.55906;
          goto <D.55907>;
          <D.55903>:
          iftmp.562 = 0B;
          <D.55907>:
          tree = iftmp.562;
          D.55892 = tree == 0B;
          D.55893 = (long int) D.55892;
          D.55894 = __builtin_expect (D.55893, 0);
          if (D.55894 != 0) goto <D.55908>; else goto <D.55909>;
          <D.55908>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12798, "tree");
          <D.55909>:
          tree->opcode = 367;
          D.55897 = ins->sreg1;
          tree->sreg1 = D.55897;
          D.55898 = ins->data.op[0].const_val;
          D.55910 = D.55898 + 4;
          tree->data.op[0].const_val = D.55910;
          goto <D.30925>;
        }
        <D.30926>:
        goto <D.30925>;
        <D.30925>:
        <D.55870>:
        <D.55865>:
      }
      i = i + 1;
      <D.30928>:
      D.55911 = cfg->num_varinfo;
      if (D.55911 > i) goto <D.30927>; else goto <D.30929>;
      <D.30929>:
      D.55912 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.55913 = D.55912 & 128;
      if (D.55913 != 0) goto <D.55914>; else goto <D.55915>;
      <D.55914>:
      i = 0;
      goto <D.30932>;
      <D.30931>:
      {
        struct MonoInst * ins;

        D.55860 = cfg->varinfo;
        D.55861 = i * 4;
        D.55862 = D.55860 + D.55861;
        ins = *D.55862;
        D.55916 = ins->opcode;
        if (D.55916 == 366) goto <D.55917>; else goto <D.55918>;
        <D.55917>:
        D.55919 = ins->flags;
        D.55920 = D.55919 | 128;
        ins->flags = D.55920;
        <D.55918>:
      }
      i = i + 1;
      <D.30932>:
      D.55911 = cfg->num_varinfo;
      if (D.55911 > i) goto <D.30931>; else goto <D.30933>;
      <D.30933>:
      <D.55915>:
      D.55921 = cfg->gsharedvt;
      if (D.55921 != 0) goto <D.55922>; else goto <D.55923>;
      <D.55922>:
      D.55924 = cfg->next_vreg;
      D.55925 = D.55924 * 4;
      gsharedvt_vreg_to_idx = monoeg_malloc0 (D.55925);
      i = 0;
      goto <D.30937>;
      <D.30936>:
      {
        struct MonoInst * ins;
        int idx;

        D.55860 = cfg->varinfo;
        D.55861 = i * 4;
        D.55862 = D.55860 + D.55861;
        ins = *D.55862;
        D.55926 = ins->data.op[1].vtype;
        D.55927 = mini_is_gsharedvt_variable_type (cfg, D.55926);
        if (D.55927 != 0) goto <D.55928>; else goto <D.55929>;
        <D.55928>:
        D.55930 = cfg->locals_start;
        if (D.55930 <= i) goto <D.55931>; else goto <D.55932>;
        <D.55931>:
        D.55926 = ins->data.op[1].vtype;
        idx = get_gsharedvt_info_slot (cfg, D.55926, 21);
        D.55933 = ins->dreg;
        D.55934 = (unsigned int) D.55933;
        D.55935 = D.55934 * 4;
        D.55936 = gsharedvt_vreg_to_idx + D.55935;
        D.55937 = idx + 1;
        *D.55936 = D.55937;
        ins->opcode = 331;
        ins->data.op[1].const_val = idx;
        goto <D.55938>;
        <D.55932>:
        D.55933 = ins->dreg;
        D.55934 = (unsigned int) D.55933;
        D.55935 = D.55934 * 4;
        D.55936 = gsharedvt_vreg_to_idx + D.55935;
        *D.55936 = -1;
        ins->opcode = 332;
        <D.55938>:
        <D.55929>:
      }
      i = i + 1;
      <D.30937>:
      D.55911 = cfg->num_varinfo;
      if (D.55911 > i) goto <D.30936>; else goto <D.30938>;
      <D.30938>:
      <D.55923>:
      D.55924 = cfg->next_vreg;
      orig_next_vreg = (int) D.55924;
      D.55939 = cfg->mempool;
      D.55924 = cfg->next_vreg;
      D.55925 = D.55924 * 4;
      vreg_to_lvreg = mono_mempool_alloc0 (D.55939, D.55925);
      D.55939 = cfg->mempool;
      lvregs = mono_mempool_alloc (D.55939, 4096);
      lvregs_len = 0;
      D.55924 = cfg->next_vreg;
      D.55925 = D.55924 * 4;
      live_range_start = monoeg_malloc0 (D.55925);
      D.55924 = cfg->next_vreg;
      D.55925 = D.55924 * 4;
      live_range_end = monoeg_malloc0 (D.55925);
      D.55924 = cfg->next_vreg;
      D.55925 = D.55924 * 4;
      live_range_start_bb = monoeg_malloc (D.55925);
      D.55924 = cfg->next_vreg;
      D.55925 = D.55924 * 4;
      live_range_end_bb = monoeg_malloc (D.55925);
      bb = cfg->bb_entry;
      goto <D.30997>;
      <D.30996>:
      {
        struct MonoInst * ins;

        D.55940 = cfg->verbose_level;
        if (D.55940 > 2) goto <D.55941>; else goto <D.55942>;
        <D.55941>:
        D.55943 = bb->block_num;
        printf ("\nSPILL BLOCK %d:\n", D.55943);
        <D.55942>:
        i = 0;
        goto <D.30941>;
        <D.30940>:
        D.55861 = i * 4;
        D.55944 = lvregs + D.55861;
        D.55945 = *D.55944;
        D.55946 = D.55945 * 4;
        D.55947 = vreg_to_lvreg + D.55946;
        *D.55947 = 0;
        i = i + 1;
        <D.30941>:
        if (i < lvregs_len) goto <D.30940>; else goto <D.30942>;
        <D.30942>:
        lvregs_len = 0;
        cfg->cbb = bb;
        ins = bb->code;
        goto <D.30989>;
        <D.30988>:
        {
          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.55948 = ins->opcode;
              D.55949 = (int) D.55948;
              D.55950 = D.55949 + -313;
              D.55951 = D.55950 * 4;
              spec = &ins_info[D.55951];
              D.55940 = cfg->verbose_level;
              D.55952 = D.55940 > 2;
              D.55953 = (long int) D.55952;
              D.55954 = __builtin_expect (D.55953, 0);
              if (D.55954 != 0) goto <D.55955>; else goto <D.55956>;
              <D.55955>:
              mono_print_ins (ins);
              <D.55956>:
              D.55948 = ins->opcode;
              if (D.55948 == 316) goto <D.55957>; else goto <D.55958>;
              <D.55957>:
              // predicted unlikely by continue predictor.
              goto <D.30953>;
              <D.55958>:
              D.55948 = ins->opcode;
              if (D.55948 == 314) goto <D.55959>; else goto <D.55960>;
              <D.55959>:
              {
                struct MonoInst * var;

                var = ins->data.op[0].p;
                D.55961 = var->opcode;
                if (D.55961 == 368) goto <D.55962>; else goto <D.55963>;
                <D.55962>:
                {
                  struct MonoInst * vtaddr;

                  vtaddr = var->data.op[0].src;
                  D.55964 = vtaddr->opcode;
                  if (D.55964 == 366) goto <D.55965>; else goto <D.55966>;
                  <D.55965>:
                  ins->opcode = 424;
                  D.55967 = vtaddr->dreg;
                  ins->sreg1 = D.55967;
                  goto <D.55968>;
                  <D.55966>:
                  D.55969 = var->data.op[0].src;
                  D.55970 = D.55969->opcode;
                  if (D.55970 == 367) goto <D.55971>; else goto <D.55972>;
                  <D.55971>:
                  ins->opcode = 388;
                  D.55973 = vtaddr->sreg1;
                  ins->sreg1 = D.55973;
                  D.55974 = vtaddr->data.op[0].const_val;
                  ins->data.op[0].const_val = D.55974;
                  goto <D.55975>;
                  <D.55972>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12918);
                  <D.55975>:
                  <D.55968>:
                }
                goto <D.55976>;
                <D.55963>:
                D.55921 = cfg->gsharedvt;
                if (D.55921 != 0) goto <D.55979>; else goto <D.55977>;
                <D.55979>:
                D.55980 = var->dreg;
                D.55981 = (unsigned int) D.55980;
                D.55982 = D.55981 * 4;
                D.55983 = gsharedvt_vreg_to_idx + D.55982;
                D.55984 = *D.55983;
                if (D.55984 < 0) goto <D.55985>; else goto <D.55977>;
                <D.55985>:
                D.55961 = var->opcode;
                D.55986 = D.55961 != 332;
                D.55987 = (long int) D.55986;
                D.55988 = __builtin_expect (D.55987, 0);
                if (D.55988 != 0) goto <D.55989>; else goto <D.55990>;
                <D.55989>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12921, "var->opcode == OP_GSHAREDVT_ARG_REGOFFSET");
                <D.55990>:
                ins->opcode = 388;
                D.55991 = var->sreg1;
                ins->sreg1 = D.55991;
                D.55992 = var->data.op[0].const_val;
                ins->data.op[0].const_val = D.55992;
                goto <D.55978>;
                <D.55977>:
                D.55921 = cfg->gsharedvt;
                if (D.55921 != 0) goto <D.55995>; else goto <D.55993>;
                <D.55995>:
                D.55980 = var->dreg;
                D.55981 = (unsigned int) D.55980;
                D.55982 = D.55981 * 4;
                D.55983 = gsharedvt_vreg_to_idx + D.55982;
                D.55984 = *D.55983;
                if (D.55984 != 0) goto <D.55996>; else goto <D.55993>;
                <D.55996>:
                {
                  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.55980 = var->dreg;
                  D.55981 = (unsigned int) D.55980;
                  D.55982 = D.55981 * 4;
                  D.55983 = gsharedvt_vreg_to_idx + D.55982;
                  D.55984 = *D.55983;
                  idx = D.55984 + -1;
                  info_var = cfg->gsharedvt_info_var;
                  locals_var = cfg->gsharedvt_locals_var;
                  D.55961 = var->opcode;
                  D.55997 = D.55961 != 331;
                  D.55998 = (long int) D.55997;
                  D.55999 = __builtin_expect (D.55998, 0);
                  if (D.55999 != 0) goto <D.56000>; else goto <D.56001>;
                  <D.56000>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12938, "var->opcode == OP_GSHAREDVT_LOCAL");
                  <D.56001>:
                  D.56002 = info_var == 0B;
                  D.56003 = (long int) D.56002;
                  D.56004 = __builtin_expect (D.56003, 0);
                  if (D.56004 != 0) goto <D.56005>; else goto <D.56006>;
                  <D.56005>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12940, "info_var");
                  <D.56006>:
                  D.56007 = locals_var == 0B;
                  D.56008 = (long int) D.56007;
                  D.56009 = __builtin_expect (D.56008, 0);
                  if (D.56009 != 0) goto <D.56010>; else goto <D.56011>;
                  <D.56010>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12941, "locals_var");
                  <D.56011>:
                  cfg->gsharedvt_locals_var_ins = 0B;
                  D.56012 = info_var->opcode;
                  if (D.56012 == 367) goto <D.56013>; else goto <D.56014>;
                  <D.56013>:
                  D.56015 = alloc_ireg (cfg);
                  reg1 = (int) D.56015;
                  D.55939 = cfg->mempool;
                  load = mono_mempool_alloc (D.55939, 56);
                  load->data.op[1].const_val = 0;
                  D.56016 = load->data.op[1].const_val;
                  load->data.op[0].const_val = D.56016;
                  load->prev = 0B;
                  D.56017 = load->prev;
                  load->next = D.56017;
                  load->opcode = 388;
                  load->flags = 0;
                  load->type = 0;
                  load->dreg = -1;
                  load->sreg3 = -1;
                  D.56018 = load->sreg3;
                  load->sreg2 = D.56018;
                  D.56019 = load->sreg2;
                  load->sreg1 = D.56019;
                  D.56020 = cfg->ip;
                  load->cil_code = D.56020;
                  load->dreg = reg1;
                  D.56021 = info_var->sreg1;
                  load->sreg1 = D.56021;
                  D.56022 = info_var->data.op[0].const_val;
                  load->data.op[0].const_val = D.56022;
                  load->type = 1;
                  goto <D.56023>;
                  <D.56014>:
                  D.56012 = info_var->opcode;
                  if (D.56012 == 366) goto <D.56024>; else goto <D.56025>;
                  <D.56024>:
                  load = 0B;
                  reg1 = info_var->dreg;
                  goto <D.56026>;
                  <D.56025>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12954);
                  <D.56026>:
                  <D.56023>:
                  D.56027 = alloc_ireg (cfg);
                  reg2 = (int) D.56027;
                  D.55939 = cfg->mempool;
                  load2 = mono_mempool_alloc (D.55939, 56);
                  load2->data.op[1].const_val = 0;
                  D.56028 = load2->data.op[1].const_val;
                  load2->data.op[0].const_val = D.56028;
                  load2->prev = 0B;
                  D.56029 = load2->prev;
                  load2->next = D.56029;
                  load2->opcode = 393;
                  load2->flags = 0;
                  load2->type = 0;
                  load2->dreg = -1;
                  load2->sreg3 = -1;
                  D.56030 = load2->sreg3;
                  load2->sreg2 = D.56030;
                  D.56031 = load2->sreg2;
                  load2->sreg1 = D.56031;
                  D.56020 = cfg->ip;
                  load2->cil_code = D.56020;
                  load2->dreg = reg2;
                  load2->sreg1 = reg1;
                  idx.563 = (unsigned int) idx;
                  D.56033 = idx.563 + 1;
                  D.56034 = D.56033 * 4;
                  D.56035 = (int) D.56034;
                  load2->data.op[0].const_val = D.56035;
                  load2->type = 1;
                  D.56036 = alloc_ireg (cfg);
                  reg3 = (int) D.56036;
                  D.56037 = locals_var->opcode;
                  if (D.56037 == 367) goto <D.56038>; else goto <D.56039>;
                  <D.56038>:
                  D.55939 = cfg->mempool;
                  load3 = mono_mempool_alloc (D.55939, 56);
                  load3->data.op[1].const_val = 0;
                  D.56040 = load3->data.op[1].const_val;
                  load3->data.op[0].const_val = D.56040;
                  load3->prev = 0B;
                  D.56041 = load3->prev;
                  load3->next = D.56041;
                  load3->opcode = 388;
                  load3->flags = 0;
                  load3->type = 0;
                  load3->dreg = -1;
                  load3->sreg3 = -1;
                  D.56042 = load3->sreg3;
                  load3->sreg2 = D.56042;
                  D.56043 = load3->sreg2;
                  load3->sreg1 = D.56043;
                  D.56020 = cfg->ip;
                  load3->cil_code = D.56020;
                  load3->dreg = reg3;
                  D.56044 = locals_var->sreg1;
                  load3->sreg1 = D.56044;
                  D.56045 = locals_var->data.op[0].const_val;
                  load3->data.op[0].const_val = D.56045;
                  load3->type = 1;
                  goto <D.56046>;
                  <D.56039>:
                  D.56037 = locals_var->opcode;
                  if (D.56037 == 366) goto <D.56047>; else goto <D.56048>;
                  <D.56047>:
                  D.55939 = cfg->mempool;
                  load3 = mono_mempool_alloc (D.55939, 56);
                  load3->data.op[1].const_val = 0;
                  D.56040 = load3->data.op[1].const_val;
                  load3->data.op[0].const_val = D.56040;
                  load3->prev = 0B;
                  D.56041 = load3->prev;
                  load3->next = D.56041;
                  load3->opcode = 424;
                  load3->flags = 0;
                  load3->type = 0;
                  load3->dreg = -1;
                  load3->sreg3 = -1;
                  D.56042 = load3->sreg3;
                  load3->sreg2 = D.56042;
                  D.56043 = load3->sreg2;
                  load3->sreg1 = D.56043;
                  D.56020 = cfg->ip;
                  load3->cil_code = D.56020;
                  load3->dreg = reg3;
                  D.56049 = locals_var->dreg;
                  load3->sreg1 = D.56049;
                  goto <D.56050>;
                  <D.56048>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12965);
                  <D.56050>:
                  <D.56046>:
                  ins->opcode = 565;
                  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.56051>; else goto <D.56052>;
                  <D.56051>:
                  mono_bblock_insert_before_ins (bb, load2, load);
                  <D.56052>:
                }
                goto <D.55994>;
                <D.55993>:
                D.55961 = var->opcode;
                D.56053 = D.55961 != 367;
                D.56054 = (long int) D.56053;
                D.56055 = __builtin_expect (D.56054, 0);
                if (D.56055 != 0) goto <D.56056>; else goto <D.56057>;
                <D.56056>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12977, "var->opcode == OP_REGOFFSET");
                <D.56057>:
                ins->opcode = 429;
                D.55991 = var->sreg1;
                ins->sreg1 = D.55991;
                D.55992 = var->data.op[0].const_val;
                ins->data.op[1].const_val = D.55992;
                <D.55994>:
                <D.55978>:
                <D.55976>:
                *need_local_opts = 1;
                D.55948 = ins->opcode;
                D.55949 = (int) D.55948;
                D.55950 = D.55949 + -313;
                D.55951 = D.55950 * 4;
                spec = &ins_info[D.55951];
              }
              <D.55960>:
              D.55948 = ins->opcode;
              if (D.55948 <= 312) goto <D.56058>; else goto <D.56059>;
              <D.56058>:
              mono_print_ins (ins);
              monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12990);
              <D.56059>:
              D.55948 = ins->opcode;
              D.56060 = D.55948 + 65162;
              if (D.56060 <= 13) goto <D.56061>; else goto <D.56062>;
              <D.56061>:
              tmp_reg = ins->dreg;
              D.56063 = ins->sreg2;
              ins->dreg = D.56063;
              ins->sreg2 = tmp_reg;
              store = 1;
              spec2[0] = 32;
              D.56064 = MEM[(const char *)spec + 1B];
              spec2[1] = D.56064;
              D.56065 = *spec;
              spec2[2] = D.56065;
              spec2[3] = 32;
              spec = &spec2;
              goto <D.56066>;
              <D.56062>:
              D.55948 = ins->opcode;
              D.56067 = D.55948 + 65126;
              if (D.56067 <= 6) goto <D.56068>; else goto <D.56069>;
              <D.56068>:
              monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 13010);
              <D.56069>:
              store = 0;
              <D.56066>:
              no_lvreg = 0;
              D.55940 = cfg->verbose_level;
              D.55952 = D.55940 > 2;
              D.55953 = (long int) D.55952;
              D.55954 = __builtin_expect (D.55953, 0);
              if (D.55954 != 0) goto <D.56070>; else goto <D.56071>;
              <D.56070>:
              D.56072 = ins->dreg;
              printf ("\t %.3s %d", spec, D.56072);
              D.56073 = ins->sreg1;
              sregs[0] = D.56073;
              D.56063 = ins->sreg2;
              sregs[1] = D.56063;
              D.56074 = ins->sreg3;
              sregs[2] = D.56074;
              D.55948 = ins->opcode;
              D.55949 = (int) D.55948;
              D.55950 = D.55949 + -313;
              D.56075 = ins_sreg_counts[D.55950];
              num_sregs = (int) D.56075;
              srcindex = 0;
              goto <D.30966>;
              <D.30965>:
              D.56076 = sregs[srcindex];
              printf (" %d", D.56076);
              srcindex = srcindex + 1;
              <D.30966>:
              if (srcindex < num_sregs) goto <D.30965>; else goto <D.30967>;
              <D.30967>:
              printf ("\n");
              <D.56071>:
              D.56065 = *spec;
              regtype = (int) D.56065;
              D.56072 = ins->dreg;
              if (D.56072 != -1) goto <D.56078>; else goto <D.56082>;
              <D.56082>:
              if (regtype != 32) goto <D.56078>; else goto <D.56079>;
              <D.56078>:
              D.56072 = ins->dreg;
              if (D.56072 == -1) goto <D.56080>; else goto <D.56083>;
              <D.56083>:
              if (regtype == 32) goto <D.56080>; else goto <D.56079>;
              <D.56080>:
              iftmp.564 = 1;
              goto <D.56081>;
              <D.56079>:
              iftmp.564 = 0;
              <D.56081>:
              D.56084 = iftmp.564 != 0;
              D.56085 = (long int) D.56084;
              D.56086 = __builtin_expect (D.56085, 0);
              if (D.56086 != 0) goto <D.56087>; else goto <D.56088>;
              <D.56087>:
              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.56088>:
              prev_dreg = -1;
              D.56072 = ins->dreg;
              if (D.56072 != -1) goto <D.56089>; else goto <D.56090>;
              <D.56089>:
              D.56072 = ins->dreg;
              D.56091 = (unsigned int) D.56072;
              D.55883 = cfg->vreg_to_inst_len;
              if (D.56091 < D.55883) goto <D.56092>; else goto <D.56093>;
              <D.56092>:
              D.55886 = cfg->vreg_to_inst;
              D.56072 = ins->dreg;
              D.56094 = (unsigned int) D.56072;
              D.56095 = D.56094 * 4;
              D.56096 = D.55886 + D.56095;
              D.56097 = *D.56096;
              if (D.56097 != 0B) goto <D.56098>; else goto <D.56099>;
              <D.56098>:
              {
                struct MonoInst * var;
                struct MonoInst * store_ins;
                int store_opcode;
                struct MonoInst * def_ins;
                int dreg;

                D.56072 = ins->dreg;
                D.56091 = (unsigned int) D.56072;
                D.55883 = cfg->vreg_to_inst_len;
                if (D.56091 < D.55883) goto <D.56101>; else goto <D.56102>;
                <D.56101>:
                D.55886 = cfg->vreg_to_inst;
                D.56072 = ins->dreg;
                D.56094 = (unsigned int) D.56072;
                D.56095 = D.56094 * 4;
                D.56096 = D.55886 + D.56095;
                iftmp.565 = *D.56096;
                goto <D.56103>;
                <D.56102>:
                iftmp.565 = 0B;
                <D.56103>:
                var = iftmp.565;
                def_ins = ins;
                dreg = ins->dreg;
                D.56104 = var->data.op[1].vtype;
                D.56105 = mono_type_to_store_membase (cfg, D.56104);
                store_opcode = (int) D.56105;
                D.56106 = var->opcode;
                if (D.56106 == 366) goto <D.56107>; else goto <D.56108>;
                <D.56107>:
                D.56109 = var->dreg;
                ins->dreg = D.56109;
                goto <D.56110>;
                <D.56108>:
                D.56072 = ins->dreg;
                D.56073 = ins->sreg1;
                if (D.56072 == D.56073) goto <D.56113>; else goto <D.56111>;
                <D.56113>:
                D.56065 = *spec;
                if (D.56065 == 105) goto <D.56114>; else goto <D.56111>;
                <D.56114>:
                D.56115 = spec + 1;
                D.56116 = *D.56115;
                if (D.56116 == 105) goto <D.56117>; else goto <D.56111>;
                <D.56117>:
                D.56072 = ins->dreg;
                D.56094 = (unsigned int) D.56072;
                D.56095 = D.56094 * 4;
                D.56118 = vreg_to_lvreg + D.56095;
                D.56119 = *D.56118;
                if (D.56119 == 0) goto <D.56120>; else goto <D.56111>;
                <D.56120>:
                D.55948 = ins->opcode;
                D.55949 = (int) D.55948;
                D.56121 = op_to_op_dest_membase (store_opcode, D.55949);
                if (D.56121 != -1) goto <D.56122>; else goto <D.56111>;
                <D.56122>:
                D.56106 = var->opcode;
                D.56123 = D.56106 != 367;
                D.56124 = (long int) D.56123;
                D.56125 = __builtin_expect (D.56124, 0);
                if (D.56125 != 0) goto <D.56126>; else goto <D.56127>;
                <D.56126>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13045, "var->opcode == OP_REGOFFSET");
                <D.56127>:
                D.55948 = ins->opcode;
                if (D.55948 == 424) goto <D.56128>; else goto <D.56129>;
                <D.56128>:
                ins->opcode = 316;
                ins->dreg = -1;
                ins->sreg3 = -1;
                D.56074 = ins->sreg3;
                ins->sreg2 = D.56074;
                D.56063 = ins->sreg2;
                ins->sreg1 = D.56063;
                def_ins = 0B;
                goto <D.56130>;
                <D.56129>:
                D.55948 = ins->opcode;
                D.55949 = (int) D.55948;
                D.56131 = op_to_op_dest_membase (store_opcode, D.55949);
                D.56132 = (short unsigned int) D.56131;
                ins->opcode = D.56132;
                D.56133 = var->sreg1;
                ins->sreg1 = D.56133;
                D.56134 = var->data.op[0].const_val;
                ins->data.op[0].const_val = D.56134;
                ins->dreg = -1;
                <D.56130>:
                D.55948 = ins->opcode;
                D.55949 = (int) D.55948;
                D.55950 = D.55949 + -313;
                D.55951 = D.55950 * 4;
                spec = &ins_info[D.55951];
                goto <D.56112>;
                <D.56111>:
                {
                  guint32 lvreg;

                  D.56106 = var->opcode;
                  D.56123 = D.56106 != 367;
                  D.56124 = (long int) D.56123;
                  D.56125 = __builtin_expect (D.56124, 0);
                  if (D.56125 != 0) goto <D.56135>; else goto <D.56136>;
                  <D.56135>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13059, "var->opcode == OP_REGOFFSET");
                  <D.56136>:
                  prev_dreg = ins->dreg;
                  D.56072 = ins->dreg;
                  D.56094 = (unsigned int) D.56072;
                  D.56095 = D.56094 * 4;
                  D.56118 = vreg_to_lvreg + D.56095;
                  *D.56118 = 0;
                  lvreg = 0;
                  if (0 != 0) goto <D.56137>; else goto <D.56138>;
                  <D.56137>:
                  regtype = 108;
                  store_opcode = 378;
                  <D.56138>:
                  D.56139 = stacktypes[regtype];
                  D.56140 = alloc_dreg (cfg, D.56139);
                  D.56141 = (int) D.56140;
                  ins->dreg = D.56141;
                  if (regtype == 108) goto <D.56142>; else goto <D.56143>;
                  <D.56142>:
                  D.55939 = cfg->mempool;
                  store_ins = mono_mempool_alloc (D.55939, 56);
                  store_ins->data.op[1].const_val = 0;
                  D.56144 = store_ins->data.op[1].const_val;
                  store_ins->data.op[0].const_val = D.56144;
                  store_ins->prev = 0B;
                  D.56145 = store_ins->prev;
                  store_ins->next = D.56145;
                  store_ins->opcode = 377;
                  store_ins->flags = 0;
                  store_ins->type = 0;
                  store_ins->dreg = -1;
                  store_ins->sreg3 = -1;
                  D.56146 = store_ins->sreg3;
                  store_ins->sreg2 = D.56146;
                  D.56147 = store_ins->sreg2;
                  store_ins->sreg1 = D.56147;
                  D.56020 = cfg->ip;
                  store_ins->cil_code = D.56020;
                  D.56072 = ins->dreg;
                  D.56148 = D.56072 + 1;
                  store_ins->sreg1 = D.56148;
                  D.56133 = var->sreg1;
                  store_ins->dreg = D.56133;
                  D.56134 = var->data.op[0].const_val;
                  store_ins->data.op[0].const_val = D.56134;
                  mono_bblock_insert_after_ins (bb, ins, store_ins);
                  D.55939 = cfg->mempool;
                  store_ins = mono_mempool_alloc (D.55939, 56);
                  store_ins->data.op[1].const_val = 0;
                  D.56144 = store_ins->data.op[1].const_val;
                  store_ins->data.op[0].const_val = D.56144;
                  store_ins->prev = 0B;
                  D.56145 = store_ins->prev;
                  store_ins->next = D.56145;
                  store_ins->opcode = 377;
                  store_ins->flags = 0;
                  store_ins->type = 0;
                  store_ins->dreg = -1;
                  store_ins->sreg3 = -1;
                  D.56146 = store_ins->sreg3;
                  store_ins->sreg2 = D.56146;
                  D.56147 = store_ins->sreg2;
                  store_ins->sreg1 = D.56147;
                  D.56020 = cfg->ip;
                  store_ins->cil_code = D.56020;
                  D.56072 = ins->dreg;
                  D.56149 = D.56072 + 2;
                  store_ins->sreg1 = D.56149;
                  D.56133 = var->sreg1;
                  store_ins->dreg = D.56133;
                  D.56134 = var->data.op[0].const_val;
                  D.56150 = D.56134 + 4;
                  store_ins->data.op[0].const_val = D.56150;
                  mono_bblock_insert_after_ins (bb, ins, store_ins);
                  def_ins = store_ins;
                  goto <D.56151>;
                  <D.56143>:
                  D.56152 = store_opcode == 387;
                  D.56153 = (long int) D.56152;
                  D.56154 = __builtin_expect (D.56153, 0);
                  if (D.56154 != 0) goto <D.56155>; else goto <D.56156>;
                  <D.56155>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13086, "store_opcode != OP_STOREV_MEMBASE");
                  <D.56156>:
                  if (lvreg == 0) goto <D.56160>; else goto <D.56157>;
                  <D.56160>:
                  D.55948 = ins->opcode;
                  if (D.55948 == 362) goto <D.56158>; else goto <D.56161>;
                  <D.56161>:
                  D.55948 = ins->opcode;
                  if (D.55948 == 363) goto <D.56162>; else goto <D.56157>;
                  <D.56162>:
                  D.56163 = ins->data.op[0].const_val;
                  if (D.56163 == 0) goto <D.56158>; else goto <D.56157>;
                  <D.56158>:
                  D.56164 = store_membase_reg_to_store_membase_imm (store_opcode);
                  D.56165 = (short unsigned int) D.56164;
                  ins->opcode = D.56165;
                  D.56163 = ins->data.op[0].const_val;
                  ins->data.op[1].const_val = D.56163;
                  D.56133 = var->sreg1;
                  ins->dreg = D.56133;
                  D.56134 = var->data.op[0].const_val;
                  ins->data.op[0].const_val = D.56134;
                  D.55948 = ins->opcode;
                  D.55949 = (int) D.55948;
                  D.55950 = D.55949 + -313;
                  D.55951 = D.55950 * 4;
                  spec = &ins_info[D.55951];
                  goto <D.56159>;
                  <D.56157>:
                  if (lvreg == 0) goto <D.56169>; else goto <D.56166>;
                  <D.56169>:
                  D.56170 = ins->opcode;
                  D.56171 = D.56170 == 424;
                  D.56172 = D.56170 == 426;
                  D.56173 = D.56171 | D.56172;
                  if (D.56173 != 0) goto <D.56167>; else goto <D.56174>;
                  <D.56174>:
                  D.55948 = ins->opcode;
                  if (D.55948 == 425) goto <D.56167>; else goto <D.56166>;
                  <D.56167>:
                  D.56175 = (short unsigned int) store_opcode;
                  ins->opcode = D.56175;
                  D.56133 = var->sreg1;
                  ins->dreg = D.56133;
                  D.56134 = var->data.op[0].const_val;
                  ins->data.op[0].const_val = D.56134;
                  no_lvreg = 1;
                  tmp_reg = ins->dreg;
                  D.56063 = ins->sreg2;
                  ins->dreg = D.56063;
                  ins->sreg2 = tmp_reg;
                  store = 1;
                  spec2[0] = 32;
                  D.56064 = MEM[(const char *)spec + 1B];
                  spec2[1] = D.56064;
                  D.56065 = *spec;
                  spec2[2] = D.56065;
                  spec2[3] = 32;
                  spec = &spec2;
                  goto <D.56168>;
                  <D.56166>:
                  if (lvreg == 0) goto <D.56178>; else goto <D.56176>;
                  <D.56178>:
                  D.55948 = ins->opcode;
                  D.55949 = (int) D.55948;
                  D.56179 = op_to_op_store_membase (store_opcode, D.55949);
                  if (D.56179 != -1) goto <D.56180>; else goto <D.56176>;
                  <D.56180>:
                  D.55948 = ins->opcode;
                  D.55949 = (int) D.55948;
                  D.56181 = op_to_op_store_membase (store_opcode, D.55949);
                  D.56182 = (short unsigned int) D.56181;
                  ins->opcode = D.56182;
                  ins->dreg = -1;
                  D.56133 = var->sreg1;
                  ins->sreg1 = D.56133;
                  D.56134 = var->data.op[0].const_val;
                  ins->data.op[0].const_val = D.56134;
                  D.55948 = ins->opcode;
                  D.55949 = (int) D.55948;
                  D.55950 = D.55949 + -313;
                  D.55951 = D.55950 * 4;
                  spec = &ins_info[D.55951];
                  goto <D.56177>;
                  <D.56176>:
                  D.55939 = cfg->mempool;
                  store_ins = mono_mempool_alloc (D.55939, 56);
                  store_ins->data.op[1].const_val = 0;
                  D.56144 = store_ins->data.op[1].const_val;
                  store_ins->data.op[0].const_val = D.56144;
                  store_ins->prev = 0B;
                  D.56145 = store_ins->prev;
                  store_ins->next = D.56145;
                  D.56175 = (short unsigned int) store_opcode;
                  store_ins->opcode = D.56175;
                  store_ins->flags = 0;
                  store_ins->type = 0;
                  store_ins->dreg = -1;
                  store_ins->sreg3 = -1;
                  D.56146 = store_ins->sreg3;
                  store_ins->sreg2 = D.56146;
                  D.56147 = store_ins->sreg2;
                  store_ins->sreg1 = D.56147;
                  D.56020 = cfg->ip;
                  store_ins->cil_code = D.56020;
                  D.56072 = ins->dreg;
                  store_ins->sreg1 = D.56072;
                  D.56133 = var->sreg1;
                  store_ins->dreg = D.56133;
                  D.56134 = var->data.op[0].const_val;
                  store_ins->data.op[0].const_val = D.56134;
                  mono_bblock_insert_after_ins (bb, ins, store_ins);
                  def_ins = store_ins;
                  D.56183 = var->flags;
                  D.56184 = (int) D.56183;
                  D.56185 = D.56184 & 20;
                  if (D.56185 == 0) goto <D.56186>; else goto <D.56187>;
                  <D.56186>:
                  dest_has_lvreg = 1;
                  <D.56187>:
                  <D.56177>:
                  <D.56168>:
                  <D.56159>:
                  <D.56151>:
                }
                <D.56112>:
                <D.56110>:
                if (def_ins != 0B) goto <D.56188>; else goto <D.56189>;
                <D.56188>:
                dreg.566 = (unsigned int) dreg;
                D.56191 = dreg.566 * 4;
                D.56192 = live_range_start + D.56191;
                D.56193 = *D.56192;
                if (D.56193 == 0B) goto <D.56194>; else goto <D.56195>;
                <D.56194>:
                dreg.566 = (unsigned int) dreg;
                D.56191 = dreg.566 * 4;
                D.56192 = live_range_start + D.56191;
                *D.56192 = def_ins;
                dreg.566 = (unsigned int) dreg;
                D.56191 = dreg.566 * 4;
                D.56196 = live_range_start_bb + D.56191;
                *D.56196 = bb;
                <D.56195>:
                <D.56189>:
                D.55912 = BIT_FIELD_REF <*cfg, 8, 3424>;
                D.55913 = D.55912 & 128;
                if (D.55913 != 0) goto <D.56197>; else goto <D.56198>;
                <D.56197>:
                if (def_ins != 0B) goto <D.56199>; else goto <D.56200>;
                <D.56199>:
                D.56183 = var->flags;
                D.56201 = (signed char) D.56183;
                if (D.56201 < 0) goto <D.56202>; else goto <D.56203>;
                <D.56202>:
                {
                  struct MonoInst * tmp;

                  D.55939 = cfg->mempool;
                  tmp = mono_mempool_alloc (D.55939, 56);
                  tmp->data.op[1].const_val = 0;
                  D.56204 = tmp->data.op[1].const_val;
                  tmp->data.op[0].const_val = D.56204;
                  tmp->prev = 0B;
                  D.56205 = tmp->prev;
                  tmp->next = D.56205;
                  tmp->opcode = 838;
                  tmp->flags = 0;
                  tmp->type = 0;
                  tmp->dreg = -1;
                  tmp->sreg3 = -1;
                  D.56206 = tmp->sreg3;
                  tmp->sreg2 = D.56206;
                  D.56207 = tmp->sreg2;
                  tmp->sreg1 = D.56207;
                  D.56020 = cfg->ip;
                  tmp->cil_code = D.56020;
                  tmp->data.op[1].const_val = dreg;
                  mono_bblock_insert_after_ins (bb, def_ins, tmp);
                }
                <D.56203>:
                <D.56200>:
                <D.56198>:
              }
              <D.56099>:
              <D.56093>:
              <D.56090>:
              D.56073 = ins->sreg1;
              sregs[0] = D.56073;
              D.56063 = ins->sreg2;
              sregs[1] = D.56063;
              D.56074 = ins->sreg3;
              sregs[2] = D.56074;
              D.55948 = ins->opcode;
              D.55949 = (int) D.55948;
              D.55950 = D.55949 + -313;
              D.56075 = ins_sreg_counts[D.55950];
              num_sregs = (int) D.56075;
              srcindex = 0;
              goto <D.30983>;
              <D.30982>:
              D.56208 = srcindex + 1;
              D.56209 = (sizetype) D.56208;
              D.56210 = spec + D.56209;
              D.56211 = *D.56210;
              regtype = (int) D.56211;
              sreg = sregs[srcindex];
              D.56215 = sreg != -1;
              D.56216 = regtype != 32;
              D.56217 = D.56215 | D.56216;
              if (D.56217 != 0) goto <D.56218>; else goto <D.56213>;
              <D.56218>:
              D.56219 = sreg == -1;
              D.56220 = regtype == 32;
              D.56221 = D.56219 | D.56220;
              if (D.56221 != 0) goto <D.56222>; else goto <D.56213>;
              <D.56222>:
              iftmp.567 = 1;
              goto <D.56214>;
              <D.56213>:
              iftmp.567 = 0;
              <D.56214>:
              D.56223 = iftmp.567 != 0;
              D.56224 = (long int) D.56223;
              D.56225 = __builtin_expect (D.56224, 0);
              if (D.56225 != 0) goto <D.56226>; else goto <D.56227>;
              <D.56226>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13163, "((sreg == -1) && (regtype == \' \')) || ((sreg != -1) && (regtype != \' \'))");
              <D.56227>:
              if (sreg != -1) goto <D.56228>; else goto <D.56229>;
              <D.56228>:
              sreg.568 = (unsigned int) sreg;
              D.55883 = cfg->vreg_to_inst_len;
              if (sreg.568 < D.55883) goto <D.56231>; else goto <D.56232>;
              <D.56231>:
              D.55886 = cfg->vreg_to_inst;
              sreg.569 = (unsigned int) sreg;
              D.56234 = sreg.569 * 4;
              D.56235 = D.55886 + D.56234;
              D.56236 = *D.56235;
              if (D.56236 != 0B) goto <D.56237>; else goto <D.56238>;
              <D.56237>:
              {
                struct MonoInst * var;
                struct MonoInst * use_ins;
                struct MonoInst * load_ins;
                guint32 load_opcode;

                sreg.568 = (unsigned int) sreg;
                D.55883 = cfg->vreg_to_inst_len;
                if (sreg.568 < D.55883) goto <D.56240>; else goto <D.56241>;
                <D.56240>:
                D.55886 = cfg->vreg_to_inst;
                sreg.569 = (unsigned int) sreg;
                D.56234 = sreg.569 * 4;
                D.56235 = D.55886 + D.56234;
                iftmp.570 = *D.56235;
                goto <D.56242>;
                <D.56241>:
                iftmp.570 = 0B;
                <D.56242>:
                var = iftmp.570;
                use_ins = ins;
                D.56243 = var->opcode;
                if (D.56243 == 366) goto <D.56244>; else goto <D.56245>;
                <D.56244>:
                D.56246 = var->dreg;
                sregs[srcindex] = D.56246;
                sreg.569 = (unsigned int) sreg;
                D.56234 = sreg.569 * 4;
                D.56247 = live_range_end + D.56234;
                *D.56247 = use_ins;
                sreg.569 = (unsigned int) sreg;
                D.56234 = sreg.569 * 4;
                D.56248 = live_range_end_bb + D.56234;
                *D.56248 = bb;
                D.55912 = BIT_FIELD_REF <*cfg, 8, 3424>;
                D.55913 = D.55912 & 128;
                if (D.55913 != 0) goto <D.56249>; else goto <D.56250>;
                <D.56249>:
                D.56246 = var->dreg;
                if (D.56246 < orig_next_vreg) goto <D.56251>; else goto <D.56252>;
                <D.56251>:
                D.56253 = var->flags;
                D.56254 = (signed char) D.56253;
                if (D.56254 < 0) goto <D.56255>; else goto <D.56256>;
                <D.56255>:
                {
                  struct MonoInst * tmp;

                  D.55939 = cfg->mempool;
                  tmp = mono_mempool_alloc (D.55939, 56);
                  tmp->data.op[1].const_val = 0;
                  D.56257 = tmp->data.op[1].const_val;
                  tmp->data.op[0].const_val = D.56257;
                  tmp->prev = 0B;
                  D.56258 = tmp->prev;
                  tmp->next = D.56258;
                  tmp->opcode = 839;
                  tmp->flags = 0;
                  tmp->type = 0;
                  tmp->dreg = -1;
                  tmp->sreg3 = -1;
                  D.56259 = tmp->sreg3;
                  tmp->sreg2 = D.56259;
                  D.56260 = tmp->sreg2;
                  tmp->sreg1 = D.56260;
                  D.56020 = cfg->ip;
                  tmp->cil_code = D.56020;
                  tmp->data.op[1].const_val = sreg;
                  mono_bblock_insert_after_ins (bb, ins, tmp);
                }
                <D.56256>:
                <D.56252>:
                <D.56250>:
                // predicted unlikely by continue predictor.
                goto <D.30980>;
                <D.56245>:
                D.56243 = var->opcode;
                D.56261 = D.56243 != 367;
                D.56262 = (long int) D.56261;
                D.56263 = __builtin_expect (D.56262, 0);
                if (D.56263 != 0) goto <D.56264>; else goto <D.56265>;
                <D.56264>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13188, "var->opcode == OP_REGOFFSET");
                <D.56265>:
                D.56266 = var->data.op[1].vtype;
                load_opcode = mono_type_to_load_membase (cfg, D.56266);
                D.56267 = load_opcode == 399;
                D.56268 = (long int) D.56267;
                D.56269 = __builtin_expect (D.56268, 0);
                if (D.56269 != 0) goto <D.56270>; else goto <D.56271>;
                <D.56270>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13192, "load_opcode != OP_LOADV_MEMBASE");
                <D.56271>:
                sreg.569 = (unsigned int) sreg;
                D.56234 = sreg.569 * 4;
                D.56272 = vreg_to_lvreg + D.56234;
                D.56273 = *D.56272;
                if (D.56273 != 0) goto <D.56274>; else goto <D.56275>;
                <D.56274>:
                sreg.569 = (unsigned int) sreg;
                D.56234 = sreg.569 * 4;
                D.56272 = vreg_to_lvreg + D.56234;
                D.56273 = *D.56272;
                D.56276 = D.56273 == 4294967295;
                D.56277 = (long int) D.56276;
                D.56278 = __builtin_expect (D.56277, 0);
                if (D.56278 != 0) goto <D.56279>; else goto <D.56280>;
                <D.56279>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13195, "vreg_to_lvreg [sreg] != -1");
                <D.56280>:
                D.55940 = cfg->verbose_level;
                D.55952 = D.55940 > 2;
                D.55953 = (long int) D.55952;
                D.55954 = __builtin_expect (D.55953, 0);
                if (D.55954 != 0) goto <D.56281>; else goto <D.56282>;
                <D.56281>:
                sreg.569 = (unsigned int) sreg;
                D.56234 = sreg.569 * 4;
                D.56272 = vreg_to_lvreg + D.56234;
                D.56273 = *D.56272;
                printf ("\t\tUse lvreg R%d for R%d.\n", D.56273, sreg);
                <D.56282>:
                sreg.569 = (unsigned int) sreg;
                D.56234 = sreg.569 * 4;
                D.56272 = vreg_to_lvreg + D.56234;
                D.56273 = *D.56272;
                D.56283 = (int) D.56273;
                sregs[srcindex] = D.56283;
                // predicted unlikely by continue predictor.
                goto <D.30980>;
                <D.56275>:
                if (srcindex == 0) goto <D.56286>; else goto <D.56284>;
                <D.56286>:
                load_opcode.571 = (int) load_opcode;
                D.55948 = ins->opcode;
                D.55949 = (int) D.55948;
                D.56288 = op_to_op_src1_membase (load_opcode.571, D.55949);
                if (D.56288 != -1) goto <D.56289>; else goto <D.56284>;
                <D.56289>:
                load_opcode.571 = (int) load_opcode;
                D.55948 = ins->opcode;
                D.55949 = (int) D.55948;
                D.56290 = op_to_op_src1_membase (load_opcode.571, D.55949);
                D.56291 = (short unsigned int) D.56290;
                ins->opcode = D.56291;
                D.56292 = var->sreg1;
                sregs[0] = D.56292;
                D.56293 = var->data.op[0].const_val;
                ins->data.op[0].const_val = D.56293;
                goto <D.56285>;
                <D.56284>:
                if (srcindex == 1) goto <D.56296>; else goto <D.56294>;
                <D.56296>:
                load_opcode.571 = (int) load_opcode;
                D.55948 = ins->opcode;
                D.55949 = (int) D.55948;
                D.56297 = op_to_op_src2_membase (load_opcode.571, D.55949);
                if (D.56297 != -1) goto <D.56298>; else goto <D.56294>;
                <D.56298>:
                load_opcode.571 = (int) load_opcode;
                D.55948 = ins->opcode;
                D.55949 = (int) D.55948;
                D.56299 = op_to_op_src2_membase (load_opcode.571, D.55949);
                D.56300 = (short unsigned int) D.56299;
                ins->opcode = D.56300;
                D.56292 = var->sreg1;
                sregs[1] = D.56292;
                D.56293 = var->data.op[0].const_val;
                ins->data.op[0].const_val = D.56293;
                goto <D.56295>;
                <D.56294>:
                D.56301 = ins->opcode;
                D.56302 = D.56301 == 424;
                D.56303 = D.56301 == 426;
                D.56304 = D.56302 | D.56303;
                if (D.56304 != 0) goto <D.56305>; else goto <D.56306>;
                <D.56305>:
                ins->opcode = 316;
                sreg = ins->dreg;
                goto <D.56307>;
                <D.56306>:
                D.56139 = stacktypes[regtype];
                D.56308 = alloc_dreg (cfg, D.56139);
                sreg = (int) D.56308;
                D.56253 = var->flags;
                D.56309 = (int) D.56253;
                D.56310 = D.56309 & 20;
                D.56311 = D.56310 | no_lvreg;
                if (D.56311 == 0) goto <D.56312>; else goto <D.56313>;
                <D.56312>:
                D.56246 = var->dreg;
                if (D.56246 == prev_dreg) goto <D.56314>; else goto <D.56315>;
                <D.56314>:
                sreg = ins->dreg;
                <D.56315>:
                D.56219 = sreg == -1;
                D.56316 = (long int) D.56219;
                D.56317 = __builtin_expect (D.56316, 0);
                if (D.56317 != 0) goto <D.56318>; else goto <D.56319>;
                <D.56318>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13234, "sreg != -1");
                <D.56319>:
                D.56246 = var->dreg;
                D.56320 = (unsigned int) D.56246;
                D.56321 = D.56320 * 4;
                D.56322 = vreg_to_lvreg + D.56321;
                sreg.568 = (unsigned int) sreg;
                *D.56322 = sreg.568;
                D.56323 = lvregs_len > 1023;
                D.56324 = (long int) D.56323;
                D.56325 = __builtin_expect (D.56324, 0);
                if (D.56325 != 0) goto <D.56326>; else goto <D.56327>;
                <D.56326>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13236, "lvregs_len < 1024");
                <D.56327>:
                lvregs_len.572 = lvregs_len;
                lvregs_len = lvregs_len.572 + 1;
                D.56329 = lvregs_len.572 * 4;
                D.56330 = lvregs + D.56329;
                D.56246 = var->dreg;
                D.56331 = (unsigned int) D.56246;
                *D.56330 = D.56331;
                <D.56313>:
                <D.56307>:
                sregs[srcindex] = sreg;
                if (regtype == 108) goto <D.56332>; else goto <D.56333>;
                <D.56332>:
                D.55939 = cfg->mempool;
                load_ins = mono_mempool_alloc (D.55939, 56);
                load_ins->data.op[1].const_val = 0;
                D.56334 = load_ins->data.op[1].const_val;
                load_ins->data.op[0].const_val = D.56334;
                load_ins->prev = 0B;
                D.56335 = load_ins->prev;
                load_ins->next = D.56335;
                load_ins->opcode = 393;
                load_ins->flags = 0;
                load_ins->type = 0;
                load_ins->dreg = -1;
                load_ins->sreg3 = -1;
                D.56336 = load_ins->sreg3;
                load_ins->sreg2 = D.56336;
                D.56337 = load_ins->sreg2;
                load_ins->sreg1 = D.56337;
                D.56020 = cfg->ip;
                load_ins->cil_code = D.56020;
                D.56338 = sreg + 2;
                load_ins->dreg = D.56338;
                D.56292 = var->sreg1;
                load_ins->sreg1 = D.56292;
                D.56293 = var->data.op[0].const_val;
                D.56339 = D.56293 + 4;
                load_ins->data.op[0].const_val = D.56339;
                load_ins->type = 1;
                mono_bblock_insert_before_ins (bb, ins, load_ins);
                D.55939 = cfg->mempool;
                load_ins = mono_mempool_alloc (D.55939, 56);
                load_ins->data.op[1].const_val = 0;
                D.56334 = load_ins->data.op[1].const_val;
                load_ins->data.op[0].const_val = D.56334;
                load_ins->prev = 0B;
                D.56335 = load_ins->prev;
                load_ins->next = D.56335;
                load_ins->opcode = 393;
                load_ins->flags = 0;
                load_ins->type = 0;
                load_ins->dreg = -1;
                load_ins->sreg3 = -1;
                D.56336 = load_ins->sreg3;
                load_ins->sreg2 = D.56336;
                D.56337 = load_ins->sreg2;
                load_ins->sreg1 = D.56337;
                D.56020 = cfg->ip;
                load_ins->cil_code = D.56020;
                D.56340 = sreg + 1;
                load_ins->dreg = D.56340;
                D.56292 = var->sreg1;
                load_ins->sreg1 = D.56292;
                D.56293 = var->data.op[0].const_val;
                load_ins->data.op[0].const_val = D.56293;
                load_ins->type = 1;
                mono_bblock_insert_before_ins (bb, ins, load_ins);
                use_ins = load_ins;
                goto <D.56341>;
                <D.56333>:
                D.56342 = load_opcode == 395;
                D.56343 = (long int) D.56342;
                D.56344 = __builtin_expect (D.56343, 0);
                if (D.56344 != 0) goto <D.56345>; else goto <D.56346>;
                <D.56345>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13256, "load_opcode != OP_LOADI8_MEMBASE");
                <D.56346>:
                D.55939 = cfg->mempool;
                load_ins = mono_mempool_alloc (D.55939, 56);
                load_ins->data.op[1].const_val = 0;
                D.56334 = load_ins->data.op[1].const_val;
                load_ins->data.op[0].const_val = D.56334;
                load_ins->prev = 0B;
                D.56335 = load_ins->prev;
                load_ins->next = D.56335;
                D.56347 = (short unsigned int) load_opcode;
                load_ins->opcode = D.56347;
                load_ins->flags = 0;
                load_ins->type = 0;
                load_ins->dreg = -1;
                load_ins->sreg3 = -1;
                D.56336 = load_ins->sreg3;
                load_ins->sreg2 = D.56336;
                D.56337 = load_ins->sreg2;
                load_ins->sreg1 = D.56337;
                D.56020 = cfg->ip;
                load_ins->cil_code = D.56020;
                load_ins->dreg = sreg;
                D.56292 = var->sreg1;
                load_ins->sreg1 = D.56292;
                D.56293 = var->data.op[0].const_val;
                load_ins->data.op[0].const_val = D.56293;
                load_ins->type = 1;
                mono_bblock_insert_before_ins (bb, ins, load_ins);
                use_ins = load_ins;
                <D.56341>:
                <D.56295>:
                <D.56285>:
                D.56246 = var->dreg;
                if (D.56246 < orig_next_vreg) goto <D.56348>; else goto <D.56349>;
                <D.56348>:
                D.56246 = var->dreg;
                D.56320 = (unsigned int) D.56246;
                D.56321 = D.56320 * 4;
                D.56350 = live_range_end + D.56321;
                *D.56350 = use_ins;
                D.56246 = var->dreg;
                D.56320 = (unsigned int) D.56246;
                D.56321 = D.56320 * 4;
                D.56351 = live_range_end_bb + D.56321;
                *D.56351 = bb;
                <D.56349>:
                D.55912 = BIT_FIELD_REF <*cfg, 8, 3424>;
                D.55913 = D.55912 & 128;
                if (D.55913 != 0) goto <D.56352>; else goto <D.56353>;
                <D.56352>:
                D.56246 = var->dreg;
                if (D.56246 < orig_next_vreg) goto <D.56354>; else goto <D.56355>;
                <D.56354>:
                D.56253 = var->flags;
                D.56254 = (signed char) D.56253;
                if (D.56254 < 0) goto <D.56356>; else goto <D.56357>;
                <D.56356>:
                {
                  struct MonoInst * tmp;

                  D.55939 = cfg->mempool;
                  tmp = mono_mempool_alloc (D.55939, 56);
                  tmp->data.op[1].const_val = 0;
                  D.56358 = tmp->data.op[1].const_val;
                  tmp->data.op[0].const_val = D.56358;
                  tmp->prev = 0B;
                  D.56359 = tmp->prev;
                  tmp->next = D.56359;
                  tmp->opcode = 839;
                  tmp->flags = 0;
                  tmp->type = 0;
                  tmp->dreg = -1;
                  tmp->sreg3 = -1;
                  D.56360 = tmp->sreg3;
                  tmp->sreg2 = D.56360;
                  D.56361 = tmp->sreg2;
                  tmp->sreg1 = D.56361;
                  D.56020 = cfg->ip;
                  tmp->cil_code = D.56020;
                  D.56246 = var->dreg;
                  tmp->data.op[1].const_val = D.56246;
                  mono_bblock_insert_after_ins (bb, ins, tmp);
                }
                <D.56357>:
                <D.56355>:
                <D.56353>:
              }
              <D.56238>:
              <D.56232>:
              <D.56229>:
              <D.30980>:
              srcindex = srcindex + 1;
              <D.30983>:
              if (srcindex <= 2) goto <D.30982>; else goto <D.30984>;
              <D.30984>:
              mono_inst_set_src_registers (ins, &sregs);
              if (dest_has_lvreg != 0) goto <D.56362>; else goto <D.56363>;
              <D.56362>:
              D.56072 = ins->dreg;
              D.56364 = D.56072 == -1;
              D.56365 = (long int) D.56364;
              D.56366 = __builtin_expect (D.56365, 0);
              if (D.56366 != 0) goto <D.56367>; else goto <D.56368>;
              <D.56367>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13281, "ins->dreg != -1");
              <D.56368>:
              prev_dreg.573 = (unsigned int) prev_dreg;
              D.56370 = prev_dreg.573 * 4;
              D.56371 = vreg_to_lvreg + D.56370;
              D.56072 = ins->dreg;
              D.56091 = (unsigned int) D.56072;
              *D.56371 = D.56091;
              D.56323 = lvregs_len > 1023;
              D.56324 = (long int) D.56323;
              D.56325 = __builtin_expect (D.56324, 0);
              if (D.56325 != 0) goto <D.56372>; else goto <D.56373>;
              <D.56372>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13283, "lvregs_len < 1024");
              <D.56373>:
              lvregs_len.574 = lvregs_len;
              lvregs_len = lvregs_len.574 + 1;
              D.56375 = lvregs_len.574 * 4;
              D.56376 = lvregs + D.56375;
              prev_dreg.575 = (unsigned int) prev_dreg;
              *D.56376 = prev_dreg.575;
              dest_has_lvreg = 0;
              <D.56363>:
              if (store != 0) goto <D.56378>; else goto <D.56379>;
              <D.56378>:
              tmp_reg = ins->dreg;
              D.56063 = ins->sreg2;
              ins->dreg = D.56063;
              ins->sreg2 = tmp_reg;
              <D.56379>:
              D.56383 = ins->opcode;
              D.56384 = D.56383 + 65193;
              D.56385 = D.56384 <= 2;
              D.56386 = D.56383 + 65187;
              D.56387 = D.56386 <= 2;
              D.56388 = D.56385 | D.56387;
              if (D.56388 != 0) goto <D.56380>; else goto <D.56389>;
              <D.56389>:
              D.55948 = ins->opcode;
              D.56390 = D.55948 + 65184;
              if (D.56390 <= 2) goto <D.56380>; else goto <D.56391>;
              <D.56391>:
              D.55948 = ins->opcode;
              D.56392 = D.55948 + 65181;
              if (D.56392 <= 2) goto <D.56380>; else goto <D.56393>;
              <D.56393>:
              D.55948 = ins->opcode;
              D.56394 = D.55948 + 65190;
              if (D.56394 <= 2) goto <D.56380>; else goto <D.56395>;
              <D.56395>:
              D.55948 = ins->opcode;
              D.56396 = D.55948 + 65178;
              if (D.56396 <= 2) goto <D.56380>; else goto <D.56397>;
              <D.56397>:
              D.55948 = ins->opcode;
              if (D.55948 == 444) goto <D.56380>; else goto <D.56381>;
              <D.56380>:
              i = 0;
              goto <D.30986>;
              <D.30985>:
              D.55861 = i * 4;
              D.55944 = lvregs + D.55861;
              D.55945 = *D.55944;
              D.55946 = D.55945 * 4;
              D.55947 = vreg_to_lvreg + D.55946;
              *D.55947 = 0;
              i = i + 1;
              <D.30986>:
              if (i < lvregs_len) goto <D.30985>; else goto <D.30987>;
              <D.30987>:
              lvregs_len = 0;
              goto <D.56382>;
              <D.56381>:
              D.55948 = ins->opcode;
              if (D.55948 == 316) goto <D.56398>; else goto <D.56399>;
              <D.56398>:
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.56074 = ins->sreg3;
              ins->sreg2 = D.56074;
              D.56063 = ins->sreg2;
              ins->sreg1 = D.56063;
              <D.56399>:
              <D.56382>:
              D.55940 = cfg->verbose_level;
              if (D.55940 > 2) goto <D.56400>; else goto <D.56401>;
              <D.56400>:
              mono_print_ins_index (1, ins);
              <D.56401>:
            }
          finally
            {
              sregs = {CLOBBER};
            }
        }
        <D.30953>:
        ins = ins->next;
        <D.30989>:
        if (ins != 0B) goto <D.30988>; else goto <D.30990>;
        <D.30990>:
        D.56402 = BIT_FIELD_REF <*cfg, 8, 3416>;
        D.56403 = D.56402 & 128;
        if (D.56403 != 0) goto <D.56404>; else goto <D.56405>;
        <D.56404>:
        D.56406 = bb->live_out_set;
        if (D.56406 != 0B) goto <D.56407>; else goto <D.56408>;
        <D.56407>:
        D.56409 = bb->code;
        if (D.56409 != 0B) goto <D.56410>; else goto <D.56411>;
        <D.56410>:
        i = 0;
        goto <D.30994>;
        <D.30993>:
        {
          struct MonoMethodVar * vi;

          D.56412 = cfg->vars;
          D.56413 = i * 56;
          vi = D.56412 + D.56413;
          D.56417 = vi->vreg;
          D.56418 = (unsigned int) D.56417;
          D.55883 = cfg->vreg_to_inst_len;
          if (D.56418 < D.55883) goto <D.56419>; else goto <D.56415>;
          <D.56419>:
          D.55886 = cfg->vreg_to_inst;
          D.56417 = vi->vreg;
          D.56420 = (unsigned int) D.56417;
          D.56421 = D.56420 * 4;
          D.56422 = D.55886 + D.56421;
          D.56423 = *D.56422;
          if (D.56423 != 0B) goto <D.56424>; else goto <D.56415>;
          <D.56424>:
          D.56417 = vi->vreg;
          D.56418 = (unsigned int) D.56417;
          D.55883 = cfg->vreg_to_inst_len;
          if (D.56418 < D.55883) goto <D.56426>; else goto <D.56427>;
          <D.56426>:
          D.55886 = cfg->vreg_to_inst;
          D.56417 = vi->vreg;
          D.56420 = (unsigned int) D.56417;
          D.56421 = D.56420 * 4;
          D.56422 = D.55886 + D.56421;
          iftmp.577 = *D.56422;
          goto <D.56428>;
          <D.56427>:
          iftmp.577 = 0B;
          <D.56428>:
          D.56429 = iftmp.577->flags;
          D.56430 = (int) D.56429;
          D.56431 = D.56430 & 20;
          if (D.56431 != 0) goto <D.56432>; else goto <D.56415>;
          <D.56432>:
          iftmp.576 = 1;
          goto <D.56416>;
          <D.56415>:
          iftmp.576 = 0;
          <D.56416>:
          D.56433 = iftmp.576 != 0;
          D.56434 = (long int) D.56433;
          D.56435 = __builtin_expect (D.56434, 0);
          if (D.56435 != 0) goto <D.56436>; else goto <D.56437>;
          <D.56436>:
          // predicted unlikely by continue predictor.
          goto <D.30992>;
          <D.56437>:
          D.56438 = bb->live_in_set;
          D.56439 = i / 32;
          D.56440 = D.56438->data[D.56439];
          i.578 = (int) i;
          D.56442 = i.578 & 31;
          D.56443 = 1 << D.56442;
          D.56444 = D.56440 & D.56443;
          if (D.56444 != 0) goto <D.56445>; else goto <D.56446>;
          <D.56445>:
          D.56417 = vi->vreg;
          D.56420 = (unsigned int) D.56417;
          D.56421 = D.56420 * 4;
          D.56447 = live_range_start + D.56421;
          D.56448 = *D.56447;
          if (D.56448 == 0B) goto <D.56449>; else goto <D.56450>;
          <D.56449>:
          D.56417 = vi->vreg;
          D.56420 = (unsigned int) D.56417;
          D.56421 = D.56420 * 4;
          D.56447 = live_range_start + D.56421;
          D.56409 = bb->code;
          *D.56447 = D.56409;
          D.56417 = vi->vreg;
          D.56420 = (unsigned int) D.56417;
          D.56421 = D.56420 * 4;
          D.56451 = live_range_start_bb + D.56421;
          *D.56451 = bb;
          <D.56450>:
          <D.56446>:
          D.56406 = bb->live_out_set;
          D.56439 = i / 32;
          D.56452 = D.56406->data[D.56439];
          i.578 = (int) i;
          D.56442 = i.578 & 31;
          D.56443 = 1 << D.56442;
          D.56453 = D.56452 & D.56443;
          if (D.56453 != 0) goto <D.56454>; else goto <D.56455>;
          <D.56454>:
          D.56417 = vi->vreg;
          D.56420 = (unsigned int) D.56417;
          D.56421 = D.56420 * 4;
          D.56456 = live_range_end + D.56421;
          D.56457 = bb->last_ins;
          *D.56456 = D.56457;
          D.56417 = vi->vreg;
          D.56420 = (unsigned int) D.56417;
          D.56421 = D.56420 * 4;
          D.56458 = live_range_end_bb + D.56421;
          *D.56458 = bb;
          <D.56455>:
        }
        <D.30992>:
        i = i + 1;
        <D.30994>:
        D.55911 = cfg->num_varinfo;
        if (D.55911 > i) goto <D.30993>; else goto <D.30995>;
        <D.30995>:
        <D.56411>:
        <D.56408>:
        <D.56405>:
      }
      bb = bb->next_bb;
      <D.30997>:
      if (bb != 0B) goto <D.30996>; else goto <D.30998>;
      <D.30998>:
      D.56459 = cfg->gsharedvt_locals_var_ins;
      if (D.56459 != 0B) goto <D.56460>; else goto <D.56461>;
      <D.56460>:
      D.56459 = cfg->gsharedvt_locals_var_ins;
      D.56459->opcode = 362;
      D.56459 = cfg->gsharedvt_locals_var_ins;
      D.56459->data.op[1].const_val = 0;
      <D.56461>:
      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.56467;
  int D.56472;
  void * D.56474;
  unsigned int D.56475;

  D.56467 = __builtin_constant_p (__len);
  if (D.56467 != 0) goto <D.56468>; else goto <D.56469>;
  <D.56468>:
  if (__len == 0) goto <D.56470>; else goto <D.56471>;
  <D.56470>:
  D.56472 = __builtin_constant_p (__ch);
  if (D.56472 == 0) goto <D.56465>; else goto <D.56473>;
  <D.56473>:
  if (__ch != 0) goto <D.56465>; else goto <D.56466>;
  <D.56465>:
  __warn_memset_zero_len ();
  D.56474 = __dest;
  return D.56474;
  <D.56466>:
  <D.56471>:
  <D.56469>:
  D.56475 = __builtin_object_size (__dest, 0);
  D.56474 = __builtin___memset_chk (__dest, __ch, __len, D.56475);
  return D.56474;
}


op_to_op_dest_membase (int store_opcode, int opcode)
{
  int D.56477;

  D.56477 = -1;
  return D.56477;
}


store_membase_reg_to_store_membase_imm (int opcode)
{
  int D.56479;

  switch (opcode) <default: <D.30762>, case 374: <D.30757>, case 375: <D.30758>, case 376: <D.30759>, case 377: <D.30760>, case 378: <D.30761>>
  <D.30757>:
  D.56479 = 381;
  return D.56479;
  <D.30758>:
  D.56479 = 382;
  return D.56479;
  <D.30759>:
  D.56479 = 383;
  return D.56479;
  <D.30760>:
  D.56479 = 384;
  return D.56479;
  <D.30761>:
  D.56479 = 385;
  return D.56479;
  <D.30762>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12041);
  D.56479 = -1;
  return D.56479;
}


op_to_op_store_membase (int store_opcode, int opcode)
{
  int D.56481;

  D.56481 = -1;
  return D.56481;
}


op_to_op_src1_membase (int load_opcode, int opcode)
{
  int D.56483;

  D.56483 = -1;
  return D.56483;
}


op_to_op_src2_membase (int load_opcode, int opcode)
{
  int D.56485;

  D.56485 = -1;
  return D.56485;
}


