mono_inst_set_src_registers (struct MonoInst * ins, int * regs)
{
  int D.27911;
  int D.27912;
  int D.27913;

  D.27911 = *regs;
  ins->sreg1 = D.27911;
  D.27912 = MEM[(int *)regs + 4B];
  ins->sreg2 = D.27912;
  D.27913 = MEM[(int *)regs + 8B];
  ins->sreg3 = D.27913;
}


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

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


alloc_ireg (struct MonoCompile * cfg)
{
  guint32 D.27916;
  unsigned int D.27917;
  unsigned int D.27918;
  unsigned int D.27919;

  D.27917 = cfg->next_vreg;
  D.27918 = D.27917;
  D.27919 = D.27918 + 1;
  cfg->next_vreg = D.27919;
  D.27916 = D.27918;
  return D.27916;
}


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

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


alloc_freg (struct MonoCompile * cfg)
{
  int D.27923;
  guint32 D.27926;
  unsigned int D.27927;
  unsigned int D.27928;
  unsigned int D.27929;

  D.27923 = mono_arch_is_soft_float ();
  if (D.27923 != 0) goto <D.27924>; else goto <D.27925>;
  <D.27924>:
  D.27926 = alloc_lreg (cfg);
  return D.27926;
  <D.27925>:
  D.27927 = cfg->next_vreg;
  D.27928 = D.27927;
  D.27929 = D.27928 + 1;
  cfg->next_vreg = D.27929;
  D.27926 = D.27928;
  return D.27926;
}


mono_arch_is_soft_float ()
{
  gboolean D.27931;

  D.27931 = 0;
  return D.27931;
}


alloc_lreg (struct MonoCompile * cfg)
{
  unsigned int D.27933;
  unsigned int D.27934;
  guint32 D.27935;
  guint32 res;

  res = cfg->next_vreg;
  D.27933 = cfg->next_vreg;
  D.27934 = D.27933 + 3;
  cfg->next_vreg = D.27934;
  D.27935 = res;
  return D.27935;
}


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

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


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

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


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

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


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

  switch (stack_type) <default: <D.23723>, case 1: <D.23716>, case 2: <D.23721>, case 3: <D.23717>, case 4: <D.23720>, case 5: <D.23718>, case 6: <D.23719>, case 7: <D.23722>>
  <D.23716>:
  <D.23717>:
  D.27943 = alloc_ireg (cfg);
  return D.27943;
  <D.23718>:
  D.27943 = alloc_ireg_mp (cfg);
  return D.27943;
  <D.23719>:
  D.27943 = alloc_ireg_ref (cfg);
  return D.27943;
  <D.23720>:
  D.27943 = alloc_freg (cfg);
  return D.27943;
  <D.23721>:
  D.27943 = alloc_lreg (cfg);
  return D.27943;
  <D.23722>:
  D.27943 = alloc_ireg (cfg);
  return D.27943;
  <D.23723>:
  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.27943 = 4294967295;
  return D.27943;
}


alloc_ireg_mp (struct MonoCompile * cfg)
{
  unsigned int D.27945;
  unsigned int D.27946;
  unsigned int D.27947;
  guint32 D.27950;
  int vreg;

  D.27945 = alloc_ireg (cfg);
  vreg = (int) D.27945;
  D.27946 = BIT_FIELD_REF <*cfg, 32, 3424>;
  D.27947 = D.27946 & 128;
  if (D.27947 != 0) goto <D.27948>; else goto <D.27949>;
  <D.27948>:
  mono_mark_vreg_as_mp (cfg, vreg);
  <D.27949>:
  D.27950 = (guint32) vreg;
  return D.27950;
}


alloc_ireg_ref (struct MonoCompile * cfg)
{
  unsigned int D.27952;
  unsigned int D.27953;
  unsigned int D.27954;
  guint32 D.27957;
  int vreg;

  D.27952 = alloc_ireg (cfg);
  vreg = (int) D.27952;
  D.27953 = BIT_FIELD_REF <*cfg, 32, 3424>;
  D.27954 = D.27953 & 128;
  if (D.27954 != 0) goto <D.27955>; else goto <D.27956>;
  <D.27955>:
  mono_mark_vreg_as_ref (cfg, vreg);
  <D.27956>:
  D.27957 = (guint32) vreg;
  return D.27957;
}


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

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


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

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


mono_alloc_ireg_copy (struct MonoCompile * cfg, guint32 vreg)
{
  unsigned int D.27964;
  gboolean * D.27966;
  unsigned int D.27967;
  gboolean * D.27968;
  int D.27969;
  guint32 D.27971;
  unsigned int D.27973;
  gboolean * D.27975;
  gboolean * D.27976;
  int D.27977;

  D.27964 = cfg->vreg_is_ref_len;
  if (D.27964 > vreg) goto <D.27965>; else goto <D.27963>;
  <D.27965>:
  D.27966 = cfg->vreg_is_ref;
  D.27967 = vreg * 4;
  D.27968 = D.27966 + D.27967;
  D.27969 = *D.27968;
  if (D.27969 != 0) goto <D.27970>; else goto <D.27963>;
  <D.27970>:
  D.27971 = alloc_ireg_ref (cfg);
  return D.27971;
  <D.27963>:
  D.27973 = cfg->vreg_is_mp_len;
  if (D.27973 > vreg) goto <D.27974>; else goto <D.27972>;
  <D.27974>:
  D.27975 = cfg->vreg_is_mp;
  D.27967 = vreg * 4;
  D.27976 = D.27975 + D.27967;
  D.27977 = *D.27976;
  if (D.27977 != 0) goto <D.27978>; else goto <D.27972>;
  <D.27978>:
  D.27971 = alloc_ireg_mp (cfg);
  return D.27971;
  <D.27972>:
  D.27971 = alloc_ireg (cfg);
  return D.27971;
}


mono_type_to_regmove (struct MonoCompile * cfg, struct MonoType * type)
{
  unsigned int D.27980;
  unsigned int D.27981;
  guint D.27984;
  unsigned char D.27985;
  int D.27986;
  struct MonoClass * D.27987;
  unsigned int D.27988;
  unsigned int D.27989;
  struct MonoGenericClass * D.27994;
  struct MonoClass * D.27995;
  struct MonoGenericSharingContext * D.27996;
  _Bool D.27997;
  long int D.27998;
  long int D.27999;
  int D.28002;
  void handle_enum = <<< error >>>;

  D.27980 = BIT_FIELD_REF <*type, 32, 32>;
  D.27981 = D.27980 & 1073741824;
  if (D.27981 != 0) goto <D.27982>; else goto <D.27983>;
  <D.27982>:
  D.27984 = 424;
  return D.27984;
  <D.27983>:
  type = mini_replace_type (type);
  handle_enum:
  D.27985 = type->type;
  D.27986 = (int) D.27985;
  switch (D.27986) <default: <D.24089>, case 2: <D.24065>, case 3: <D.24068>, case 4: <D.24063>, case 5: <D.24064>, case 6: <D.24066>, case 7: <D.24067>, case 8: <D.24069>, case 9: <D.24070>, case 10: <D.24080>, case 11: <D.24081>, case 12: <D.24082>, case 13: <D.24083>, case 14: <D.24076>, case 15: <D.24073>, case 17: <D.24084>, case 18: <D.24075>, case 19: <D.24087>, case 20: <D.24079>, case 21: <D.24086>, case 22: <D.24085>, case 24: <D.24071>, case 25: <D.24072>, case 27: <D.24074>, case 28: <D.24077>, case 29: <D.24078>, case 30: <D.24088>>
  <D.24063>:
  <D.24064>:
  <D.24065>:
  D.27984 = 424;
  return D.27984;
  <D.24066>:
  <D.24067>:
  <D.24068>:
  D.27984 = 424;
  return D.27984;
  <D.24069>:
  <D.24070>:
  D.27984 = 424;
  return D.27984;
  <D.24071>:
  <D.24072>:
  <D.24073>:
  <D.24074>:
  D.27984 = 424;
  return D.27984;
  <D.24075>:
  <D.24076>:
  <D.24077>:
  <D.24078>:
  <D.24079>:
  D.27984 = 424;
  return D.27984;
  <D.24080>:
  <D.24081>:
  D.27984 = 425;
  return D.27984;
  <D.24082>:
  D.27984 = 426;
  return D.27984;
  <D.24083>:
  D.27984 = 426;
  return D.27984;
  <D.24084>:
  D.27987 = type->data.klass;
  D.27988 = BIT_FIELD_REF <*D.27987, 32, 160>;
  D.27989 = D.27988 & 16;
  if (D.27989 != 0) goto <D.27990>; else goto <D.27991>;
  <D.27990>:
  D.27987 = type->data.klass;
  type = mono_class_enum_basetype (D.27987);
  goto handle_enum;
  <D.27991>:
  if (0 != 0) goto <D.27992>; else goto <D.27993>;
  <D.27992>:
  D.27984 = 800;
  return D.27984;
  <D.27993>:
  D.27984 = 427;
  return D.27984;
  <D.24085>:
  D.27984 = 427;
  return D.27984;
  <D.24086>:
  D.27994 = type->data.generic_class;
  D.27995 = D.27994->container_class;
  type = &D.27995->byval_arg;
  goto handle_enum;
  <D.24087>:
  <D.24088>:
  D.27996 = cfg->generic_sharing_context;
  D.27997 = D.27996 == 0B;
  D.27998 = (long int) D.27997;
  D.27999 = __builtin_expect (D.27998, 0);
  if (D.27999 != 0) goto <D.28000>; else goto <D.28001>;
  <D.28000>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 324, "cfg->generic_sharing_context");
  <D.28001>:
  D.28002 = mini_type_var_is_vt (cfg, type);
  if (D.28002 != 0) goto <D.28003>; else goto <D.28004>;
  <D.28003>:
  D.27984 = 427;
  return D.27984;
  <D.28004>:
  D.27984 = 424;
  return D.27984;
  <D.24089>:
  D.27985 = type->type;
  D.27986 = (int) D.27985;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in type_to_regstore", D.27986);
  <D.24090>:
  goto <D.24090>;
  D.27984 = 4294967295;
  return D.27984;
}


mono_print_bb (struct MonoBasicBlock * bb, const char * msg)
{
  int D.28006;
  struct MonoBasicBlock * * D.28007;
  unsigned int i.0;
  unsigned int D.28009;
  struct MonoBasicBlock * * D.28010;
  struct MonoBasicBlock * D.28011;
  int D.28012;
  int D.28013;
  short int D.28014;
  int D.28015;
  struct MonoBasicBlock * * D.28016;
  struct MonoBasicBlock * * D.28017;
  struct MonoBasicBlock * D.28018;
  int D.28019;
  int D.28020;
  short int D.28021;
  int D.28022;
  int i;
  struct MonoInst * tree;

  D.28006 = bb->block_num;
  printf ("\n%s %d: [IN: ", msg, D.28006);
  i = 0;
  goto <D.24098>;
  <D.24097>:
  D.28007 = bb->in_bb;
  i.0 = (unsigned int) i;
  D.28009 = i.0 * 4;
  D.28010 = D.28007 + D.28009;
  D.28011 = *D.28010;
  D.28012 = D.28011->block_num;
  D.28007 = bb->in_bb;
  i.0 = (unsigned int) i;
  D.28009 = i.0 * 4;
  D.28010 = D.28007 + D.28009;
  D.28011 = *D.28010;
  D.28013 = D.28011->dfn;
  printf (" BB%d(%d)", D.28012, D.28013);
  i = i + 1;
  <D.24098>:
  D.28014 = bb->in_count;
  D.28015 = (int) D.28014;
  if (D.28015 > i) goto <D.24097>; else goto <D.24099>;
  <D.24099>:
  printf (", OUT: ");
  i = 0;
  goto <D.24101>;
  <D.24100>:
  D.28016 = bb->out_bb;
  i.0 = (unsigned int) i;
  D.28009 = i.0 * 4;
  D.28017 = D.28016 + D.28009;
  D.28018 = *D.28017;
  D.28019 = D.28018->block_num;
  D.28016 = bb->out_bb;
  i.0 = (unsigned int) i;
  D.28009 = i.0 * 4;
  D.28017 = D.28016 + D.28009;
  D.28018 = *D.28017;
  D.28020 = D.28018->dfn;
  printf (" BB%d(%d)", D.28019, D.28020);
  i = i + 1;
  <D.24101>:
  D.28021 = bb->out_count;
  D.28022 = (int) D.28021;
  if (D.28022 > i) goto <D.24100>; else goto <D.24102>;
  <D.24102>:
  printf (" ]\n");
  tree = bb->code;
  goto <D.24104>;
  <D.24103>:
  mono_print_ins_index (-1, tree);
  tree = tree->next;
  <D.24104>:
  if (tree != 0B) goto <D.24103>; else goto <D.24105>;
  <D.24105>:
}


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

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


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.28032;
  unsigned int i.8;
  unsigned int D.28034;
  struct MonoBasicBlock * * D.28035;
  struct MonoBasicBlock * D.28036;
  short int D.28039;
  int D.28040;
  struct MonoMemPool * D.28043;
  int D.28044;
  unsigned int D.28045;
  unsigned int D.28046;
  struct MonoBasicBlock * * D.28047;
  short int D.28048;
  unsigned short D.28049;
  unsigned short D.28050;
  short int D.28051;
  struct MonoBasicBlock * * D.28052;
  struct MonoBasicBlock * * D.28053;
  struct MonoBasicBlock * D.28054;
  short int D.28057;
  int D.28058;
  int D.28061;
  unsigned int D.28062;
  unsigned int D.28063;
  short int D.28064;
  unsigned short D.28065;
  unsigned short D.28066;
  short int D.28067;
  struct MonoBasicBlock * * newa;
  int i;
  int found;

  found = 0;
  i = 0;
  goto <D.24119>;
  <D.24118>:
  D.28032 = from->out_bb;
  i.8 = (unsigned int) i;
  D.28034 = i.8 * 4;
  D.28035 = D.28032 + D.28034;
  D.28036 = *D.28035;
  if (D.28036 == to) goto <D.28037>; else goto <D.28038>;
  <D.28037>:
  found = 1;
  goto <D.24117>;
  <D.28038>:
  i = i + 1;
  <D.24119>:
  D.28039 = from->out_count;
  D.28040 = (int) D.28039;
  if (D.28040 > i) goto <D.24118>; else goto <D.24117>;
  <D.24117>:
  if (found == 0) goto <D.28041>; else goto <D.28042>;
  <D.28041>:
  D.28043 = cfg->mempool;
  D.28039 = from->out_count;
  D.28040 = (int) D.28039;
  D.28044 = D.28040 + 1;
  D.28045 = (unsigned int) D.28044;
  D.28046 = D.28045 * 4;
  newa = mono_mempool_alloc (D.28043, D.28046);
  i = 0;
  goto <D.24121>;
  <D.24120>:
  i.8 = (unsigned int) i;
  D.28034 = i.8 * 4;
  D.28047 = newa + D.28034;
  D.28032 = from->out_bb;
  i.8 = (unsigned int) i;
  D.28034 = i.8 * 4;
  D.28035 = D.28032 + D.28034;
  D.28036 = *D.28035;
  *D.28047 = D.28036;
  i = i + 1;
  <D.24121>:
  D.28039 = from->out_count;
  D.28040 = (int) D.28039;
  if (D.28040 > i) goto <D.24120>; else goto <D.24122>;
  <D.24122>:
  i.8 = (unsigned int) i;
  D.28034 = i.8 * 4;
  D.28047 = newa + D.28034;
  *D.28047 = to;
  D.28039 = from->out_count;
  D.28048 = D.28039;
  D.28049 = (unsigned short) D.28048;
  D.28050 = D.28049 + 1;
  D.28051 = (short int) D.28050;
  from->out_count = D.28051;
  from->out_bb = newa;
  <D.28042>:
  found = 0;
  i = 0;
  goto <D.24125>;
  <D.24124>:
  D.28052 = to->in_bb;
  i.8 = (unsigned int) i;
  D.28034 = i.8 * 4;
  D.28053 = D.28052 + D.28034;
  D.28054 = *D.28053;
  if (D.28054 == from) goto <D.28055>; else goto <D.28056>;
  <D.28055>:
  found = 1;
  goto <D.24123>;
  <D.28056>:
  i = i + 1;
  <D.24125>:
  D.28057 = to->in_count;
  D.28058 = (int) D.28057;
  if (D.28058 > i) goto <D.24124>; else goto <D.24123>;
  <D.24123>:
  if (found == 0) goto <D.28059>; else goto <D.28060>;
  <D.28059>:
  D.28043 = cfg->mempool;
  D.28057 = to->in_count;
  D.28058 = (int) D.28057;
  D.28061 = D.28058 + 1;
  D.28062 = (unsigned int) D.28061;
  D.28063 = D.28062 * 4;
  newa = mono_mempool_alloc (D.28043, D.28063);
  i = 0;
  goto <D.24127>;
  <D.24126>:
  i.8 = (unsigned int) i;
  D.28034 = i.8 * 4;
  D.28047 = newa + D.28034;
  D.28052 = to->in_bb;
  i.8 = (unsigned int) i;
  D.28034 = i.8 * 4;
  D.28053 = D.28052 + D.28034;
  D.28054 = *D.28053;
  *D.28047 = D.28054;
  i = i + 1;
  <D.24127>:
  D.28057 = to->in_count;
  D.28058 = (int) D.28057;
  if (D.28058 > i) goto <D.24126>; else goto <D.24128>;
  <D.24128>:
  i.8 = (unsigned int) i;
  D.28034 = i.8 * 4;
  D.28047 = newa + D.28034;
  *D.28047 = from;
  D.28057 = to->in_count;
  D.28064 = D.28057;
  D.28065 = (unsigned short) D.28064;
  D.28066 = D.28065 + 1;
  D.28067 = (short int) D.28066;
  to->in_count = D.28067;
  to->in_bb = newa;
  <D.28060>:
}


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

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


type_to_eval_stack_type (struct MonoCompile * cfg, struct MonoType * type, struct MonoInst * inst)
{
  unsigned int D.28072;
  unsigned int D.28073;
  unsigned char D.28076;
  int D.28077;
  struct MonoClass * D.28078;
  unsigned int D.28079;
  unsigned int D.28080;
  struct MonoClass * D.28083;
  struct MonoGenericClass * D.28084;
  struct MonoClass * D.28085;
  struct MonoGenericSharingContext * D.28086;
  _Bool D.28087;
  long int D.28088;
  long int D.28089;
  int D.28092;
  int D.28095;
  _Bool D.28096;
  long int D.28097;
  long int D.28098;
  struct MonoClass * klass;
  void handle_enum = <<< error >>>;

  type = mini_replace_type (type);
  klass = mono_class_from_mono_type (type);
  inst->klass = klass;
  D.28072 = BIT_FIELD_REF <*type, 32, 32>;
  D.28073 = D.28072 & 1073741824;
  if (D.28073 != 0) goto <D.28074>; else goto <D.28075>;
  <D.28074>:
  inst->type = 5;
  return;
  <D.28075>:
  handle_enum:
  D.28076 = type->type;
  D.28077 = (int) D.28076;
  switch (D.28077) <default: <D.24205>, case 1: <D.24178>, case 2: <D.24181>, case 3: <D.24184>, case 4: <D.24179>, case 5: <D.24180>, case 6: <D.24182>, case 7: <D.24183>, case 8: <D.24185>, case 9: <D.24186>, case 10: <D.24196>, case 11: <D.24197>, case 12: <D.24198>, case 13: <D.24199>, case 14: <D.24192>, case 15: <D.24189>, case 17: <D.24200>, case 18: <D.24191>, case 19: <D.24203>, case 20: <D.24195>, case 21: <D.24202>, case 22: <D.24201>, case 24: <D.24187>, case 25: <D.24188>, case 27: <D.24190>, case 28: <D.24193>, case 29: <D.24194>, case 30: <D.24204>>
  <D.24178>:
  inst->type = 0;
  return;
  <D.24179>:
  <D.24180>:
  <D.24181>:
  <D.24182>:
  <D.24183>:
  <D.24184>:
  <D.24185>:
  <D.24186>:
  inst->type = 1;
  return;
  <D.24187>:
  <D.24188>:
  <D.24189>:
  <D.24190>:
  inst->type = 3;
  return;
  <D.24191>:
  <D.24192>:
  <D.24193>:
  <D.24194>:
  <D.24195>:
  inst->type = 6;
  return;
  <D.24196>:
  <D.24197>:
  inst->type = 2;
  return;
  <D.24198>:
  <D.24199>:
  inst->type = 4;
  return;
  <D.24200>:
  D.28078 = type->data.klass;
  D.28079 = BIT_FIELD_REF <*D.28078, 32, 160>;
  D.28080 = D.28079 & 16;
  if (D.28080 != 0) goto <D.28081>; else goto <D.28082>;
  <D.28081>:
  D.28078 = type->data.klass;
  type = mono_class_enum_basetype (D.28078);
  goto handle_enum;
  <D.28082>:
  inst->klass = klass;
  inst->type = 7;
  return;
  <D.24201>:
  D.28083 = mono_defaults.typed_reference_class;
  inst->klass = D.28083;
  inst->type = 7;
  return;
  <D.24202>:
  D.28084 = type->data.generic_class;
  D.28085 = D.28084->container_class;
  type = &D.28085->byval_arg;
  goto handle_enum;
  <D.24203>:
  <D.24204>:
  D.28086 = cfg->generic_sharing_context;
  D.28087 = D.28086 == 0B;
  D.28088 = (long int) D.28087;
  D.28089 = __builtin_expect (D.28088, 0);
  if (D.28089 != 0) goto <D.28090>; else goto <D.28091>;
  <D.28090>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 717, "cfg->generic_sharing_context");
  <D.28091>:
  D.28092 = mini_is_gsharedvt_type (cfg, type);
  if (D.28092 != 0) goto <D.28093>; else goto <D.28094>;
  <D.28093>:
  D.28095 = cfg->gsharedvt;
  D.28096 = D.28095 == 0;
  D.28097 = (long int) D.28096;
  D.28098 = __builtin_expect (D.28097, 0);
  if (D.28098 != 0) goto <D.28099>; else goto <D.28100>;
  <D.28099>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 719, "cfg->gsharedvt");
  <D.28100>:
  inst->type = 7;
  goto <D.28101>;
  <D.28094>:
  inst->type = 6;
  <D.28101>:
  return;
  <D.24205>:
  D.28076 = type->type;
  D.28077 = (int) D.28076;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in eval stack type", D.28077);
  <D.24206>:
  goto <D.24206>;
}


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

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


mini_emit_memcpy (struct MonoCompile * cfg, int destreg, int doffset, int srcreg, int soffset, int size, int align)
{
  _Bool D.28107;
  long int D.28108;
  long int D.28109;
  unsigned int D.28114;
  struct MonoMemPool * D.28115;
  int D.28116;
  struct MonoInst * D.28117;
  int D.28118;
  int D.28119;
  const unsigned char * D.28120;
  struct MonoBasicBlock * D.28121;
  struct MonoInst * D.28122;
  int D.28126;
  struct MonoInst * D.28127;
  int D.28128;
  int D.28129;
  unsigned int D.28133;
  int D.28134;
  struct MonoInst * D.28135;
  int D.28136;
  int D.28137;
  int D.28141;
  struct MonoInst * D.28142;
  int D.28143;
  int D.28144;
  unsigned int D.28148;
  int D.28149;
  struct MonoInst * D.28150;
  int D.28151;
  int D.28152;
  int D.28156;
  struct MonoInst * D.28157;
  int D.28158;
  int D.28159;
  unsigned int D.28163;
  int D.28164;
  struct MonoInst * D.28165;
  int D.28166;
  int D.28167;
  int D.28171;
  struct MonoInst * D.28172;
  int D.28173;
  int D.28174;
  int cur_reg;

  if (align == 0) goto <D.28105>; else goto <D.28106>;
  <D.28105>:
  align = 4;
  <D.28106>:
  D.28107 = size > 9999;
  D.28108 = (long int) D.28107;
  D.28109 = __builtin_expect (D.28108, 0);
  if (D.28109 != 0) goto <D.28110>; else goto <D.28111>;
  <D.28110>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1826, "size < 10000");
  <D.28111>:
  if (align <= 3) goto <D.28112>; else goto <D.28113>;
  <D.28112>:
  goto <D.24703>;
  <D.24702>:
  D.28114 = alloc_preg (cfg);
  cur_reg = (int) D.28114;
  {
    struct MonoInst * inst;

    D.28115 = cfg->mempool;
    inst = mono_mempool_alloc (D.28115, 56);
    inst->data.op[1].const_val = 0;
    D.28116 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28116;
    inst->prev = 0B;
    D.28117 = inst->prev;
    inst->next = D.28117;
    inst->opcode = 389;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28118 = inst->sreg3;
    inst->sreg2 = D.28118;
    D.28119 = inst->sreg2;
    inst->sreg1 = D.28119;
    D.28120 = cfg->ip;
    inst->cil_code = D.28120;
    inst->dreg = cur_reg;
    inst->sreg1 = srcreg;
    inst->data.op[0].const_val = soffset;
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    if (D.28122 != 0B) goto <D.28123>; else goto <D.28124>;
    <D.28123>:
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    D.28122->next = inst;
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    inst->prev = D.28122;
    D.28121 = cfg->cbb;
    D.28121->last_ins = inst;
    goto <D.28125>;
    <D.28124>:
    D.28121 = cfg->cbb;
    D.28121 = cfg->cbb;
    D.28121->last_ins = inst;
    D.28122 = D.28121->last_ins;
    D.28121->code = D.28122;
    <D.28125>:
  }
  {
    struct MonoInst * inst;

    D.28115 = cfg->mempool;
    inst = mono_mempool_alloc (D.28115, 56);
    inst->data.op[1].const_val = 0;
    D.28126 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28126;
    inst->prev = 0B;
    D.28127 = inst->prev;
    inst->next = D.28127;
    inst->opcode = 375;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28128 = inst->sreg3;
    inst->sreg2 = D.28128;
    D.28129 = inst->sreg2;
    inst->sreg1 = D.28129;
    D.28120 = cfg->ip;
    inst->cil_code = D.28120;
    inst->sreg1 = cur_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = doffset;
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    if (D.28122 != 0B) goto <D.28130>; else goto <D.28131>;
    <D.28130>:
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    D.28122->next = inst;
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    inst->prev = D.28122;
    D.28121 = cfg->cbb;
    D.28121->last_ins = inst;
    goto <D.28132>;
    <D.28131>:
    D.28121 = cfg->cbb;
    D.28121 = cfg->cbb;
    D.28121->last_ins = inst;
    D.28122 = D.28121->last_ins;
    D.28121->code = D.28122;
    <D.28132>:
  }
  doffset = doffset + 1;
  soffset = soffset + 1;
  size = size + -1;
  <D.24703>:
  if (size > 0) goto <D.24702>; else goto <D.24704>;
  <D.24704>:
  <D.28113>:
  goto <D.24708>;
  <D.24707>:
  D.28133 = alloc_preg (cfg);
  cur_reg = (int) D.28133;
  {
    struct MonoInst * inst;

    D.28115 = cfg->mempool;
    inst = mono_mempool_alloc (D.28115, 56);
    inst->data.op[1].const_val = 0;
    D.28134 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28134;
    inst->prev = 0B;
    D.28135 = inst->prev;
    inst->next = D.28135;
    inst->opcode = 393;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28136 = inst->sreg3;
    inst->sreg2 = D.28136;
    D.28137 = inst->sreg2;
    inst->sreg1 = D.28137;
    D.28120 = cfg->ip;
    inst->cil_code = D.28120;
    inst->dreg = cur_reg;
    inst->sreg1 = srcreg;
    inst->data.op[0].const_val = soffset;
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    if (D.28122 != 0B) goto <D.28138>; else goto <D.28139>;
    <D.28138>:
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    D.28122->next = inst;
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    inst->prev = D.28122;
    D.28121 = cfg->cbb;
    D.28121->last_ins = inst;
    goto <D.28140>;
    <D.28139>:
    D.28121 = cfg->cbb;
    D.28121 = cfg->cbb;
    D.28121->last_ins = inst;
    D.28122 = D.28121->last_ins;
    D.28121->code = D.28122;
    <D.28140>:
  }
  {
    struct MonoInst * inst;

    D.28115 = cfg->mempool;
    inst = mono_mempool_alloc (D.28115, 56);
    inst->data.op[1].const_val = 0;
    D.28141 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28141;
    inst->prev = 0B;
    D.28142 = inst->prev;
    inst->next = D.28142;
    inst->opcode = 377;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28143 = inst->sreg3;
    inst->sreg2 = D.28143;
    D.28144 = inst->sreg2;
    inst->sreg1 = D.28144;
    D.28120 = cfg->ip;
    inst->cil_code = D.28120;
    inst->sreg1 = cur_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = doffset;
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    if (D.28122 != 0B) goto <D.28145>; else goto <D.28146>;
    <D.28145>:
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    D.28122->next = inst;
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    inst->prev = D.28122;
    D.28121 = cfg->cbb;
    D.28121->last_ins = inst;
    goto <D.28147>;
    <D.28146>:
    D.28121 = cfg->cbb;
    D.28121 = cfg->cbb;
    D.28121->last_ins = inst;
    D.28122 = D.28121->last_ins;
    D.28121->code = D.28122;
    <D.28147>:
  }
  doffset = doffset + 4;
  soffset = soffset + 4;
  size = size + -4;
  <D.24708>:
  if (size > 3) goto <D.24707>; else goto <D.24709>;
  <D.24709>:
  goto <D.24713>;
  <D.24712>:
  D.28148 = alloc_preg (cfg);
  cur_reg = (int) D.28148;
  {
    struct MonoInst * inst;

    D.28115 = cfg->mempool;
    inst = mono_mempool_alloc (D.28115, 56);
    inst->data.op[1].const_val = 0;
    D.28149 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28149;
    inst->prev = 0B;
    D.28150 = inst->prev;
    inst->next = D.28150;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28151 = inst->sreg3;
    inst->sreg2 = D.28151;
    D.28152 = inst->sreg2;
    inst->sreg1 = D.28152;
    D.28120 = cfg->ip;
    inst->cil_code = D.28120;
    inst->dreg = cur_reg;
    inst->sreg1 = srcreg;
    inst->data.op[0].const_val = soffset;
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    if (D.28122 != 0B) goto <D.28153>; else goto <D.28154>;
    <D.28153>:
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    D.28122->next = inst;
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    inst->prev = D.28122;
    D.28121 = cfg->cbb;
    D.28121->last_ins = inst;
    goto <D.28155>;
    <D.28154>:
    D.28121 = cfg->cbb;
    D.28121 = cfg->cbb;
    D.28121->last_ins = inst;
    D.28122 = D.28121->last_ins;
    D.28121->code = D.28122;
    <D.28155>:
  }
  {
    struct MonoInst * inst;

    D.28115 = cfg->mempool;
    inst = mono_mempool_alloc (D.28115, 56);
    inst->data.op[1].const_val = 0;
    D.28156 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28156;
    inst->prev = 0B;
    D.28157 = inst->prev;
    inst->next = D.28157;
    inst->opcode = 376;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28158 = inst->sreg3;
    inst->sreg2 = D.28158;
    D.28159 = inst->sreg2;
    inst->sreg1 = D.28159;
    D.28120 = cfg->ip;
    inst->cil_code = D.28120;
    inst->sreg1 = cur_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = doffset;
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    if (D.28122 != 0B) goto <D.28160>; else goto <D.28161>;
    <D.28160>:
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    D.28122->next = inst;
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    inst->prev = D.28122;
    D.28121 = cfg->cbb;
    D.28121->last_ins = inst;
    goto <D.28162>;
    <D.28161>:
    D.28121 = cfg->cbb;
    D.28121 = cfg->cbb;
    D.28121->last_ins = inst;
    D.28122 = D.28121->last_ins;
    D.28121->code = D.28122;
    <D.28162>:
  }
  doffset = doffset + 2;
  soffset = soffset + 2;
  size = size + -2;
  <D.24713>:
  if (size > 1) goto <D.24712>; else goto <D.24714>;
  <D.24714>:
  goto <D.24718>;
  <D.24717>:
  D.28163 = alloc_preg (cfg);
  cur_reg = (int) D.28163;
  {
    struct MonoInst * inst;

    D.28115 = cfg->mempool;
    inst = mono_mempool_alloc (D.28115, 56);
    inst->data.op[1].const_val = 0;
    D.28164 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28164;
    inst->prev = 0B;
    D.28165 = inst->prev;
    inst->next = D.28165;
    inst->opcode = 389;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28166 = inst->sreg3;
    inst->sreg2 = D.28166;
    D.28167 = inst->sreg2;
    inst->sreg1 = D.28167;
    D.28120 = cfg->ip;
    inst->cil_code = D.28120;
    inst->dreg = cur_reg;
    inst->sreg1 = srcreg;
    inst->data.op[0].const_val = soffset;
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    if (D.28122 != 0B) goto <D.28168>; else goto <D.28169>;
    <D.28168>:
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    D.28122->next = inst;
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    inst->prev = D.28122;
    D.28121 = cfg->cbb;
    D.28121->last_ins = inst;
    goto <D.28170>;
    <D.28169>:
    D.28121 = cfg->cbb;
    D.28121 = cfg->cbb;
    D.28121->last_ins = inst;
    D.28122 = D.28121->last_ins;
    D.28121->code = D.28122;
    <D.28170>:
  }
  {
    struct MonoInst * inst;

    D.28115 = cfg->mempool;
    inst = mono_mempool_alloc (D.28115, 56);
    inst->data.op[1].const_val = 0;
    D.28171 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28171;
    inst->prev = 0B;
    D.28172 = inst->prev;
    inst->next = D.28172;
    inst->opcode = 375;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28173 = inst->sreg3;
    inst->sreg2 = D.28173;
    D.28174 = inst->sreg2;
    inst->sreg1 = D.28174;
    D.28120 = cfg->ip;
    inst->cil_code = D.28120;
    inst->sreg1 = cur_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = doffset;
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    if (D.28122 != 0B) goto <D.28175>; else goto <D.28176>;
    <D.28175>:
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    D.28122->next = inst;
    D.28121 = cfg->cbb;
    D.28122 = D.28121->last_ins;
    inst->prev = D.28122;
    D.28121 = cfg->cbb;
    D.28121->last_ins = inst;
    goto <D.28177>;
    <D.28176>:
    D.28121 = cfg->cbb;
    D.28121 = cfg->cbb;
    D.28121->last_ins = inst;
    D.28122 = D.28121->last_ins;
    D.28121->code = D.28122;
    <D.28177>:
  }
  doffset = doffset + 1;
  soffset = soffset + 1;
  size = size + -1;
  <D.24718>:
  if (size > 0) goto <D.24717>; else goto <D.24719>;
  <D.24719>:
}


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

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


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.28181;
  unsigned int D.28186;
  struct MonoMemPool * D.28187;
  int D.28188;
  struct MonoInst * D.28189;
  int D.28190;
  int D.28191;
  const unsigned char * D.28192;
  int D.28193;
  struct MonoBasicBlock * D.28194;
  struct MonoInst * D.28195;
  unsigned int D.28199;
  unsigned int D.28200;
  struct MonoClass * D.28203;
  struct MonoType * D.28204;
  int iftmp.10;
  unsigned int D.28211;
  unsigned int D.28212;
  struct MonoClass * D.28214;
  unsigned int D.28215;
  unsigned int D.28216;
  struct MonoClass * D.28218;
  short unsigned int D.28219;
  int D.28220;
  int D.28221;
  struct MonoMethod * D.28223;
  struct MonoMethodSignature * D.28224;
  unsigned int D.28225;
  unsigned int D.28226;
  short unsigned int D.28228;
  int D.28230;
  struct MonoInst * * D.28231;
  struct MonoInst * D.28232;
  int D.28233;
  struct MonoGenericSharingContext * D.28239;
  _Bool D.28240;
  long int D.28241;
  long int D.28242;
  struct MonoInst * D.28245;
  int iftmp.11;
  unsigned int D.28251;
  unsigned int D.28252;
  _Bool D.28253;
  int D.28254;
  struct MonoMethod * D.28257;
  unsigned char D.28259;
  unsigned char D.28260;
  unsigned char D.28261;
  <unnamed-unsigned:1> D.28262;
  struct MonoClass * D.28265;
  struct MonoClass * D.28266;
  int D.24990;
  int iftmp.12;
  int D.24989;
  const char[7] * D.28272;
  unsigned char D.28273;
  int D.28274;
  unsigned char D.28275;
  int D.28276;
  const unsigned char * D.28281;
  unsigned char D.28282;
  int D.28283;
  const unsigned char * D.28284;
  unsigned char D.28285;
  int D.28286;
  const unsigned char * D.28291;
  unsigned char D.28292;
  int D.28293;
  const unsigned char * D.28294;
  unsigned char D.28295;
  int D.28296;
  const unsigned char * D.28301;
  unsigned char D.28302;
  int D.28303;
  const unsigned char * D.28304;
  unsigned char D.28305;
  int D.28306;
  const char * D.28308;
  unsigned int D.28311;
  unsigned int D.28312;
  int D.28315;
  struct MonoInst * D.28316;
  int D.28317;
  int D.28318;
  int D.28322;
  struct MonoInst * D.28323;
  int D.28324;
  int D.28325;
  int D.28333;
  struct MonoInst * D.28334;
  int D.28335;
  int D.28336;
  struct MonoInst * D.28337;
  int D.28338;
  unsigned int D.28348;
  unsigned int D.28349;
  int D.28352;
  unsigned int D.28355;
  unsigned int D.28356;
  struct MonoMethod * D.28361;
  unsigned int D.28364;
  unsigned int D.28365;
  int D.28370;
  struct MonoInst * D.28371;
  int D.28372;
  int D.28373;
  int D.28377;
  struct MonoInst * D.28378;
  int D.28379;
  int D.28380;
  int D.28386;
  struct MonoInst * D.28387;
  int D.28388;
  int D.28389;
  int D.28393;
  struct MonoInst * D.28394;
  int D.28395;
  int D.28396;
  short unsigned int D.28400;
  int D.28401;
  int D.28402;
  short unsigned int D.28403;
  int D.28414;
  struct MonoInst * D.28415;
  int D.28416;
  int D.28417;
  int D.28421;
  struct MonoInst * D.28422;
  int D.28423;
  int D.28424;
  int D.28430;
  struct MonoInst * D.28431;
  int D.28432;
  int D.28433;
  int D.28437;
  struct MonoInst * D.28438;
  int D.28439;
  int D.28440;
  int D.28444;
  short unsigned int D.28445;
  unsigned int D.28446;
  int D.28447;
  int D.28452;
  struct MonoInst * D.28453;
  int D.28454;
  int D.28455;
  int D.28459;
  struct MonoInst * D.28460;
  int D.28461;
  int D.28462;
  int D.28467;
  struct MonoInst * D.28468;
  int D.28469;
  int D.28470;
  unsigned char D.28471;
  int mono_use_imt.13;
  struct MonoMethod * D.28480;
  int imt_slot.14;
  int D.28482;
  unsigned int D.28485;
  int D.28486;
  int D.28488;
  int D.28489;
  unsigned int D.28490;
  unsigned int D.28491;
  struct MonoMethodSignature * D.28494;
  short unsigned int D.28495;
  _Bool D.28496;
  long int D.28497;
  long int D.28498;
  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.28181 = this != 0B;
  virtual = (gboolean) D.28181;
  enable_for_aot = 1;
  rgctx_reg = 0;
  if (sig == 0B) goto <D.28182>; else goto <D.28183>;
  <D.28182>:
  sig = mono_method_signature (method);
  <D.28183>:
  if (rgctx_arg != 0B) goto <D.28184>; else goto <D.28185>;
  <D.28184>:
  D.28186 = mono_alloc_preg (cfg);
  rgctx_reg = (int) D.28186;
  {
    struct MonoInst * inst;

    D.28187 = cfg->mempool;
    inst = mono_mempool_alloc (D.28187, 56);
    inst->data.op[1].const_val = 0;
    D.28188 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28188;
    inst->prev = 0B;
    D.28189 = inst->prev;
    inst->next = D.28189;
    inst->opcode = 424;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28190 = inst->sreg3;
    inst->sreg2 = D.28190;
    D.28191 = inst->sreg2;
    inst->sreg1 = D.28191;
    D.28192 = cfg->ip;
    inst->cil_code = D.28192;
    inst->dreg = rgctx_reg;
    D.28193 = rgctx_arg->dreg;
    inst->sreg1 = D.28193;
    D.28194 = cfg->cbb;
    D.28195 = D.28194->last_ins;
    if (D.28195 != 0B) goto <D.28196>; else goto <D.28197>;
    <D.28196>:
    D.28194 = cfg->cbb;
    D.28195 = D.28194->last_ins;
    D.28195->next = inst;
    D.28194 = cfg->cbb;
    D.28195 = D.28194->last_ins;
    inst->prev = D.28195;
    D.28194 = cfg->cbb;
    D.28194->last_ins = inst;
    goto <D.28198>;
    <D.28197>:
    D.28194 = cfg->cbb;
    D.28194 = cfg->cbb;
    D.28194->last_ins = inst;
    D.28195 = D.28194->last_ins;
    D.28194->code = D.28195;
    <D.28198>:
  }
  <D.28185>:
  D.28199 = BIT_FIELD_REF <*method, 32, 160>;
  D.28200 = D.28199 & 128;
  if (D.28200 != 0) goto <D.28201>; else goto <D.28202>;
  <D.28201>:
  {
    struct MonoMethodSignature * ctor_sig;

    D.28187 = cfg->mempool;
    ctor_sig = mono_metadata_signature_dup_mempool (D.28187, sig);
    D.28203 = mono_defaults.string_class;
    D.28204 = &D.28203->byval_arg;
    ctor_sig->ret = D.28204;
    sig = ctor_sig;
  }
  <D.28202>:
  context_used = mini_method_check_context_used (cfg, method);
  if (this != 0B) goto <D.28210>; else goto <D.28206>;
  <D.28210>:
  D.28211 = BIT_FIELD_REF <*sig, 32, 64>;
  D.28212 = D.28211 & 4194304;
  if (D.28212 != 0) goto <D.28213>; else goto <D.28206>;
  <D.28213>:
  D.28214 = method->klass;
  D.28215 = BIT_FIELD_REF <*D.28214, 32, 160>;
  D.28216 = D.28215 & 4194304;
  if (D.28216 != 0) goto <D.28207>; else goto <D.28217>;
  <D.28217>:
  D.28214 = method->klass;
  D.28218 = mono_defaults.object_class;
  if (D.28214 == D.28218) goto <D.28207>; else goto <D.28206>;
  <D.28207>:
  D.28219 = method->flags;
  D.28220 = (int) D.28219;
  D.28221 = D.28220 & 64;
  if (D.28221 == 0) goto <D.28222>; else goto <D.28206>;
  <D.28222>:
  D.28223 = cfg->method;
  D.28224 = mono_method_signature (D.28223);
  D.28225 = BIT_FIELD_REF <*D.28224, 32, 64>;
  D.28226 = D.28225 & 4194304;
  if (D.28226 == 0) goto <D.28208>; else goto <D.28227>;
  <D.28227>:
  D.28228 = this->opcode;
  if (D.28228 != 424) goto <D.28208>; else goto <D.28229>;
  <D.28229>:
  D.28230 = this->sreg1;
  D.28231 = cfg->args;
  D.28232 = *D.28231;
  D.28233 = D.28232->dreg;
  if (D.28230 != D.28233) goto <D.28208>; else goto <D.28234>;
  <D.28234>:
  if (context_used != 0) goto <D.28208>; else goto <D.28206>;
  <D.28208>:
  iftmp.10 = 1;
  goto <D.28209>;
  <D.28206>:
  iftmp.10 = 0;
  <D.28209>:
  might_be_remote = iftmp.10;
  if (might_be_remote != 0) goto <D.28235>; else goto <D.28236>;
  <D.28235>:
  if (context_used != 0) goto <D.28237>; else goto <D.28238>;
  <D.28237>:
  {
    struct MonoInst * addr;

    D.28239 = cfg->generic_sharing_context;
    D.28240 = D.28239 == 0B;
    D.28241 = (long int) D.28240;
    D.28242 = __builtin_expect (D.28241, 0);
    if (D.28242 != 0) goto <D.28243>; else goto <D.28244>;
    <D.28243>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2632, "cfg->generic_sharing_context");
    <D.28244>:
    addr = emit_get_rgctx_method (cfg, context_used, method, 10);
    D.28245 = mono_emit_calli (cfg, sig, args, addr, 0B, 0B);
    return D.28245;
  }
  <D.28238>:
  <D.28236>:
  D.28214 = method->klass;
  D.28218 = mono_defaults.object_class;
  if (D.28214 == D.28218) goto <D.28247>; else goto <D.28250>;
  <D.28250>:
  D.28214 = method->klass;
  D.28251 = D.28214->flags;
  D.28252 = D.28251 & 32;
  if (D.28252 != 0) goto <D.28247>; else goto <D.28248>;
  <D.28247>:
  iftmp.11 = 1;
  goto <D.28249>;
  <D.28248>:
  iftmp.11 = 0;
  <D.28249>:
  need_unbox_trampoline = iftmp.11;
  D.28253 = rgctx_arg != 0B;
  D.28254 = (int) D.28253;
  call = mono_emit_call_args (cfg, sig, args, 0, virtual, tail, D.28254, need_unbox_trampoline);
  if (might_be_remote != 0) goto <D.28255>; else goto <D.28256>;
  <D.28255>:
  D.28257 = mono_marshal_get_remoting_invoke_with_check (method);
  call->method = D.28257;
  goto <D.28258>;
  <D.28256>:
  call->method = method;
  <D.28258>:
  D.28259 = call->inst.flags;
  D.28260 = D.28259 | 1;
  call->inst.flags = D.28260;
  call->inst.data.op[0].src = this;
  D.28261 = (unsigned char) tail;
  D.28262 = (<unnamed-unsigned:1>) D.28261;
  call->tail_call = D.28262;
  if (virtual != 0) goto <D.28263>; else goto <D.28264>;
  <D.28263>:
  {
    int vtable_reg;
    int slot_reg;
    int this_reg;
    int offset;

    this_reg = this->dreg;
    D.28214 = method->klass;
    D.28265 = D.28214->parent;
    D.28266 = mono_defaults.multicastdelegate_class;
    if (D.28265 == D.28266) goto <D.28267>; else goto <D.28268>;
    <D.28267>:
    {
      size_t __s1_len;
      size_t __s2_len;

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

        __s2 = method->name;
        D.28272 = "Invoke";
        D.28273 = MEM[(const unsigned char *)D.28272];
        D.28274 = (int) D.28273;
        D.28275 = *__s2;
        D.28276 = (int) D.28275;
        __result = D.28274 - D.28276;
        {
          if (__s2_len != 0) goto <D.28277>; else goto <D.28278>;
          <D.28277>:
          if (__result == 0) goto <D.28279>; else goto <D.28280>;
          <D.28279>:
          D.28281 = &MEM[(void *)"Invoke" + 1B];
          D.28282 = *D.28281;
          D.28283 = (int) D.28282;
          D.28284 = __s2 + 1;
          D.28285 = *D.28284;
          D.28286 = (int) D.28285;
          __result = D.28283 - D.28286;
          if (__s2_len > 1) goto <D.28287>; else goto <D.28288>;
          <D.28287>:
          if (__result == 0) goto <D.28289>; else goto <D.28290>;
          <D.28289>:
          D.28291 = &MEM[(void *)"Invoke" + 2B];
          D.28292 = *D.28291;
          D.28293 = (int) D.28292;
          D.28294 = __s2 + 2;
          D.28295 = *D.28294;
          D.28296 = (int) D.28295;
          __result = D.28293 - D.28296;
          if (__s2_len > 2) goto <D.28297>; else goto <D.28298>;
          <D.28297>:
          if (__result == 0) goto <D.28299>; else goto <D.28300>;
          <D.28299>:
          D.28301 = &MEM[(void *)"Invoke" + 3B];
          D.28302 = *D.28301;
          D.28303 = (int) D.28302;
          D.28304 = __s2 + 3;
          D.28305 = *D.28304;
          D.28306 = (int) D.28305;
          __result = D.28303 - D.28306;
          <D.28300>:
          <D.28298>:
          <D.28290>:
          <D.28288>:
          <D.28280>:
          <D.28278>:
        }
        D.24989 = __result;
      }
      iftmp.12 = -D.24989;
      goto <D.28307>;
      <D.28271>:
      D.28308 = method->name;
      iftmp.12 = __builtin_strcmp (D.28308, "Invoke");
      <D.28307>:
      D.24990 = iftmp.12;
    }
    if (D.24990 == 0) goto <D.28309>; else goto <D.28310>;
    <D.28309>:
    {
      struct MonoInst * dummy_use;

      D.28311 = BIT_FIELD_REF <*cfg, 32, 3424>;
      D.28312 = D.28311 & 64;
      if (D.28312 != 0) goto <D.28313>; else goto <D.28314>;
      <D.28313>:
      {
        struct MonoInst * inst;

        D.28187 = cfg->mempool;
        inst = mono_mempool_alloc (D.28187, 56);
        inst->data.op[1].const_val = 0;
        D.28315 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.28315;
        inst->prev = 0B;
        D.28316 = inst->prev;
        inst->next = D.28316;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.28317 = inst->sreg3;
        inst->sreg2 = D.28317;
        D.28318 = inst->sreg2;
        inst->sreg1 = D.28318;
        D.28192 = cfg->ip;
        inst->cil_code = D.28192;
        inst->dreg = -1;
        inst->sreg1 = this_reg;
        inst->data.op[1].const_val = 0;
        D.28194 = cfg->cbb;
        D.28195 = D.28194->last_ins;
        if (D.28195 != 0B) goto <D.28319>; else goto <D.28320>;
        <D.28319>:
        D.28194 = cfg->cbb;
        D.28195 = D.28194->last_ins;
        D.28195->next = inst;
        D.28194 = cfg->cbb;
        D.28195 = D.28194->last_ins;
        inst->prev = D.28195;
        D.28194 = cfg->cbb;
        D.28194->last_ins = inst;
        goto <D.28321>;
        <D.28320>:
        D.28194 = cfg->cbb;
        D.28194 = cfg->cbb;
        D.28194->last_ins = inst;
        D.28195 = D.28194->last_ins;
        D.28194->code = D.28195;
        <D.28321>:
      }
      {
        struct MonoInst * inst;

        D.28187 = cfg->mempool;
        inst = mono_mempool_alloc (D.28187, 56);
        inst->data.op[1].const_val = 0;
        D.28322 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.28322;
        inst->prev = 0B;
        D.28323 = inst->prev;
        inst->next = D.28323;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.28324 = inst->sreg3;
        inst->sreg2 = D.28324;
        D.28325 = inst->sreg2;
        inst->sreg1 = D.28325;
        D.28192 = cfg->ip;
        inst->cil_code = D.28192;
        inst->data.op[1].p = "NullReferenceException";
        D.28194 = cfg->cbb;
        D.28195 = D.28194->last_ins;
        if (D.28195 != 0B) goto <D.28326>; else goto <D.28327>;
        <D.28326>:
        D.28194 = cfg->cbb;
        D.28195 = D.28194->last_ins;
        D.28195->next = inst;
        D.28194 = cfg->cbb;
        D.28195 = D.28194->last_ins;
        inst->prev = D.28195;
        D.28194 = cfg->cbb;
        D.28194->last_ins = inst;
        goto <D.28328>;
        <D.28327>:
        D.28194 = cfg->cbb;
        D.28194 = cfg->cbb;
        D.28194->last_ins = inst;
        D.28195 = D.28194->last_ins;
        D.28194->code = D.28195;
        <D.28328>:
      }
      goto <D.28329>;
      <D.28314>:
      <D.28329>:
      call->inst.sreg1 = this_reg;
      call->inst.data.op[0].const_val = 12;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      if (D.28195 != 0B) goto <D.28330>; else goto <D.28331>;
      <D.28330>:
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      D.28195->next = call;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      MEM[(struct MonoInst *)call].prev = D.28195;
      D.28194 = cfg->cbb;
      D.28194->last_ins = call;
      goto <D.28332>;
      <D.28331>:
      D.28194 = cfg->cbb;
      D.28194 = cfg->cbb;
      D.28194->last_ins = call;
      D.28195 = D.28194->last_ins;
      D.28194->code = D.28195;
      <D.28332>:
      D.28187 = cfg->mempool;
      dummy_use = mono_mempool_alloc (D.28187, 56);
      dummy_use->data.op[1].const_val = 0;
      D.28333 = dummy_use->data.op[1].const_val;
      dummy_use->data.op[0].const_val = D.28333;
      dummy_use->prev = 0B;
      D.28334 = dummy_use->prev;
      dummy_use->next = D.28334;
      dummy_use->opcode = 796;
      dummy_use->flags = 0;
      dummy_use->type = 0;
      dummy_use->dreg = -1;
      dummy_use->sreg3 = -1;
      D.28335 = dummy_use->sreg3;
      dummy_use->sreg2 = D.28335;
      D.28336 = dummy_use->sreg2;
      dummy_use->sreg1 = D.28336;
      D.28192 = cfg->ip;
      dummy_use->cil_code = D.28192;
      D.28337 = *args;
      D.28338 = D.28337->dreg;
      dummy_use->sreg1 = D.28338;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      if (D.28195 != 0B) goto <D.28339>; else goto <D.28340>;
      <D.28339>:
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      D.28195->next = dummy_use;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      dummy_use->prev = D.28195;
      D.28194 = cfg->cbb;
      D.28194->last_ins = dummy_use;
      goto <D.28341>;
      <D.28340>:
      D.28194 = cfg->cbb;
      D.28194 = cfg->cbb;
      D.28194->last_ins = dummy_use;
      D.28195 = D.28194->last_ins;
      D.28194->code = D.28195;
      <D.28341>:
      D.28245 = call;
      return D.28245;
    }
    <D.28310>:
    <D.28268>:
    D.28348 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.28349 = D.28348 & 64;
    if (D.28349 == 0) goto <D.28342>; else goto <D.28350>;
    <D.28350>:
    if (enable_for_aot != 0) goto <D.28342>; else goto <D.28343>;
    <D.28342>:
    D.28219 = method->flags;
    D.28220 = (int) D.28219;
    D.28221 = D.28220 & 64;
    if (D.28221 == 0) goto <D.28344>; else goto <D.28351>;
    <D.28351>:
    D.28219 = method->flags;
    D.28220 = (int) D.28219;
    D.28352 = D.28220 & 32;
    if (D.28352 != 0) goto <D.28345>; else goto <D.28353>;
    <D.28353>:
    D.28214 = method->klass;
    if (D.28214 != 0B) goto <D.28354>; else goto <D.28343>;
    <D.28354>:
    D.28214 = method->klass;
    D.28251 = D.28214->flags;
    D.28355 = D.28251 & 256;
    if (D.28355 != 0) goto <D.28345>; else goto <D.28343>;
    <D.28345>:
    D.28199 = BIT_FIELD_REF <*method, 32, 160>;
    D.28356 = D.28199 & 124;
    if (D.28356 != 36) goto <D.28344>; else goto <D.28343>;
    <D.28344>:
    D.28214 = method->klass;
    D.28215 = BIT_FIELD_REF <*D.28214, 32, 160>;
    D.28216 = D.28215 & 4194304;
    if (D.28216 == 0) goto <D.28346>; else goto <D.28357>;
    <D.28357>:
    if (context_used == 0) goto <D.28346>; else goto <D.28343>;
    <D.28346>:
    D.28214 = method->klass;
    D.28215 = BIT_FIELD_REF <*D.28214, 32, 160>;
    D.28216 = D.28215 & 4194304;
    if (D.28216 != 0) goto <D.28358>; else goto <D.28360>;
    <D.28360>:
    D.28214 = method->klass;
    D.28218 = mono_defaults.object_class;
    if (D.28214 == D.28218) goto <D.28358>; else goto <D.28359>;
    <D.28358>:
    D.28361 = mono_marshal_get_remoting_invoke_with_check (method);
    call->method = D.28361;
    method = call->method;
    <D.28359>:
    D.28199 = BIT_FIELD_REF <*method, 32, 160>;
    D.28200 = D.28199 & 128;
    if (D.28200 == 0) goto <D.28362>; else goto <D.28363>;
    <D.28362>:
    D.28364 = cfg->flags;
    D.28365 = D.28364 | 128;
    cfg->flags = D.28365;
    D.28311 = BIT_FIELD_REF <*cfg, 32, 3424>;
    D.28312 = D.28311 & 64;
    if (D.28312 != 0) goto <D.28366>; else goto <D.28367>;
    <D.28366>:
    D.28311 = BIT_FIELD_REF <*cfg, 32, 3424>;
    D.28312 = D.28311 & 64;
    if (D.28312 != 0) goto <D.28368>; else goto <D.28369>;
    <D.28368>:
    {
      struct MonoInst * inst;

      D.28187 = cfg->mempool;
      inst = mono_mempool_alloc (D.28187, 56);
      inst->data.op[1].const_val = 0;
      D.28370 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.28370;
      inst->prev = 0B;
      D.28371 = inst->prev;
      inst->next = D.28371;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.28372 = inst->sreg3;
      inst->sreg2 = D.28372;
      D.28373 = inst->sreg2;
      inst->sreg1 = D.28373;
      D.28192 = cfg->ip;
      inst->cil_code = D.28192;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      inst->data.op[1].const_val = 0;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      if (D.28195 != 0B) goto <D.28374>; else goto <D.28375>;
      <D.28374>:
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      D.28195->next = inst;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      inst->prev = D.28195;
      D.28194 = cfg->cbb;
      D.28194->last_ins = inst;
      goto <D.28376>;
      <D.28375>:
      D.28194 = cfg->cbb;
      D.28194 = cfg->cbb;
      D.28194->last_ins = inst;
      D.28195 = D.28194->last_ins;
      D.28194->code = D.28195;
      <D.28376>:
    }
    {
      struct MonoInst * inst;

      D.28187 = cfg->mempool;
      inst = mono_mempool_alloc (D.28187, 56);
      inst->data.op[1].const_val = 0;
      D.28377 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.28377;
      inst->prev = 0B;
      D.28378 = inst->prev;
      inst->next = D.28378;
      inst->opcode = 451;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.28379 = inst->sreg3;
      inst->sreg2 = D.28379;
      D.28380 = inst->sreg2;
      inst->sreg1 = D.28380;
      D.28192 = cfg->ip;
      inst->cil_code = D.28192;
      inst->data.op[1].p = "NullReferenceException";
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      if (D.28195 != 0B) goto <D.28381>; else goto <D.28382>;
      <D.28381>:
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      D.28195->next = inst;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      inst->prev = D.28195;
      D.28194 = cfg->cbb;
      D.28194->last_ins = inst;
      goto <D.28383>;
      <D.28382>:
      D.28194 = cfg->cbb;
      D.28194 = cfg->cbb;
      D.28194->last_ins = inst;
      D.28195 = D.28194->last_ins;
      D.28194->code = D.28195;
      <D.28383>:
    }
    goto <D.28384>;
    <D.28369>:
    <D.28384>:
    goto <D.28385>;
    <D.28367>:
    {
      struct MonoInst * inst;

      D.28187 = cfg->mempool;
      inst = mono_mempool_alloc (D.28187, 56);
      inst->data.op[1].const_val = 0;
      D.28386 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.28386;
      inst->prev = 0B;
      D.28387 = inst->prev;
      inst->next = D.28387;
      inst->opcode = 340;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.28388 = inst->sreg3;
      inst->sreg2 = D.28388;
      D.28389 = inst->sreg2;
      inst->sreg1 = D.28389;
      D.28192 = cfg->ip;
      inst->cil_code = D.28192;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      if (D.28195 != 0B) goto <D.28390>; else goto <D.28391>;
      <D.28390>:
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      D.28195->next = inst;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      inst->prev = D.28195;
      D.28194 = cfg->cbb;
      D.28194->last_ins = inst;
      goto <D.28392>;
      <D.28391>:
      D.28194 = cfg->cbb;
      D.28194 = cfg->cbb;
      D.28194->last_ins = inst;
      D.28195 = D.28194->last_ins;
      D.28194->code = D.28195;
      <D.28392>:
    }
    <D.28385>:
    {
      struct MonoInst * inst;

      D.28187 = cfg->mempool;
      inst = mono_mempool_alloc (D.28187, 56);
      inst->data.op[1].const_val = 0;
      D.28393 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.28393;
      inst->prev = 0B;
      D.28394 = inst->prev;
      inst->next = D.28394;
      inst->opcode = 799;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.28395 = inst->sreg3;
      inst->sreg2 = D.28395;
      D.28396 = inst->sreg2;
      inst->sreg1 = D.28396;
      D.28192 = cfg->ip;
      inst->cil_code = D.28192;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      if (D.28195 != 0B) goto <D.28397>; else goto <D.28398>;
      <D.28397>:
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      D.28195->next = inst;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      inst->prev = D.28195;
      D.28194 = cfg->cbb;
      D.28194->last_ins = inst;
      goto <D.28399>;
      <D.28398>:
      D.28194 = cfg->cbb;
      D.28194 = cfg->cbb;
      D.28194->last_ins = inst;
      D.28195 = D.28194->last_ins;
      D.28194->code = D.28195;
      <D.28399>:
    }
    <D.28363>:
    D.28400 = call->inst.opcode;
    D.28401 = (int) D.28400;
    D.28402 = callvirt_to_call (D.28401);
    D.28403 = (short unsigned int) D.28402;
    call->inst.opcode = D.28403;
    goto <D.28347>;
    <D.28343>:
    D.28219 = method->flags;
    D.28220 = (int) D.28219;
    D.28221 = D.28220 & 64;
    if (D.28221 != 0) goto <D.28407>; else goto <D.28404>;
    <D.28407>:
    D.28219 = method->flags;
    D.28220 = (int) D.28219;
    D.28352 = D.28220 & 32;
    if (D.28352 != 0) goto <D.28405>; else goto <D.28408>;
    <D.28408>:
    D.28214 = method->klass;
    if (D.28214 != 0B) goto <D.28409>; else goto <D.28404>;
    <D.28409>:
    D.28214 = method->klass;
    D.28251 = D.28214->flags;
    D.28355 = D.28251 & 256;
    if (D.28355 != 0) goto <D.28405>; else goto <D.28404>;
    <D.28405>:
    D.28364 = cfg->flags;
    D.28365 = D.28364 | 128;
    cfg->flags = D.28365;
    D.28311 = BIT_FIELD_REF <*cfg, 32, 3424>;
    D.28312 = D.28311 & 64;
    if (D.28312 != 0) goto <D.28410>; else goto <D.28411>;
    <D.28410>:
    D.28311 = BIT_FIELD_REF <*cfg, 32, 3424>;
    D.28312 = D.28311 & 64;
    if (D.28312 != 0) goto <D.28412>; else goto <D.28413>;
    <D.28412>:
    {
      struct MonoInst * inst;

      D.28187 = cfg->mempool;
      inst = mono_mempool_alloc (D.28187, 56);
      inst->data.op[1].const_val = 0;
      D.28414 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.28414;
      inst->prev = 0B;
      D.28415 = inst->prev;
      inst->next = D.28415;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.28416 = inst->sreg3;
      inst->sreg2 = D.28416;
      D.28417 = inst->sreg2;
      inst->sreg1 = D.28417;
      D.28192 = cfg->ip;
      inst->cil_code = D.28192;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      inst->data.op[1].const_val = 0;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      if (D.28195 != 0B) goto <D.28418>; else goto <D.28419>;
      <D.28418>:
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      D.28195->next = inst;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      inst->prev = D.28195;
      D.28194 = cfg->cbb;
      D.28194->last_ins = inst;
      goto <D.28420>;
      <D.28419>:
      D.28194 = cfg->cbb;
      D.28194 = cfg->cbb;
      D.28194->last_ins = inst;
      D.28195 = D.28194->last_ins;
      D.28194->code = D.28195;
      <D.28420>:
    }
    {
      struct MonoInst * inst;

      D.28187 = cfg->mempool;
      inst = mono_mempool_alloc (D.28187, 56);
      inst->data.op[1].const_val = 0;
      D.28421 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.28421;
      inst->prev = 0B;
      D.28422 = inst->prev;
      inst->next = D.28422;
      inst->opcode = 451;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.28423 = inst->sreg3;
      inst->sreg2 = D.28423;
      D.28424 = inst->sreg2;
      inst->sreg1 = D.28424;
      D.28192 = cfg->ip;
      inst->cil_code = D.28192;
      inst->data.op[1].p = "NullReferenceException";
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      if (D.28195 != 0B) goto <D.28425>; else goto <D.28426>;
      <D.28425>:
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      D.28195->next = inst;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      inst->prev = D.28195;
      D.28194 = cfg->cbb;
      D.28194->last_ins = inst;
      goto <D.28427>;
      <D.28426>:
      D.28194 = cfg->cbb;
      D.28194 = cfg->cbb;
      D.28194->last_ins = inst;
      D.28195 = D.28194->last_ins;
      D.28194->code = D.28195;
      <D.28427>:
    }
    goto <D.28428>;
    <D.28413>:
    <D.28428>:
    goto <D.28429>;
    <D.28411>:
    {
      struct MonoInst * inst;

      D.28187 = cfg->mempool;
      inst = mono_mempool_alloc (D.28187, 56);
      inst->data.op[1].const_val = 0;
      D.28430 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.28430;
      inst->prev = 0B;
      D.28431 = inst->prev;
      inst->next = D.28431;
      inst->opcode = 340;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.28432 = inst->sreg3;
      inst->sreg2 = D.28432;
      D.28433 = inst->sreg2;
      inst->sreg1 = D.28433;
      D.28192 = cfg->ip;
      inst->cil_code = D.28192;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      if (D.28195 != 0B) goto <D.28434>; else goto <D.28435>;
      <D.28434>:
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      D.28195->next = inst;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      inst->prev = D.28195;
      D.28194 = cfg->cbb;
      D.28194->last_ins = inst;
      goto <D.28436>;
      <D.28435>:
      D.28194 = cfg->cbb;
      D.28194 = cfg->cbb;
      D.28194->last_ins = inst;
      D.28195 = D.28194->last_ins;
      D.28194->code = D.28195;
      <D.28436>:
    }
    <D.28429>:
    {
      struct MonoInst * inst;

      D.28187 = cfg->mempool;
      inst = mono_mempool_alloc (D.28187, 56);
      inst->data.op[1].const_val = 0;
      D.28437 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.28437;
      inst->prev = 0B;
      D.28438 = inst->prev;
      inst->next = D.28438;
      inst->opcode = 799;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.28439 = inst->sreg3;
      inst->sreg2 = D.28439;
      D.28440 = inst->sreg2;
      inst->sreg1 = D.28440;
      D.28192 = cfg->ip;
      inst->cil_code = D.28192;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      if (D.28195 != 0B) goto <D.28441>; else goto <D.28442>;
      <D.28441>:
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      D.28195->next = inst;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      inst->prev = D.28195;
      D.28194 = cfg->cbb;
      D.28194->last_ins = inst;
      goto <D.28443>;
      <D.28442>:
      D.28194 = cfg->cbb;
      D.28194 = cfg->cbb;
      D.28194->last_ins = inst;
      D.28195 = D.28194->last_ins;
      D.28194->code = D.28195;
      <D.28443>:
    }
    D.28400 = call->inst.opcode;
    D.28401 = (int) D.28400;
    D.28444 = callvirt_to_call (D.28401);
    D.28445 = (short unsigned int) D.28444;
    call->inst.opcode = D.28445;
    goto <D.28406>;
    <D.28404>:
    D.28446 = alloc_preg (cfg);
    vtable_reg = (int) D.28446;
    {
      struct MonoInst * inst;
      int __ins_flags;

      __ins_flags = 32;
      D.28447 = __ins_flags & 32;
      if (D.28447 != 0) goto <D.28448>; else goto <D.28449>;
      <D.28448>:
      D.28311 = BIT_FIELD_REF <*cfg, 32, 3424>;
      D.28312 = D.28311 & 64;
      if (D.28312 != 0) goto <D.28450>; else goto <D.28451>;
      <D.28450>:
      {
        struct MonoInst * inst;

        D.28187 = cfg->mempool;
        inst = mono_mempool_alloc (D.28187, 56);
        inst->data.op[1].const_val = 0;
        D.28452 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.28452;
        inst->prev = 0B;
        D.28453 = inst->prev;
        inst->next = D.28453;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.28454 = inst->sreg3;
        inst->sreg2 = D.28454;
        D.28455 = inst->sreg2;
        inst->sreg1 = D.28455;
        D.28192 = cfg->ip;
        inst->cil_code = D.28192;
        inst->dreg = -1;
        inst->sreg1 = this_reg;
        inst->data.op[1].const_val = 0;
        D.28194 = cfg->cbb;
        D.28195 = D.28194->last_ins;
        if (D.28195 != 0B) goto <D.28456>; else goto <D.28457>;
        <D.28456>:
        D.28194 = cfg->cbb;
        D.28195 = D.28194->last_ins;
        D.28195->next = inst;
        D.28194 = cfg->cbb;
        D.28195 = D.28194->last_ins;
        inst->prev = D.28195;
        D.28194 = cfg->cbb;
        D.28194->last_ins = inst;
        goto <D.28458>;
        <D.28457>:
        D.28194 = cfg->cbb;
        D.28194 = cfg->cbb;
        D.28194->last_ins = inst;
        D.28195 = D.28194->last_ins;
        D.28194->code = D.28195;
        <D.28458>:
      }
      {
        struct MonoInst * inst;

        D.28187 = cfg->mempool;
        inst = mono_mempool_alloc (D.28187, 56);
        inst->data.op[1].const_val = 0;
        D.28459 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.28459;
        inst->prev = 0B;
        D.28460 = inst->prev;
        inst->next = D.28460;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.28461 = inst->sreg3;
        inst->sreg2 = D.28461;
        D.28462 = inst->sreg2;
        inst->sreg1 = D.28462;
        D.28192 = cfg->ip;
        inst->cil_code = D.28192;
        inst->data.op[1].p = "NullReferenceException";
        D.28194 = cfg->cbb;
        D.28195 = D.28194->last_ins;
        if (D.28195 != 0B) goto <D.28463>; else goto <D.28464>;
        <D.28463>:
        D.28194 = cfg->cbb;
        D.28195 = D.28194->last_ins;
        D.28195->next = inst;
        D.28194 = cfg->cbb;
        D.28195 = D.28194->last_ins;
        inst->prev = D.28195;
        D.28194 = cfg->cbb;
        D.28194->last_ins = inst;
        goto <D.28465>;
        <D.28464>:
        D.28194 = cfg->cbb;
        D.28194 = cfg->cbb;
        D.28194->last_ins = inst;
        D.28195 = D.28194->last_ins;
        D.28194->code = D.28195;
        <D.28465>:
      }
      goto <D.28466>;
      <D.28451>:
      <D.28466>:
      <D.28449>:
      D.28187 = cfg->mempool;
      inst = mono_mempool_alloc (D.28187, 56);
      inst->data.op[1].const_val = 0;
      D.28467 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.28467;
      inst->prev = 0B;
      D.28468 = inst->prev;
      inst->next = D.28468;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.28469 = inst->sreg3;
      inst->sreg2 = D.28469;
      D.28470 = inst->sreg2;
      inst->sreg1 = D.28470;
      D.28192 = cfg->ip;
      inst->cil_code = D.28192;
      inst->dreg = vtable_reg;
      inst->sreg1 = this_reg;
      inst->data.op[0].const_val = 0;
      inst->type = 1;
      D.28471 = (unsigned char) __ins_flags;
      inst->flags = D.28471;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      if (D.28195 != 0B) goto <D.28472>; else goto <D.28473>;
      <D.28472>:
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      D.28195->next = inst;
      D.28194 = cfg->cbb;
      D.28195 = D.28194->last_ins;
      inst->prev = D.28195;
      D.28194 = cfg->cbb;
      D.28194->last_ins = inst;
      goto <D.28474>;
      <D.28473>:
      D.28194 = cfg->cbb;
      D.28194 = cfg->cbb;
      D.28194->last_ins = inst;
      D.28195 = D.28194->last_ins;
      D.28194->code = D.28195;
      <D.28474>:
    }
    D.28214 = method->klass;
    D.28251 = D.28214->flags;
    D.28252 = D.28251 & 32;
    if (D.28252 != 0) goto <D.28475>; else goto <D.28476>;
    <D.28475>:
    slot_reg = -1;
    mono_use_imt.13 = mono_use_imt;
    if (mono_use_imt.13 != 0) goto <D.28478>; else goto <D.28479>;
    <D.28478>:
    {
      guint32 imt_slot;

      imt_slot = mono_method_get_imt_slot (method);
      D.28480 = call->method;
      emit_imt_argument (cfg, call, D.28480, imt_arg);
      slot_reg = vtable_reg;
      imt_slot.14 = (int) imt_slot;
      D.28482 = imt_slot.14 + -19;
      offset = D.28482 * 4;
    }
    <D.28479>:
    if (slot_reg == -1) goto <D.28483>; else goto <D.28484>;
    <D.28483>:
    D.28485 = alloc_preg (cfg);
    slot_reg = (int) D.28485;
    D.28214 = method->klass;
    mini_emit_load_intf_reg_vtable (cfg, slot_reg, vtable_reg, D.28214);
    D.28486 = mono_method_get_vtable_index (method);
    offset = D.28486 * 4;
    <D.28484>:
    goto <D.28487>;
    <D.28476>:
    slot_reg = vtable_reg;
    D.28488 = mono_method_get_vtable_index (method);
    D.28489 = D.28488 * 4;
    D.28490 = (unsigned int) D.28489;
    D.28491 = D.28490 + 32;
    offset = (int) D.28491;
    if (imt_arg != 0B) goto <D.28492>; else goto <D.28493>;
    <D.28492>:
    D.28494 = mono_method_signature (method);
    D.28495 = D.28494->generic_param_count;
    D.28496 = D.28495 == 0;
    D.28497 = (long int) D.28496;
    D.28498 = __builtin_expect (D.28497, 0);
    if (D.28498 != 0) goto <D.28499>; else goto <D.28500>;
    <D.28499>:
    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.28500>:
    D.28480 = call->method;
    emit_imt_argument (cfg, call, D.28480, imt_arg);
    <D.28493>:
    <D.28487>:
    call->inst.sreg1 = slot_reg;
    call->inst.data.op[0].const_val = offset;
    call->virtual = 1;
    <D.28406>:
    <D.28347>:
  }
  <D.28264>:
  D.28194 = cfg->cbb;
  D.28195 = D.28194->last_ins;
  if (D.28195 != 0B) goto <D.28501>; else goto <D.28502>;
  <D.28501>:
  D.28194 = cfg->cbb;
  D.28195 = D.28194->last_ins;
  D.28195->next = call;
  D.28194 = cfg->cbb;
  D.28195 = D.28194->last_ins;
  MEM[(struct MonoInst *)call].prev = D.28195;
  D.28194 = cfg->cbb;
  D.28194->last_ins = call;
  goto <D.28503>;
  <D.28502>:
  D.28194 = cfg->cbb;
  D.28194 = cfg->cbb;
  D.28194->last_ins = call;
  D.28195 = D.28194->last_ins;
  D.28194->code = D.28195;
  <D.28503>:
  if (rgctx_arg != 0B) goto <D.28504>; else goto <D.28505>;
  <D.28504>:
  set_rgctx_arg (cfg, call, rgctx_reg, rgctx_arg);
  <D.28505>:
  D.28245 = call;
  return D.28245;
}


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

  D.28507 = cfg->generic_sharing_context;
  if (D.28507 != 0B) goto <D.28508>; else goto <D.28509>;
  <D.28508>:
  D.28510 = mono_method_check_context_used (method);
  return D.28510;
  <D.28509>:
  D.28510 = 0;
  return D.28510;
}


emit_get_rgctx_method (struct MonoCompile * cfg, int context_used, struct MonoMethod * cmethod, MonoRgctxInfoType rgctx_type)
{
  struct MonoMemPool * D.28514;
  int D.28515;
  struct MonoInst * D.28516;
  guint16 iftmp.15;
  unsigned int D.28518;
  unsigned int D.28519;
  int D.28523;
  int D.28524;
  const unsigned char * D.28525;
  unsigned int D.28526;
  int D.28527;
  struct MonoBasicBlock * D.28528;
  struct MonoInst * D.28529;
  struct MonoInst * D.28533;
  guint16 iftmp.16;
  unsigned int D.28540;
  int D.28541;
  struct MonoDomain * D.28543;
  struct MonoClass * D.28544;
  struct MonoVTable * D.28545;
  struct MonoGenericContext * D.28546;
  struct MonoGenericInst * D.28547;
  unsigned int D.28548;
  int D.28549;
  struct MonoMethod * D.28553;
  int D.28554;

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

    switch (rgctx_type) <default: <D.25228>, case 5: <D.25225>, case 8: <D.25226>>
    <D.25225>:
    D.28514 = cfg->mempool;
    ins = mono_mempool_alloc (D.28514, 56);
    ins->data.op[1].const_val = 0;
    D.28515 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.28515;
    ins->prev = 0B;
    D.28516 = ins->prev;
    ins->next = D.28516;
    D.28518 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.28519 = D.28518 & 64;
    if (D.28519 != 0) goto <D.28520>; else goto <D.28521>;
    <D.28520>:
    iftmp.15 = 732;
    goto <D.28522>;
    <D.28521>:
    iftmp.15 = 362;
    <D.28522>:
    ins->opcode = iftmp.15;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.28523 = ins->sreg3;
    ins->sreg2 = D.28523;
    D.28524 = ins->sreg2;
    ins->sreg1 = D.28524;
    D.28525 = cfg->ip;
    ins->cil_code = D.28525;
    ins->data.op[0].p = cmethod;
    ins->data.op[1].src = 6B;
    ins->type = 3;
    D.28526 = alloc_dreg (cfg, 3);
    D.28527 = (int) D.28526;
    ins->dreg = D.28527;
    D.28528 = cfg->cbb;
    D.28529 = D.28528->last_ins;
    if (D.28529 != 0B) goto <D.28530>; else goto <D.28531>;
    <D.28530>:
    D.28528 = cfg->cbb;
    D.28529 = D.28528->last_ins;
    D.28529->next = ins;
    D.28528 = cfg->cbb;
    D.28529 = D.28528->last_ins;
    ins->prev = D.28529;
    D.28528 = cfg->cbb;
    D.28528->last_ins = ins;
    goto <D.28532>;
    <D.28531>:
    D.28528 = cfg->cbb;
    D.28528 = cfg->cbb;
    D.28528->last_ins = ins;
    D.28529 = D.28528->last_ins;
    D.28528->code = D.28529;
    <D.28532>:
    D.28533 = ins;
    return D.28533;
    <D.25226>:
    D.28518 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.28519 = D.28518 & 64;
    if (D.28519 != 0) goto <D.28534>; else goto <D.28535>;
    <D.28534>:
    D.28514 = cfg->mempool;
    ins = mono_mempool_alloc (D.28514, 56);
    ins->data.op[1].const_val = 0;
    D.28515 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.28515;
    ins->prev = 0B;
    D.28516 = ins->prev;
    ins->next = D.28516;
    D.28518 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.28519 = D.28518 & 64;
    if (D.28519 != 0) goto <D.28537>; else goto <D.28538>;
    <D.28537>:
    iftmp.16 = 732;
    goto <D.28539>;
    <D.28538>:
    iftmp.16 = 362;
    <D.28539>:
    ins->opcode = iftmp.16;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.28523 = ins->sreg3;
    ins->sreg2 = D.28523;
    D.28524 = ins->sreg2;
    ins->sreg1 = D.28524;
    D.28525 = cfg->ip;
    ins->cil_code = D.28525;
    ins->data.op[0].p = cmethod;
    ins->data.op[1].src = 34B;
    ins->type = 3;
    D.28540 = alloc_dreg (cfg, 3);
    D.28541 = (int) D.28540;
    ins->dreg = D.28541;
    goto <D.28542>;
    <D.28535>:
    {
      struct MonoMethodRuntimeGenericContext * mrgctx;

      D.28543 = cfg->domain;
      D.28544 = cmethod->klass;
      D.28545 = mono_class_vtable (D.28543, D.28544);
      D.28546 = mini_method_get_context (cmethod);
      D.28547 = D.28546->method_inst;
      mrgctx = mono_method_lookup_rgctx (D.28545, D.28547);
      D.28514 = cfg->mempool;
      ins = mono_mempool_alloc (D.28514, 56);
      ins->data.op[1].const_val = 0;
      D.28515 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.28515;
      ins->prev = 0B;
      D.28516 = ins->prev;
      ins->next = D.28516;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.28523 = ins->sreg3;
      ins->sreg2 = D.28523;
      D.28524 = ins->sreg2;
      ins->sreg1 = D.28524;
      D.28525 = cfg->ip;
      ins->cil_code = D.28525;
      ins->data.op[0].p = mrgctx;
      ins->type = 3;
      D.28548 = alloc_dreg (cfg, 3);
      D.28549 = (int) D.28548;
      ins->dreg = D.28549;
    }
    <D.28542>:
    D.28528 = cfg->cbb;
    D.28529 = D.28528->last_ins;
    if (D.28529 != 0B) goto <D.28550>; else goto <D.28551>;
    <D.28550>:
    D.28528 = cfg->cbb;
    D.28529 = D.28528->last_ins;
    D.28529->next = ins;
    D.28528 = cfg->cbb;
    D.28529 = D.28528->last_ins;
    ins->prev = D.28529;
    D.28528 = cfg->cbb;
    D.28528->last_ins = ins;
    goto <D.28552>;
    <D.28551>:
    D.28528 = cfg->cbb;
    D.28528 = cfg->cbb;
    D.28528->last_ins = ins;
    D.28529 = D.28528->last_ins;
    D.28528->code = D.28529;
    <D.28552>:
    D.28533 = ins;
    return D.28533;
    <D.25228>:
    monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 3327);
  }
  <D.28513>:
  {
    struct MonoJumpInfoRgctxEntry * entry;
    struct MonoInst * rgctx;

    D.28514 = cfg->mempool;
    D.28553 = cfg->current_method;
    D.28554 = context_used & 2;
    entry = mono_patch_info_rgctx_entry_new (D.28514, D.28553, D.28554, 6, cmethod, rgctx_type);
    D.28553 = cfg->current_method;
    rgctx = emit_get_rgctx (cfg, D.28553, context_used);
    D.28533 = emit_rgctx_fetch (cfg, rgctx, entry);
    return D.28533;
  }
}


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.28556;
  struct MonoJumpInfo * D.28557;
  struct MonoJumpInfoRgctxEntry * D.28558;
  struct MonoJumpInfoRgctxEntry * res;

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


emit_get_rgctx (struct MonoCompile * cfg, struct MonoMethod * method, int context_used)
{
  struct MonoGenericSharingContext * D.28560;
  _Bool D.28561;
  long int D.28562;
  long int D.28563;
  short unsigned int D.28566;
  int D.28567;
  int D.28568;
  int D.28571;
  struct MonoClass * D.28574;
  unsigned int D.28575;
  unsigned int D.28576;
  struct MonoMemPool * D.28579;
  int D.28580;
  struct MonoInst * D.28581;
  int D.28582;
  int D.28583;
  const unsigned char * D.28584;
  struct MonoType * * D.28585;
  struct MonoType * D.28586;
  unsigned int D.28587;
  short unsigned int D.28588;
  struct MonoInst * * D.28589;
  struct MonoInst * D.28590;
  struct MonoClass * D.28591;
  int D.28592;
  unsigned char D.28593;
  <unnamed type> D.28594;
  unsigned int D.28595;
  int D.28596;
  short unsigned int D.28597;
  struct MonoClass * D.28600;
  struct MonoBasicBlock * D.28601;
  struct MonoInst * D.28602;
  _Bool D.28608;
  long int D.28609;
  long int D.28610;
  int iftmp.17;
  unsigned int D.28617;
  unsigned int D.28618;
  struct MonoGenericContext * D.28620;
  struct MonoGenericInst * D.28621;
  _Bool D.28622;
  long int D.28623;
  long int D.28624;
  int D.28627;
  struct MonoInst * D.28628;
  int D.28629;
  int D.28630;
  struct MonoInst * * D.28631;
  int D.28632;
  unsigned int D.28633;
  unsigned int D.28634;
  struct MonoInst * * D.28635;
  struct MonoInst * D.28636;
  struct MonoType * D.28637;
  unsigned int D.28638;
  short unsigned int D.28639;
  struct MonoClass * D.28640;
  int D.28641;
  unsigned char D.28642;
  <unnamed type> D.28643;
  unsigned int D.28644;
  int D.28645;
  short unsigned int D.28646;
  struct MonoClass * D.28649;
  struct MonoInst * D.28653;
  int D.28659;
  struct MonoInst * D.28660;
  int D.28661;
  int D.28662;
  int D.28663;
  unsigned int D.28664;
  unsigned int D.28665;
  struct MonoInst * * D.28666;
  struct MonoInst * D.28667;
  struct MonoType * D.28668;
  unsigned int D.28669;
  short unsigned int D.28670;
  struct MonoClass * D.28671;
  int D.28672;
  unsigned char D.28673;
  <unnamed type> D.28674;
  unsigned int D.28675;
  int D.28676;
  short unsigned int D.28677;
  struct MonoClass * D.28680;
  struct MonoGenericContext * D.28686;
  struct MonoGenericInst * D.28687;
  unsigned int D.28690;
  int D.28691;
  unsigned int D.28695;
  int D.28696;
  struct MonoInst * D.28697;
  int D.28698;
  int D.28699;
  int D.28700;
  struct MonoInst * this;

  this = 0B;
  D.28560 = cfg->generic_sharing_context;
  D.28561 = D.28560 == 0B;
  D.28562 = (long int) D.28561;
  D.28563 = __builtin_expect (D.28562, 0);
  if (D.28563 != 0) goto <D.28564>; else goto <D.28565>;
  <D.28564>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3189, "cfg->generic_sharing_context");
  <D.28565>:
  D.28566 = method->flags;
  D.28567 = (int) D.28566;
  D.28568 = D.28567 & 16;
  if (D.28568 == 0) goto <D.28569>; else goto <D.28570>;
  <D.28569>:
  D.28571 = context_used & 2;
  if (D.28571 == 0) goto <D.28572>; else goto <D.28573>;
  <D.28572>:
  D.28574 = method->klass;
  D.28575 = BIT_FIELD_REF <*D.28574, 32, 160>;
  D.28576 = D.28575 & 8;
  if (D.28576 == 0) goto <D.28577>; else goto <D.28578>;
  <D.28577>:
  D.28579 = cfg->mempool;
  this = mono_mempool_alloc (D.28579, 56);
  this->data.op[1].const_val = 0;
  D.28580 = this->data.op[1].const_val;
  this->data.op[0].const_val = D.28580;
  this->prev = 0B;
  D.28581 = this->prev;
  this->next = D.28581;
  this->opcode = 424;
  this->flags = 0;
  this->type = 0;
  this->dreg = -1;
  this->sreg3 = -1;
  D.28582 = this->sreg3;
  this->sreg2 = D.28582;
  D.28583 = this->sreg2;
  this->sreg1 = D.28583;
  D.28584 = cfg->ip;
  this->cil_code = D.28584;
  D.28585 = cfg->arg_types;
  D.28586 = *D.28585;
  D.28587 = mono_type_to_regmove (cfg, D.28586);
  D.28588 = (short unsigned int) D.28587;
  this->opcode = D.28588;
  D.28585 = cfg->arg_types;
  D.28586 = *D.28585;
  type_to_eval_stack_type (cfg, D.28586, this);
  D.28589 = cfg->args;
  D.28590 = *D.28589;
  D.28591 = D.28590->klass;
  this->klass = D.28591;
  D.28589 = cfg->args;
  D.28590 = *D.28589;
  D.28592 = D.28590->dreg;
  this->sreg1 = D.28592;
  D.28593 = this->type;
  D.28594 = (<unnamed type>) D.28593;
  D.28595 = alloc_dreg (cfg, D.28594);
  D.28596 = (int) D.28595;
  this->dreg = D.28596;
  D.28597 = this->opcode;
  if (D.28597 == 427) goto <D.28598>; else goto <D.28599>;
  <D.28598>:
  D.28585 = cfg->arg_types;
  D.28586 = *D.28585;
  D.28600 = mono_class_from_mono_type (D.28586);
  this->klass = D.28600;
  <D.28599>:
  D.28601 = cfg->cbb;
  D.28602 = D.28601->last_ins;
  if (D.28602 != 0B) goto <D.28603>; else goto <D.28604>;
  <D.28603>:
  D.28601 = cfg->cbb;
  D.28602 = D.28601->last_ins;
  D.28602->next = this;
  D.28601 = cfg->cbb;
  D.28602 = D.28601->last_ins;
  this->prev = D.28602;
  D.28601 = cfg->cbb;
  D.28601->last_ins = this;
  goto <D.28605>;
  <D.28604>:
  D.28601 = cfg->cbb;
  D.28601 = cfg->cbb;
  D.28601->last_ins = this;
  D.28602 = D.28601->last_ins;
  D.28601->code = D.28602;
  <D.28605>:
  <D.28578>:
  <D.28573>:
  <D.28570>:
  D.28571 = context_used & 2;
  if (D.28571 != 0) goto <D.28606>; else goto <D.28607>;
  <D.28606>:
  {
    struct MonoInst * mrgctx_loc;
    struct MonoInst * mrgctx_var;

    D.28608 = this != 0B;
    D.28609 = (long int) D.28608;
    D.28610 = __builtin_expect (D.28609, 0);
    if (D.28610 != 0) goto <D.28611>; else goto <D.28612>;
    <D.28611>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3199, "!this");
    <D.28612>:
    D.28617 = BIT_FIELD_REF <*method, 32, 160>;
    D.28618 = D.28617 & 4096;
    if (D.28618 == 0) goto <D.28614>; else goto <D.28619>;
    <D.28619>:
    D.28620 = mono_method_get_context (method);
    D.28621 = D.28620->method_inst;
    if (D.28621 == 0B) goto <D.28614>; else goto <D.28615>;
    <D.28614>:
    iftmp.17 = 1;
    goto <D.28616>;
    <D.28615>:
    iftmp.17 = 0;
    <D.28616>:
    D.28622 = iftmp.17 != 0;
    D.28623 = (long int) D.28622;
    D.28624 = __builtin_expect (D.28623, 0);
    if (D.28624 != 0) goto <D.28625>; else goto <D.28626>;
    <D.28625>:
    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.28626>:
    mrgctx_loc = mono_get_vtable_var (cfg);
    D.28579 = cfg->mempool;
    mrgctx_var = mono_mempool_alloc (D.28579, 56);
    mrgctx_var->data.op[1].const_val = 0;
    D.28627 = mrgctx_var->data.op[1].const_val;
    mrgctx_var->data.op[0].const_val = D.28627;
    mrgctx_var->prev = 0B;
    D.28628 = mrgctx_var->prev;
    mrgctx_var->next = D.28628;
    mrgctx_var->opcode = 424;
    mrgctx_var->flags = 0;
    mrgctx_var->type = 0;
    mrgctx_var->dreg = -1;
    mrgctx_var->sreg3 = -1;
    D.28629 = mrgctx_var->sreg3;
    mrgctx_var->sreg2 = D.28629;
    D.28630 = mrgctx_var->sreg2;
    mrgctx_var->sreg1 = D.28630;
    D.28584 = cfg->ip;
    mrgctx_var->cil_code = D.28584;
    D.28631 = cfg->varinfo;
    D.28632 = mrgctx_loc->data.op[0].const_val;
    D.28633 = (unsigned int) D.28632;
    D.28634 = D.28633 * 4;
    D.28635 = D.28631 + D.28634;
    D.28636 = *D.28635;
    D.28637 = D.28636->data.op[1].vtype;
    D.28638 = mono_type_to_regmove (cfg, D.28637);
    D.28639 = (short unsigned int) D.28638;
    mrgctx_var->opcode = D.28639;
    D.28631 = cfg->varinfo;
    D.28632 = mrgctx_loc->data.op[0].const_val;
    D.28633 = (unsigned int) D.28632;
    D.28634 = D.28633 * 4;
    D.28635 = D.28631 + D.28634;
    D.28636 = *D.28635;
    D.28637 = D.28636->data.op[1].vtype;
    type_to_eval_stack_type (cfg, D.28637, mrgctx_var);
    D.28631 = cfg->varinfo;
    D.28632 = mrgctx_loc->data.op[0].const_val;
    D.28633 = (unsigned int) D.28632;
    D.28634 = D.28633 * 4;
    D.28635 = D.28631 + D.28634;
    D.28636 = *D.28635;
    D.28640 = D.28636->klass;
    mrgctx_var->klass = D.28640;
    D.28631 = cfg->varinfo;
    D.28632 = mrgctx_loc->data.op[0].const_val;
    D.28633 = (unsigned int) D.28632;
    D.28634 = D.28633 * 4;
    D.28635 = D.28631 + D.28634;
    D.28636 = *D.28635;
    D.28641 = D.28636->dreg;
    mrgctx_var->sreg1 = D.28641;
    D.28642 = mrgctx_var->type;
    D.28643 = (<unnamed type>) D.28642;
    D.28644 = alloc_dreg (cfg, D.28643);
    D.28645 = (int) D.28644;
    mrgctx_var->dreg = D.28645;
    D.28646 = mrgctx_var->opcode;
    if (D.28646 == 427) goto <D.28647>; else goto <D.28648>;
    <D.28647>:
    D.28631 = cfg->varinfo;
    D.28632 = mrgctx_loc->data.op[0].const_val;
    D.28633 = (unsigned int) D.28632;
    D.28634 = D.28633 * 4;
    D.28635 = D.28631 + D.28634;
    D.28636 = *D.28635;
    D.28637 = D.28636->data.op[1].vtype;
    D.28649 = mono_class_from_mono_type (D.28637);
    mrgctx_var->klass = D.28649;
    <D.28648>:
    D.28601 = cfg->cbb;
    D.28602 = D.28601->last_ins;
    if (D.28602 != 0B) goto <D.28650>; else goto <D.28651>;
    <D.28650>:
    D.28601 = cfg->cbb;
    D.28602 = D.28601->last_ins;
    D.28602->next = mrgctx_var;
    D.28601 = cfg->cbb;
    D.28602 = D.28601->last_ins;
    mrgctx_var->prev = D.28602;
    D.28601 = cfg->cbb;
    D.28601->last_ins = mrgctx_var;
    goto <D.28652>;
    <D.28651>:
    D.28601 = cfg->cbb;
    D.28601 = cfg->cbb;
    D.28601->last_ins = mrgctx_var;
    D.28602 = D.28601->last_ins;
    D.28601->code = D.28602;
    <D.28652>:
    D.28653 = mrgctx_var;
    return D.28653;
  }
  <D.28607>:
  D.28566 = method->flags;
  D.28567 = (int) D.28566;
  D.28568 = D.28567 & 16;
  if (D.28568 != 0) goto <D.28654>; else goto <D.28656>;
  <D.28656>:
  D.28574 = method->klass;
  D.28575 = BIT_FIELD_REF <*D.28574, 32, 160>;
  D.28576 = D.28575 & 8;
  if (D.28576 != 0) goto <D.28654>; else goto <D.28655>;
  <D.28654>:
  {
    struct MonoInst * vtable_loc;
    struct MonoInst * vtable_var;

    D.28608 = this != 0B;
    D.28609 = (long int) D.28608;
    D.28610 = __builtin_expect (D.28609, 0);
    if (D.28610 != 0) goto <D.28657>; else goto <D.28658>;
    <D.28657>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3209, "!this");
    <D.28658>:
    vtable_loc = mono_get_vtable_var (cfg);
    D.28579 = cfg->mempool;
    vtable_var = mono_mempool_alloc (D.28579, 56);
    vtable_var->data.op[1].const_val = 0;
    D.28659 = vtable_var->data.op[1].const_val;
    vtable_var->data.op[0].const_val = D.28659;
    vtable_var->prev = 0B;
    D.28660 = vtable_var->prev;
    vtable_var->next = D.28660;
    vtable_var->opcode = 424;
    vtable_var->flags = 0;
    vtable_var->type = 0;
    vtable_var->dreg = -1;
    vtable_var->sreg3 = -1;
    D.28661 = vtable_var->sreg3;
    vtable_var->sreg2 = D.28661;
    D.28662 = vtable_var->sreg2;
    vtable_var->sreg1 = D.28662;
    D.28584 = cfg->ip;
    vtable_var->cil_code = D.28584;
    D.28631 = cfg->varinfo;
    D.28663 = vtable_loc->data.op[0].const_val;
    D.28664 = (unsigned int) D.28663;
    D.28665 = D.28664 * 4;
    D.28666 = D.28631 + D.28665;
    D.28667 = *D.28666;
    D.28668 = D.28667->data.op[1].vtype;
    D.28669 = mono_type_to_regmove (cfg, D.28668);
    D.28670 = (short unsigned int) D.28669;
    vtable_var->opcode = D.28670;
    D.28631 = cfg->varinfo;
    D.28663 = vtable_loc->data.op[0].const_val;
    D.28664 = (unsigned int) D.28663;
    D.28665 = D.28664 * 4;
    D.28666 = D.28631 + D.28665;
    D.28667 = *D.28666;
    D.28668 = D.28667->data.op[1].vtype;
    type_to_eval_stack_type (cfg, D.28668, vtable_var);
    D.28631 = cfg->varinfo;
    D.28663 = vtable_loc->data.op[0].const_val;
    D.28664 = (unsigned int) D.28663;
    D.28665 = D.28664 * 4;
    D.28666 = D.28631 + D.28665;
    D.28667 = *D.28666;
    D.28671 = D.28667->klass;
    vtable_var->klass = D.28671;
    D.28631 = cfg->varinfo;
    D.28663 = vtable_loc->data.op[0].const_val;
    D.28664 = (unsigned int) D.28663;
    D.28665 = D.28664 * 4;
    D.28666 = D.28631 + D.28665;
    D.28667 = *D.28666;
    D.28672 = D.28667->dreg;
    vtable_var->sreg1 = D.28672;
    D.28673 = vtable_var->type;
    D.28674 = (<unnamed type>) D.28673;
    D.28675 = alloc_dreg (cfg, D.28674);
    D.28676 = (int) D.28675;
    vtable_var->dreg = D.28676;
    D.28677 = vtable_var->opcode;
    if (D.28677 == 427) goto <D.28678>; else goto <D.28679>;
    <D.28678>:
    D.28631 = cfg->varinfo;
    D.28663 = vtable_loc->data.op[0].const_val;
    D.28664 = (unsigned int) D.28663;
    D.28665 = D.28664 * 4;
    D.28666 = D.28631 + D.28665;
    D.28667 = *D.28666;
    D.28668 = D.28667->data.op[1].vtype;
    D.28680 = mono_class_from_mono_type (D.28668);
    vtable_var->klass = D.28680;
    <D.28679>:
    D.28601 = cfg->cbb;
    D.28602 = D.28601->last_ins;
    if (D.28602 != 0B) goto <D.28681>; else goto <D.28682>;
    <D.28681>:
    D.28601 = cfg->cbb;
    D.28602 = D.28601->last_ins;
    D.28602->next = vtable_var;
    D.28601 = cfg->cbb;
    D.28602 = D.28601->last_ins;
    vtable_var->prev = D.28602;
    D.28601 = cfg->cbb;
    D.28601->last_ins = vtable_var;
    goto <D.28683>;
    <D.28682>:
    D.28601 = cfg->cbb;
    D.28601 = cfg->cbb;
    D.28601->last_ins = vtable_var;
    D.28602 = D.28601->last_ins;
    D.28601->code = D.28602;
    <D.28683>:
    D.28617 = BIT_FIELD_REF <*method, 32, 160>;
    D.28618 = D.28617 & 4096;
    if (D.28618 != 0) goto <D.28684>; else goto <D.28685>;
    <D.28684>:
    D.28686 = mono_method_get_context (method);
    D.28687 = D.28686->method_inst;
    if (D.28687 != 0B) goto <D.28688>; else goto <D.28689>;
    <D.28688>:
    {
      struct MonoInst * mrgctx_var;
      int vtable_reg;

      mrgctx_var = vtable_var;
      D.28690 = alloc_preg (cfg);
      vtable_reg = (int) D.28690;
      D.28579 = cfg->mempool;
      vtable_var = mono_mempool_alloc (D.28579, 56);
      vtable_var->data.op[1].const_val = 0;
      D.28659 = vtable_var->data.op[1].const_val;
      vtable_var->data.op[0].const_val = D.28659;
      vtable_var->prev = 0B;
      D.28660 = vtable_var->prev;
      vtable_var->next = D.28660;
      vtable_var->opcode = 388;
      vtable_var->flags = 0;
      vtable_var->type = 0;
      vtable_var->dreg = -1;
      vtable_var->sreg3 = -1;
      D.28661 = vtable_var->sreg3;
      vtable_var->sreg2 = D.28661;
      D.28662 = vtable_var->sreg2;
      vtable_var->sreg1 = D.28662;
      D.28584 = cfg->ip;
      vtable_var->cil_code = D.28584;
      vtable_var->dreg = vtable_reg;
      D.28691 = mrgctx_var->dreg;
      vtable_var->sreg1 = D.28691;
      vtable_var->data.op[0].const_val = 0;
      vtable_var->type = 1;
      D.28601 = cfg->cbb;
      D.28602 = D.28601->last_ins;
      if (D.28602 != 0B) goto <D.28692>; else goto <D.28693>;
      <D.28692>:
      D.28601 = cfg->cbb;
      D.28602 = D.28601->last_ins;
      D.28602->next = vtable_var;
      D.28601 = cfg->cbb;
      D.28602 = D.28601->last_ins;
      vtable_var->prev = D.28602;
      D.28601 = cfg->cbb;
      D.28601->last_ins = vtable_var;
      goto <D.28694>;
      <D.28693>:
      D.28601 = cfg->cbb;
      D.28601 = cfg->cbb;
      D.28601->last_ins = vtable_var;
      D.28602 = D.28601->last_ins;
      D.28601->code = D.28602;
      <D.28694>:
      vtable_var->type = 3;
    }
    <D.28689>:
    <D.28685>:
    D.28653 = vtable_var;
    return D.28653;
  }
  <D.28655>:
  {
    struct MonoInst * ins;
    int vtable_reg;

    D.28695 = alloc_preg (cfg);
    vtable_reg = (int) D.28695;
    D.28579 = cfg->mempool;
    ins = mono_mempool_alloc (D.28579, 56);
    ins->data.op[1].const_val = 0;
    D.28696 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.28696;
    ins->prev = 0B;
    D.28697 = ins->prev;
    ins->next = D.28697;
    ins->opcode = 388;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.28698 = ins->sreg3;
    ins->sreg2 = D.28698;
    D.28699 = ins->sreg2;
    ins->sreg1 = D.28699;
    D.28584 = cfg->ip;
    ins->cil_code = D.28584;
    ins->dreg = vtable_reg;
    D.28700 = this->dreg;
    ins->sreg1 = D.28700;
    ins->data.op[0].const_val = 0;
    ins->type = 1;
    D.28601 = cfg->cbb;
    D.28602 = D.28601->last_ins;
    if (D.28602 != 0B) goto <D.28701>; else goto <D.28702>;
    <D.28701>:
    D.28601 = cfg->cbb;
    D.28602 = D.28601->last_ins;
    D.28602->next = ins;
    D.28601 = cfg->cbb;
    D.28602 = D.28601->last_ins;
    ins->prev = D.28602;
    D.28601 = cfg->cbb;
    D.28601->last_ins = ins;
    goto <D.28703>;
    <D.28702>:
    D.28601 = cfg->cbb;
    D.28601 = cfg->cbb;
    D.28601->last_ins = ins;
    D.28602 = D.28601->last_ins;
    D.28601->code = D.28602;
    <D.28703>:
    D.28653 = ins;
    return D.28653;
  }
}


mono_get_vtable_var (struct MonoCompile * cfg)
{
  struct MonoGenericSharingContext * D.28705;
  _Bool D.28706;
  long int D.28707;
  long int D.28708;
  struct MonoInst * D.28711;
  struct MonoClass * D.28714;
  struct MonoType * D.28715;
  struct MonoInst * D.28716;
  unsigned char D.28717;
  unsigned char D.28718;
  struct MonoInst * D.28719;

  D.28705 = cfg->generic_sharing_context;
  D.28706 = D.28705 == 0B;
  D.28707 = (long int) D.28706;
  D.28708 = __builtin_expect (D.28707, 0);
  if (D.28708 != 0) goto <D.28709>; else goto <D.28710>;
  <D.28709>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1161, "cfg->generic_sharing_context");
  <D.28710>:
  D.28711 = cfg->rgctx_var;
  if (D.28711 == 0B) goto <D.28712>; else goto <D.28713>;
  <D.28712>:
  D.28714 = mono_defaults.int_class;
  D.28715 = &D.28714->byval_arg;
  D.28716 = mono_compile_create_var (cfg, D.28715, 329);
  cfg->rgctx_var = D.28716;
  D.28711 = cfg->rgctx_var;
  D.28711 = cfg->rgctx_var;
  D.28717 = D.28711->flags;
  D.28718 = D.28717 | 4;
  D.28711->flags = D.28718;
  <D.28713>:
  D.28719 = cfg->rgctx_var;
  return D.28719;
}


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

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


mono_emit_abs_call (struct MonoCompile * cfg, MonoJumpInfoType patch_type, const void * data, struct MonoMethodSignature * sig, struct MonoInst * * args)
{
  struct MonoMemPool * D.28724;
  struct GHashTable * D.28725;
  struct GHashTable * D.28728;
  struct MonoInst * D.28729;
  struct MonoJumpInfo * ji;
  struct MonoInst * ins;

  D.28724 = cfg->mempool;
  ji = mono_patch_info_new (D.28724, 0, patch_type, data);
  D.28725 = cfg->abs_patches;
  if (D.28725 == 0B) goto <D.28726>; else goto <D.28727>;
  <D.28726>:
  D.28728 = monoeg_g_hash_table_new (0B, 0B);
  cfg->abs_patches = D.28728;
  <D.28727>:
  D.28725 = cfg->abs_patches;
  monoeg_g_hash_table_insert_replace (D.28725, ji, ji, 0);
  ins = mono_emit_native_call (cfg, ji, sig, args);
  MEM[(struct MonoCallInst *)ins].fptr_is_patch = 1;
  D.28729 = ins;
  return D.28729;
}


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

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


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.28735;
  struct MonoMemPool * D.28736;
  int D.28737;
  struct MonoInst * D.28738;
  int D.28739;
  int D.28740;
  const unsigned char * D.28741;
  int D.28742;
  struct MonoBasicBlock * D.28743;
  struct MonoInst * D.28744;
  _Bool D.28748;
  int D.28749;
  int D.28750;
  struct MonoInst * D.28758;
  struct MonoCallInst * call;
  int rgctx_reg;

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

    D.28736 = cfg->mempool;
    inst = mono_mempool_alloc (D.28736, 56);
    inst->data.op[1].const_val = 0;
    D.28737 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28737;
    inst->prev = 0B;
    D.28738 = inst->prev;
    inst->next = D.28738;
    inst->opcode = 424;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28739 = inst->sreg3;
    inst->sreg2 = D.28739;
    D.28740 = inst->sreg2;
    inst->sreg1 = D.28740;
    D.28741 = cfg->ip;
    inst->cil_code = D.28741;
    inst->dreg = rgctx_reg;
    D.28742 = rgctx_arg->dreg;
    inst->sreg1 = D.28742;
    D.28743 = cfg->cbb;
    D.28744 = D.28743->last_ins;
    if (D.28744 != 0B) goto <D.28745>; else goto <D.28746>;
    <D.28745>:
    D.28743 = cfg->cbb;
    D.28744 = D.28743->last_ins;
    D.28744->next = inst;
    D.28743 = cfg->cbb;
    D.28744 = D.28743->last_ins;
    inst->prev = D.28744;
    D.28743 = cfg->cbb;
    D.28743->last_ins = inst;
    goto <D.28747>;
    <D.28746>:
    D.28743 = cfg->cbb;
    D.28743 = cfg->cbb;
    D.28743->last_ins = inst;
    D.28744 = D.28743->last_ins;
    D.28743->code = D.28744;
    <D.28747>:
  }
  <D.28734>:
  D.28748 = rgctx_arg != 0B;
  D.28749 = (int) D.28748;
  call = mono_emit_call_args (cfg, sig, args, 1, 0, 0, D.28749, 0);
  D.28750 = addr->dreg;
  call->inst.sreg1 = D.28750;
  if (imt_arg != 0B) goto <D.28751>; else goto <D.28752>;
  <D.28751>:
  emit_imt_argument (cfg, call, 0B, imt_arg);
  <D.28752>:
  D.28743 = cfg->cbb;
  D.28744 = D.28743->last_ins;
  if (D.28744 != 0B) goto <D.28753>; else goto <D.28754>;
  <D.28753>:
  D.28743 = cfg->cbb;
  D.28744 = D.28743->last_ins;
  D.28744->next = call;
  D.28743 = cfg->cbb;
  D.28744 = D.28743->last_ins;
  MEM[(struct MonoInst *)call].prev = D.28744;
  D.28743 = cfg->cbb;
  D.28743->last_ins = call;
  goto <D.28755>;
  <D.28754>:
  D.28743 = cfg->cbb;
  D.28743 = cfg->cbb;
  D.28743->last_ins = call;
  D.28744 = D.28743->last_ins;
  D.28743->code = D.28744;
  <D.28755>:
  if (rgctx_arg != 0B) goto <D.28756>; else goto <D.28757>;
  <D.28756>:
  set_rgctx_arg (cfg, call, rgctx_reg, rgctx_arg);
  <D.28757>:
  D.28758 = call;
  return D.28758;
}


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.28762;
  int D.28763;
  int D.28764;
  const unsigned char * D.28765;
  struct MonoType * D.28767;
  struct MonoGenericSharingContext * D.28768;
  int D.28769;
  short unsigned int D.28770;
  unsigned char D.28771;
  <unnamed-unsigned:1> D.28772;
  struct MonoInst * D.28773;
  int D.28776;
  struct MonoInst * D.28779;
  int D.28781;
  <unnamed-unsigned:1> D.28784;
  int D.28785;
  int D.28786;
  struct MonoInst * D.28787;
  int D.28788;
  int D.28789;
  unsigned int D.28790;
  int D.28791;
  struct MonoBasicBlock * D.28792;
  struct MonoInst * D.28793;
  int D.28797;
  int D.28799;
  unsigned char D.28802;
  <unnamed type> D.28803;
  unsigned int D.28804;
  int D.28805;
  unsigned char D.28806;
  <unnamed-unsigned:1> D.28807;
  unsigned int D.28808;
  unsigned int D.28809;
  unsigned int D.28810;
  unsigned int D.28811;
  unsigned int D.28812;
  struct MonoCallInst * D.28813;
  struct MonoType * sig_ret;
  struct MonoCallInst * call;

  if (tail != 0) goto <D.28760>; else goto <D.28761>;
  <D.28760>:
  D.28762 = cfg->mempool;
  call = mono_mempool_alloc0 (D.28762, 120);
  call->inst.opcode = 444;
  call->inst.dreg = -1;
  call->inst.sreg3 = -1;
  D.28763 = call->inst.sreg3;
  call->inst.sreg2 = D.28763;
  D.28764 = call->inst.sreg2;
  call->inst.sreg1 = D.28764;
  D.28765 = cfg->ip;
  call->inst.cil_code = D.28765;
  goto <D.28766>;
  <D.28761>:
  D.28762 = cfg->mempool;
  call = mono_mempool_alloc0 (D.28762, 120);
  D.28767 = sig->ret;
  D.28768 = cfg->generic_sharing_context;
  D.28769 = ret_type_to_call_opcode (D.28767, calli, virtual, D.28768);
  D.28770 = (short unsigned int) D.28769;
  call->inst.opcode = D.28770;
  call->inst.dreg = -1;
  call->inst.sreg3 = -1;
  D.28763 = call->inst.sreg3;
  call->inst.sreg2 = D.28763;
  D.28764 = call->inst.sreg2;
  call->inst.sreg1 = D.28764;
  D.28765 = cfg->ip;
  call->inst.cil_code = D.28765;
  <D.28766>:
  call->args = args;
  call->signature = sig;
  D.28771 = (unsigned char) rgctx;
  D.28772 = (<unnamed-unsigned:1>) D.28771;
  call->rgctx_reg = D.28772;
  D.28767 = sig->ret;
  sig_ret = mini_replace_type (D.28767);
  D.28773 = &call->inst;
  type_to_eval_stack_type (cfg, sig_ret, D.28773);
  if (tail != 0) goto <D.28774>; else goto <D.28775>;
  <D.28774>:
  D.28776 = mini_type_is_vtype (cfg, sig_ret);
  if (D.28776 != 0) goto <D.28777>; else goto <D.28778>;
  <D.28777>:
  D.28779 = cfg->vret_addr;
  call->vret_var = D.28779;
  <D.28778>:
  goto <D.28780>;
  <D.28775>:
  D.28781 = mini_type_is_vtype (cfg, sig_ret);
  if (D.28781 != 0) goto <D.28782>; else goto <D.28783>;
  <D.28782>:
  {
    struct MonoInst * temp;
    struct MonoInst * loada;

    temp = mono_compile_create_var (cfg, sig_ret, 329);
    D.28784 = sig->pinvoke;
    D.28785 = (int) D.28784;
    temp->backend.is_pinvoke = D.28785;
    D.28762 = cfg->mempool;
    loada = mono_mempool_alloc (D.28762, 56);
    loada->data.op[1].const_val = 0;
    D.28786 = loada->data.op[1].const_val;
    loada->data.op[0].const_val = D.28786;
    loada->prev = 0B;
    D.28787 = loada->prev;
    loada->next = D.28787;
    loada->opcode = 334;
    loada->flags = 0;
    loada->type = 0;
    loada->dreg = -1;
    loada->sreg3 = -1;
    D.28788 = loada->sreg3;
    loada->sreg2 = D.28788;
    D.28789 = loada->sreg2;
    loada->sreg1 = D.28789;
    D.28765 = cfg->ip;
    loada->cil_code = D.28765;
    D.28790 = alloc_preg (cfg);
    D.28791 = (int) D.28790;
    loada->dreg = D.28791;
    loada->data.op[0].p = temp;
    loada->data.op[1].p = call;
    D.28792 = cfg->cbb;
    D.28793 = D.28792->last_ins;
    if (D.28793 != 0B) goto <D.28794>; else goto <D.28795>;
    <D.28794>:
    D.28792 = cfg->cbb;
    D.28793 = D.28792->last_ins;
    D.28793->next = loada;
    D.28792 = cfg->cbb;
    D.28793 = D.28792->last_ins;
    loada->prev = D.28793;
    D.28792 = cfg->cbb;
    D.28792->last_ins = loada;
    goto <D.28796>;
    <D.28795>:
    D.28792 = cfg->cbb;
    D.28792 = cfg->cbb;
    D.28792->last_ins = loada;
    D.28793 = D.28792->last_ins;
    D.28792->code = D.28793;
    <D.28796>:
    D.28797 = temp->dreg;
    call->inst.dreg = D.28797;
    call->vret_var = loada;
  }
  goto <D.28798>;
  <D.28783>:
  D.28799 = mono_type_is_void (sig_ret);
  if (D.28799 == 0) goto <D.28800>; else goto <D.28801>;
  <D.28800>:
  D.28802 = call->inst.type;
  D.28803 = (<unnamed type>) D.28802;
  D.28804 = alloc_dreg (cfg, D.28803);
  D.28805 = (int) D.28804;
  call->inst.dreg = D.28805;
  <D.28801>:
  <D.28798>:
  <D.28780>:
  D.28806 = (unsigned char) unbox_trampoline;
  D.28807 = (<unnamed-unsigned:1>) D.28806;
  call->need_unbox_trampoline = D.28807;
  mono_arch_emit_call (cfg, call);
  D.28808 = call->stack_usage;
  D.28809 = cfg->param_area;
  D.28810 = MAX_EXPR <D.28808, D.28809>;
  cfg->param_area = D.28810;
  D.28811 = cfg->flags;
  D.28812 = D.28811 | 2;
  cfg->flags = D.28812;
  D.28813 = call;
  return D.28813;
}


ret_type_to_call_opcode (struct MonoType * type, int calli, int virt, struct MonoGenericSharingContext * gsctx)
{
  unsigned int D.28815;
  unsigned int D.28816;
  int D.28819;
  int iftmp.19;
  int iftmp.20;
  unsigned char D.28828;
  int D.28829;
  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.28878;
  unsigned int D.28879;
  unsigned int D.28880;
  int iftmp.33;
  int iftmp.34;
  int iftmp.35;
  int iftmp.36;
  struct MonoGenericClass * D.28899;
  struct MonoClass * D.28900;
  int iftmp.37;
  int iftmp.38;
  void handle_enum = <<< error >>>;

  D.28815 = BIT_FIELD_REF <*type, 32, 32>;
  D.28816 = D.28815 & 1073741824;
  if (D.28816 != 0) goto <D.28817>; else goto <D.28818>;
  <D.28817>:
  if (calli == 0) goto <D.28821>; else goto <D.28822>;
  <D.28821>:
  if (virt != 0) goto <D.28824>; else goto <D.28825>;
  <D.28824>:
  iftmp.20 = 348;
  goto <D.28826>;
  <D.28825>:
  iftmp.20 = 346;
  <D.28826>:
  iftmp.19 = iftmp.20;
  goto <D.28827>;
  <D.28822>:
  iftmp.19 = 347;
  <D.28827>:
  D.28819 = iftmp.19;
  return D.28819;
  <D.28818>:
  handle_enum:
  type = mini_get_basic_type_from_generic (gsctx, type);
  type = mini_replace_type (type);
  D.28828 = type->type;
  D.28829 = (int) D.28828;
  switch (D.28829) <default: <D.24782>, case 1: <D.24755>, case 2: <D.24758>, case 3: <D.24761>, case 4: <D.24756>, case 5: <D.24757>, case 6: <D.24759>, case 7: <D.24760>, case 8: <D.24762>, case 9: <D.24763>, case 10: <D.24773>, case 11: <D.24774>, case 12: <D.24775>, case 13: <D.24776>, case 14: <D.24769>, case 15: <D.24766>, case 17: <D.24777>, case 18: <D.24768>, case 19: <D.24780>, case 20: <D.24772>, case 21: <D.24779>, case 22: <D.24778>, case 24: <D.24764>, case 25: <D.24765>, case 27: <D.24767>, case 28: <D.24770>, case 29: <D.24771>, case 30: <D.24781>>
  <D.24755>:
  if (calli == 0) goto <D.28831>; else goto <D.28832>;
  <D.28831>:
  if (virt != 0) goto <D.28834>; else goto <D.28835>;
  <D.28834>:
  iftmp.22 = 345;
  goto <D.28836>;
  <D.28835>:
  iftmp.22 = 343;
  <D.28836>:
  iftmp.21 = iftmp.22;
  goto <D.28837>;
  <D.28832>:
  iftmp.21 = 344;
  <D.28837>:
  D.28819 = iftmp.21;
  return D.28819;
  <D.24756>:
  <D.24757>:
  <D.24758>:
  <D.24759>:
  <D.24760>:
  <D.24761>:
  <D.24762>:
  <D.24763>:
  if (calli == 0) goto <D.28839>; else goto <D.28840>;
  <D.28839>:
  if (virt != 0) goto <D.28842>; else goto <D.28843>;
  <D.28842>:
  iftmp.24 = 348;
  goto <D.28844>;
  <D.28843>:
  iftmp.24 = 346;
  <D.28844>:
  iftmp.23 = iftmp.24;
  goto <D.28845>;
  <D.28840>:
  iftmp.23 = 347;
  <D.28845>:
  D.28819 = iftmp.23;
  return D.28819;
  <D.24764>:
  <D.24765>:
  <D.24766>:
  <D.24767>:
  if (calli == 0) goto <D.28847>; else goto <D.28848>;
  <D.28847>:
  if (virt != 0) goto <D.28850>; else goto <D.28851>;
  <D.28850>:
  iftmp.26 = 348;
  goto <D.28852>;
  <D.28851>:
  iftmp.26 = 346;
  <D.28852>:
  iftmp.25 = iftmp.26;
  goto <D.28853>;
  <D.28848>:
  iftmp.25 = 347;
  <D.28853>:
  D.28819 = iftmp.25;
  return D.28819;
  <D.24768>:
  <D.24769>:
  <D.24770>:
  <D.24771>:
  <D.24772>:
  if (calli == 0) goto <D.28855>; else goto <D.28856>;
  <D.28855>:
  if (virt != 0) goto <D.28858>; else goto <D.28859>;
  <D.28858>:
  iftmp.28 = 348;
  goto <D.28860>;
  <D.28859>:
  iftmp.28 = 346;
  <D.28860>:
  iftmp.27 = iftmp.28;
  goto <D.28861>;
  <D.28856>:
  iftmp.27 = 347;
  <D.28861>:
  D.28819 = iftmp.27;
  return D.28819;
  <D.24773>:
  <D.24774>:
  if (calli == 0) goto <D.28863>; else goto <D.28864>;
  <D.28863>:
  if (virt != 0) goto <D.28866>; else goto <D.28867>;
  <D.28866>:
  iftmp.30 = 354;
  goto <D.28868>;
  <D.28867>:
  iftmp.30 = 352;
  <D.28868>:
  iftmp.29 = iftmp.30;
  goto <D.28869>;
  <D.28864>:
  iftmp.29 = 353;
  <D.28869>:
  D.28819 = iftmp.29;
  return D.28819;
  <D.24775>:
  <D.24776>:
  if (calli == 0) goto <D.28871>; else goto <D.28872>;
  <D.28871>:
  if (virt != 0) goto <D.28874>; else goto <D.28875>;
  <D.28874>:
  iftmp.32 = 351;
  goto <D.28876>;
  <D.28875>:
  iftmp.32 = 349;
  <D.28876>:
  iftmp.31 = iftmp.32;
  goto <D.28877>;
  <D.28872>:
  iftmp.31 = 350;
  <D.28877>:
  D.28819 = iftmp.31;
  return D.28819;
  <D.24777>:
  D.28878 = type->data.klass;
  D.28879 = BIT_FIELD_REF <*D.28878, 32, 160>;
  D.28880 = D.28879 & 16;
  if (D.28880 != 0) goto <D.28881>; else goto <D.28882>;
  <D.28881>:
  D.28878 = type->data.klass;
  type = mono_class_enum_basetype (D.28878);
  goto handle_enum;
  <D.28882>:
  if (calli == 0) goto <D.28884>; else goto <D.28885>;
  <D.28884>:
  if (virt != 0) goto <D.28887>; else goto <D.28888>;
  <D.28887>:
  iftmp.34 = 357;
  goto <D.28889>;
  <D.28888>:
  iftmp.34 = 355;
  <D.28889>:
  iftmp.33 = iftmp.34;
  goto <D.28890>;
  <D.28885>:
  iftmp.33 = 356;
  <D.28890>:
  D.28819 = iftmp.33;
  return D.28819;
  <D.24778>:
  if (calli == 0) goto <D.28892>; else goto <D.28893>;
  <D.28892>:
  if (virt != 0) goto <D.28895>; else goto <D.28896>;
  <D.28895>:
  iftmp.36 = 357;
  goto <D.28897>;
  <D.28896>:
  iftmp.36 = 355;
  <D.28897>:
  iftmp.35 = iftmp.36;
  goto <D.28898>;
  <D.28893>:
  iftmp.35 = 356;
  <D.28898>:
  D.28819 = iftmp.35;
  return D.28819;
  <D.24779>:
  D.28899 = type->data.generic_class;
  D.28900 = D.28899->container_class;
  type = &D.28900->byval_arg;
  goto handle_enum;
  <D.24780>:
  <D.24781>:
  if (calli == 0) goto <D.28902>; else goto <D.28903>;
  <D.28902>:
  if (virt != 0) goto <D.28905>; else goto <D.28906>;
  <D.28905>:
  iftmp.38 = 357;
  goto <D.28907>;
  <D.28906>:
  iftmp.38 = 355;
  <D.28907>:
  iftmp.37 = iftmp.38;
  goto <D.28908>;
  <D.28903>:
  iftmp.37 = 356;
  <D.28908>:
  D.28819 = iftmp.37;
  return D.28819;
  <D.24782>:
  D.28828 = type->type;
  D.28829 = (int) D.28828;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in ret_type_to_call_opcode", D.28829);
  <D.24783>:
  goto <D.24783>;
  D.28819 = -1;
  return D.28819;
}


callvirt_to_call (int opcode)
{
  int D.28910;

  switch (opcode) <default: <D.24869>, case 345: <D.24865>, case 348: <D.24864>, case 351: <D.24866>, case 354: <D.24868>, case 357: <D.24867>>
  <D.24864>:
  D.28910 = 346;
  return D.28910;
  <D.24865>:
  D.28910 = 343;
  return D.28910;
  <D.24866>:
  D.28910 = 349;
  return D.28910;
  <D.24867>:
  D.28910 = 355;
  return D.28910;
  <D.24868>:
  D.28910 = 352;
  return D.28910;
  <D.24869>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 2288);
  D.28910 = -1;
  return D.28910;
}


mini_emit_load_intf_reg_vtable (struct MonoCompile * cfg, int intf_reg, int vtable_reg, struct MonoClass * klass)
{
  unsigned int D.28912;
  unsigned int D.28913;
  unsigned int D.28916;
  unsigned int D.28917;
  struct MonoMemPool * D.28918;
  int D.28919;
  struct MonoInst * D.28920;
  guint16 iftmp.39;
  int D.28925;
  int D.28926;
  const unsigned char * D.28927;
  struct MonoBasicBlock * D.28928;
  struct MonoInst * D.28929;
  int D.28933;
  struct MonoInst * D.28934;
  int D.28935;
  int D.28936;
  int D.28940;
  struct MonoInst * D.28941;
  int D.28942;
  int D.28943;
  int D.28948;
  struct MonoInst * D.28949;
  int D.28950;
  int D.28951;
  short unsigned int D.28952;
  int D.28953;
  int D.28954;
  int D.28955;

  D.28912 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.28913 = D.28912 & 64;
  if (D.28913 != 0) goto <D.28914>; else goto <D.28915>;
  <D.28914>:
  {
    int ioffset_reg;
    int iid_reg;

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

      D.28918 = cfg->mempool;
      inst = mono_mempool_alloc (D.28918, 56);
      inst->data.op[1].const_val = 0;
      D.28919 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.28919;
      inst->prev = 0B;
      D.28920 = inst->prev;
      inst->next = D.28920;
      D.28912 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.28913 = D.28912 & 64;
      if (D.28913 != 0) goto <D.28922>; else goto <D.28923>;
      <D.28922>:
      iftmp.39 = 732;
      goto <D.28924>;
      <D.28923>:
      iftmp.39 = 362;
      <D.28924>:
      inst->opcode = iftmp.39;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.28925 = inst->sreg3;
      inst->sreg2 = D.28925;
      D.28926 = inst->sreg2;
      inst->sreg1 = D.28926;
      D.28927 = cfg->ip;
      inst->cil_code = D.28927;
      inst->dreg = iid_reg;
      inst->data.op[0].p = klass;
      inst->data.op[1].const_val = 24;
      D.28928 = cfg->cbb;
      D.28929 = D.28928->last_ins;
      if (D.28929 != 0B) goto <D.28930>; else goto <D.28931>;
      <D.28930>:
      D.28928 = cfg->cbb;
      D.28929 = D.28928->last_ins;
      D.28929->next = inst;
      D.28928 = cfg->cbb;
      D.28929 = D.28928->last_ins;
      inst->prev = D.28929;
      D.28928 = cfg->cbb;
      D.28928->last_ins = inst;
      goto <D.28932>;
      <D.28931>:
      D.28928 = cfg->cbb;
      D.28928 = cfg->cbb;
      D.28928->last_ins = inst;
      D.28929 = D.28928->last_ins;
      D.28928->code = D.28929;
      <D.28932>:
    }
    {
      struct MonoInst * inst;

      D.28918 = cfg->mempool;
      inst = mono_mempool_alloc (D.28918, 56);
      inst->data.op[1].const_val = 0;
      D.28933 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.28933;
      inst->prev = 0B;
      D.28934 = inst->prev;
      inst->next = D.28934;
      inst->opcode = 565;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.28935 = inst->sreg3;
      inst->sreg2 = D.28935;
      D.28936 = inst->sreg2;
      inst->sreg1 = D.28936;
      D.28927 = cfg->ip;
      inst->cil_code = D.28927;
      inst->dreg = ioffset_reg;
      inst->sreg1 = iid_reg;
      inst->sreg2 = vtable_reg;
      D.28928 = cfg->cbb;
      D.28929 = D.28928->last_ins;
      if (D.28929 != 0B) goto <D.28937>; else goto <D.28938>;
      <D.28937>:
      D.28928 = cfg->cbb;
      D.28929 = D.28928->last_ins;
      D.28929->next = inst;
      D.28928 = cfg->cbb;
      D.28929 = D.28928->last_ins;
      inst->prev = D.28929;
      D.28928 = cfg->cbb;
      D.28928->last_ins = inst;
      goto <D.28939>;
      <D.28938>:
      D.28928 = cfg->cbb;
      D.28928 = cfg->cbb;
      D.28928->last_ins = inst;
      D.28929 = D.28928->last_ins;
      D.28928->code = D.28929;
      <D.28939>:
    }
    {
      struct MonoInst * inst;

      D.28918 = cfg->mempool;
      inst = mono_mempool_alloc (D.28918, 56);
      inst->data.op[1].const_val = 0;
      D.28940 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.28940;
      inst->prev = 0B;
      D.28941 = inst->prev;
      inst->next = D.28941;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.28942 = inst->sreg3;
      inst->sreg2 = D.28942;
      D.28943 = inst->sreg2;
      inst->sreg1 = D.28943;
      D.28927 = cfg->ip;
      inst->cil_code = D.28927;
      inst->dreg = intf_reg;
      inst->sreg1 = ioffset_reg;
      inst->data.op[0].const_val = 0;
      D.28928 = cfg->cbb;
      D.28929 = D.28928->last_ins;
      if (D.28929 != 0B) goto <D.28944>; else goto <D.28945>;
      <D.28944>:
      D.28928 = cfg->cbb;
      D.28929 = D.28928->last_ins;
      D.28929->next = inst;
      D.28928 = cfg->cbb;
      D.28929 = D.28928->last_ins;
      inst->prev = D.28929;
      D.28928 = cfg->cbb;
      D.28928->last_ins = inst;
      goto <D.28946>;
      <D.28945>:
      D.28928 = cfg->cbb;
      D.28928 = cfg->cbb;
      D.28928->last_ins = inst;
      D.28929 = D.28928->last_ins;
      D.28928->code = D.28929;
      <D.28946>:
    }
  }
  goto <D.28947>;
  <D.28915>:
  {
    struct MonoInst * inst;

    D.28918 = cfg->mempool;
    inst = mono_mempool_alloc (D.28918, 56);
    inst->data.op[1].const_val = 0;
    D.28948 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28948;
    inst->prev = 0B;
    D.28949 = inst->prev;
    inst->next = D.28949;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28950 = inst->sreg3;
    inst->sreg2 = D.28950;
    D.28951 = inst->sreg2;
    inst->sreg1 = D.28951;
    D.28927 = cfg->ip;
    inst->cil_code = D.28927;
    inst->dreg = intf_reg;
    inst->sreg1 = vtable_reg;
    D.28952 = klass->interface_id;
    D.28953 = (int) D.28952;
    D.28954 = ~D.28953;
    D.28955 = D.28954 * 4;
    inst->data.op[0].const_val = D.28955;
    D.28928 = cfg->cbb;
    D.28929 = D.28928->last_ins;
    if (D.28929 != 0B) goto <D.28956>; else goto <D.28957>;
    <D.28956>:
    D.28928 = cfg->cbb;
    D.28929 = D.28928->last_ins;
    D.28929->next = inst;
    D.28928 = cfg->cbb;
    D.28929 = D.28928->last_ins;
    inst->prev = D.28929;
    D.28928 = cfg->cbb;
    D.28928->last_ins = inst;
    goto <D.28958>;
    <D.28957>:
    D.28928 = cfg->cbb;
    D.28928 = cfg->cbb;
    D.28928->last_ins = inst;
    D.28929 = D.28928->last_ins;
    D.28928->code = D.28929;
    <D.28958>:
  }
  <D.28947>:
}


emit_imt_argument (struct MonoCompile * cfg, struct MonoCallInst * call, struct MonoMethod * method, struct MonoInst * imt_arg)
{
  unsigned int D.28961;
  struct MonoMemPool * D.28964;
  int D.28965;
  struct MonoInst * D.28966;
  int D.28967;
  int D.28968;
  const unsigned char * D.28969;
  int D.28970;
  struct MonoBasicBlock * D.28971;
  struct MonoInst * D.28972;
  unsigned int D.28977;
  unsigned int D.28978;
  int D.28981;
  struct MonoInst * D.28982;
  guint16 iftmp.40;
  int D.28987;
  int D.28988;
  int D.28993;
  struct MonoInst * D.28994;
  int D.28995;
  int D.28996;
  unsigned int D.29000;
  int D.29003;
  struct MonoInst * D.29004;
  int D.29005;
  int D.29006;
  int D.29013;
  struct MonoInst * D.29014;
  guint16 iftmp.41;
  int D.29019;
  int D.29020;
  int D.29025;
  struct MonoInst * D.29026;
  int D.29027;
  int D.29028;
  int method_reg;

  if (0 != 0) goto <D.28959>; else goto <D.28960>;
  <D.28959>:
  D.28961 = alloc_preg (cfg);
  method_reg = (int) D.28961;
  if (imt_arg != 0B) goto <D.28962>; else goto <D.28963>;
  <D.28962>:
  {
    struct MonoInst * inst;

    D.28964 = cfg->mempool;
    inst = mono_mempool_alloc (D.28964, 56);
    inst->data.op[1].const_val = 0;
    D.28965 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28965;
    inst->prev = 0B;
    D.28966 = inst->prev;
    inst->next = D.28966;
    inst->opcode = 424;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28967 = inst->sreg3;
    inst->sreg2 = D.28967;
    D.28968 = inst->sreg2;
    inst->sreg1 = D.28968;
    D.28969 = cfg->ip;
    inst->cil_code = D.28969;
    inst->dreg = method_reg;
    D.28970 = imt_arg->dreg;
    inst->sreg1 = D.28970;
    D.28971 = cfg->cbb;
    D.28972 = D.28971->last_ins;
    if (D.28972 != 0B) goto <D.28973>; else goto <D.28974>;
    <D.28973>:
    D.28971 = cfg->cbb;
    D.28972 = D.28971->last_ins;
    D.28972->next = inst;
    D.28971 = cfg->cbb;
    D.28972 = D.28971->last_ins;
    inst->prev = D.28972;
    D.28971 = cfg->cbb;
    D.28971->last_ins = inst;
    goto <D.28975>;
    <D.28974>:
    D.28971 = cfg->cbb;
    D.28971 = cfg->cbb;
    D.28971->last_ins = inst;
    D.28972 = D.28971->last_ins;
    D.28971->code = D.28972;
    <D.28975>:
  }
  goto <D.28976>;
  <D.28963>:
  D.28977 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.28978 = D.28977 & 64;
  if (D.28978 != 0) goto <D.28979>; else goto <D.28980>;
  <D.28979>:
  {
    struct MonoInst * inst;

    D.28964 = cfg->mempool;
    inst = mono_mempool_alloc (D.28964, 56);
    inst->data.op[1].const_val = 0;
    D.28981 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28981;
    inst->prev = 0B;
    D.28982 = inst->prev;
    inst->next = D.28982;
    D.28977 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.28978 = D.28977 & 64;
    if (D.28978 != 0) goto <D.28984>; else goto <D.28985>;
    <D.28984>:
    iftmp.40 = 732;
    goto <D.28986>;
    <D.28985>:
    iftmp.40 = 362;
    <D.28986>:
    inst->opcode = iftmp.40;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28987 = inst->sreg3;
    inst->sreg2 = D.28987;
    D.28988 = inst->sreg2;
    inst->sreg1 = D.28988;
    D.28969 = cfg->ip;
    inst->cil_code = D.28969;
    inst->dreg = method_reg;
    inst->data.op[0].p = method;
    inst->data.op[1].const_val = 6;
    D.28971 = cfg->cbb;
    D.28972 = D.28971->last_ins;
    if (D.28972 != 0B) goto <D.28989>; else goto <D.28990>;
    <D.28989>:
    D.28971 = cfg->cbb;
    D.28972 = D.28971->last_ins;
    D.28972->next = inst;
    D.28971 = cfg->cbb;
    D.28972 = D.28971->last_ins;
    inst->prev = D.28972;
    D.28971 = cfg->cbb;
    D.28971->last_ins = inst;
    goto <D.28991>;
    <D.28990>:
    D.28971 = cfg->cbb;
    D.28971 = cfg->cbb;
    D.28971->last_ins = inst;
    D.28972 = D.28971->last_ins;
    D.28971->code = D.28972;
    <D.28991>:
  }
  goto <D.28992>;
  <D.28980>:
  {
    struct MonoInst * ins;

    D.28964 = cfg->mempool;
    ins = mono_mempool_alloc (D.28964, 56);
    ins->data.op[1].const_val = 0;
    D.28993 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.28993;
    ins->prev = 0B;
    D.28994 = ins->prev;
    ins->next = D.28994;
    ins->opcode = 362;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.28995 = ins->sreg3;
    ins->sreg2 = D.28995;
    D.28996 = ins->sreg2;
    ins->sreg1 = D.28996;
    D.28969 = cfg->ip;
    ins->cil_code = D.28969;
    ins->data.op[0].p = method;
    ins->dreg = method_reg;
    D.28971 = cfg->cbb;
    D.28972 = D.28971->last_ins;
    if (D.28972 != 0B) goto <D.28997>; else goto <D.28998>;
    <D.28997>:
    D.28971 = cfg->cbb;
    D.28972 = D.28971->last_ins;
    D.28972->next = ins;
    D.28971 = cfg->cbb;
    D.28972 = D.28971->last_ins;
    ins->prev = D.28972;
    D.28971 = cfg->cbb;
    D.28971->last_ins = ins;
    goto <D.28999>;
    <D.28998>:
    D.28971 = cfg->cbb;
    D.28971 = cfg->cbb;
    D.28971->last_ins = ins;
    D.28972 = D.28971->last_ins;
    D.28971->code = D.28972;
    <D.28999>:
  }
  <D.28992>:
  <D.28976>:
  mono_call_inst_add_outarg_reg (cfg, call, method_reg, 8, 0);
  return;
  <D.28960>:
  D.29000 = alloc_preg (cfg);
  method_reg = (int) D.29000;
  if (imt_arg != 0B) goto <D.29001>; else goto <D.29002>;
  <D.29001>:
  {
    struct MonoInst * inst;

    D.28964 = cfg->mempool;
    inst = mono_mempool_alloc (D.28964, 56);
    inst->data.op[1].const_val = 0;
    D.29003 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29003;
    inst->prev = 0B;
    D.29004 = inst->prev;
    inst->next = D.29004;
    inst->opcode = 424;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29005 = inst->sreg3;
    inst->sreg2 = D.29005;
    D.29006 = inst->sreg2;
    inst->sreg1 = D.29006;
    D.28969 = cfg->ip;
    inst->cil_code = D.28969;
    inst->dreg = method_reg;
    D.28970 = imt_arg->dreg;
    inst->sreg1 = D.28970;
    D.28971 = cfg->cbb;
    D.28972 = D.28971->last_ins;
    if (D.28972 != 0B) goto <D.29007>; else goto <D.29008>;
    <D.29007>:
    D.28971 = cfg->cbb;
    D.28972 = D.28971->last_ins;
    D.28972->next = inst;
    D.28971 = cfg->cbb;
    D.28972 = D.28971->last_ins;
    inst->prev = D.28972;
    D.28971 = cfg->cbb;
    D.28971->last_ins = inst;
    goto <D.29009>;
    <D.29008>:
    D.28971 = cfg->cbb;
    D.28971 = cfg->cbb;
    D.28971->last_ins = inst;
    D.28972 = D.28971->last_ins;
    D.28971->code = D.28972;
    <D.29009>:
  }
  goto <D.29010>;
  <D.29002>:
  D.28977 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.28978 = D.28977 & 64;
  if (D.28978 != 0) goto <D.29011>; else goto <D.29012>;
  <D.29011>:
  {
    struct MonoInst * inst;

    D.28964 = cfg->mempool;
    inst = mono_mempool_alloc (D.28964, 56);
    inst->data.op[1].const_val = 0;
    D.29013 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29013;
    inst->prev = 0B;
    D.29014 = inst->prev;
    inst->next = D.29014;
    D.28977 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.28978 = D.28977 & 64;
    if (D.28978 != 0) goto <D.29016>; else goto <D.29017>;
    <D.29016>:
    iftmp.41 = 732;
    goto <D.29018>;
    <D.29017>:
    iftmp.41 = 362;
    <D.29018>:
    inst->opcode = iftmp.41;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29019 = inst->sreg3;
    inst->sreg2 = D.29019;
    D.29020 = inst->sreg2;
    inst->sreg1 = D.29020;
    D.28969 = cfg->ip;
    inst->cil_code = D.28969;
    inst->dreg = method_reg;
    inst->data.op[0].p = method;
    inst->data.op[1].const_val = 6;
    D.28971 = cfg->cbb;
    D.28972 = D.28971->last_ins;
    if (D.28972 != 0B) goto <D.29021>; else goto <D.29022>;
    <D.29021>:
    D.28971 = cfg->cbb;
    D.28972 = D.28971->last_ins;
    D.28972->next = inst;
    D.28971 = cfg->cbb;
    D.28972 = D.28971->last_ins;
    inst->prev = D.28972;
    D.28971 = cfg->cbb;
    D.28971->last_ins = inst;
    goto <D.29023>;
    <D.29022>:
    D.28971 = cfg->cbb;
    D.28971 = cfg->cbb;
    D.28971->last_ins = inst;
    D.28972 = D.28971->last_ins;
    D.28971->code = D.28972;
    <D.29023>:
  }
  goto <D.29024>;
  <D.29012>:
  {
    struct MonoInst * ins;

    D.28964 = cfg->mempool;
    ins = mono_mempool_alloc (D.28964, 56);
    ins->data.op[1].const_val = 0;
    D.29025 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.29025;
    ins->prev = 0B;
    D.29026 = ins->prev;
    ins->next = D.29026;
    ins->opcode = 362;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.29027 = ins->sreg3;
    ins->sreg2 = D.29027;
    D.29028 = ins->sreg2;
    ins->sreg1 = D.29028;
    D.28969 = cfg->ip;
    ins->cil_code = D.28969;
    ins->data.op[0].p = method;
    ins->dreg = method_reg;
    D.28971 = cfg->cbb;
    D.28972 = D.28971->last_ins;
    if (D.28972 != 0B) goto <D.29029>; else goto <D.29030>;
    <D.29029>:
    D.28971 = cfg->cbb;
    D.28972 = D.28971->last_ins;
    D.28972->next = ins;
    D.28971 = cfg->cbb;
    D.28972 = D.28971->last_ins;
    ins->prev = D.28972;
    D.28971 = cfg->cbb;
    D.28971->last_ins = ins;
    goto <D.29031>;
    <D.29030>:
    D.28971 = cfg->cbb;
    D.28971 = cfg->cbb;
    D.28971->last_ins = ins;
    D.28972 = D.28971->last_ins;
    D.28971->code = D.28972;
    <D.29031>:
  }
  <D.29024>:
  <D.29010>:
  mono_call_inst_add_outarg_reg (cfg, call, method_reg, 8, 0);
}


set_rgctx_arg (struct MonoCompile * cfg, struct MonoCallInst * call, int rgctx_reg, struct MonoInst * rgctx_arg)
{
  mono_call_inst_add_outarg_reg (cfg, call, rgctx_reg, 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.29033;
  long int D.29034;
  long int D.29035;
  struct MonoBasicBlock * D.29038;
  struct MonoInst * D.29039;
  struct MonoInst * D.29043;
  struct MonoCallInst * call;

  D.29033 = sig == 0B;
  D.29034 = (long int) D.29033;
  D.29035 = __builtin_expect (D.29034, 0);
  if (D.29035 != 0) goto <D.29036>; else goto <D.29037>;
  <D.29036>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2775, "sig");
  <D.29037>:
  call = mono_emit_call_args (cfg, sig, args, 0, 0, 0, 0, 0);
  call->fptr = func;
  D.29038 = cfg->cbb;
  D.29039 = D.29038->last_ins;
  if (D.29039 != 0B) goto <D.29040>; else goto <D.29041>;
  <D.29040>:
  D.29038 = cfg->cbb;
  D.29039 = D.29038->last_ins;
  D.29039->next = call;
  D.29038 = cfg->cbb;
  D.29039 = D.29038->last_ins;
  MEM[(struct MonoInst *)call].prev = D.29039;
  D.29038 = cfg->cbb;
  D.29038->last_ins = call;
  goto <D.29042>;
  <D.29041>:
  D.29038 = cfg->cbb;
  D.29038 = cfg->cbb;
  D.29038->last_ins = call;
  D.29039 = D.29038->last_ins;
  D.29038->code = D.29039;
  <D.29042>:
  D.29043 = call;
  return D.29043;
}


mono_emit_jit_icall (struct MonoCompile * cfg, const void * func, struct MonoInst * * args)
{
  _Bool D.29045;
  long int D.29046;
  long int D.29047;
  struct MonoInst * D.29050;
  const void * D.29051;
  struct MonoMethodSignature * D.29052;
  struct MonoJitICallInfo * info;

  info = mono_find_jit_icall_by_addr (func);
  D.29045 = info == 0B;
  D.29046 = (long int) D.29045;
  D.29047 = __builtin_expect (D.29046, 0);
  if (D.29047 != 0) goto <D.29048>; else goto <D.29049>;
  <D.29048>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2790, "info");
  <D.29049>:
  D.29051 = mono_icall_get_wrapper (info);
  D.29052 = info->sig;
  D.29050 = mono_emit_native_call (cfg, D.29051, D.29052, args);
  return D.29050;
}


mini_emit_stobj (struct MonoCompile * cfg, struct MonoInst * dest, struct MonoInst * src, struct MonoClass * klass, gboolean native)
{
  _Bool D.29054;
  long int D.29055;
  long int D.29056;
  int D.29059;
  _Bool D.29062;
  long int D.29063;
  long int D.29064;
  unsigned int D.29072;
  unsigned int D.29073;
  unsigned int D.29076;
  unsigned int D.29077;
  short unsigned int D.29083;
  int D.29085;
  unsigned int D.29086;
  unsigned int D.29087;
  unsigned int D.29092;
  unsigned int D.29093;
  unsigned int align.42;
  int align.43;
  int D.29097;
  struct MonoInst * D.29101;
  unsigned int D.29103;
  struct MonoMemPool * D.29106;
  void * D.29107;
  struct MonoInst * D.29108;
  int D.29109;
  struct MonoInst * D.29110;
  guint16 iftmp.44;
  int D.29115;
  int D.29116;
  const unsigned char * D.29117;
  unsigned int D.29118;
  int D.29119;
  struct MonoBasicBlock * D.29120;
  struct MonoInst * D.29121;
  void * D.29126;
  unsigned int D.29127;
  int D.29128;
  unsigned int n.45;
  int D.29141;
  int D.29142;
  void * D.29146;
  unsigned int D.29147;
  int D.29148;
  struct MonoMethodSignature * D.29154;
  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.29054 = klass == 0B;
      D.29055 = (long int) D.29054;
      D.29056 = __builtin_expect (D.29055, 0);
      if (D.29056 != 0) goto <D.29057>; else goto <D.29058>;
      <D.29057>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3060, "klass");
      <D.29058>:
      D.29059 = mini_is_gsharedvt_klass (cfg, klass);
      if (D.29059 != 0) goto <D.29060>; else goto <D.29061>;
      <D.29060>:
      D.29062 = native != 0;
      D.29063 = (long int) D.29062;
      D.29064 = __builtin_expect (D.29063, 0);
      if (D.29064 != 0) goto <D.29065>; else goto <D.29066>;
      <D.29065>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3067, "!native");
      <D.29066>:
      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.29061>:
      if (native != 0) goto <D.29067>; else goto <D.29068>;
      <D.29067>:
      n = mono_class_native_size (klass, &align);
      goto <D.29069>;
      <D.29068>:
      n = mono_class_value_size (klass, &align);
      <D.29069>:
      D.29072 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.29073 = D.29072 & 268435456;
      if (D.29073 != 0) goto <D.29074>; else goto <D.29075>;
      <D.29074>:
      D.29076 = BIT_FIELD_REF <*klass, 32, 160>;
      D.29077 = D.29076 & 134217728;
      if (D.29077 != 0) goto <D.29070>; else goto <D.29078>;
      <D.29078>:
      if (size_ins != 0B) goto <D.29070>; else goto <D.29071>;
      <D.29070>:
      if (native == 0) goto <D.29079>; else goto <D.29080>;
      <D.29079>:
      D.29083 = dest->opcode;
      if (D.29083 != 429) goto <D.29081>; else goto <D.29084>;
      <D.29084>:
      D.29085 = dest->sreg1;
      D.29086 = (unsigned int) D.29085;
      D.29087 = cfg->frame_reg;
      if (D.29086 != D.29087) goto <D.29081>; else goto <D.29082>;
      <D.29081>:
      D.29083 = dest->opcode;
      if (D.29083 != 314) goto <D.29088>; else goto <D.29089>;
      <D.29088>:
      {
        int context_used;

        iargs[0] = dest;
        iargs[1] = src;
        context_used = mini_class_check_context_used (cfg, klass);
        if (size_ins == 0B) goto <D.29091>; else goto <D.29090>;
        <D.29091>:
        D.29092 = cfg->opt;
        D.29093 = D.29092 & 2048;
        if (D.29093 != 0) goto <D.29094>; else goto <D.29090>;
        <D.29094>:
        align.42 = align;
        align.43 = (int) align.42;
        D.29097 = mono_emit_wb_aware_memcpy (cfg, klass, &iargs, n, align.43);
        if (D.29097 != 0) goto <D.29098>; else goto <D.29090>;
        <D.29098>:
        return;
        <D.29090>:
        if (context_used != 0) goto <D.29099>; else goto <D.29100>;
        <D.29099>:
        D.29101 = emit_get_rgctx_klass (cfg, context_used, klass, 1);
        iargs[2] = D.29101;
        goto <D.29102>;
        <D.29100>:
        D.29072 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.29103 = D.29072 & 64;
        if (D.29103 != 0) goto <D.29104>; else goto <D.29105>;
        <D.29104>:
        D.29106 = cfg->mempool;
        D.29107 = mono_mempool_alloc (D.29106, 56);
        iargs[2] = D.29107;
        D.29108 = iargs[2];
        D.29108 = iargs[2];
        D.29108->data.op[1].const_val = 0;
        D.29109 = D.29108->data.op[1].const_val;
        D.29108->data.op[0].const_val = D.29109;
        D.29108 = iargs[2];
        D.29108 = iargs[2];
        D.29108->prev = 0B;
        D.29110 = D.29108->prev;
        D.29108->next = D.29110;
        D.29108 = iargs[2];
        D.29072 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.29103 = D.29072 & 64;
        if (D.29103 != 0) goto <D.29112>; else goto <D.29113>;
        <D.29112>:
        iftmp.44 = 732;
        goto <D.29114>;
        <D.29113>:
        iftmp.44 = 362;
        <D.29114>:
        D.29108->opcode = iftmp.44;
        D.29108 = iargs[2];
        D.29108->flags = 0;
        D.29108 = iargs[2];
        D.29108->type = 0;
        D.29108 = iargs[2];
        D.29108->dreg = -1;
        D.29108 = iargs[2];
        D.29108 = iargs[2];
        D.29108 = iargs[2];
        D.29108->sreg3 = -1;
        D.29115 = D.29108->sreg3;
        D.29108->sreg2 = D.29115;
        D.29116 = D.29108->sreg2;
        D.29108->sreg1 = D.29116;
        D.29108 = iargs[2];
        D.29117 = cfg->ip;
        D.29108->cil_code = D.29117;
        D.29108 = iargs[2];
        D.29108->data.op[0].p = klass;
        D.29108 = iargs[2];
        D.29108->data.op[1].src = 11B;
        D.29108 = iargs[2];
        D.29108->type = 3;
        D.29108 = iargs[2];
        D.29118 = alloc_dreg (cfg, 3);
        D.29119 = (int) D.29118;
        D.29108->dreg = D.29119;
        D.29120 = cfg->cbb;
        D.29121 = D.29120->last_ins;
        if (D.29121 != 0B) goto <D.29122>; else goto <D.29123>;
        <D.29122>:
        D.29120 = cfg->cbb;
        D.29121 = D.29120->last_ins;
        D.29108 = iargs[2];
        D.29121->next = D.29108;
        D.29108 = iargs[2];
        D.29120 = cfg->cbb;
        D.29121 = D.29120->last_ins;
        D.29108->prev = D.29121;
        D.29120 = cfg->cbb;
        D.29108 = iargs[2];
        D.29120->last_ins = D.29108;
        goto <D.29124>;
        <D.29123>:
        D.29120 = cfg->cbb;
        D.29120 = cfg->cbb;
        D.29108 = iargs[2];
        D.29120->last_ins = D.29108;
        D.29121 = D.29120->last_ins;
        D.29120->code = D.29121;
        <D.29124>:
        goto <D.29125>;
        <D.29105>:
        D.29106 = cfg->mempool;
        D.29126 = mono_mempool_alloc (D.29106, 56);
        iargs[2] = D.29126;
        D.29108 = iargs[2];
        D.29108 = iargs[2];
        D.29108->data.op[1].const_val = 0;
        D.29109 = D.29108->data.op[1].const_val;
        D.29108->data.op[0].const_val = D.29109;
        D.29108 = iargs[2];
        D.29108 = iargs[2];
        D.29108->prev = 0B;
        D.29110 = D.29108->prev;
        D.29108->next = D.29110;
        D.29108 = iargs[2];
        D.29108->opcode = 362;
        D.29108 = iargs[2];
        D.29108->flags = 0;
        D.29108 = iargs[2];
        D.29108->type = 0;
        D.29108 = iargs[2];
        D.29108->dreg = -1;
        D.29108 = iargs[2];
        D.29108 = iargs[2];
        D.29108 = iargs[2];
        D.29108->sreg3 = -1;
        D.29115 = D.29108->sreg3;
        D.29108->sreg2 = D.29115;
        D.29116 = D.29108->sreg2;
        D.29108->sreg1 = D.29116;
        D.29108 = iargs[2];
        D.29117 = cfg->ip;
        D.29108->cil_code = D.29117;
        D.29108 = iargs[2];
        D.29108->data.op[0].p = klass;
        D.29108 = iargs[2];
        D.29108->type = 3;
        D.29108 = iargs[2];
        D.29127 = alloc_dreg (cfg, 3);
        D.29128 = (int) D.29127;
        D.29108->dreg = D.29128;
        D.29120 = cfg->cbb;
        D.29121 = D.29120->last_ins;
        if (D.29121 != 0B) goto <D.29129>; else goto <D.29130>;
        <D.29129>:
        D.29120 = cfg->cbb;
        D.29121 = D.29120->last_ins;
        D.29108 = iargs[2];
        D.29121->next = D.29108;
        D.29108 = iargs[2];
        D.29120 = cfg->cbb;
        D.29121 = D.29120->last_ins;
        D.29108->prev = D.29121;
        D.29120 = cfg->cbb;
        D.29108 = iargs[2];
        D.29120->last_ins = D.29108;
        goto <D.29131>;
        <D.29130>:
        D.29120 = cfg->cbb;
        D.29120 = cfg->cbb;
        D.29108 = iargs[2];
        D.29120->last_ins = D.29108;
        D.29121 = D.29120->last_ins;
        D.29120->code = D.29121;
        <D.29131>:
        mono_class_compute_gc_descriptor (klass);
        <D.29125>:
        <D.29102>:
        if (size_ins != 0B) goto <D.29132>; else goto <D.29133>;
        <D.29132>:
        mono_emit_jit_icall (cfg, mono_gsharedvt_value_copy, &iargs);
        goto <D.29134>;
        <D.29133>:
        mono_emit_jit_icall (cfg, mono_value_copy, &iargs);
        <D.29134>:
        return;
      }
      <D.29089>:
      <D.29082>:
      <D.29080>:
      <D.29071>:
      <D.29075>:
      if (size_ins == 0B) goto <D.29137>; else goto <D.29135>;
      <D.29137>:
      D.29092 = cfg->opt;
      D.29093 = D.29092 & 2048;
      if (D.29093 != 0) goto <D.29138>; else goto <D.29135>;
      <D.29138>:
      n.45 = (unsigned int) n;
      if (n.45 <= 20) goto <D.29140>; else goto <D.29135>;
      <D.29140>:
      D.29141 = dest->dreg;
      D.29142 = src->dreg;
      align.42 = align;
      align.43 = (int) align.42;
      mini_emit_memcpy (cfg, D.29141, 0, D.29142, 0, n, align.43);
      goto <D.29136>;
      <D.29135>:
      iargs[0] = dest;
      iargs[1] = src;
      if (size_ins != 0B) goto <D.29143>; else goto <D.29144>;
      <D.29143>:
      iargs[2] = size_ins;
      goto <D.29145>;
      <D.29144>:
      D.29106 = cfg->mempool;
      D.29146 = mono_mempool_alloc (D.29106, 56);
      iargs[2] = D.29146;
      D.29108 = iargs[2];
      D.29108 = iargs[2];
      D.29108->data.op[1].const_val = 0;
      D.29109 = D.29108->data.op[1].const_val;
      D.29108->data.op[0].const_val = D.29109;
      D.29108 = iargs[2];
      D.29108 = iargs[2];
      D.29108->prev = 0B;
      D.29110 = D.29108->prev;
      D.29108->next = D.29110;
      D.29108 = iargs[2];
      D.29108->opcode = 362;
      D.29108 = iargs[2];
      D.29108->flags = 0;
      D.29108 = iargs[2];
      D.29108->type = 0;
      D.29108 = iargs[2];
      D.29108->dreg = -1;
      D.29108 = iargs[2];
      D.29108 = iargs[2];
      D.29108 = iargs[2];
      D.29108->sreg3 = -1;
      D.29115 = D.29108->sreg3;
      D.29108->sreg2 = D.29115;
      D.29116 = D.29108->sreg2;
      D.29108->sreg1 = D.29116;
      D.29108 = iargs[2];
      D.29117 = cfg->ip;
      D.29108->cil_code = D.29117;
      D.29108 = iargs[2];
      D.29108->data.op[0].const_val = n;
      D.29108 = iargs[2];
      D.29108->type = 1;
      D.29108 = iargs[2];
      D.29147 = alloc_dreg (cfg, 1);
      D.29148 = (int) D.29147;
      D.29108->dreg = D.29148;
      D.29120 = cfg->cbb;
      D.29121 = D.29120->last_ins;
      if (D.29121 != 0B) goto <D.29149>; else goto <D.29150>;
      <D.29149>:
      D.29120 = cfg->cbb;
      D.29121 = D.29120->last_ins;
      D.29108 = iargs[2];
      D.29121->next = D.29108;
      D.29108 = iargs[2];
      D.29120 = cfg->cbb;
      D.29121 = D.29120->last_ins;
      D.29108->prev = D.29121;
      D.29120 = cfg->cbb;
      D.29108 = iargs[2];
      D.29120->last_ins = D.29108;
      goto <D.29151>;
      <D.29150>:
      D.29120 = cfg->cbb;
      D.29120 = cfg->cbb;
      D.29108 = iargs[2];
      D.29120->last_ins = D.29108;
      D.29121 = D.29120->last_ins;
      D.29120->code = D.29121;
      <D.29151>:
      <D.29145>:
      memcpy_method = get_memcpy_method ();
      if (memcpy_ins != 0B) goto <D.29152>; else goto <D.29153>;
      <D.29152>:
      D.29154 = mono_method_signature (memcpy_method);
      mono_emit_calli (cfg, D.29154, &iargs, memcpy_ins, 0B, 0B);
      goto <D.29155>;
      <D.29153>:
      mono_emit_method_call (cfg, memcpy_method, &iargs, 0B);
      <D.29155>:
      <D.29136>:
    }
  finally
    {
      iargs = {CLOBBER};
      align = {CLOBBER};
    }
}


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

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


emit_get_gsharedvt_info (struct MonoCompile * cfg, void * data, MonoRgctxInfoType rgctx_type)
{
  unsigned int D.29162;
  struct MonoMemPool * D.29163;
  int D.29164;
  struct MonoInst * D.29165;
  int D.29166;
  int D.29167;
  const unsigned char * D.29168;
  struct MonoInst * D.29169;
  int D.29170;
  unsigned int idx.46;
  unsigned int D.29172;
  unsigned int D.29173;
  int D.29174;
  struct MonoBasicBlock * D.29175;
  struct MonoInst * D.29176;
  struct MonoInst * D.29180;
  struct MonoInst * ins;
  int idx;
  int dreg;

  idx = get_gsharedvt_info_slot (cfg, data, rgctx_type);
  D.29162 = alloc_preg (cfg);
  dreg = (int) D.29162;
  D.29163 = cfg->mempool;
  ins = mono_mempool_alloc (D.29163, 56);
  ins->data.op[1].const_val = 0;
  D.29164 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.29164;
  ins->prev = 0B;
  D.29165 = ins->prev;
  ins->next = D.29165;
  ins->opcode = 388;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.29166 = ins->sreg3;
  ins->sreg2 = D.29166;
  D.29167 = ins->sreg2;
  ins->sreg1 = D.29167;
  D.29168 = cfg->ip;
  ins->cil_code = D.29168;
  ins->dreg = dreg;
  D.29169 = cfg->gsharedvt_info_var;
  D.29170 = D.29169->dreg;
  ins->sreg1 = D.29170;
  idx.46 = (unsigned int) idx;
  D.29172 = idx.46 + 1;
  D.29173 = D.29172 * 4;
  D.29174 = (int) D.29173;
  ins->data.op[0].const_val = D.29174;
  ins->type = 1;
  D.29175 = cfg->cbb;
  D.29176 = D.29175->last_ins;
  if (D.29176 != 0B) goto <D.29177>; else goto <D.29178>;
  <D.29177>:
  D.29175 = cfg->cbb;
  D.29176 = D.29175->last_ins;
  D.29176->next = ins;
  D.29175 = cfg->cbb;
  D.29176 = D.29175->last_ins;
  ins->prev = D.29176;
  D.29175 = cfg->cbb;
  D.29175->last_ins = ins;
  goto <D.29179>;
  <D.29178>:
  D.29175 = cfg->cbb;
  D.29175 = cfg->cbb;
  D.29175->last_ins = ins;
  D.29176 = D.29175->last_ins;
  D.29175->code = D.29176;
  <D.29179>:
  D.29180 = ins;
  return D.29180;
}


get_gsharedvt_info_slot (struct MonoCompile * cfg, void * data, MonoRgctxInfoType rgctx_type)
{
  _Bool D.29182;
  long int D.29183;
  long int D.29184;
  struct GPtrArray * D.29187;
  void * * D.29188;
  unsigned int i.47;
  unsigned int D.29190;
  void * * D.29191;
  <unnamed type> D.29192;
  void * D.29195;
  int D.29200;
  unsigned int i.48;
  unsigned int D.29202;
  struct MonoMemPool * D.29203;
  struct MonoGSharedVtMethodInfo * info;
  struct MonoRuntimeGenericContextInfoTemplate * template;
  int i;
  int idx;

  info = cfg->gsharedvt_info;
  D.29182 = info == 0B;
  D.29183 = (long int) D.29182;
  D.29184 = __builtin_expect (D.29183, 0);
  if (D.29184 != 0) goto <D.29185>; else goto <D.29186>;
  <D.29185>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3354, "info");
  <D.29186>:
  i = 0;
  goto <D.25250>;
  <D.25249>:
  {
    struct MonoRuntimeGenericContextInfoTemplate * otemplate;

    D.29187 = info->entries;
    D.29188 = D.29187->pdata;
    i.47 = (unsigned int) i;
    D.29190 = i.47 * 4;
    D.29191 = D.29188 + D.29190;
    otemplate = *D.29191;
    D.29192 = otemplate->info_type;
    if (D.29192 == rgctx_type) goto <D.29193>; else goto <D.29194>;
    <D.29193>:
    D.29195 = otemplate->data;
    if (D.29195 == data) goto <D.29196>; else goto <D.29197>;
    <D.29196>:
    if (rgctx_type != 21) goto <D.29198>; else goto <D.29199>;
    <D.29198>:
    D.29200 = i;
    return D.29200;
    <D.29199>:
    <D.29197>:
    <D.29194>:
  }
  i = i + 1;
  <D.25250>:
  i.48 = (unsigned int) i;
  D.29187 = info->entries;
  D.29202 = D.29187->len;
  if (i.48 < D.29202) goto <D.25249>; else goto <D.25251>;
  <D.25251>:
  D.29203 = cfg->mempool;
  template = mono_mempool_alloc0 (D.29203, 12);
  template->info_type = rgctx_type;
  template->data = data;
  D.29187 = info->entries;
  D.29202 = D.29187->len;
  idx = (int) D.29202;
  D.29187 = info->entries;
  monoeg_g_ptr_array_add (D.29187, template);
  D.29200 = idx;
  return D.29200;
}


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

  D.29205 = cfg->generic_sharing_context;
  if (D.29205 != 0B) goto <D.29206>; else goto <D.29207>;
  <D.29206>:
  D.29208 = mono_class_check_context_used (klass);
  return D.29208;
  <D.29207>:
  D.29208 = 0;
  return D.29208;
}


mono_emit_wb_aware_memcpy (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * * iargs, int size, int align)
{
  gboolean D.29214;
  struct MonoInst * * D.29219;
  struct MonoMemPool * D.29220;
  void * D.29221;
  struct MonoInst * D.29222;
  int D.29223;
  struct MonoInst * D.29224;
  int D.29225;
  int D.29226;
  const unsigned char * D.29227;
  unsigned int D.29228;
  int D.29229;
  struct MonoBasicBlock * D.29230;
  struct MonoInst * D.29231;
  struct MonoInst * D.29234;
  struct MonoInst * * D.29236;
  void * D.29237;
  struct MonoInst * D.29238;
  int D.29239;
  struct MonoInst * D.29240;
  int D.29241;
  int D.29242;
  unsigned int need_wb.49;
  int need_wb.50;
  unsigned int D.29245;
  int D.29246;
  struct MonoInst * D.29249;
  struct MonoInst * D.29251;
  struct MonoInst * * D.29252;
  struct MonoInst * D.29253;
  unsigned int D.29254;
  unsigned int D.29255;
  void * D.29256;
  int D.29257;
  struct MonoInst * D.29258;
  int D.29259;
  int D.29260;
  int D.29264;
  struct MonoInst * D.29265;
  int D.29266;
  int D.29267;
  int D.29271;
  struct MonoInst * D.29272;
  int D.29273;
  int D.29274;
  unsigned int D.29278;
  unsigned int need_wb.51;
  void * D.29284;
  int D.29288;
  struct MonoInst * D.29289;
  int D.29290;
  int D.29291;
  int D.29295;
  struct MonoInst * D.29296;
  int D.29297;
  int D.29298;
  int D.29302;
  struct MonoInst * D.29303;
  int D.29304;
  int D.29305;
  int D.29309;
  struct MonoInst * D.29310;
  int D.29311;
  int D.29312;
  int D.29316;
  struct MonoInst * D.29317;
  int D.29318;
  int D.29319;
  int D.29323;
  struct MonoInst * D.29324;
  int D.29325;
  int D.29326;
  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.29210>; else goto <D.29211>;
      <D.29210>:
      align = 4;
      <D.29211>:
      if (align <= 3) goto <D.29212>; else goto <D.29213>;
      <D.29212>:
      D.29214 = 0;
      return D.29214;
      <D.29213>:
      if (size > 128) goto <D.29215>; else goto <D.29216>;
      <D.29215>:
      D.29214 = 0;
      return D.29214;
      <D.29216>:
      create_write_barrier_bitmap (cfg, klass, &need_wb, 0);
      if (size > 20) goto <D.29217>; else goto <D.29218>;
      <D.29217>:
      size = size + 3;
      size = size & -4;
      D.29219 = iargs + 8;
      D.29220 = cfg->mempool;
      D.29221 = mono_mempool_alloc (D.29220, 56);
      *D.29219 = D.29221;
      D.29219 = iargs + 8;
      D.29222 = *D.29219;
      D.29219 = iargs + 8;
      D.29222 = *D.29219;
      D.29222->data.op[1].const_val = 0;
      D.29223 = D.29222->data.op[1].const_val;
      D.29222->data.op[0].const_val = D.29223;
      D.29219 = iargs + 8;
      D.29222 = *D.29219;
      D.29219 = iargs + 8;
      D.29222 = *D.29219;
      D.29222->prev = 0B;
      D.29224 = D.29222->prev;
      D.29222->next = D.29224;
      D.29219 = iargs + 8;
      D.29222 = *D.29219;
      D.29222->opcode = 362;
      D.29219 = iargs + 8;
      D.29222 = *D.29219;
      D.29222->flags = 0;
      D.29219 = iargs + 8;
      D.29222 = *D.29219;
      D.29222->type = 0;
      D.29219 = iargs + 8;
      D.29222 = *D.29219;
      D.29222->dreg = -1;
      D.29219 = iargs + 8;
      D.29222 = *D.29219;
      D.29219 = iargs + 8;
      D.29222 = *D.29219;
      D.29219 = iargs + 8;
      D.29222 = *D.29219;
      D.29222->sreg3 = -1;
      D.29225 = D.29222->sreg3;
      D.29222->sreg2 = D.29225;
      D.29226 = D.29222->sreg2;
      D.29222->sreg1 = D.29226;
      D.29219 = iargs + 8;
      D.29222 = *D.29219;
      D.29227 = cfg->ip;
      D.29222->cil_code = D.29227;
      D.29219 = iargs + 8;
      D.29222 = *D.29219;
      D.29222->data.op[0].const_val = size;
      D.29219 = iargs + 8;
      D.29222 = *D.29219;
      D.29222->type = 1;
      D.29219 = iargs + 8;
      D.29222 = *D.29219;
      D.29228 = alloc_dreg (cfg, 1);
      D.29229 = (int) D.29228;
      D.29222->dreg = D.29229;
      D.29230 = cfg->cbb;
      D.29231 = D.29230->last_ins;
      if (D.29231 != 0B) goto <D.29232>; else goto <D.29233>;
      <D.29232>:
      D.29230 = cfg->cbb;
      D.29231 = D.29230->last_ins;
      D.29234 = MEM[(struct MonoInst * *)iargs + 8B];
      D.29231->next = D.29234;
      D.29219 = iargs + 8;
      D.29222 = *D.29219;
      D.29230 = cfg->cbb;
      D.29231 = D.29230->last_ins;
      D.29222->prev = D.29231;
      D.29230 = cfg->cbb;
      D.29234 = MEM[(struct MonoInst * *)iargs + 8B];
      D.29230->last_ins = D.29234;
      goto <D.29235>;
      <D.29233>:
      D.29230 = cfg->cbb;
      D.29230 = cfg->cbb;
      D.29234 = MEM[(struct MonoInst * *)iargs + 8B];
      D.29230->last_ins = D.29234;
      D.29231 = D.29230->last_ins;
      D.29230->code = D.29231;
      <D.29235>:
      D.29236 = iargs + 12;
      D.29220 = cfg->mempool;
      D.29237 = mono_mempool_alloc (D.29220, 56);
      *D.29236 = D.29237;
      D.29236 = iargs + 12;
      D.29238 = *D.29236;
      D.29236 = iargs + 12;
      D.29238 = *D.29236;
      D.29238->data.op[1].const_val = 0;
      D.29239 = D.29238->data.op[1].const_val;
      D.29238->data.op[0].const_val = D.29239;
      D.29236 = iargs + 12;
      D.29238 = *D.29236;
      D.29236 = iargs + 12;
      D.29238 = *D.29236;
      D.29238->prev = 0B;
      D.29240 = D.29238->prev;
      D.29238->next = D.29240;
      D.29236 = iargs + 12;
      D.29238 = *D.29236;
      D.29238->opcode = 362;
      D.29236 = iargs + 12;
      D.29238 = *D.29236;
      D.29238->flags = 0;
      D.29236 = iargs + 12;
      D.29238 = *D.29236;
      D.29238->type = 0;
      D.29236 = iargs + 12;
      D.29238 = *D.29236;
      D.29238->dreg = -1;
      D.29236 = iargs + 12;
      D.29238 = *D.29236;
      D.29236 = iargs + 12;
      D.29238 = *D.29236;
      D.29236 = iargs + 12;
      D.29238 = *D.29236;
      D.29238->sreg3 = -1;
      D.29241 = D.29238->sreg3;
      D.29238->sreg2 = D.29241;
      D.29242 = D.29238->sreg2;
      D.29238->sreg1 = D.29242;
      D.29236 = iargs + 12;
      D.29238 = *D.29236;
      D.29227 = cfg->ip;
      D.29238->cil_code = D.29227;
      D.29236 = iargs + 12;
      D.29238 = *D.29236;
      need_wb.49 = need_wb;
      need_wb.50 = (int) need_wb.49;
      D.29238->data.op[0].const_val = need_wb.50;
      D.29236 = iargs + 12;
      D.29238 = *D.29236;
      D.29238->type = 1;
      D.29236 = iargs + 12;
      D.29238 = *D.29236;
      D.29245 = alloc_dreg (cfg, 1);
      D.29246 = (int) D.29245;
      D.29238->dreg = D.29246;
      D.29230 = cfg->cbb;
      D.29231 = D.29230->last_ins;
      if (D.29231 != 0B) goto <D.29247>; else goto <D.29248>;
      <D.29247>:
      D.29230 = cfg->cbb;
      D.29231 = D.29230->last_ins;
      D.29249 = MEM[(struct MonoInst * *)iargs + 12B];
      D.29231->next = D.29249;
      D.29236 = iargs + 12;
      D.29238 = *D.29236;
      D.29230 = cfg->cbb;
      D.29231 = D.29230->last_ins;
      D.29238->prev = D.29231;
      D.29230 = cfg->cbb;
      D.29249 = MEM[(struct MonoInst * *)iargs + 12B];
      D.29230->last_ins = D.29249;
      goto <D.29250>;
      <D.29248>:
      D.29230 = cfg->cbb;
      D.29230 = cfg->cbb;
      D.29249 = MEM[(struct MonoInst * *)iargs + 12B];
      D.29230->last_ins = D.29249;
      D.29231 = D.29230->last_ins;
      D.29230->code = D.29231;
      <D.29250>:
      mono_emit_jit_icall (cfg, mono_gc_wbarrier_value_copy_bitmap, iargs);
      D.29214 = 1;
      return D.29214;
      <D.29218>:
      D.29251 = *iargs;
      destreg = D.29251->dreg;
      D.29252 = iargs + 4;
      D.29253 = *D.29252;
      srcreg = D.29253->dreg;
      offset = 0;
      D.29254 = alloc_preg (cfg);
      dest_ptr_reg = (int) D.29254;
      D.29255 = alloc_preg (cfg);
      tmp_reg = (int) D.29255;
      D.29220 = cfg->mempool;
      D.29256 = mono_mempool_alloc (D.29220, 56);
      *iargs = D.29256;
      D.29251 = *iargs;
      D.29251 = *iargs;
      D.29251->data.op[1].const_val = 0;
      D.29257 = D.29251->data.op[1].const_val;
      D.29251->data.op[0].const_val = D.29257;
      D.29251 = *iargs;
      D.29251 = *iargs;
      D.29251->prev = 0B;
      D.29258 = D.29251->prev;
      D.29251->next = D.29258;
      D.29251 = *iargs;
      D.29251->opcode = 424;
      D.29251 = *iargs;
      D.29251->flags = 0;
      D.29251 = *iargs;
      D.29251->type = 0;
      D.29251 = *iargs;
      D.29251->dreg = -1;
      D.29251 = *iargs;
      D.29251 = *iargs;
      D.29251 = *iargs;
      D.29251->sreg3 = -1;
      D.29259 = D.29251->sreg3;
      D.29251->sreg2 = D.29259;
      D.29260 = D.29251->sreg2;
      D.29251->sreg1 = D.29260;
      D.29251 = *iargs;
      D.29227 = cfg->ip;
      D.29251->cil_code = D.29227;
      D.29251 = *iargs;
      D.29251->dreg = dest_ptr_reg;
      D.29251 = *iargs;
      D.29251->sreg1 = destreg;
      D.29230 = cfg->cbb;
      D.29231 = D.29230->last_ins;
      if (D.29231 != 0B) goto <D.29261>; else goto <D.29262>;
      <D.29261>:
      D.29230 = cfg->cbb;
      D.29231 = D.29230->last_ins;
      D.29251 = *iargs;
      D.29231->next = D.29251;
      D.29251 = *iargs;
      D.29230 = cfg->cbb;
      D.29231 = D.29230->last_ins;
      D.29251->prev = D.29231;
      D.29230 = cfg->cbb;
      D.29251 = *iargs;
      D.29230->last_ins = D.29251;
      goto <D.29263>;
      <D.29262>:
      D.29230 = cfg->cbb;
      D.29230 = cfg->cbb;
      D.29251 = *iargs;
      D.29230->last_ins = D.29251;
      D.29231 = D.29230->last_ins;
      D.29230->code = D.29231;
      <D.29263>:
      goto <D.25105>;
      <D.25104>:
      {
        struct MonoInst * load_inst;

        D.29220 = cfg->mempool;
        load_inst = mono_mempool_alloc (D.29220, 56);
        load_inst->data.op[1].const_val = 0;
        D.29264 = load_inst->data.op[1].const_val;
        load_inst->data.op[0].const_val = D.29264;
        load_inst->prev = 0B;
        D.29265 = load_inst->prev;
        load_inst->next = D.29265;
        load_inst->opcode = 388;
        load_inst->flags = 0;
        load_inst->type = 0;
        load_inst->dreg = -1;
        load_inst->sreg3 = -1;
        D.29266 = load_inst->sreg3;
        load_inst->sreg2 = D.29266;
        D.29267 = load_inst->sreg2;
        load_inst->sreg1 = D.29267;
        D.29227 = cfg->ip;
        load_inst->cil_code = D.29227;
        load_inst->dreg = tmp_reg;
        load_inst->sreg1 = srcreg;
        load_inst->data.op[0].const_val = offset;
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        if (D.29231 != 0B) goto <D.29268>; else goto <D.29269>;
        <D.29268>:
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        D.29231->next = load_inst;
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        load_inst->prev = D.29231;
        D.29230 = cfg->cbb;
        D.29230->last_ins = load_inst;
        goto <D.29270>;
        <D.29269>:
        D.29230 = cfg->cbb;
        D.29230 = cfg->cbb;
        D.29230->last_ins = load_inst;
        D.29231 = D.29230->last_ins;
        D.29230->code = D.29231;
        <D.29270>:
        {
          struct MonoInst * inst;

          D.29220 = cfg->mempool;
          inst = mono_mempool_alloc (D.29220, 56);
          inst->data.op[1].const_val = 0;
          D.29271 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.29271;
          inst->prev = 0B;
          D.29272 = inst->prev;
          inst->next = D.29272;
          inst->opcode = 377;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.29273 = inst->sreg3;
          inst->sreg2 = D.29273;
          D.29274 = inst->sreg2;
          inst->sreg1 = D.29274;
          D.29227 = cfg->ip;
          inst->cil_code = D.29227;
          inst->sreg1 = tmp_reg;
          inst->dreg = dest_ptr_reg;
          inst->data.op[0].const_val = 0;
          D.29230 = cfg->cbb;
          D.29231 = D.29230->last_ins;
          if (D.29231 != 0B) goto <D.29275>; else goto <D.29276>;
          <D.29275>:
          D.29230 = cfg->cbb;
          D.29231 = D.29230->last_ins;
          D.29231->next = inst;
          D.29230 = cfg->cbb;
          D.29231 = D.29230->last_ins;
          inst->prev = D.29231;
          D.29230 = cfg->cbb;
          D.29230->last_ins = inst;
          goto <D.29277>;
          <D.29276>:
          D.29230 = cfg->cbb;
          D.29230 = cfg->cbb;
          D.29230->last_ins = inst;
          D.29231 = D.29230->last_ins;
          D.29230->code = D.29231;
          <D.29277>:
        }
        need_wb.49 = need_wb;
        D.29278 = need_wb.49 & 1;
        if (D.29278 != 0) goto <D.29279>; else goto <D.29280>;
        <D.29279>:
        D.29251 = *iargs;
        emit_write_barrier (cfg, D.29251, load_inst);
        <D.29280>:
        offset = offset + 4;
        size = size + -4;
        need_wb.49 = need_wb;
        need_wb.51 = need_wb.49 >> 1;
        need_wb = need_wb.51;
        if (size > 3) goto <D.29282>; else goto <D.29283>;
        <D.29282>:
        D.29220 = cfg->mempool;
        D.29284 = mono_mempool_alloc (D.29220, 56);
        *iargs = D.29284;
        D.29251 = *iargs;
        D.29251 = *iargs;
        D.29251->data.op[1].const_val = 0;
        D.29257 = D.29251->data.op[1].const_val;
        D.29251->data.op[0].const_val = D.29257;
        D.29251 = *iargs;
        D.29251 = *iargs;
        D.29251->prev = 0B;
        D.29258 = D.29251->prev;
        D.29251->next = D.29258;
        D.29251 = *iargs;
        D.29251->opcode = 625;
        D.29251 = *iargs;
        D.29251->flags = 0;
        D.29251 = *iargs;
        D.29251->type = 0;
        D.29251 = *iargs;
        D.29251->dreg = -1;
        D.29251 = *iargs;
        D.29251 = *iargs;
        D.29251 = *iargs;
        D.29251->sreg3 = -1;
        D.29259 = D.29251->sreg3;
        D.29251->sreg2 = D.29259;
        D.29260 = D.29251->sreg2;
        D.29251->sreg1 = D.29260;
        D.29251 = *iargs;
        D.29227 = cfg->ip;
        D.29251->cil_code = D.29227;
        D.29251 = *iargs;
        D.29251->dreg = dest_ptr_reg;
        D.29251 = *iargs;
        D.29251->sreg1 = dest_ptr_reg;
        D.29251 = *iargs;
        D.29251->data.op[1].const_val = 4;
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        if (D.29231 != 0B) goto <D.29285>; else goto <D.29286>;
        <D.29285>:
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        D.29251 = *iargs;
        D.29231->next = D.29251;
        D.29251 = *iargs;
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        D.29251->prev = D.29231;
        D.29230 = cfg->cbb;
        D.29251 = *iargs;
        D.29230->last_ins = D.29251;
        goto <D.29287>;
        <D.29286>:
        D.29230 = cfg->cbb;
        D.29230 = cfg->cbb;
        D.29251 = *iargs;
        D.29230->last_ins = D.29251;
        D.29231 = D.29230->last_ins;
        D.29230->code = D.29231;
        <D.29287>:
        <D.29283>:
      }
      <D.25105>:
      if (size > 3) goto <D.25104>; else goto <D.25106>;
      <D.25106>:
      goto <D.25110>;
      <D.25109>:
      {
        struct MonoInst * inst;

        D.29220 = cfg->mempool;
        inst = mono_mempool_alloc (D.29220, 56);
        inst->data.op[1].const_val = 0;
        D.29288 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.29288;
        inst->prev = 0B;
        D.29289 = inst->prev;
        inst->next = D.29289;
        inst->opcode = 393;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.29290 = inst->sreg3;
        inst->sreg2 = D.29290;
        D.29291 = inst->sreg2;
        inst->sreg1 = D.29291;
        D.29227 = cfg->ip;
        inst->cil_code = D.29227;
        inst->dreg = tmp_reg;
        inst->sreg1 = srcreg;
        inst->data.op[0].const_val = offset;
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        if (D.29231 != 0B) goto <D.29292>; else goto <D.29293>;
        <D.29292>:
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        D.29231->next = inst;
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        inst->prev = D.29231;
        D.29230 = cfg->cbb;
        D.29230->last_ins = inst;
        goto <D.29294>;
        <D.29293>:
        D.29230 = cfg->cbb;
        D.29230 = cfg->cbb;
        D.29230->last_ins = inst;
        D.29231 = D.29230->last_ins;
        D.29230->code = D.29231;
        <D.29294>:
      }
      {
        struct MonoInst * inst;

        D.29220 = cfg->mempool;
        inst = mono_mempool_alloc (D.29220, 56);
        inst->data.op[1].const_val = 0;
        D.29295 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.29295;
        inst->prev = 0B;
        D.29296 = inst->prev;
        inst->next = D.29296;
        inst->opcode = 377;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.29297 = inst->sreg3;
        inst->sreg2 = D.29297;
        D.29298 = inst->sreg2;
        inst->sreg1 = D.29298;
        D.29227 = cfg->ip;
        inst->cil_code = D.29227;
        inst->sreg1 = tmp_reg;
        inst->dreg = destreg;
        inst->data.op[0].const_val = offset;
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        if (D.29231 != 0B) goto <D.29299>; else goto <D.29300>;
        <D.29299>:
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        D.29231->next = inst;
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        inst->prev = D.29231;
        D.29230 = cfg->cbb;
        D.29230->last_ins = inst;
        goto <D.29301>;
        <D.29300>:
        D.29230 = cfg->cbb;
        D.29230 = cfg->cbb;
        D.29230->last_ins = inst;
        D.29231 = D.29230->last_ins;
        D.29230->code = D.29231;
        <D.29301>:
      }
      offset = offset + 4;
      size = size + -4;
      <D.25110>:
      if (size > 3) goto <D.25109>; else goto <D.25111>;
      <D.25111>:
      goto <D.25115>;
      <D.25114>:
      {
        struct MonoInst * inst;

        D.29220 = cfg->mempool;
        inst = mono_mempool_alloc (D.29220, 56);
        inst->data.op[1].const_val = 0;
        D.29302 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.29302;
        inst->prev = 0B;
        D.29303 = inst->prev;
        inst->next = D.29303;
        inst->opcode = 391;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.29304 = inst->sreg3;
        inst->sreg2 = D.29304;
        D.29305 = inst->sreg2;
        inst->sreg1 = D.29305;
        D.29227 = cfg->ip;
        inst->cil_code = D.29227;
        inst->dreg = tmp_reg;
        inst->sreg1 = srcreg;
        inst->data.op[0].const_val = offset;
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        if (D.29231 != 0B) goto <D.29306>; else goto <D.29307>;
        <D.29306>:
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        D.29231->next = inst;
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        inst->prev = D.29231;
        D.29230 = cfg->cbb;
        D.29230->last_ins = inst;
        goto <D.29308>;
        <D.29307>:
        D.29230 = cfg->cbb;
        D.29230 = cfg->cbb;
        D.29230->last_ins = inst;
        D.29231 = D.29230->last_ins;
        D.29230->code = D.29231;
        <D.29308>:
      }
      {
        struct MonoInst * inst;

        D.29220 = cfg->mempool;
        inst = mono_mempool_alloc (D.29220, 56);
        inst->data.op[1].const_val = 0;
        D.29309 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.29309;
        inst->prev = 0B;
        D.29310 = inst->prev;
        inst->next = D.29310;
        inst->opcode = 376;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.29311 = inst->sreg3;
        inst->sreg2 = D.29311;
        D.29312 = inst->sreg2;
        inst->sreg1 = D.29312;
        D.29227 = cfg->ip;
        inst->cil_code = D.29227;
        inst->sreg1 = tmp_reg;
        inst->dreg = destreg;
        inst->data.op[0].const_val = offset;
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        if (D.29231 != 0B) goto <D.29313>; else goto <D.29314>;
        <D.29313>:
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        D.29231->next = inst;
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        inst->prev = D.29231;
        D.29230 = cfg->cbb;
        D.29230->last_ins = inst;
        goto <D.29315>;
        <D.29314>:
        D.29230 = cfg->cbb;
        D.29230 = cfg->cbb;
        D.29230->last_ins = inst;
        D.29231 = D.29230->last_ins;
        D.29230->code = D.29231;
        <D.29315>:
      }
      offset = offset + 2;
      size = size + -2;
      <D.25115>:
      if (size > 1) goto <D.25114>; else goto <D.25116>;
      <D.25116>:
      goto <D.25120>;
      <D.25119>:
      {
        struct MonoInst * inst;

        D.29220 = cfg->mempool;
        inst = mono_mempool_alloc (D.29220, 56);
        inst->data.op[1].const_val = 0;
        D.29316 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.29316;
        inst->prev = 0B;
        D.29317 = inst->prev;
        inst->next = D.29317;
        inst->opcode = 389;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.29318 = inst->sreg3;
        inst->sreg2 = D.29318;
        D.29319 = inst->sreg2;
        inst->sreg1 = D.29319;
        D.29227 = cfg->ip;
        inst->cil_code = D.29227;
        inst->dreg = tmp_reg;
        inst->sreg1 = srcreg;
        inst->data.op[0].const_val = offset;
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        if (D.29231 != 0B) goto <D.29320>; else goto <D.29321>;
        <D.29320>:
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        D.29231->next = inst;
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        inst->prev = D.29231;
        D.29230 = cfg->cbb;
        D.29230->last_ins = inst;
        goto <D.29322>;
        <D.29321>:
        D.29230 = cfg->cbb;
        D.29230 = cfg->cbb;
        D.29230->last_ins = inst;
        D.29231 = D.29230->last_ins;
        D.29230->code = D.29231;
        <D.29322>:
      }
      {
        struct MonoInst * inst;

        D.29220 = cfg->mempool;
        inst = mono_mempool_alloc (D.29220, 56);
        inst->data.op[1].const_val = 0;
        D.29323 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.29323;
        inst->prev = 0B;
        D.29324 = inst->prev;
        inst->next = D.29324;
        inst->opcode = 375;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.29325 = inst->sreg3;
        inst->sreg2 = D.29325;
        D.29326 = inst->sreg2;
        inst->sreg1 = D.29326;
        D.29227 = cfg->ip;
        inst->cil_code = D.29227;
        inst->sreg1 = tmp_reg;
        inst->dreg = destreg;
        inst->data.op[0].const_val = offset;
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        if (D.29231 != 0B) goto <D.29327>; else goto <D.29328>;
        <D.29327>:
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        D.29231->next = inst;
        D.29230 = cfg->cbb;
        D.29231 = D.29230->last_ins;
        inst->prev = D.29231;
        D.29230 = cfg->cbb;
        D.29230->last_ins = inst;
        goto <D.29329>;
        <D.29328>:
        D.29230 = cfg->cbb;
        D.29230 = cfg->cbb;
        D.29230->last_ins = inst;
        D.29231 = D.29230->last_ins;
        D.29230->code = D.29231;
        <D.29329>:
      }
      offset = offset + 1;
      size = size + -1;
      <D.25120>:
      if (size > 0) goto <D.25119>; else goto <D.25121>;
      <D.25121>:
      D.29214 = 1;
      return D.29214;
    }
  finally
    {
      need_wb = {CLOBBER};
    }
}


create_write_barrier_bitmap (struct MonoCompile * cfg, struct MonoClass * klass, unsigned int * wb_bitmap, int offset)
{
  struct MonoType * D.29332;
  short unsigned int D.29333;
  int D.29334;
  int D.29335;
  int iftmp.52;
  unsigned int D.29339;
  unsigned int D.29340;
  int D.29343;
  unsigned int D.29344;
  unsigned int D.29345;
  struct MonoType * D.29347;
  int D.29348;
  unsigned int foffset.53;
  unsigned int D.29352;
  _Bool D.29353;
  long int D.29354;
  long int D.29355;
  unsigned int D.29358;
  int D.29359;
  int D.29360;
  int D.29361;
  unsigned int D.29362;
  unsigned int D.29363;
  unsigned int D.29365;
  unsigned int D.29366;
  struct MonoClassField * field;
  void * iter;

  try
    {
      iter = 0B;
      goto <D.25063>;
      <D.25065>:
      {
        int foffset;

        D.29332 = field->type;
        D.29333 = D.29332->attrs;
        D.29334 = (int) D.29333;
        D.29335 = D.29334 & 16;
        if (D.29335 != 0) goto <D.29336>; else goto <D.29337>;
        <D.29336>:
        // predicted unlikely by continue predictor.
        goto <D.25063>;
        <D.29337>:
        D.29339 = BIT_FIELD_REF <*klass, 32, 160>;
        D.29340 = D.29339 & 8;
        if (D.29340 != 0) goto <D.29341>; else goto <D.29342>;
        <D.29341>:
        D.29343 = field->offset;
        D.29344 = (unsigned int) D.29343;
        D.29345 = D.29344 + 4294967288;
        iftmp.52 = (int) D.29345;
        goto <D.29346>;
        <D.29342>:
        iftmp.52 = field->offset;
        <D.29346>:
        foffset = iftmp.52;
        D.29347 = mono_field_get_type (field);
        D.29348 = mini_type_is_reference (cfg, D.29347);
        if (D.29348 != 0) goto <D.29349>; else goto <D.29350>;
        <D.29349>:
        foffset.53 = (unsigned int) foffset;
        D.29352 = foffset.53 & 3;
        D.29353 = D.29352 != 0;
        D.29354 = (long int) D.29353;
        D.29355 = __builtin_expect (D.29354, 0);
        if (D.29355 != 0) goto <D.29356>; else goto <D.29357>;
        <D.29356>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2886, "(foffset % SIZEOF_VOID_P) == 0");
        <D.29357>:
        D.29358 = *wb_bitmap;
        D.29359 = offset + foffset;
        D.29360 = D.29359 / 4;
        D.29361 = 1 << D.29360;
        D.29362 = (unsigned int) D.29361;
        D.29363 = D.29358 | D.29362;
        *wb_bitmap = D.29363;
        goto <D.29364>;
        <D.29350>:
        {
          struct MonoClass * field_class;

          D.29332 = field->type;
          field_class = mono_class_from_mono_type (D.29332);
          D.29365 = BIT_FIELD_REF <*field_class, 32, 160>;
          D.29366 = D.29365 & 134217728;
          if (D.29366 != 0) goto <D.29367>; else goto <D.29368>;
          <D.29367>:
          D.29359 = offset + foffset;
          create_write_barrier_bitmap (cfg, field_class, wb_bitmap, D.29359);
          <D.29368>:
        }
        <D.29364>:
      }
      <D.25063>:
      field = mono_class_get_fields (klass, &iter);
      if (field != 0B) goto <D.25065>; else goto <D.25066>;
      <D.25066>:
    }
  finally
    {
      iter = {CLOBBER};
    }
}


emit_write_barrier (struct MonoCompile * cfg, struct MonoInst * ptr, struct MonoInst * value)
{
  unsigned int D.29369;
  unsigned int D.29370;
  unsigned int D.29376;
  int nursery_shift_bits.54;
  struct MonoMemPool * D.29381;
  int D.29382;
  struct MonoInst * D.29383;
  int D.29384;
  int D.29385;
  const unsigned char * D.29386;
  struct MonoInst * ptr.55;
  int D.29388;
  int D.29389;
  struct MonoBasicBlock * D.29390;
  struct MonoInst * D.29391;
  unsigned int D.29397;
  unsigned int D.29398;
  int D.29399;
  struct MonoInst * D.29400;
  int D.29401;
  int D.29402;
  int card_table_shift_bits.56;
  void * card_table_mask.57;
  int D.29410;
  struct MonoInst * D.29411;
  int D.29412;
  int D.29413;
  int card_table_mask.58;
  int D.29420;
  struct MonoInst * D.29421;
  guint16 iftmp.59;
  int D.29426;
  int D.29427;
  int D.29432;
  struct MonoInst * D.29433;
  int D.29434;
  int D.29435;
  int D.29439;
  struct MonoInst * D.29440;
  int D.29441;
  int D.29442;
  int D.29446;
  struct MonoInst * D.29447;
  int D.29448;
  int D.29449;
  int D.29454;
  struct MonoInst * D.29455;
  int D.29456;
  int D.29457;
  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.29369 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.29370 = D.29369 & 268435456;
      if (D.29370 == 0) goto <D.29371>; else goto <D.29372>;
      <D.29371>:
      return;
      <D.29372>:
      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.29375>; else goto <D.29373>;
      <D.29375>:
      D.29369 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.29376 = D.29369 & 64;
      if (D.29376 == 0) goto <D.29377>; else goto <D.29373>;
      <D.29377>:
      if (card_table != 0B) goto <D.29378>; else goto <D.29373>;
      <D.29378>:
      nursery_shift_bits.54 = nursery_shift_bits;
      if (nursery_shift_bits.54 > 0) goto <D.29380>; else goto <D.29373>;
      <D.29380>:
      {
        struct MonoInst * wbarrier;

        D.29381 = cfg->mempool;
        wbarrier = mono_mempool_alloc (D.29381, 56);
        wbarrier->data.op[1].const_val = 0;
        D.29382 = wbarrier->data.op[1].const_val;
        wbarrier->data.op[0].const_val = D.29382;
        wbarrier->prev = 0B;
        D.29383 = wbarrier->prev;
        wbarrier->next = D.29383;
        wbarrier->opcode = 790;
        wbarrier->flags = 0;
        wbarrier->type = 0;
        wbarrier->dreg = -1;
        wbarrier->sreg3 = -1;
        D.29384 = wbarrier->sreg3;
        wbarrier->sreg2 = D.29384;
        D.29385 = wbarrier->sreg2;
        wbarrier->sreg1 = D.29385;
        D.29386 = cfg->ip;
        wbarrier->cil_code = D.29386;
        ptr.55 = ptr;
        D.29388 = ptr.55->dreg;
        wbarrier->sreg1 = D.29388;
        D.29389 = value->dreg;
        wbarrier->sreg2 = D.29389;
        D.29390 = cfg->cbb;
        D.29391 = D.29390->last_ins;
        if (D.29391 != 0B) goto <D.29392>; else goto <D.29393>;
        <D.29392>:
        D.29390 = cfg->cbb;
        D.29391 = D.29390->last_ins;
        D.29391->next = wbarrier;
        D.29390 = cfg->cbb;
        D.29391 = D.29390->last_ins;
        wbarrier->prev = D.29391;
        D.29390 = cfg->cbb;
        D.29390->last_ins = wbarrier;
        goto <D.29394>;
        <D.29393>:
        D.29390 = cfg->cbb;
        D.29390 = cfg->cbb;
        D.29390->last_ins = wbarrier;
        D.29391 = D.29390->last_ins;
        D.29390->code = D.29391;
        <D.29394>:
      }
      goto <D.29374>;
      <D.29373>:
      if (card_table != 0B) goto <D.29395>; else goto <D.29396>;
      <D.29395>:
      {
        int offset_reg;
        int card_reg;
        struct MonoInst * ins;

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

          D.29381 = cfg->mempool;
          inst = mono_mempool_alloc (D.29381, 56);
          inst->data.op[1].const_val = 0;
          D.29399 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.29399;
          inst->prev = 0B;
          D.29400 = inst->prev;
          inst->next = D.29400;
          inst->opcode = 441;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.29401 = inst->sreg3;
          inst->sreg2 = D.29401;
          D.29402 = inst->sreg2;
          inst->sreg1 = D.29402;
          D.29386 = cfg->ip;
          inst->cil_code = D.29386;
          inst->dreg = offset_reg;
          ptr.55 = ptr;
          D.29388 = ptr.55->dreg;
          inst->sreg1 = D.29388;
          card_table_shift_bits.56 = card_table_shift_bits;
          inst->data.op[1].const_val = card_table_shift_bits.56;
          D.29390 = cfg->cbb;
          D.29391 = D.29390->last_ins;
          if (D.29391 != 0B) goto <D.29404>; else goto <D.29405>;
          <D.29404>:
          D.29390 = cfg->cbb;
          D.29391 = D.29390->last_ins;
          D.29391->next = inst;
          D.29390 = cfg->cbb;
          D.29391 = D.29390->last_ins;
          inst->prev = D.29391;
          D.29390 = cfg->cbb;
          D.29390->last_ins = inst;
          goto <D.29406>;
          <D.29405>:
          D.29390 = cfg->cbb;
          D.29390 = cfg->cbb;
          D.29390->last_ins = inst;
          D.29391 = D.29390->last_ins;
          D.29390->code = D.29391;
          <D.29406>:
        }
        card_table_mask.57 = card_table_mask;
        if (card_table_mask.57 != 0B) goto <D.29408>; else goto <D.29409>;
        <D.29408>:
        {
          struct MonoInst * inst;

          D.29381 = cfg->mempool;
          inst = mono_mempool_alloc (D.29381, 56);
          inst->data.op[1].const_val = 0;
          D.29410 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.29410;
          inst->prev = 0B;
          D.29411 = inst->prev;
          inst->next = D.29411;
          inst->opcode = 632;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.29412 = inst->sreg3;
          inst->sreg2 = D.29412;
          D.29413 = inst->sreg2;
          inst->sreg1 = D.29413;
          D.29386 = cfg->ip;
          inst->cil_code = D.29386;
          inst->dreg = offset_reg;
          inst->sreg1 = offset_reg;
          card_table_mask.57 = card_table_mask;
          card_table_mask.58 = (int) card_table_mask.57;
          inst->data.op[1].const_val = card_table_mask.58;
          D.29390 = cfg->cbb;
          D.29391 = D.29390->last_ins;
          if (D.29391 != 0B) goto <D.29415>; else goto <D.29416>;
          <D.29415>:
          D.29390 = cfg->cbb;
          D.29391 = D.29390->last_ins;
          D.29391->next = inst;
          D.29390 = cfg->cbb;
          D.29391 = D.29390->last_ins;
          inst->prev = D.29391;
          D.29390 = cfg->cbb;
          D.29390->last_ins = inst;
          goto <D.29417>;
          <D.29416>:
          D.29390 = cfg->cbb;
          D.29390 = cfg->cbb;
          D.29390->last_ins = inst;
          D.29391 = D.29390->last_ins;
          D.29390->code = D.29391;
          <D.29417>:
        }
        <D.29409>:
        D.29369 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.29376 = D.29369 & 64;
        if (D.29376 != 0) goto <D.29418>; else goto <D.29419>;
        <D.29418>:
        {
          struct MonoInst * inst;

          D.29381 = cfg->mempool;
          inst = mono_mempool_alloc (D.29381, 56);
          inst->data.op[1].const_val = 0;
          D.29420 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.29420;
          inst->prev = 0B;
          D.29421 = inst->prev;
          inst->next = D.29421;
          D.29369 = BIT_FIELD_REF <*cfg, 32, 3392>;
          D.29376 = D.29369 & 64;
          if (D.29376 != 0) goto <D.29423>; else goto <D.29424>;
          <D.29423>:
          iftmp.59 = 732;
          goto <D.29425>;
          <D.29424>:
          iftmp.59 = 362;
          <D.29425>:
          inst->opcode = iftmp.59;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.29426 = inst->sreg3;
          inst->sreg2 = D.29426;
          D.29427 = inst->sreg2;
          inst->sreg1 = D.29427;
          D.29386 = cfg->ip;
          inst->cil_code = D.29386;
          inst->dreg = card_reg;
          inst->data.op[0].p = 0B;
          inst->data.op[1].const_val = 42;
          D.29390 = cfg->cbb;
          D.29391 = D.29390->last_ins;
          if (D.29391 != 0B) goto <D.29428>; else goto <D.29429>;
          <D.29428>:
          D.29390 = cfg->cbb;
          D.29391 = D.29390->last_ins;
          D.29391->next = inst;
          D.29390 = cfg->cbb;
          D.29391 = D.29390->last_ins;
          inst->prev = D.29391;
          D.29390 = cfg->cbb;
          D.29390->last_ins = inst;
          goto <D.29430>;
          <D.29429>:
          D.29390 = cfg->cbb;
          D.29390 = cfg->cbb;
          D.29390->last_ins = inst;
          D.29391 = D.29390->last_ins;
          D.29390->code = D.29391;
          <D.29430>:
        }
        goto <D.29431>;
        <D.29419>:
        D.29381 = cfg->mempool;
        ins = mono_mempool_alloc (D.29381, 56);
        ins->data.op[1].const_val = 0;
        D.29432 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29432;
        ins->prev = 0B;
        D.29433 = ins->prev;
        ins->next = D.29433;
        ins->opcode = 362;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29434 = ins->sreg3;
        ins->sreg2 = D.29434;
        D.29435 = ins->sreg2;
        ins->sreg1 = D.29435;
        D.29386 = cfg->ip;
        ins->cil_code = D.29386;
        ins->data.op[0].p = card_table;
        ins->dreg = card_reg;
        D.29390 = cfg->cbb;
        D.29391 = D.29390->last_ins;
        if (D.29391 != 0B) goto <D.29436>; else goto <D.29437>;
        <D.29436>:
        D.29390 = cfg->cbb;
        D.29391 = D.29390->last_ins;
        D.29391->next = ins;
        D.29390 = cfg->cbb;
        D.29391 = D.29390->last_ins;
        ins->prev = D.29391;
        D.29390 = cfg->cbb;
        D.29390->last_ins = ins;
        goto <D.29438>;
        <D.29437>:
        D.29390 = cfg->cbb;
        D.29390 = cfg->cbb;
        D.29390->last_ins = ins;
        D.29391 = D.29390->last_ins;
        D.29390->code = D.29391;
        <D.29438>:
        <D.29431>:
        {
          struct MonoInst * inst;

          D.29381 = cfg->mempool;
          inst = mono_mempool_alloc (D.29381, 56);
          inst->data.op[1].const_val = 0;
          D.29439 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.29439;
          inst->prev = 0B;
          D.29440 = inst->prev;
          inst->next = D.29440;
          inst->opcode = 565;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.29441 = inst->sreg3;
          inst->sreg2 = D.29441;
          D.29442 = inst->sreg2;
          inst->sreg1 = D.29442;
          D.29386 = cfg->ip;
          inst->cil_code = D.29386;
          inst->dreg = offset_reg;
          inst->sreg1 = offset_reg;
          inst->sreg2 = card_reg;
          D.29390 = cfg->cbb;
          D.29391 = D.29390->last_ins;
          if (D.29391 != 0B) goto <D.29443>; else goto <D.29444>;
          <D.29443>:
          D.29390 = cfg->cbb;
          D.29391 = D.29390->last_ins;
          D.29391->next = inst;
          D.29390 = cfg->cbb;
          D.29391 = D.29390->last_ins;
          inst->prev = D.29391;
          D.29390 = cfg->cbb;
          D.29390->last_ins = inst;
          goto <D.29445>;
          <D.29444>:
          D.29390 = cfg->cbb;
          D.29390 = cfg->cbb;
          D.29390->last_ins = inst;
          D.29391 = D.29390->last_ins;
          D.29390->code = D.29391;
          <D.29445>:
        }
        {
          struct MonoInst * inst;

          D.29381 = cfg->mempool;
          inst = mono_mempool_alloc (D.29381, 56);
          inst->data.op[1].const_val = 0;
          D.29446 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.29446;
          inst->prev = 0B;
          D.29447 = inst->prev;
          inst->next = D.29447;
          inst->opcode = 382;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.29448 = inst->sreg3;
          inst->sreg2 = D.29448;
          D.29449 = inst->sreg2;
          inst->sreg1 = D.29449;
          D.29386 = cfg->ip;
          inst->cil_code = D.29386;
          inst->dreg = offset_reg;
          inst->data.op[0].const_val = 0;
          inst->data.op[1].const_val = 1;
          D.29390 = cfg->cbb;
          D.29391 = D.29390->last_ins;
          if (D.29391 != 0B) goto <D.29450>; else goto <D.29451>;
          <D.29450>:
          D.29390 = cfg->cbb;
          D.29391 = D.29390->last_ins;
          D.29391->next = inst;
          D.29390 = cfg->cbb;
          D.29391 = D.29390->last_ins;
          inst->prev = D.29391;
          D.29390 = cfg->cbb;
          D.29390->last_ins = inst;
          goto <D.29452>;
          <D.29451>:
          D.29390 = cfg->cbb;
          D.29390 = cfg->cbb;
          D.29390->last_ins = inst;
          D.29391 = D.29390->last_ins;
          D.29390->code = D.29391;
          <D.29452>:
        }
      }
      goto <D.29453>;
      <D.29396>:
      {
        struct MonoMethod * write_barrier;

        write_barrier = mono_gc_get_write_barrier ();
        mono_emit_method_call (cfg, write_barrier, &ptr, 0B);
      }
      <D.29453>:
      <D.29374>:
      D.29381 = cfg->mempool;
      dummy_use = mono_mempool_alloc (D.29381, 56);
      dummy_use->data.op[1].const_val = 0;
      D.29454 = dummy_use->data.op[1].const_val;
      dummy_use->data.op[0].const_val = D.29454;
      dummy_use->prev = 0B;
      D.29455 = dummy_use->prev;
      dummy_use->next = D.29455;
      dummy_use->opcode = 796;
      dummy_use->flags = 0;
      dummy_use->type = 0;
      dummy_use->dreg = -1;
      dummy_use->sreg3 = -1;
      D.29456 = dummy_use->sreg3;
      dummy_use->sreg2 = D.29456;
      D.29457 = dummy_use->sreg2;
      dummy_use->sreg1 = D.29457;
      D.29386 = cfg->ip;
      dummy_use->cil_code = D.29386;
      D.29389 = value->dreg;
      dummy_use->sreg1 = D.29389;
      D.29390 = cfg->cbb;
      D.29391 = D.29390->last_ins;
      if (D.29391 != 0B) goto <D.29458>; else goto <D.29459>;
      <D.29458>:
      D.29390 = cfg->cbb;
      D.29391 = D.29390->last_ins;
      D.29391->next = dummy_use;
      D.29390 = cfg->cbb;
      D.29391 = D.29390->last_ins;
      dummy_use->prev = D.29391;
      D.29390 = cfg->cbb;
      D.29390->last_ins = dummy_use;
      goto <D.29460>;
      <D.29459>:
      D.29390 = cfg->cbb;
      D.29390 = cfg->cbb;
      D.29390->last_ins = dummy_use;
      D.29391 = D.29390->last_ins;
      D.29390->code = D.29391;
      <D.29460>:
    }
  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.29464;
  struct MonoMethod * D.29465;
  int D.29466;
  struct MonoInst * D.29467;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.29464 = cfg->mempool;
  D.29465 = cfg->current_method;
  D.29466 = context_used & 2;
  entry = mono_patch_info_rgctx_entry_new (D.29464, D.29465, D.29466, 11, klass, rgctx_type);
  D.29465 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.29465, context_used);
  D.29467 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.29467;
}


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

  memcpy_method.60 = memcpy_method;
  if (memcpy_method.60 == 0B) goto <D.29470>; else goto <D.29471>;
  <D.29470>:
  D.29472 = mono_defaults.string_class;
  memcpy_method.61 = mono_class_get_method_from_name (D.29472, "memcpy", 3);
  memcpy_method = memcpy_method.61;
  memcpy_method.60 = memcpy_method;
  if (memcpy_method.60 == 0B) goto <D.29474>; else goto <D.29475>;
  <D.29474>:
  monoeg_g_log (0B, 4, "Old corlib found. Install a new one");
  <D.25053>:
  goto <D.25053>;
  <D.29475>:
  <D.29471>:
  D.29476 = memcpy_method;
  return D.29476;
}


mini_emit_initobj (struct MonoCompile * cfg, struct MonoInst * dest, const guchar * ip, struct MonoClass * klass)
{
  int D.29478;
  struct MonoMethod * bzero_method.62;
  struct MonoClass * D.29484;
  struct MonoMethod * bzero_method.63;
  _Bool D.29486;
  long int D.29487;
  long int D.29488;
  struct MonoMethodSignature * D.29491;
  unsigned int n.64;
  int D.29495;
  unsigned int align.65;
  int align.66;
  struct MonoMemPool * D.29499;
  void * D.29500;
  struct MonoInst * D.29501;
  int D.29502;
  struct MonoInst * D.29503;
  int D.29504;
  int D.29505;
  const unsigned char * D.29506;
  unsigned int D.29507;
  int D.29508;
  struct MonoBasicBlock * D.29509;
  struct MonoInst * D.29510;
  void * D.29514;
  struct MonoInst * D.29515;
  int D.29516;
  struct MonoInst * D.29517;
  int D.29518;
  int D.29519;
  unsigned int D.29520;
  int D.29521;
  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.29478 = mini_is_gsharedvt_klass (cfg, klass);
      if (D.29478 != 0) goto <D.29479>; else goto <D.29480>;
      <D.29479>:
      context_used = mini_class_check_context_used (cfg, klass);
      size_ins = emit_get_gsharedvt_info_klass (cfg, klass, 14);
      bzero_ins = emit_get_gsharedvt_info_klass (cfg, klass, 23);
      bzero_method.62 = bzero_method;
      if (bzero_method.62 == 0B) goto <D.29482>; else goto <D.29483>;
      <D.29482>:
      D.29484 = mono_defaults.string_class;
      bzero_method.63 = mono_class_get_method_from_name (D.29484, "bzero_aligned_1", 2);
      bzero_method = bzero_method.63;
      <D.29483>:
      bzero_method.62 = bzero_method;
      D.29486 = bzero_method.62 == 0B;
      D.29487 = (long int) D.29486;
      D.29488 = __builtin_expect (D.29487, 0);
      if (D.29488 != 0) goto <D.29489>; else goto <D.29490>;
      <D.29489>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3163, "bzero_method");
      <D.29490>:
      iargs[0] = dest;
      iargs[1] = size_ins;
      bzero_method.62 = bzero_method;
      D.29491 = mono_method_signature (bzero_method.62);
      mono_emit_calli (cfg, D.29491, &iargs, bzero_ins, 0B, 0B);
      return;
      <D.29480>:
      n = mono_class_value_size (klass, &align);
      n.64 = (unsigned int) n;
      if (n.64 <= 20) goto <D.29493>; else goto <D.29494>;
      <D.29493>:
      D.29495 = dest->dreg;
      align.65 = align;
      align.66 = (int) align.65;
      mini_emit_memset (cfg, D.29495, 0, n, 0, align.66);
      goto <D.29498>;
      <D.29494>:
      memset_method = get_memset_method ();
      iargs[0] = dest;
      D.29499 = cfg->mempool;
      D.29500 = mono_mempool_alloc (D.29499, 56);
      iargs[1] = D.29500;
      D.29501 = iargs[1];
      D.29501 = iargs[1];
      D.29501->data.op[1].const_val = 0;
      D.29502 = D.29501->data.op[1].const_val;
      D.29501->data.op[0].const_val = D.29502;
      D.29501 = iargs[1];
      D.29501 = iargs[1];
      D.29501->prev = 0B;
      D.29503 = D.29501->prev;
      D.29501->next = D.29503;
      D.29501 = iargs[1];
      D.29501->opcode = 362;
      D.29501 = iargs[1];
      D.29501->flags = 0;
      D.29501 = iargs[1];
      D.29501->type = 0;
      D.29501 = iargs[1];
      D.29501->dreg = -1;
      D.29501 = iargs[1];
      D.29501 = iargs[1];
      D.29501 = iargs[1];
      D.29501->sreg3 = -1;
      D.29504 = D.29501->sreg3;
      D.29501->sreg2 = D.29504;
      D.29505 = D.29501->sreg2;
      D.29501->sreg1 = D.29505;
      D.29501 = iargs[1];
      D.29506 = cfg->ip;
      D.29501->cil_code = D.29506;
      D.29501 = iargs[1];
      D.29501->data.op[0].const_val = 0;
      D.29501 = iargs[1];
      D.29501->type = 1;
      D.29501 = iargs[1];
      D.29507 = alloc_dreg (cfg, 1);
      D.29508 = (int) D.29507;
      D.29501->dreg = D.29508;
      D.29509 = cfg->cbb;
      D.29510 = D.29509->last_ins;
      if (D.29510 != 0B) goto <D.29511>; else goto <D.29512>;
      <D.29511>:
      D.29509 = cfg->cbb;
      D.29510 = D.29509->last_ins;
      D.29501 = iargs[1];
      D.29510->next = D.29501;
      D.29501 = iargs[1];
      D.29509 = cfg->cbb;
      D.29510 = D.29509->last_ins;
      D.29501->prev = D.29510;
      D.29509 = cfg->cbb;
      D.29501 = iargs[1];
      D.29509->last_ins = D.29501;
      goto <D.29513>;
      <D.29512>:
      D.29509 = cfg->cbb;
      D.29509 = cfg->cbb;
      D.29501 = iargs[1];
      D.29509->last_ins = D.29501;
      D.29510 = D.29509->last_ins;
      D.29509->code = D.29510;
      <D.29513>:
      D.29499 = cfg->mempool;
      D.29514 = mono_mempool_alloc (D.29499, 56);
      iargs[2] = D.29514;
      D.29515 = iargs[2];
      D.29515 = iargs[2];
      D.29515->data.op[1].const_val = 0;
      D.29516 = D.29515->data.op[1].const_val;
      D.29515->data.op[0].const_val = D.29516;
      D.29515 = iargs[2];
      D.29515 = iargs[2];
      D.29515->prev = 0B;
      D.29517 = D.29515->prev;
      D.29515->next = D.29517;
      D.29515 = iargs[2];
      D.29515->opcode = 362;
      D.29515 = iargs[2];
      D.29515->flags = 0;
      D.29515 = iargs[2];
      D.29515->type = 0;
      D.29515 = iargs[2];
      D.29515->dreg = -1;
      D.29515 = iargs[2];
      D.29515 = iargs[2];
      D.29515 = iargs[2];
      D.29515->sreg3 = -1;
      D.29518 = D.29515->sreg3;
      D.29515->sreg2 = D.29518;
      D.29519 = D.29515->sreg2;
      D.29515->sreg1 = D.29519;
      D.29515 = iargs[2];
      D.29506 = cfg->ip;
      D.29515->cil_code = D.29506;
      D.29515 = iargs[2];
      D.29515->data.op[0].const_val = n;
      D.29515 = iargs[2];
      D.29515->type = 1;
      D.29515 = iargs[2];
      D.29520 = alloc_dreg (cfg, 1);
      D.29521 = (int) D.29520;
      D.29515->dreg = D.29521;
      D.29509 = cfg->cbb;
      D.29510 = D.29509->last_ins;
      if (D.29510 != 0B) goto <D.29522>; else goto <D.29523>;
      <D.29522>:
      D.29509 = cfg->cbb;
      D.29510 = D.29509->last_ins;
      D.29515 = iargs[2];
      D.29510->next = D.29515;
      D.29515 = iargs[2];
      D.29509 = cfg->cbb;
      D.29510 = D.29509->last_ins;
      D.29515->prev = D.29510;
      D.29509 = cfg->cbb;
      D.29515 = iargs[2];
      D.29509->last_ins = D.29515;
      goto <D.29524>;
      <D.29523>:
      D.29509 = cfg->cbb;
      D.29509 = cfg->cbb;
      D.29515 = iargs[2];
      D.29509->last_ins = D.29515;
      D.29510 = D.29509->last_ins;
      D.29509->code = D.29510;
      <D.29524>:
      mono_emit_method_call (cfg, memset_method, &iargs, 0B);
      <D.29498>:
    }
  finally
    {
      iargs = {CLOBBER};
      align = {CLOBBER};
    }
}


mini_emit_memset (struct MonoCompile * cfg, int destreg, int offset, int size, int val, int align)
{
  _Bool D.29528;
  long int D.29529;
  long int D.29530;
  struct MonoMemPool * D.29539;
  int D.29540;
  struct MonoInst * D.29541;
  int D.29542;
  int D.29543;
  const unsigned char * D.29544;
  struct MonoBasicBlock * D.29545;
  struct MonoInst * D.29546;
  int D.29550;
  struct MonoInst * D.29551;
  int D.29552;
  int D.29553;
  int D.29557;
  struct MonoInst * D.29558;
  int D.29559;
  int D.29560;
  unsigned int D.29565;
  int D.29568;
  struct MonoInst * D.29569;
  int D.29570;
  int D.29571;
  long long int D.29572;
  int D.29577;
  struct MonoInst * D.29578;
  int D.29579;
  int D.29580;
  int D.29586;
  struct MonoInst * D.29587;
  int D.29588;
  int D.29589;
  int D.29593;
  struct MonoInst * D.29594;
  int D.29595;
  int D.29596;
  int D.29600;
  struct MonoInst * D.29601;
  int D.29602;
  int D.29603;
  int D.29607;
  struct MonoInst * D.29608;
  int D.29609;
  int D.29610;
  int val_reg;

  D.29528 = val != 0;
  D.29529 = (long int) D.29528;
  D.29530 = __builtin_expect (D.29529, 0);
  if (D.29530 != 0) goto <D.29531>; else goto <D.29532>;
  <D.29531>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1744, "val == 0");
  <D.29532>:
  if (align == 0) goto <D.29533>; else goto <D.29534>;
  <D.29533>:
  align = 4;
  <D.29534>:
  if (size <= 4) goto <D.29535>; else goto <D.29536>;
  <D.29535>:
  if (size <= align) goto <D.29537>; else goto <D.29538>;
  <D.29537>:
  switch (size) <default: <D.29564>, case 1: <D.24666>, case 2: <D.24668>, case 4: <D.24670>>
  <D.24666>:
  {
    struct MonoInst * inst;

    D.29539 = cfg->mempool;
    inst = mono_mempool_alloc (D.29539, 56);
    inst->data.op[1].const_val = 0;
    D.29540 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29540;
    inst->prev = 0B;
    D.29541 = inst->prev;
    inst->next = D.29541;
    inst->opcode = 382;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29542 = inst->sreg3;
    inst->sreg2 = D.29542;
    D.29543 = inst->sreg2;
    inst->sreg1 = D.29543;
    D.29544 = cfg->ip;
    inst->cil_code = D.29544;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    inst->data.op[1].const_val = val;
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    if (D.29546 != 0B) goto <D.29547>; else goto <D.29548>;
    <D.29547>:
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    D.29546->next = inst;
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    inst->prev = D.29546;
    D.29545 = cfg->cbb;
    D.29545->last_ins = inst;
    goto <D.29549>;
    <D.29548>:
    D.29545 = cfg->cbb;
    D.29545 = cfg->cbb;
    D.29545->last_ins = inst;
    D.29546 = D.29545->last_ins;
    D.29545->code = D.29546;
    <D.29549>:
  }
  return;
  <D.24668>:
  {
    struct MonoInst * inst;

    D.29539 = cfg->mempool;
    inst = mono_mempool_alloc (D.29539, 56);
    inst->data.op[1].const_val = 0;
    D.29550 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29550;
    inst->prev = 0B;
    D.29551 = inst->prev;
    inst->next = D.29551;
    inst->opcode = 383;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29552 = inst->sreg3;
    inst->sreg2 = D.29552;
    D.29553 = inst->sreg2;
    inst->sreg1 = D.29553;
    D.29544 = cfg->ip;
    inst->cil_code = D.29544;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    inst->data.op[1].const_val = val;
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    if (D.29546 != 0B) goto <D.29554>; else goto <D.29555>;
    <D.29554>:
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    D.29546->next = inst;
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    inst->prev = D.29546;
    D.29545 = cfg->cbb;
    D.29545->last_ins = inst;
    goto <D.29556>;
    <D.29555>:
    D.29545 = cfg->cbb;
    D.29545 = cfg->cbb;
    D.29545->last_ins = inst;
    D.29546 = D.29545->last_ins;
    D.29545->code = D.29546;
    <D.29556>:
  }
  return;
  <D.24670>:
  {
    struct MonoInst * inst;

    D.29539 = cfg->mempool;
    inst = mono_mempool_alloc (D.29539, 56);
    inst->data.op[1].const_val = 0;
    D.29557 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29557;
    inst->prev = 0B;
    D.29558 = inst->prev;
    inst->next = D.29558;
    inst->opcode = 384;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29559 = inst->sreg3;
    inst->sreg2 = D.29559;
    D.29560 = inst->sreg2;
    inst->sreg1 = D.29560;
    D.29544 = cfg->ip;
    inst->cil_code = D.29544;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    inst->data.op[1].const_val = val;
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    if (D.29546 != 0B) goto <D.29561>; else goto <D.29562>;
    <D.29561>:
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    D.29546->next = inst;
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    inst->prev = D.29546;
    D.29545 = cfg->cbb;
    D.29545->last_ins = inst;
    goto <D.29563>;
    <D.29562>:
    D.29545 = cfg->cbb;
    D.29545 = cfg->cbb;
    D.29545->last_ins = inst;
    D.29546 = D.29545->last_ins;
    D.29545->code = D.29546;
    <D.29563>:
  }
  return;
  <D.29564>:
  <D.29538>:
  <D.29536>:
  D.29565 = alloc_preg (cfg);
  val_reg = (int) D.29565;
  if (0 != 0) goto <D.29566>; else goto <D.29567>;
  <D.29566>:
  {
    struct MonoInst * inst;

    D.29539 = cfg->mempool;
    inst = mono_mempool_alloc (D.29539, 56);
    inst->data.op[1].const_val = 0;
    D.29568 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29568;
    inst->prev = 0B;
    D.29569 = inst->prev;
    inst->next = D.29569;
    inst->opcode = 363;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29570 = inst->sreg3;
    inst->sreg2 = D.29570;
    D.29571 = inst->sreg2;
    inst->sreg1 = D.29571;
    D.29544 = cfg->ip;
    inst->cil_code = D.29544;
    inst->dreg = val_reg;
    D.29572 = (long long int) val;
    inst->data.i8const = D.29572;
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    if (D.29546 != 0B) goto <D.29573>; else goto <D.29574>;
    <D.29573>:
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    D.29546->next = inst;
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    inst->prev = D.29546;
    D.29545 = cfg->cbb;
    D.29545->last_ins = inst;
    goto <D.29575>;
    <D.29574>:
    D.29545 = cfg->cbb;
    D.29545 = cfg->cbb;
    D.29545->last_ins = inst;
    D.29546 = D.29545->last_ins;
    D.29545->code = D.29546;
    <D.29575>:
  }
  goto <D.29576>;
  <D.29567>:
  {
    struct MonoInst * inst;

    D.29539 = cfg->mempool;
    inst = mono_mempool_alloc (D.29539, 56);
    inst->data.op[1].const_val = 0;
    D.29577 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29577;
    inst->prev = 0B;
    D.29578 = inst->prev;
    inst->next = D.29578;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29579 = inst->sreg3;
    inst->sreg2 = D.29579;
    D.29580 = inst->sreg2;
    inst->sreg1 = D.29580;
    D.29544 = cfg->ip;
    inst->cil_code = D.29544;
    inst->dreg = val_reg;
    inst->data.op[0].const_val = val;
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    if (D.29546 != 0B) goto <D.29581>; else goto <D.29582>;
    <D.29581>:
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    D.29546->next = inst;
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    inst->prev = D.29546;
    D.29545 = cfg->cbb;
    D.29545->last_ins = inst;
    goto <D.29583>;
    <D.29582>:
    D.29545 = cfg->cbb;
    D.29545 = cfg->cbb;
    D.29545->last_ins = inst;
    D.29546 = D.29545->last_ins;
    D.29545->code = D.29546;
    <D.29583>:
  }
  <D.29576>:
  if (align <= 3) goto <D.29584>; else goto <D.29585>;
  <D.29584>:
  goto <D.24676>;
  <D.24675>:
  {
    struct MonoInst * inst;

    D.29539 = cfg->mempool;
    inst = mono_mempool_alloc (D.29539, 56);
    inst->data.op[1].const_val = 0;
    D.29586 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29586;
    inst->prev = 0B;
    D.29587 = inst->prev;
    inst->next = D.29587;
    inst->opcode = 375;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29588 = inst->sreg3;
    inst->sreg2 = D.29588;
    D.29589 = inst->sreg2;
    inst->sreg1 = D.29589;
    D.29544 = cfg->ip;
    inst->cil_code = D.29544;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    if (D.29546 != 0B) goto <D.29590>; else goto <D.29591>;
    <D.29590>:
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    D.29546->next = inst;
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    inst->prev = D.29546;
    D.29545 = cfg->cbb;
    D.29545->last_ins = inst;
    goto <D.29592>;
    <D.29591>:
    D.29545 = cfg->cbb;
    D.29545 = cfg->cbb;
    D.29545->last_ins = inst;
    D.29546 = D.29545->last_ins;
    D.29545->code = D.29546;
    <D.29592>:
  }
  offset = offset + 1;
  size = size + -1;
  <D.24676>:
  if (size > 0) goto <D.24675>; else goto <D.24677>;
  <D.24677>:
  return;
  <D.29585>:
  goto <D.24680>;
  <D.24679>:
  {
    struct MonoInst * inst;

    D.29539 = cfg->mempool;
    inst = mono_mempool_alloc (D.29539, 56);
    inst->data.op[1].const_val = 0;
    D.29593 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29593;
    inst->prev = 0B;
    D.29594 = inst->prev;
    inst->next = D.29594;
    inst->opcode = 377;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29595 = inst->sreg3;
    inst->sreg2 = D.29595;
    D.29596 = inst->sreg2;
    inst->sreg1 = D.29596;
    D.29544 = cfg->ip;
    inst->cil_code = D.29544;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    if (D.29546 != 0B) goto <D.29597>; else goto <D.29598>;
    <D.29597>:
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    D.29546->next = inst;
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    inst->prev = D.29546;
    D.29545 = cfg->cbb;
    D.29545->last_ins = inst;
    goto <D.29599>;
    <D.29598>:
    D.29545 = cfg->cbb;
    D.29545 = cfg->cbb;
    D.29545->last_ins = inst;
    D.29546 = D.29545->last_ins;
    D.29545->code = D.29546;
    <D.29599>:
  }
  offset = offset + 4;
  size = size + -4;
  <D.24680>:
  if (size > 3) goto <D.24679>; else goto <D.24681>;
  <D.24681>:
  goto <D.24684>;
  <D.24683>:
  {
    struct MonoInst * inst;

    D.29539 = cfg->mempool;
    inst = mono_mempool_alloc (D.29539, 56);
    inst->data.op[1].const_val = 0;
    D.29600 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29600;
    inst->prev = 0B;
    D.29601 = inst->prev;
    inst->next = D.29601;
    inst->opcode = 376;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29602 = inst->sreg3;
    inst->sreg2 = D.29602;
    D.29603 = inst->sreg2;
    inst->sreg1 = D.29603;
    D.29544 = cfg->ip;
    inst->cil_code = D.29544;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    if (D.29546 != 0B) goto <D.29604>; else goto <D.29605>;
    <D.29604>:
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    D.29546->next = inst;
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    inst->prev = D.29546;
    D.29545 = cfg->cbb;
    D.29545->last_ins = inst;
    goto <D.29606>;
    <D.29605>:
    D.29545 = cfg->cbb;
    D.29545 = cfg->cbb;
    D.29545->last_ins = inst;
    D.29546 = D.29545->last_ins;
    D.29545->code = D.29546;
    <D.29606>:
  }
  offset = offset + 2;
  size = size + -2;
  <D.24684>:
  if (size > 1) goto <D.24683>; else goto <D.24685>;
  <D.24685>:
  goto <D.24688>;
  <D.24687>:
  {
    struct MonoInst * inst;

    D.29539 = cfg->mempool;
    inst = mono_mempool_alloc (D.29539, 56);
    inst->data.op[1].const_val = 0;
    D.29607 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29607;
    inst->prev = 0B;
    D.29608 = inst->prev;
    inst->next = D.29608;
    inst->opcode = 375;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29609 = inst->sreg3;
    inst->sreg2 = D.29609;
    D.29610 = inst->sreg2;
    inst->sreg1 = D.29610;
    D.29544 = cfg->ip;
    inst->cil_code = D.29544;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    if (D.29546 != 0B) goto <D.29611>; else goto <D.29612>;
    <D.29611>:
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    D.29546->next = inst;
    D.29545 = cfg->cbb;
    D.29546 = D.29545->last_ins;
    inst->prev = D.29546;
    D.29545 = cfg->cbb;
    D.29545->last_ins = inst;
    goto <D.29613>;
    <D.29612>:
    D.29545 = cfg->cbb;
    D.29545 = cfg->cbb;
    D.29545->last_ins = inst;
    D.29546 = D.29545->last_ins;
    D.29545->code = D.29546;
    <D.29613>:
  }
  offset = offset + 1;
  size = size + -1;
  <D.24688>:
  if (size > 0) goto <D.24687>; else goto <D.24689>;
  <D.24689>:
}


get_memset_method ()
{
  struct MonoMethod * memset_method.67;
  struct MonoClass * D.29618;
  struct MonoMethod * memset_method.68;
  struct MonoMethod * D.29622;
  static struct MonoMethod * memset_method = 0B;

  memset_method.67 = memset_method;
  if (memset_method.67 == 0B) goto <D.29616>; else goto <D.29617>;
  <D.29616>:
  D.29618 = mono_defaults.string_class;
  memset_method.68 = mono_class_get_method_from_name (D.29618, "memset", 3);
  memset_method = memset_method.68;
  memset_method.67 = memset_method;
  if (memset_method.67 == 0B) goto <D.29620>; else goto <D.29621>;
  <D.29620>:
  monoeg_g_log (0B, 4, "Old corlib found. Install a new one");
  <D.25141>:
  goto <D.25141>;
  <D.29621>:
  <D.29617>:
  D.29622 = memset_method;
  return D.29622;
}


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


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

  D.29627 = 0;
  return D.29627;
}


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.29629;
  struct MonoImage * D.29630;
  struct MonoAssembly * D.29631;
  unsigned char D.29632;
  _Bool D.29633;
  unsigned int D.29634;
  unsigned int D.29635;
  _Bool D.29636;
  int D.29637;
  _Bool D.29638;
  int D.29639;
  _Bool D.29640;
  int D.29641;
  _Bool D.29642;
  int D.29643;
  _Bool D.29644;
  int D.29645;
  <unnamed type> D.29646;
  _Bool D.29647;
  int D.29648;
  _Bool D.29649;
  int D.29650;
  _Bool D.29651;
  int D.29652;
  _Bool D.29653;
  int D.29654;
  unsigned char D.29659;
  int D.29660;
  struct MonoMethod * D.29662;
  const char * D.29663;
  gchar * D.29664;
  <unnamed-unsigned:1> D.29665;
  int D.29666;
  short unsigned int D.29667;
  int D.29668;
  int D.29669;
  unsigned int D.29670;
  int D.29671;
  unsigned int D.29672;
  unsigned int D.29673;
  int D.29674;
  <unnamed-unsigned:1> D.29675;
  int iftmp.69;
  unsigned int D.29679;
  unsigned int D.29680;
  struct MonoMemPool * D.29691;
  unsigned int D.29692;
  void * D.29693;
  unsigned int D.29694;
  void * D.29695;
  int * il_offsets.70;
  unsigned int i.71;
  unsigned int D.29698;
  int * D.29699;
  int D.29700;
  unsigned int D.29701;
  unsigned int D.29704;
  unsigned int D.29705;
  unsigned int D.29706;
  int D.29707;
  unsigned int D.29708;
  unsigned int D.29709;
  int n_il_offsets.72;
  int * line_numbers.73;
  unsigned int D.29712;
  unsigned int D.29713;
  struct MonoDomain * D.29716;
  int D.29717;
  unsigned int D.29720;
  unsigned int D.29721;
  struct MonoGenericSharingContext * D.29727;
  unsigned int D.29730;
  _Bool D.29731;
  long int D.29732;
  long int D.29733;
  short unsigned int D.29736;
  unsigned int D.29741;
  _Bool D.29742;
  long int D.29743;
  long int D.29744;
  struct MonoGenericContext * D.29747;
  struct MonoGenericInst * D.29748;
  _Bool D.29749;
  long int D.29750;
  long int D.29751;
  struct MonoGenericContext * D.29756;
  struct MonoGenericInst * D.29757;
  _Bool D.29760;
  long int D.29761;
  long int D.29762;
  unsigned int D.29768;
  void * D.29769;
  int D.29770;
  unsigned int D.29771;
  char * D.29774;
  unsigned int D.29775;
  unsigned int D.29776;
  struct MonoType * iftmp.74;
  unsigned int D.29780;
  unsigned int D.29781;
  int D.29785;
  unsigned int D.29786;
  unsigned int D.29787;
  struct MonoType * * D.29788;
  struct MonoType * D.29789;
  unsigned int D.29792;
  unsigned int D.29793;
  int D.29796;
  struct MonoProfileCoverageInfo * D.29797;
  unsigned int D.29798;
  unsigned int D.29799;
  unsigned int D.29800;
  int D.29801;
  unsigned int D.29802;
  unsigned int D.29803;
  int D.29804;
  unsigned int D.29805;
  unsigned int D.29806;
  _Bool D.29807;
  long int D.29808;
  long int D.29809;
  unsigned int D.29812;
  unsigned int D.29813;
  struct GHashTable * D.29816;
  struct GHashTable * D.29817;
  struct MonoExceptionClause * D.29818;
  unsigned int i.75;
  unsigned int D.29820;
  struct MonoBasicBlock * * D.29821;
  unsigned int D.29822;
  unsigned char * D.29823;
  int D.29824;
  unsigned char * D.29825;
  int D.29826;
  int D.29827;
  unsigned int D.29828;
  unsigned int D.29829;
  struct MonoBasicBlock * * D.29830;
  const unsigned char * D.29836;
  const unsigned char * D.29837;
  int D.29838;
  struct MonoDebugOptions * D.29843;
  int D.29844;
  unsigned int D.29846;
  unsigned int D.29847;
  int D.29848;
  unsigned char * D.29849;
  int D.29852;
  int D.29853;
  unsigned int D.29854;
  unsigned int D.29855;
  struct MonoBasicBlock * * D.29856;
  unsigned int D.29857;
  int D.29858;
  int D.29859;
  unsigned int D.29860;
  unsigned int D.29861;
  unsigned int D.29862;
  unsigned int D.29863;
  unsigned char * D.29864;
  int D.29865;
  int D.29866;
  unsigned int D.29867;
  unsigned int D.29868;
  struct MonoBasicBlock * * D.29869;
  const unsigned char * D.29875;
  struct MonoDebugOptions * D.29880;
  int D.29881;
  unsigned int D.29883;
  unsigned int D.29884;
  int D.29885;
  unsigned char * D.29886;
  int D.29889;
  int D.29890;
  unsigned int D.29891;
  unsigned int D.29892;
  struct MonoBasicBlock * * D.29893;
  unsigned int D.29894;
  unsigned int D.29895;
  unsigned char D.29898;
  unsigned int D.29901;
  unsigned int D.29904;
  int D.29906;
  struct MonoInst * D.29907;
  int D.29908;
  int D.29909;
  const unsigned char * D.29910;
  struct MonoInst * D.29911;
  int D.29919;
  unsigned int D.29925;
  void * D.29928;
  struct MonoInst * * D.29929;
  int D.29930;
  struct MonoInst * D.29931;
  int D.29932;
  struct MonoInst * D.29933;
  int D.29934;
  int D.29935;
  struct MonoInst * D.29936;
  int D.29937;
  struct MonoBasicBlock * bblock.129;
  struct MonoInst * D.29939;
  unsigned int D.29945;
  unsigned char * D.29946;
  int D.29947;
  int D.29948;
  unsigned int D.29949;
  unsigned int D.29950;
  struct MonoBasicBlock * * D.29951;
  const unsigned char * D.29957;
  struct MonoDebugOptions * D.29962;
  int D.29963;
  unsigned int D.29965;
  unsigned int D.29966;
  int D.29967;
  void * D.29970;
  struct MonoInst * D.29971;
  struct MonoClass * D.29977;
  int D.29982;
  short unsigned int D.29988;
  int D.29989;
  int D.29990;
  struct MonoGenericContext * D.29992;
  struct MonoGenericInst * D.29993;
  int D.29995;
  struct MonoInst * D.29996;
  int D.29997;
  int D.29998;
  struct MonoInst * D.29999;
  int D.30000;
  <unnamed-unsigned:15> D.30004;
  int D.30005;
  void * bblock.76;
  struct MonoBasicBlock * bblock.77;
  unsigned int D.30009;
  unsigned int D.30010;
  int D.30011;
  unsigned char * D.30012;
  int D.30015;
  int D.30016;
  unsigned int D.30017;
  unsigned int D.30018;
  struct MonoBasicBlock * * D.30019;
  struct MonoInst * D.30024;
  <unnamed type> D.30028;
  int iftmp.78;
  unsigned char D.30035;
  int iftmp.79;
  short unsigned int D.30051;
  int D.30052;
  int D.30053;
  struct MonoClass * D.30057;
  int D.30058;
  struct MonoClass * D.30065;
  int D.30068;
  unsigned int D.30079;
  unsigned int D.30080;
  unsigned int D.30081;
  unsigned int D.30082;
  unsigned int D.30085;
  unsigned int D.30086;
  int D.30087;
  struct GPtrArray * D.30092;
  struct MonoClass * D.30093;
  struct MonoType * D.30094;
  int D.30095;
  int D.30096;
  struct MonoInst * D.30097;
  int D.30098;
  int D.30099;
  int D.30100;
  int D.30101;
  unsigned int D.30105;
  int D.30106;
  struct MonoInst * D.30107;
  int D.30108;
  int D.30109;
  int D.30113;
  unsigned int D.30117;
  unsigned int D.30118;
  int D.30123;
  int D.30124;
  char * D.30125;
  void * D.30130;
  struct MonoInst * D.30131;
  int D.30132;
  struct MonoInst * D.30133;
  int D.30134;
  int D.30135;
  unsigned int D.30136;
  struct MonoJumpInfoToken * D.30137;
  unsigned int D.30138;
  int D.30139;
  void * D.30141;
  unsigned int D.30142;
  int D.30143;
  void * D.30147;
  struct MonoInst * D.30148;
  int D.30149;
  struct MonoInst * D.30150;
  int D.30151;
  int D.30152;
  unsigned int D.30153;
  int D.30154;
  unsigned int D.30155;
  int D.30156;
  struct MonoMethod * D.30160;
  char * D.30161;
  void * D.30166;
  unsigned int D.30167;
  struct MonoJumpInfoToken * D.30168;
  unsigned int D.30169;
  int D.30170;
  void * D.30172;
  unsigned int D.30173;
  int D.30174;
  void * D.30178;
  unsigned int D.30179;
  int D.30180;
  unsigned int D.30181;
  int D.30182;
  char * D.30186;
  void * D.30191;
  unsigned int D.30192;
  struct MonoJumpInfoToken * D.30193;
  unsigned int D.30194;
  int D.30195;
  void * D.30197;
  unsigned int D.30198;
  int D.30199;
  void * D.30203;
  unsigned int D.30204;
  int D.30205;
  unsigned int D.30206;
  int D.30207;
  struct MonoMethod * D.30211;
  struct MonoMethod * D.30214;
  <unnamed type> D.30215;
  short unsigned int D.30222;
  int D.30223;
  short unsigned int D.30224;
  int D.30225;
  int D.30233;
  struct MonoException * iftmp.80;
  unsigned int D.30240;
  struct MonoDebugOptions * D.30248;
  int D.30249;
  int D.30251;
  struct MonoDebugOptions * D.30258;
  int D.30259;
  unsigned int breakpoint_id.81;
  struct MonoType * D.30264;
  unsigned int D.30265;
  unsigned int D.30266;
  struct MonoDebugOptions * D.30273;
  int D.30274;
  short unsigned int D.30276;
  int D.30277;
  struct MonoGenericContext * D.30286;
  struct MonoGenericInst * D.30287;
  struct MonoInst * * D.30289;
  struct MonoInst * D.30290;
  unsigned char D.30291;
  unsigned char D.30292;
  int D.30295;
  struct MonoInst * D.30296;
  int D.30297;
  int D.30298;
  struct MonoType * * D.30299;
  struct MonoType * D.30300;
  unsigned int D.30301;
  short unsigned int D.30302;
  struct MonoClass * D.30303;
  int D.30304;
  unsigned char D.30305;
  <unnamed type> D.30306;
  unsigned int D.30307;
  int D.30308;
  short unsigned int D.30309;
  struct MonoClass * D.30312;
  unsigned int D.30316;
  unsigned int D.30317;
  int D.30322;
  struct MonoInst * D.30323;
  int D.30324;
  int D.30325;
  int D.30326;
  int D.30330;
  struct MonoInst * D.30331;
  int D.30332;
  int D.30333;
  int D.30339;
  struct MonoInst * D.30340;
  int D.30341;
  int D.30342;
  int D.30346;
  struct MonoInst * D.30347;
  int D.30348;
  int D.30349;
  _Bool D.30353;
  int D.30356;
  struct MonoDebugOptions * D.30363;
  int D.30364;
  _Bool D.30366;
  long int D.30367;
  long int D.30368;
  <unnamed-unsigned:15> D.30371;
  int D.30372;
  int D.30373;
  unsigned int D.30374;
  unsigned int D.30375;
  int ip.82;
  int D.30379;
  int D.30380;
  unsigned int D.30381;
  int D.30385;
  _Bool D.30388;
  long int D.30389;
  long int D.30390;
  int D.30394;
  unsigned int D.30395;
  unsigned int D.30396;
  struct MonoBasicBlock * * D.30397;
  struct MonoDebugOptions * D.30407;
  int D.30408;
  unsigned int D.30410;
  unsigned int D.30411;
  int D.30412;
  struct MonoInst * * D.30417;
  unsigned int D.30418;
  struct MonoInst * * D.30419;
  struct MonoInst * D.30420;
  int D.30421;
  struct MonoInst * * D.30422;
  unsigned int D.30423;
  unsigned int D.30424;
  struct MonoInst * * D.30425;
  struct MonoInst * D.30426;
  struct MonoType * D.30427;
  unsigned int D.30428;
  short unsigned int D.30429;
  struct MonoClass * D.30430;
  int D.30431;
  unsigned char D.30432;
  <unnamed type> D.30433;
  unsigned int D.30434;
  int D.30435;
  short unsigned int D.30436;
  struct MonoClass * D.30439;
  struct MonoInst * * sp.83;
  short unsigned int D.30444;
  int D.30445;
  int sp.84;
  int stack_start.85;
  int D.30457;
  int D.30458;
  unsigned int D.30459;
  struct MonoDebugOptions * D.30466;
  int D.30467;
  unsigned int D.30471;
  short unsigned int D.30472;
  unsigned int D.30473;
  int D.30474;
  struct MonoClass * D.30477;
  struct MonoInst * * sp.86;
  int D.30484;
  unsigned int D.30487;
  unsigned int D.30488;
  _Bool D.30491;
  long int D.30492;
  long int D.30493;
  int D.30498;
  sizetype op_size.87;
  unsigned int D.30511;
  unsigned int D.30512;
  unsigned int D.30513;
  int D.30514;
  unsigned int D.30515;
  unsigned int D.30516;
  int iftmp.88;
  struct MonoMethodHeader * D.30523;
  unsigned int D.30524;
  unsigned int D.30525;
  _Bool D.30526;
  unsigned char D.30527;
  unsigned char D.30530;
  unsigned char D.30531;
  unsigned int D.30537;
  unsigned int D.30538;
  unsigned int D.30539;
  struct MonoProfileCoverageInfo * D.30542;
  int * D.30545;
  unsigned int D.30546;
  int D.30547;
  int D.30551;
  struct MonoInst * D.30552;
  int D.30553;
  int D.30554;
  int D.30560;
  char * D.30561;
  unsigned char D.30562;
  int D.30563;
  unsigned int D.30573;
  int D.30580;
  struct MonoDebugOptions * D.30593;
  int D.30594;
  unsigned int n.89;
  struct MonoDebugOptions * D.30603;
  int D.30604;
  unsigned int D.30606;
  struct MonoType * * D.30607;
  struct MonoType * D.30608;
  unsigned int D.30609;
  short unsigned int D.30610;
  struct MonoInst * * D.30611;
  struct MonoInst * D.30612;
  struct MonoClass * D.30613;
  int D.30614;
  unsigned int D.30615;
  int D.30616;
  struct MonoClass * D.30619;
  struct MonoInst * * sp.90;
  struct MonoDebugOptions * D.30630;
  int D.30631;
  unsigned int D.30633;
  struct MonoDebugOptions * D.30640;
  int D.30641;
  unsigned int D.30643;
  short unsigned int D.30644;
  struct MonoInst * * D.30645;
  struct MonoInst * * D.30646;
  struct MonoInst * D.30647;
  struct MonoClass * D.30648;
  int D.30649;
  unsigned int D.30650;
  int D.30651;
  struct MonoClass * D.30654;
  struct MonoInst * * sp.91;
  struct MonoDebugOptions * D.30665;
  int D.30666;
  struct MonoDebugOptions * D.30674;
  int D.30675;
  struct MonoInst * D.30679;
  int D.30680;
  struct MonoDebugOptions * D.30687;
  int D.30688;
  unsigned char * D.30690;
  struct MonoDebugOptions * D.30697;
  int D.30698;
  struct MonoDebugOptions * D.30706;
  int D.30707;
  unsigned char * D.30709;
  unsigned char D.30710;
  struct MonoDebugOptions * D.30717;
  int D.30718;
  unsigned int D.30720;
  short unsigned int D.30721;
  unsigned int D.30722;
  int D.30723;
  struct MonoClass * D.30726;
  struct MonoInst * * sp.92;
  struct MonoDebugOptions * D.30737;
  int D.30738;
  struct MonoDebugOptions * D.30746;
  int D.30747;
  struct MonoDebugOptions * D.30755;
  int D.30756;
  struct MonoInst * * D.30758;
  struct MonoInst * D.30759;
  unsigned char D.30760;
  unsigned char D.30761;
  struct MonoClass * D.30762;
  unsigned int D.30763;
  int D.30764;
  _Bool D.30765;
  long int D.30766;
  long int D.30767;
  struct MonoType * D.30770;
  int D.30771;
  _Bool iftmp.93;
  int D.30775;
  int iftmp.94;
  unsigned char D.30782;
  struct MonoInst * iftmp.95;
  int D.30788;
  int D.30789;
  unsigned int D.30790;
  unsigned int D.30791;
  struct MonoInst * * D.30794;
  sizetype D.30795;
  sizetype D.30796;
  sizetype D.30797;
  struct MonoInst * * D.30798;
  struct MonoInst * iftmp.96;
  int D.30801;
  unsigned int D.30802;
  sizetype D.30805;
  sizetype D.30806;
  struct MonoInst * * D.30807;
  _Bool D.30809;
  long int D.30810;
  long int D.30811;
  _Bool D.30814;
  long int D.30815;
  long int D.30816;
  unsigned char D.30819;
  unsigned char D.30820;
  unsigned char D.30821;
  unsigned char D.30822;
  struct MonoInst * * sp.97;
  struct MonoDebugOptions * D.30833;
  int D.30834;
  struct MonoDebugOptions * D.30842;
  int D.30843;
  struct MonoDebugOptions * D.30851;
  int D.30852;
  unsigned int D.30856;
  unsigned int D.30857;
  struct MonoType * * D.30858;
  struct MonoType * D.30859;
  int D.30860;
  struct MonoDebugOptions * D.30867;
  int D.30868;
  unsigned int D.30870;
  short unsigned int D.30871;
  int D.30872;
  struct MonoClass * D.30875;
  struct MonoDebugOptions * D.30885;
  int D.30886;
  struct MonoDebugOptions * D.30894;
  int D.30895;
  struct MonoDebugOptions * D.30903;
  int D.30904;
  unsigned int D.30906;
  short unsigned int D.30907;
  unsigned int D.30908;
  int D.30909;
  struct MonoClass * D.30912;
  struct MonoInst * * sp.98;
  struct MonoDebugOptions * D.30923;
  int D.30924;
  struct MonoDebugOptions * D.30932;
  int D.30933;
  short unsigned int D.30935;
  struct MonoDebugOptions * D.30942;
  int D.30943;
  struct MonoInst * * D.30947;
  struct MonoInst * D.30948;
  unsigned char D.30949;
  unsigned char D.30950;
  struct MonoClass * D.30951;
  unsigned int D.30952;
  int D.30953;
  struct MonoType * D.30956;
  int D.30957;
  _Bool iftmp.99;
  int D.30961;
  int iftmp.100;
  unsigned char D.30968;
  struct MonoInst * iftmp.101;
  int D.30974;
  int D.30975;
  unsigned int D.30976;
  sizetype D.30979;
  sizetype D.30980;
  sizetype D.30981;
  struct MonoInst * * D.30982;
  struct MonoInst * iftmp.102;
  int D.30985;
  unsigned int D.30986;
  sizetype D.30989;
  sizetype D.30990;
  struct MonoInst * * D.30991;
  _Bool D.30993;
  long int D.30994;
  long int D.30995;
  _Bool D.30998;
  long int D.30999;
  long int D.31000;
  unsigned char D.31003;
  unsigned char D.31004;
  unsigned char D.31005;
  unsigned char D.31006;
  struct MonoInst * * sp.103;
  struct MonoDebugOptions * D.31017;
  int D.31018;
  struct MonoDebugOptions * D.31026;
  int D.31027;
  struct MonoDebugOptions * D.31035;
  int D.31036;
  int D.31040;
  struct MonoType * D.31041;
  int D.31042;
  struct MonoDebugOptions * D.31049;
  int D.31050;
  struct MonoDebugOptions * D.31058;
  int D.31059;
  unsigned int D.31061;
  int D.31062;
  struct MonoInst * * sp.104;
  struct MonoDebugOptions * D.31073;
  int D.31074;
  unsigned int D.31076;
  int D.31077;
  struct MonoInst * * sp.105;
  struct MonoDebugOptions * D.31088;
  int D.31089;
  int D.31091;
  unsigned int D.31092;
  int D.31093;
  struct MonoInst * * sp.106;
  struct MonoDebugOptions * D.31104;
  int D.31105;
  struct MonoDebugOptions * D.31113;
  int D.31114;
  signed char D.31116;
  int D.31117;
  unsigned int D.31118;
  int D.31119;
  struct MonoInst * * sp.107;
  unsigned char * D.31124;
  struct MonoDebugOptions * D.31131;
  int D.31132;
  struct MonoDebugOptions * D.31140;
  int D.31141;
  const unsigned char * D.31143;
  unsigned int D.31144;
  int D.31145;
  unsigned int D.31146;
  int D.31147;
  struct MonoInst * * sp.108;
  unsigned char * D.31152;
  struct MonoDebugOptions * D.31159;
  int D.31160;
  struct MonoDebugOptions * D.31168;
  int D.31169;
  unsigned int D.31171;
  int D.31172;
  long long unsigned int D.31173;
  long long int D.31174;
  struct MonoInst * * sp.109;
  struct MonoDebugOptions * D.31185;
  int D.31186;
  struct MonoDebugOptions * D.31194;
  int D.31195;
  int D.31199;
  struct MonoInst * D.31200;
  guint16 iftmp.110;
  int D.31205;
  int D.31206;
  unsigned int D.31207;
  int D.31208;
  unsigned int D.31212;
  int D.31213;
  unsigned int D.31218;
  int D.31219;
  unsigned int D.31223;
  float D.31224;
  struct MonoInst * * sp.111;
  struct MonoDebugOptions * D.31232;
  int D.31233;
  struct MonoDebugOptions * D.31241;
  int D.31242;
  int D.31246;
  struct MonoInst * D.31247;
  guint16 iftmp.112;
  int D.31252;
  int D.31253;
  unsigned int D.31254;
  int D.31255;
  unsigned int D.31259;
  int D.31260;
  unsigned int D.31265;
  int D.31266;
  long long unsigned int D.31270;
  double D.31271;
  struct MonoInst * * sp.113;
  struct MonoDebugOptions * D.31279;
  int D.31280;
  struct MonoDebugOptions * D.31288;
  int D.31289;
  struct MonoType * D.31291;
  int D.31292;
  struct MonoInst * D.31293;
  int D.31294;
  int D.31295;
  int D.31296;
  unsigned int D.31297;
  unsigned int D.31298;
  struct MonoInst * * D.31299;
  struct MonoInst * D.31300;
  struct MonoType * D.31301;
  unsigned int D.31302;
  short unsigned int D.31303;
  struct MonoClass * D.31304;
  int D.31305;
  short unsigned int D.31306;
  struct MonoClass * D.31309;
  unsigned int D.31313;
  short unsigned int D.31314;
  unsigned int D.31315;
  int D.31316;
  struct MonoClass * D.31319;
  struct MonoInst * * sp.114;
  unsigned int D.31324;
  short unsigned int D.31325;
  unsigned int D.31326;
  int D.31327;
  struct MonoClass * D.31330;
  struct MonoInst * * sp.115;
  struct MonoDebugOptions * D.31341;
  int D.31342;
  const char * D.31352;
  const char * D.31353;
  const char * D.31354;
  struct MonoMethodSignature * D.31355;
  short unsigned int D.31356;
  int D.31357;
  const char * D.31358;
  gchar * D.31359;
  char * D.31362;
  struct MonoDebugOptions * D.31369;
  int D.31370;
  struct MonoDebugOptions * D.31378;
  int D.31379;
  struct MonoLoaderError * D.31384;
  struct MonoDebugOptions * D.31385;
  int D.31386;
  int D.31390;
  const char * D.31397;
  <unnamed type> D.31398;
  short unsigned int D.31404;
  int D.31405;
  <unnamed-unsigned:1> D.31406;
  int D.31407;
  int D.31410;
  int D.31411;
  struct MonoMethodSignature * D.31412;
  unsigned int n.116;
  unsigned int D.31414;
  void * D.31415;
  struct MonoInst * * D.31416;
  unsigned int i.117;
  unsigned int D.31418;
  struct MonoInst * * D.31419;
  void * D.31420;
  struct MonoInst * D.31421;
  int D.31422;
  struct MonoInst * D.31423;
  int D.31424;
  int D.31425;
  struct MonoType * * D.31426;
  struct MonoType * D.31427;
  unsigned int D.31428;
  short unsigned int D.31429;
  struct MonoInst * * D.31430;
  struct MonoInst * D.31431;
  struct MonoClass * D.31432;
  int D.31433;
  unsigned char D.31434;
  <unnamed type> D.31435;
  unsigned int D.31436;
  int D.31437;
  short unsigned int D.31438;
  struct MonoClass * D.31441;
  struct MonoInst * * D.31449;
  struct MonoInst * D.31450;
  unsigned char D.31451;
  unsigned char D.31452;
  unsigned int i.118;
  _Bool D.31457;
  _Bool D.31458;
  struct MonoDebugOptions * D.31465;
  int D.31466;
  struct MonoDebugOptions * D.31476;
  int D.31477;
  short unsigned int D.31479;
  int D.31480;
  <unnamed-unsigned:1> D.31481;
  int D.31482;
  unsigned int D.31483;
  unsigned int D.31486;
  unsigned int D.31487;
  void * D.31490;
  struct MonoInst * D.31491;
  int D.31492;
  struct MonoInst * D.31493;
  guint16 iftmp.119;
  int D.31498;
  int D.31499;
  unsigned int D.31500;
  int D.31501;
  void * D.31505;
  struct MonoInst * D.31506;
  int D.31507;
  struct MonoInst * D.31508;
  int D.31509;
  int D.31510;
  unsigned int D.31511;
  int D.31512;
  char * D.31523;
  unsigned char D.31527;
  struct MonoMethod * cil_method.120;
  char * D.31533;
  int D.31539;
  struct MonoClass * D.31542;
  unsigned int D.31543;
  unsigned int D.31544;
  _Bool D.31545;
  long int D.31546;
  long int D.31547;
  struct MonoLoaderError * D.31553;
  struct MonoDebugOptions * D.31554;
  int D.31555;
  unsigned int D.31559;
  struct MonoGenericContainer * D.31564;
  struct MonoGenericContext * D.31565;
  int D.31566;
  int D.31569;
  gchar * D.31572;
  <unnamed type> D.31573;
  short unsigned int D.31578;
  int D.31579;
  int D.31580;
  unsigned int D.31585;
  int D.31588;
  unsigned int D.31591;
  unsigned int D.31592;
  unsigned int D.31595;
  int D.31598;
  struct MonoDebugOptions * D.31601;
  int D.31602;
  short unsigned int D.31608;
  int D.31609;
  int D.31610;
  int D.31612;
  unsigned char D.31614;
  struct MonoDebugOptions * D.31617;
  int D.31618;
  int check_for_pending_exc.121;
  <unnamed-unsigned:1> D.31623;
  int D.31624;
  struct MonoType * D.31629;
  int D.31630;
  unsigned char D.31637;
  int D.31640;
  int D.31641;
  unsigned int D.31642;
  unsigned int D.31643;
  unsigned int D.31644;
  int D.31645;
  unsigned int D.31646;
  unsigned int D.31647;
  <unnamed type> D.31648;
  int D.31651;
  unsigned int D.31661;
  unsigned int D.31662;
  struct MonoGenericContainer * D.31671;
  struct MonoDebugOptions * D.31678;
  int D.31679;
  int D.31685;
  _Bool D.31686;
  long int D.31687;
  long int D.31688;
  struct MonoDebugOptions * D.31697;
  int D.31698;
  sizetype D.31700;
  int D.31703;
  struct MonoClass * D.31708;
  unsigned int D.31710;
  unsigned int D.31711;
  struct MonoImage * D.31716;
  struct MonoImage * D.31717;
  unsigned int D.31719;
  unsigned int D.31720;
  int D.31732;
  unsigned int D.31734;
  unsigned int D.31735;
  unsigned char D.31737;
  unsigned char D.31738;
  unsigned char D.31740;
  int D.31741;
  int D.31743;
  unsigned int D.31745;
  struct MonoType * D.31748;
  int D.31749;
  int D.31751;
  int D.31752;
  int D.31755;
  struct MonoInst * D.31756;
  void * D.31758;
  struct MonoInst * D.31759;
  int D.31760;
  struct MonoInst * D.31761;
  guint16 iftmp.122;
  int D.31766;
  int D.31767;
  unsigned int D.31768;
  int D.31769;
  int D.31773;
  struct MonoInst * D.31774;
  unsigned int D.31779;
  int D.31780;
  unsigned int D.31781;
  unsigned int D.31782;
  int D.31783;
  int D.31787;
  struct MonoClass * D.31790;
  struct MonoInst * D.31791;
  struct MonoInst * iftmp.123;
  struct MonoInst * * D.31793;
  struct MonoInst * D.31794;
  int D.31795;
  unsigned int D.31796;
  unsigned int D.31799;
  unsigned int D.31800;
  struct MonoInst * * D.31801;
  unsigned char D.31805;
  unsigned char D.31806;
  struct MonoClass * D.31807;
  unsigned int D.31808;
  int D.31809;
  struct MonoType * D.31812;
  int D.31813;
  _Bool iftmp.124;
  int D.31817;
  int iftmp.125;
  unsigned char D.31824;
  struct MonoInst * iftmp.126;
  int D.31830;
  int D.31831;
  unsigned int D.31832;
  sizetype D.31835;
  sizetype D.31836;
  sizetype D.31837;
  struct MonoInst * * D.31838;
  struct MonoInst * iftmp.127;
  int D.31841;
  unsigned int D.31842;
  sizetype D.31845;
  sizetype D.31846;
  struct MonoInst * * D.31847;
  _Bool D.31849;
  long int D.31850;
  long int D.31851;
  _Bool D.31854;
  long int D.31855;
  long int D.31856;
  unsigned char D.31859;
  unsigned char D.31860;
  unsigned char D.31861;
  unsigned char D.31862;
  struct MonoInst * D.31866;
  int D.31867;
  void * D.31872;
  struct MonoInst * D.31873;
  int D.31874;
  struct MonoInst * D.31875;
  int D.31876;
  int D.31877;
  unsigned int D.31878;
  int D.31879;
  void * D.31886;
  unsigned int D.31887;
  int D.31888;
  void * D.31892;
  int D.31893;
  struct MonoInst * D.31894;
  int D.31895;
  int D.31896;
  unsigned int D.31897;
  int D.31898;
  int D.31902;
  struct MonoClass * D.31905;
  int D.31912;
  struct MonoInst * D.31913;
  int D.31914;
  int D.31915;
  unsigned int D.31916;
  int D.31917;
  unsigned int D.31921;
  short unsigned int D.31922;
  int D.31923;
  unsigned int D.31924;
  int D.31925;
  const char * D.31931;
  gchar * D.31932;
  struct MonoClass * D.31940;
  struct MonoClass * D.31941;
  struct MonoType * D.31943;
  unsigned int D.31944;
  short unsigned int D.31945;
  unsigned int D.31946;
  int D.31947;
  int D.31951;
  struct MonoInst * D.31952;
  unsigned int D.31956;
  unsigned char D.31967;
  struct MonoDebugOptions * D.31968;
  int D.31969;
  struct MonoDebugOptions * D.31973;
  int D.31974;
  struct MonoDebugOptions * D.31980;
  int D.31981;
  struct MonoMethod * * D.31985;
  int D.31986;
  unsigned int D.31987;
  unsigned int D.31988;
  struct MonoMethod * * D.31989;
  unsigned int D.31992;
  short unsigned int D.31993;
  unsigned int D.31994;
  int D.31995;
  int D.31999;
  struct MonoInst * D.32000;
  int D.32004;
  struct MonoDebugOptions * D.32011;
  int D.32012;
  struct MonoClass * D.32016;
  struct MonoClass * D.32017;
  int D.26925;
  int iftmp.128;
  int D.26924;
  const char[7] * D.32023;
  unsigned char D.32024;
  int D.32025;
  unsigned char D.32026;
  int D.32027;
  const unsigned char * D.32032;
  unsigned char D.32033;
  int D.32034;
  const unsigned char * D.32035;
  unsigned char D.32036;
  int D.32037;
  const unsigned char * D.32042;
  unsigned char D.32043;
  int D.32044;
  const unsigned char * D.32045;
  unsigned char D.32046;
  int D.32047;
  const unsigned char * D.32052;
  unsigned char D.32053;
  int D.32054;
  const unsigned char * D.32055;
  unsigned char D.32056;
  int D.32057;
  const char * D.32059;
  unsigned int D.32064;
  int D.32069;
  struct MonoGenericClass * D.32078;
  int D.32081;
  int D.32084;
  unsigned char D.32090;
  struct MonoDebugOptions * D.32091;
  int D.32092;
  struct MonoGenericInst * D.32107;
  int pass_vtable.130;
  struct MonoDebugOptions * D.32122;
  int D.32123;
  int D.32125;
  struct MonoInst * D.32126;
  guint16 iftmp.131;
  int D.32131;
  int D.32132;
  void * iftmp.132;
  unsigned int D.32137;
  int D.32138;
  int pass_mrgctx.133;
  _Bool D.32145;
  long int D.32146;
  long int D.32147;
  struct MonoDebugOptions * D.32155;
  int D.32156;
  int D.32160;
  int D.32162;
  unsigned int D.32165;
  _Bool D.32172;
  long int D.32173;
  long int D.32174;
  _Bool D.32177;
  long int D.32178;
  long int D.32179;
  int D.32188;
  struct MonoInst * D.32189;
  int D.32190;
  int D.32191;
  int D.32195;
  struct MonoInst * D.32196;
  int D.32197;
  int D.32198;
  int D.32204;
  struct MonoInst * D.32205;
  int D.32206;
  int D.32207;
  int D.32211;
  struct MonoInst * D.32212;
  int D.32213;
  int D.32214;
  unsigned int D.32231;
  short unsigned int D.32232;
  int D.32236;
  unsigned int D.32237;
  _Bool D.32238;
  long int D.32239;
  long int D.32240;
  int D.32251;
  const char * D.32256;
  gchar * D.32257;
  int mono_use_imt.134;
  _Bool D.32267;
  long int D.32268;
  long int D.32269;
  unsigned int D.32274;
  _Bool D.32275;
  long int D.32276;
  long int D.32277;
  struct MonoType * D.32281;
  int D.32282;
  struct MonoInst * D.32283;
  int D.32284;
  int D.32285;
  int D.32286;
  unsigned int D.32287;
  unsigned int D.32288;
  struct MonoInst * * D.32289;
  struct MonoInst * D.32290;
  struct MonoType * D.32291;
  unsigned int D.32292;
  short unsigned int D.32293;
  struct MonoClass * D.32294;
  int D.32295;
  short unsigned int D.32296;
  struct MonoClass * D.32299;
  void * D.32303;
  struct MonoInst * D.32304;
  int D.32305;
  struct MonoInst * D.32306;
  int D.32307;
  int D.32308;
  unsigned int D.32309;
  short unsigned int D.32310;
  unsigned char D.32311;
  <unnamed type> D.32312;
  unsigned int D.32313;
  int D.32314;
  short unsigned int D.32315;
  struct MonoClass * D.32318;
  struct MonoInst * D.32322;
  void * D.32323;
  struct MonoInst * D.32324;
  int D.32325;
  struct MonoInst * D.32326;
  int D.32327;
  int D.32328;
  int D.32329;
  unsigned int D.32330;
  unsigned int D.32331;
  struct MonoInst * * D.32332;
  struct MonoInst * D.32333;
  unsigned char D.32334;
  unsigned char D.32335;
  struct MonoClass * D.32336;
  unsigned int D.32337;
  int D.32338;
  struct MonoType * D.32341;
  int D.32342;
  _Bool iftmp.135;
  int D.32346;
  int iftmp.136;
  unsigned char D.32353;
  struct MonoInst * iftmp.137;
  int D.32359;
  int D.32360;
  unsigned int D.32361;
  sizetype D.32364;
  sizetype D.32365;
  sizetype D.32366;
  struct MonoInst * * D.32367;
  struct MonoInst * iftmp.138;
  int D.32370;
  unsigned int D.32371;
  sizetype D.32374;
  sizetype D.32375;
  struct MonoInst * * D.32376;
  _Bool D.32378;
  long int D.32379;
  long int D.32380;
  _Bool D.32383;
  long int D.32384;
  long int D.32385;
  unsigned char D.32388;
  unsigned char D.32389;
  unsigned char D.32390;
  unsigned char D.32391;
  void * D.32395;
  int D.32396;
  struct MonoInst * D.32397;
  int D.32398;
  int D.32399;
  unsigned int D.32400;
  short unsigned int D.32401;
  unsigned char D.32402;
  <unnamed type> D.32403;
  unsigned int D.32404;
  int D.32405;
  short unsigned int D.32406;
  struct MonoClass * D.32409;
  struct MonoClass * D.32415;
  int D.26947;
  int iftmp.139;
  int D.26946;
  const char[6] * D.32421;
  unsigned char D.32422;
  int D.32423;
  unsigned char D.32424;
  int D.32425;
  const unsigned char * D.32430;
  unsigned char D.32431;
  int D.32432;
  const unsigned char * D.32433;
  unsigned char D.32434;
  int D.32435;
  const unsigned char * D.32440;
  unsigned char D.32441;
  int D.32442;
  const unsigned char * D.32443;
  unsigned char D.32444;
  int D.32445;
  const unsigned char * D.32450;
  unsigned char D.32451;
  int D.32452;
  const unsigned char * D.32453;
  unsigned char D.32454;
  int D.32455;
  struct MonoMethodSignature * D.32459;
  short unsigned int D.32460;
  int D.32463;
  unsigned int D.32464;
  unsigned int D.32465;
  struct MonoBasicBlock * * D.32466;
  const unsigned char * D.32472;
  struct MonoDebugOptions * D.32477;
  int D.32478;
  unsigned int D.32480;
  unsigned int D.32481;
  int D.32482;
  unsigned char * D.32483;
  int D.32486;
  int D.32487;
  unsigned int D.32488;
  unsigned int D.32489;
  struct MonoBasicBlock * * D.32490;
  unsigned int D.32491;
  unsigned int D.32492;
  unsigned int D.32495;
  unsigned int D.32496;
  int D.32505;
  unsigned int D.32512;
  int D.32521;
  struct GList * D.32524;
  int D.32530;
  unsigned int D.32539;
  int D.32540;
  unsigned int D.32543;
  struct MonoMethodSignature * D.32560;
  struct MonoType * D.32561;
  int D.32562;
  unsigned int i.140;
  unsigned int D.32568;
  struct MonoType * * D.32569;
  struct MonoType * D.32570;
  unsigned int D.32571;
  short unsigned int D.32572;
  struct MonoInst * * D.32573;
  struct MonoInst * D.32574;
  struct MonoClass * D.32575;
  struct MonoInst * * D.32576;
  struct MonoInst * D.32577;
  int D.32578;
  int D.32579;
  struct MonoClass * D.32582;
  struct MonoBasicBlock * * D.32589;
  const guint8 * D.32590;
  int D.32591;
  int num_calls.141;
  int D.32595;
  int D.32599;
  unsigned int D.32607;
  const char * D.32611;
  gchar * D.32612;
  _Bool D.32617;
  long int D.32618;
  long int D.32619;
  unsigned char D.32626;
  const char * D.32631;
  gchar * D.32632;
  int D.26968;
  int iftmp.142;
  int D.26967;
  unsigned char D.32640;
  int D.32641;
  const unsigned char * D.32646;
  unsigned char D.32647;
  int D.32648;
  const unsigned char * D.32653;
  unsigned char D.32654;
  int D.32655;
  const unsigned char * D.32660;
  unsigned char D.32661;
  int D.32662;
  int D.32674;
  const char * D.32681;
  gchar * D.32682;
  int D.32697;
  int D.32699;
  int iftmp.143;
  _Bool D.32714;
  long int D.32715;
  long int D.32716;
  _Bool D.32719;
  long int D.32720;
  long int D.32721;
  int D.32730;
  struct MonoInst * D.32731;
  int D.32732;
  int D.32733;
  int D.32737;
  struct MonoInst * D.32738;
  int D.32739;
  int D.32740;
  int D.32746;
  struct MonoInst * D.32747;
  int D.32748;
  int D.32749;
  int D.32753;
  struct MonoInst * D.32754;
  int D.32755;
  int D.32756;
  _Bool D.32764;
  long int D.32765;
  long int D.32766;
  short unsigned int D.32785;
  struct MonoInst * D.32792;
  unsigned int info_type.144;
  unsigned int D.32794;
  <unnamed type> info_type.145;
  int D.32798;
  int D.32799;
  int D.26985;
  int iftmp.146;
  int D.26984;
  const char[4] * D.32805;
  unsigned char D.32806;
  int D.32807;
  unsigned char D.32808;
  int D.32809;
  const unsigned char * D.32814;
  unsigned char D.32815;
  int D.32816;
  const unsigned char * D.32817;
  unsigned char D.32818;
  int D.32819;
  const unsigned char * D.32824;
  unsigned char D.32825;
  int D.32826;
  const unsigned char * D.32827;
  unsigned char D.32828;
  int D.32829;
  const unsigned char * D.32834;
  unsigned char D.32835;
  int D.32836;
  const unsigned char * D.32837;
  unsigned char D.32838;
  int D.32839;
  struct MonoInst * * D.32843;
  unsigned char D.32844;
  int D.32847;
  struct MonoType * D.32848;
  unsigned int D.32849;
  short unsigned int D.32850;
  int D.32851;
  int D.32852;
  struct MonoClass * D.32853;
  unsigned int D.32859;
  short unsigned int D.32864;
  int D.32866;
  int D.26996;
  int iftmp.147;
  int D.26995;
  const char[4] * D.32871;
  unsigned char D.32872;
  int D.32873;
  unsigned char D.32874;
  int D.32875;
  const unsigned char * D.32880;
  unsigned char D.32881;
  int D.32882;
  const unsigned char * D.32883;
  unsigned char D.32884;
  int D.32885;
  const unsigned char * D.32890;
  unsigned char D.32891;
  int D.32892;
  const unsigned char * D.32893;
  unsigned char D.32894;
  int D.32895;
  const unsigned char * D.32900;
  unsigned char D.32901;
  int D.32902;
  const unsigned char * D.32903;
  unsigned char D.32904;
  int D.32905;
  unsigned int D.32909;
  short unsigned int D.32910;
  unsigned int D.32911;
  int D.32912;
  int D.27005;
  int iftmp.148;
  int D.27004;
  const char[8] * D.32920;
  unsigned char D.32921;
  int D.32922;
  unsigned char D.32923;
  int D.32924;
  const unsigned char * D.32929;
  unsigned char D.32930;
  int D.32931;
  const unsigned char * D.32932;
  unsigned char D.32933;
  int D.32934;
  const unsigned char * D.32939;
  unsigned char D.32940;
  int D.32941;
  const unsigned char * D.32942;
  unsigned char D.32943;
  int D.32944;
  const unsigned char * D.32949;
  unsigned char D.32950;
  int D.32951;
  const unsigned char * D.32952;
  unsigned char D.32953;
  int D.32954;
  struct MonoClass * D.32958;
  unsigned int D.32959;
  unsigned int D.32960;
  struct MonoDebugOptions * D.32968;
  int D.32969;
  struct MonoInst * iftmp.149;
  unsigned int D.32979;
  int call_opcode.150;
  int D.32987;
  int D.33001;
  int D.33002;
  struct MonoMethodSignature * D.33003;
  struct MonoType * * D.33004;
  struct MonoType * D.33005;
  unsigned int D.33006;
  short unsigned int D.33007;
  struct MonoInst * * D.33008;
  struct MonoInst * D.33009;
  struct MonoClass * D.33010;
  struct MonoInst * * D.33011;
  struct MonoInst * D.33012;
  int D.33013;
  int D.33014;
  struct MonoClass * D.33017;
  struct MonoDebugOptions * D.33033;
  int D.33034;
  unsigned int D.33036;
  unsigned int D.33037;
  int D.33038;
  short int D.33044;
  struct MonoMethod * D.33051;
  struct MonoInst * iftmp.151;
  struct MonoDebugOptions * D.33073;
  int D.33074;
  unsigned int D.33076;
  unsigned int D.33077;
  int D.33078;
  int D.33086;
  _Bool D.33089;
  long int D.33090;
  long int D.33091;
  struct MonoInst * * sp.152;
  struct MonoInst * D.33097;
  struct MonoInst * * sp.153;
  int D.33102;
  struct MonoInst * D.33103;
  int D.33104;
  int D.33105;
  int D.33106;
  _Bool D.33113;
  long int D.33114;
  long int D.33115;
  short int D.33124;
  struct MonoMethodSignature * D.33127;
  struct MonoDebugOptions * D.33134;
  int D.33135;
  int D.33140;
  struct MonoDebugOptions * D.33147;
  int D.33148;
  int D.33150;
  struct MonoInst * D.33151;
  int D.33152;
  int D.33153;
  int D.33154;
  unsigned int D.33155;
  unsigned int D.33156;
  struct MonoInst * * D.33157;
  struct MonoInst * D.33158;
  struct MonoType * D.33159;
  unsigned int D.33160;
  short unsigned int D.33161;
  struct MonoClass * D.33162;
  int D.33163;
  short unsigned int D.33164;
  struct MonoClass * D.33167;
  struct MonoInst * D.33172;
  struct MonoInst * D.33177;
  struct MonoMethodSignature * D.33180;
  struct MonoType * D.33181;
  _Bool D.33189;
  long int D.33190;
  long int D.33191;
  struct MonoDebugOptions * D.33200;
  int D.33201;
  int D.33206;
  struct MonoDebugOptions * D.33213;
  int D.33214;
  unsigned int D.33216;
  struct MonoInst * D.33219;
  int D.33222;
  struct MonoInst * D.33223;
  int D.33224;
  int D.33225;
  unsigned int D.33226;
  short unsigned int D.33227;
  struct MonoClass * D.33228;
  int D.33229;
  short unsigned int D.33230;
  struct MonoClass * D.33233;
  int D.33238;
  struct MonoInst * D.33239;
  int D.33240;
  int D.33241;
  int D.33242;
  unsigned char D.33243;
  <unnamed type> D.33244;
  unsigned int D.33245;
  int D.33246;
  int D.33250;
  struct MonoClass * D.33254;
  struct MonoDebugOptions * D.33262;
  int D.33263;
  struct MonoDebugOptions * D.33274;
  int D.33275;
  signed char D.33277;
  sizetype D.33278;
  sizetype D.33279;
  int target.154;
  int D.33281;
  unsigned int D.33282;
  unsigned int D.33283;
  struct MonoBasicBlock * * D.33284;
  struct MonoDebugOptions * D.33294;
  int D.33295;
  unsigned int D.33297;
  unsigned int D.33298;
  int D.33299;
  struct MonoDebugOptions * D.33310;
  int D.33311;
  struct MonoDebugOptions * D.33322;
  int D.33323;
  struct MonoDebugOptions * D.33331;
  int D.33332;
  short unsigned int D.33334;
  short unsigned int D.33335;
  sizetype D.33336;
  sizetype D.33337;
  int D.33338;
  struct MonoInst * D.33339;
  int D.33340;
  int D.33341;
  unsigned char D.33342;
  struct MonoDebugOptions * D.33349;
  int D.33350;
  void * D.33352;
  struct MonoDebugOptions * D.33362;
  int D.33363;
  unsigned int D.33365;
  unsigned int D.33366;
  int D.33367;
  struct MonoBasicBlock * * D.33370;
  struct MonoBasicBlock * * D.33373;
  struct MonoDebugOptions * D.33384;
  int D.33385;
  unsigned int D.33387;
  unsigned int D.33388;
  int D.33389;
  struct MonoDebugOptions * D.33400;
  int D.33401;
  struct MonoDebugOptions * D.33415;
  int D.33416;
  unsigned int D.33418;
  sizetype D.33419;
  struct MonoDebugOptions * D.33429;
  int D.33430;
  unsigned int D.33432;
  unsigned int D.33433;
  int D.33434;
  struct MonoDebugOptions * D.33445;
  int D.33446;
  unsigned char D.33451;
  _Bool D.33452;
  int iftmp.155;
  guint32 iftmp.156;
  unsigned char * D.33462;
  struct MonoDebugOptions * D.33469;
  int D.33470;
  struct MonoDebugOptions * D.33478;
  int D.33479;
  struct MonoInst * * D.33483;
  struct MonoInst * D.33484;
  unsigned char D.33485;
  struct MonoDebugOptions * D.33491;
  int D.33492;
  sizetype iftmp.157;
  sizetype D.33498;
  struct MonoDebugOptions * D.33508;
  int D.33509;
  unsigned int D.33511;
  unsigned int D.33512;
  int D.33513;
  struct MonoDebugOptions * D.33525;
  int D.33526;
  unsigned int D.33528;
  unsigned int D.33529;
  int D.33530;
  struct MonoDebugOptions * D.33541;
  int D.33542;
  int D.33544;
  struct MonoInst * D.33545;
  int D.33546;
  int D.33547;
  unsigned char D.33548;
  struct MonoDebugOptions * D.33555;
  int D.33556;
  short unsigned int D.33558;
  unsigned int D.33561;
  int D.33562;
  guint16 iftmp.158;
  void * D.33576;
  struct MonoDebugOptions * D.33586;
  int D.33587;
  unsigned int D.33589;
  unsigned int D.33590;
  int D.33591;
  struct MonoDebugOptions * D.33603;
  int D.33604;
  unsigned int D.33606;
  unsigned int D.33607;
  int D.33608;
  struct MonoDebugOptions * D.33617;
  int D.33618;
  struct MonoDebugOptions * D.33626;
  int D.33627;
  unsigned int D.33629;
  sizetype D.33630;
  int D.33631;
  struct MonoInst * D.33632;
  int D.33633;
  int D.33634;
  unsigned char D.33635;
  struct MonoDebugOptions * D.33642;
  int D.33643;
  void * D.33645;
  struct MonoDebugOptions * D.33655;
  int D.33656;
  unsigned int D.33658;
  unsigned int D.33659;
  int D.33660;
  struct MonoDebugOptions * D.33675;
  int D.33676;
  unsigned int D.33678;
  unsigned int D.33679;
  int D.33680;
  struct MonoDebugOptions * D.33691;
  int D.33692;
  unsigned int D.33700;
  unsigned int D.33701;
  unsigned int D.33702;
  unsigned int D.33703;
  struct MonoDebugOptions * D.33710;
  int D.33711;
  struct MonoDebugOptions * D.33719;
  int D.33720;
  unsigned int D.33722;
  unsigned char D.33723;
  struct MonoDebugOptions * D.33732;
  int D.33733;
  unsigned char * D.33735;
  struct MonoDebugOptions * D.33742;
  int D.33743;
  struct MonoDebugOptions * D.33754;
  int D.33755;
  unsigned int D.33757;
  unsigned int D.33758;
  int D.33759;
  unsigned char * D.33760;
  int D.33763;
  int D.33764;
  unsigned int D.33765;
  unsigned int D.33766;
  struct MonoBasicBlock * * D.33767;
  unsigned int D.33768;
  unsigned int D.33769;
  unsigned int D.33770;
  unsigned char * D.33771;
  int D.33772;
  int D.33773;
  unsigned int D.33774;
  unsigned int D.33775;
  struct MonoBasicBlock * * D.33776;
  unsigned int D.33781;
  unsigned char * D.33782;
  unsigned int D.33784;
  const unsigned char * D.33785;
  struct MonoDebugOptions * D.33790;
  int D.33791;
  unsigned int D.33793;
  unsigned int D.33794;
  int D.33795;
  unsigned int D.33796;
  unsigned char * D.33797;
  struct MonoBasicBlock * * D.33800;
  struct MonoBasicBlock * D.33801;
  unsigned int D.33802;
  unsigned int D.33803;
  struct MonoDebugOptions * D.33812;
  int D.33813;
  int D.33815;
  struct MonoInst * D.33816;
  int D.33817;
  int D.33818;
  int D.33819;
  int D.33823;
  struct MonoInst * D.33824;
  int D.33825;
  int D.33826;
  unsigned int D.33829;
  unsigned int D.33830;
  int D.33831;
  unsigned char * D.33835;
  int D.33838;
  int D.33839;
  unsigned int D.33840;
  unsigned int D.33841;
  struct MonoBasicBlock * * D.33842;
  short unsigned int D.33847;
  short unsigned int D.33848;
  short unsigned int D.33850;
  short unsigned int D.33852;
  struct MonoBasicBlock * * D.33853;
  struct MonoBasicBlock * * D.33854;
  struct MonoBasicBlock * D.33855;
  void * D.33865;
  struct MonoBasicBlock * * D.33866;
  struct MonoBasicBlock * * D.33867;
  unsigned int D.33871;
  unsigned int D.33874;
  unsigned int D.33875;
  int D.33876;
  struct MonoClass * n.159;
  int D.33905;
  struct MonoInst * D.33906;
  int D.33907;
  int D.33908;
  int D.33913;
  struct MonoInst * D.33914;
  int D.33915;
  int D.33916;
  int D.33922;
  struct MonoInst * D.33923;
  guint16 iftmp.160;
  int D.33928;
  int D.33929;
  int D.33937;
  struct MonoInst * D.33938;
  int D.33939;
  int D.33940;
  int D.33944;
  struct MonoInst * D.33945;
  int D.33946;
  int D.33947;
  int D.33951;
  struct MonoInst * D.33952;
  int D.33953;
  int D.33954;
  struct MonoDebugOptions * D.33964;
  int D.33965;
  unsigned int D.33967;
  unsigned int D.33968;
  unsigned int D.33969;
  unsigned int D.33970;
  int D.33971;
  short unsigned int D.33972;
  int D.33973;
  char D.33974;
  unsigned char D.33975;
  unsigned char D.33976;
  unsigned char D.33977;
  struct MonoInst * * sp.161;
  int D.33982;
  int D.33983;
  struct MonoDebugOptions * D.33992;
  int D.33993;
  int D.33995;
  short unsigned int D.33996;
  short unsigned int D.34010;
  void * D.34012;
  struct MonoDebugOptions * D.34019;
  int D.34020;
  struct MonoDebugOptions * D.34028;
  int D.34029;
  unsigned int D.34031;
  int D.34032;
  int D.34035;
  long long int D.34036;
  int D.34037;
  int D.34040;
  short unsigned int D.34043;
  void * D.34044;
  struct MonoInst * * sp.162;
  struct MonoInst * D.34049;
  struct MonoDebugOptions * D.34056;
  int D.34057;
  struct MonoDebugOptions * D.34065;
  int D.34066;
  unsigned int D.34068;
  int D.34069;
  short unsigned int D.34070;
  gint64 iftmp.163;
  int D.34077;
  short unsigned int D.34082;
  int D.34085;
  struct MonoInst * D.34087;
  struct MonoInst * * sp.164;
  struct MonoInst * D.34094;
  struct MonoDebugOptions * D.34101;
  int D.34102;
  short unsigned int D.34108;
  int iftmp.165;
  unsigned int D.34117;
  int D.34118;
  struct MonoDebugOptions * D.34125;
  int D.34126;
  unsigned int D.34128;
  int D.34129;
  struct MonoInst * * sp.166;
  struct MonoInst * D.34134;
  struct MonoDebugOptions * D.34141;
  int D.34142;
  struct MonoDebugOptions * D.34152;
  int D.34153;
  unsigned int D.34155;
  int D.34156;
  struct MonoInst * * sp.167;
  struct MonoInst * D.34161;
  struct MonoDebugOptions * D.34168;
  int D.34169;
  unsigned int D.34171;
  int D.34172;
  struct MonoInst * * sp.168;
  struct MonoInst * D.34177;
  struct MonoDebugOptions * D.34185;
  int D.34186;
  unsigned int D.34188;
  int D.34189;
  struct MonoInst * * sp.169;
  struct MonoInst * D.34194;
  struct MonoDebugOptions * D.34201;
  int D.34202;
  struct MonoDebugOptions * D.34212;
  int D.34213;
  unsigned int D.34215;
  int D.34216;
  struct MonoInst * * sp.170;
  struct MonoInst * D.34221;
  struct MonoDebugOptions * D.34228;
  int D.34229;
  unsigned int D.34231;
  int D.34232;
  struct MonoInst * * sp.171;
  struct MonoInst * D.34237;
  struct MonoDebugOptions * D.34245;
  int D.34246;
  unsigned int D.34248;
  int D.34249;
  struct MonoInst * * sp.172;
  struct MonoInst * D.34254;
  struct MonoDebugOptions * D.34261;
  int D.34262;
  struct MonoDebugOptions * D.34270;
  int D.34271;
  unsigned int D.34273;
  int D.34274;
  struct MonoInst * * sp.173;
  struct MonoInst * D.34279;
  struct MonoDebugOptions * D.34287;
  int D.34288;
  struct MonoDebugOptions * D.34296;
  int D.34297;
  unsigned int D.34299;
  int D.34300;
  struct MonoInst * * sp.174;
  struct MonoInst * D.34305;
  const char * D.34308;
  gchar * D.34309;
  struct MonoDebugOptions * D.34318;
  int D.34319;
  struct MonoDebugOptions * D.34327;
  int D.34328;
  struct MonoClass * klass.175;
  struct MonoClass * klass.176;
  unsigned char D.34335;
  struct MonoDebugOptions * D.34336;
  int D.34337;
  int D.34339;
  unsigned int D.34342;
  int D.34343;
  struct MonoInst * D.34344;
  int D.34345;
  int D.34346;
  unsigned char D.34347;
  unsigned char D.34348;
  int D.34352;
  struct MonoInst * D.34353;
  int D.34354;
  int D.34355;
  unsigned char D.34356;
  unsigned char D.34357;
  struct MonoDebugOptions * D.34372;
  int D.34373;
  struct MonoDebugOptions * D.34381;
  int D.34382;
  struct MonoClass * klass.177;
  struct MonoDebugOptions * D.34388;
  int D.34389;
  int D.34391;
  unsigned char * D.34392;
  unsigned char D.34393;
  int D.34396;
  unsigned int loc_index.178;
  struct MonoDebugOptions * D.34406;
  int D.34407;
  struct MonoType * D.34409;
  unsigned int D.34410;
  short unsigned int D.34411;
  unsigned int D.34412;
  int D.34413;
  unsigned int D.34417;
  struct MonoInst * * D.34418;
  struct MonoInst * D.34419;
  int D.34420;
  sizetype stloc_len.179;
  int D.34424;
  const unsigned char * D.34427;
  unsigned int D.34428;
  int D.34431;
  struct MonoDebugOptions * D.34440;
  int D.34441;
  unsigned int D.34443;
  short unsigned int D.34444;
  unsigned int D.34445;
  int D.34446;
  struct MonoInst * * sp.180;
  struct MonoDebugOptions * D.34457;
  int D.34458;
  struct MonoDebugOptions * D.34466;
  int D.34467;
  unsigned int D.34469;
  unsigned int n.181;
  void * D.34473;
  unsigned int D.34474;
  int D.34475;
  void * D.34482;
  struct MonoInst * D.34483;
  int D.34484;
  struct MonoInst * D.34485;
  int D.34486;
  int D.34487;
  void * D.34488;
  unsigned int D.34489;
  int D.34490;
  struct MonoInst * D.34494;
  struct GList * D.34500;
  void * n.182;
  struct GList * D.34502;
  void * D.34507;
  struct MonoInst * D.34508;
  int D.34509;
  struct MonoInst * D.34510;
  int D.34511;
  int D.34512;
  int D.34513;
  unsigned int D.34514;
  unsigned int D.34515;
  struct MonoInst * * D.34516;
  struct MonoInst * D.34517;
  struct MonoType * D.34518;
  unsigned int D.34519;
  short unsigned int D.34520;
  struct MonoClass * D.34521;
  int D.34522;
  unsigned char D.34523;
  <unnamed type> D.34524;
  unsigned int D.34525;
  int D.34526;
  short unsigned int D.34527;
  struct MonoClass * D.34530;
  void * D.34531;
  unsigned int D.34532;
  int D.34533;
  void * D.34537;
  struct MonoInst * D.34538;
  int D.34539;
  struct MonoInst * D.34540;
  guint16 iftmp.183;
  int D.34545;
  int D.34546;
  unsigned int D.34547;
  int D.34548;
  void * D.34552;
  struct MonoInst * D.34553;
  int D.34554;
  struct MonoInst * D.34555;
  int D.34556;
  int D.34557;
  int D.34558;
  unsigned int D.34559;
  int D.34560;
  struct MonoInst * D.34564;
  unsigned int n.184;
  unsigned int D.34566;
  unsigned int D.34568;
  unsigned int D.34569;
  void * D.34574;
  struct MonoInst * D.34575;
  int D.34576;
  struct MonoInst * D.34577;
  int D.34578;
  int D.34579;
  unsigned int D.34580;
  int D.34581;
  struct MonoInst * D.34585;
  void * D.34587;
  guint16 iftmp.185;
  unsigned int D.34592;
  int D.34593;
  void * D.34597;
  struct MonoInst * D.34598;
  int D.34599;
  struct MonoInst * D.34600;
  int D.34601;
  int D.34602;
  unsigned int D.34603;
  int D.34604;
  struct MonoInst * D.34608;
  struct MonoJumpInfoToken * D.34612;
  struct MonoClass * D.34613;
  unsigned int D.34614;
  int D.34615;
  unsigned int D.34620;
  int D.34621;
  struct MonoString * D.34622;
  void * D.34623;
  struct MonoDebugOptions * D.34635;
  int D.34636;
  struct MonoLoaderError * D.34641;
  struct MonoDebugOptions * D.34642;
  int D.34643;
  struct MonoDebugOptions * D.34647;
  int D.34648;
  int D.34650;
  struct MonoDebugOptions * D.34653;
  int D.34654;
  <unnamed type> D.34658;
  int D.34661;
  <unnamed type> D.34672;
  int D.34683;
  int D.34686;
  struct MonoDebugOptions * D.34692;
  int D.34693;
  int D.34697;
  int D.34700;
  struct MonoGenericContext * D.34706;
  struct MonoGenericInst * D.34707;
  struct MonoDebugOptions * D.34712;
  int D.34713;
  struct MonoDebugOptions * D.34721;
  int D.34722;
  int D.34724;
  struct MonoInst * D.34725;
  guint16 iftmp.186;
  int D.34730;
  int D.34731;
  void * iftmp.187;
  unsigned int D.34736;
  int D.34737;
  short unsigned int D.34741;
  struct MonoDebugOptions * D.34748;
  int D.34749;
  int D.34758;
  struct MonoType * D.34764;
  unsigned int D.34765;
  unsigned int D.34766;
  struct MonoType * D.34768;
  unsigned int D.34769;
  unsigned int D.34770;
  _Bool D.34771;
  long int D.34772;
  long int D.34773;
  void * D.34776;
  struct MonoInst * D.34777;
  int D.34778;
  struct MonoInst * D.34779;
  int D.34780;
  int D.34781;
  unsigned int D.34782;
  int D.34783;
  unsigned int D.34784;
  int D.34785;
  struct MonoInst * * sp.188;
  struct MonoInst * D.34790;
  struct MonoInst * * sp.189;
  struct MonoInst * D.34792;
  struct MonoInst * D.34793;
  struct MonoInst * * sp.190;
  struct MonoInst * D.34795;
  int n.191;
  int D.34797;
  struct MonoDebugOptions * D.34804;
  int D.34805;
  int D.34807;
  struct MonoInst * D.34812;
  int D.34825;
  _Bool D.34829;
  long int D.34830;
  long int D.34831;
  void * D.34836;
  unsigned int D.34837;
  int D.34838;
  struct MonoType * D.34845;
  struct MonoInst * D.34846;
  struct MonoInst * D.34847;
  int D.34848;
  void * D.34849;
  int D.34850;
  unsigned int D.34851;
  unsigned int D.34852;
  struct MonoInst * * D.34853;
  struct MonoInst * D.34854;
  unsigned char D.34855;
  unsigned char D.34856;
  struct MonoClass * D.34857;
  unsigned int D.34858;
  int D.34859;
  struct MonoType * D.34862;
  int D.34863;
  _Bool iftmp.192;
  int D.34867;
  int iftmp.193;
  unsigned char D.34874;
  struct MonoInst * iftmp.194;
  int D.34880;
  int D.34881;
  unsigned int D.34882;
  sizetype D.34885;
  sizetype D.34886;
  sizetype D.34887;
  struct MonoInst * * D.34888;
  struct MonoInst * iftmp.195;
  int D.34891;
  unsigned int D.34892;
  sizetype D.34895;
  sizetype D.34896;
  struct MonoInst * * D.34897;
  _Bool D.34899;
  long int D.34900;
  long int D.34901;
  _Bool D.34904;
  long int D.34905;
  long int D.34906;
  unsigned char D.34909;
  unsigned char D.34910;
  unsigned char D.34911;
  unsigned char D.34912;
  struct MonoDebugOptions * D.34925;
  int D.34926;
  int D.34928;
  struct GSList * D.34931;
  struct MonoMethodSignature * helper_sig_class_init_trampoline.196;
  const char * D.34937;
  const char * D.34938;
  int D.34942;
  struct MonoInst * D.34943;
  int D.34944;
  int D.34945;
  int D.34946;
  struct MonoType * D.34957;
  int D.34958;
  int D.34969;
  struct MonoClass * D.34971;
  int D.34972;
  struct GList * D.34974;
  int D.34978;
  int D.34988;
  const char * D.34993;
  gchar * D.34994;
  int D.35000;
  int D.35006;
  int D.35008;
  unsigned int D.35017;
  short unsigned int D.35018;
  unsigned int D.35019;
  int D.35020;
  struct MonoClass * D.35023;
  struct MonoClass * D.35027;
  struct MonoType * D.35028;
  struct MonoInst * * sp.197;
  struct MonoInst * * sp.198;
  struct MonoDebugOptions * D.35038;
  int D.35039;
  struct MonoDebugOptions * D.35047;
  int D.35048;
  struct MonoClass * klass.199;
  struct MonoDebugOptions * D.35054;
  int D.35055;
  struct MonoDebugOptions * D.35063;
  int D.35064;
  int D.35069;
  void * D.35071;
  struct MonoInst * D.35072;
  int D.35073;
  struct MonoInst * D.35074;
  guint16 iftmp.200;
  int D.35079;
  int D.35080;
  unsigned int D.35081;
  int D.35082;
  void * D.35088;
  struct MonoInst * D.35089;
  int D.35090;
  struct MonoInst * D.35091;
  guint16 iftmp.201;
  int D.35096;
  int D.35097;
  unsigned int D.35098;
  int D.35099;
  void * D.35104;
  void * D.35105;
  unsigned int D.35106;
  int D.35107;
  struct MonoInst * * sp.202;
  struct MonoInst * D.35112;
  unsigned int D.35117;
  unsigned int D.35118;
  unsigned int D.35120;
  unsigned int D.35121;
  struct MonoMethodSignature * D.35122;
  _Bool D.35124;
  long int D.35125;
  long int D.35126;
  struct MonoInst * * sp.203;
  struct MonoInst * D.35130;
  struct MonoInst * * sp.204;
  struct MonoDebugOptions * D.35139;
  int D.35140;
  struct MonoDebugOptions * D.35148;
  int D.35149;
  struct MonoClass * klass.205;
  struct MonoDebugOptions * D.35155;
  int D.35156;
  struct MonoDebugOptions * D.35164;
  int D.35165;
  int D.35170;
  void * D.35172;
  struct MonoInst * D.35173;
  int D.35174;
  struct MonoInst * D.35175;
  guint16 iftmp.206;
  int D.35180;
  int D.35181;
  unsigned int D.35182;
  int D.35183;
  void * D.35189;
  struct MonoInst * D.35190;
  int D.35191;
  struct MonoInst * D.35192;
  guint16 iftmp.207;
  int D.35197;
  int D.35198;
  unsigned int D.35199;
  int D.35200;
  void * D.35205;
  void * D.35206;
  unsigned int D.35207;
  int D.35208;
  struct MonoInst * * sp.208;
  struct MonoInst * D.35213;
  struct MonoMethodSignature * D.35219;
  _Bool D.35221;
  long int D.35222;
  long int D.35223;
  struct MonoInst * * sp.209;
  struct MonoInst * D.35227;
  struct MonoInst * * sp.210;
  struct MonoDebugOptions * D.35236;
  int D.35237;
  struct MonoDebugOptions * D.35245;
  int D.35246;
  struct MonoClass * klass.211;
  struct MonoDebugOptions * D.35252;
  int D.35253;
  int D.35255;
  struct MonoInst * D.35258;
  int D.35259;
  int D.35265;
  void * D.35267;
  struct MonoInst * D.35268;
  int D.35269;
  struct MonoInst * D.35270;
  guint16 iftmp.212;
  int D.35275;
  int D.35276;
  unsigned int D.35277;
  int D.35278;
  void * D.35284;
  struct MonoInst * D.35285;
  int D.35286;
  struct MonoInst * D.35287;
  guint16 iftmp.213;
  int D.35292;
  int D.35293;
  unsigned int D.35294;
  int D.35295;
  void * D.35300;
  void * D.35301;
  unsigned int D.35302;
  int D.35303;
  struct MonoInst * * sp.214;
  struct MonoInst * D.35308;
  struct MonoMethodSignature * D.35314;
  _Bool D.35316;
  long int D.35317;
  long int D.35318;
  struct MonoInst * * sp.215;
  struct MonoInst * D.35322;
  struct MonoInst * * sp.216;
  int D.35325;
  struct MonoInst * * sp.217;
  unsigned int D.35329;
  short unsigned int D.35330;
  unsigned int D.35331;
  int D.35332;
  struct MonoInst * * sp.218;
  struct MonoDebugOptions * D.35343;
  int D.35344;
  struct MonoDebugOptions * D.35352;
  int D.35353;
  struct MonoClass * klass.219;
  struct MonoDebugOptions * D.35359;
  int D.35360;
  int D.35362;
  struct MonoInst * * sp.220;
  struct MonoClass * D.35366;
  struct MonoDebugOptions * D.35373;
  int D.35374;
  int D.35376;
  struct MonoDebugOptions * D.35383;
  int D.35384;
  int D.35388;
  int D.35393;
  int iftmp.221;
  char * D.35406;
  struct MonoDebugOptions * D.35413;
  int D.35414;
  struct MonoDebugOptions * D.35422;
  int D.35423;
  unsigned int D.35425;
  sizetype D.35426;
  struct MonoDebugOptions * D.35436;
  int D.35437;
  unsigned int D.35439;
  unsigned int D.35440;
  int D.35441;
  unsigned char * D.35442;
  int D.35445;
  int D.35446;
  unsigned int D.35447;
  unsigned int D.35448;
  struct MonoBasicBlock * * D.35449;
  struct MonoDebugOptions * D.35459;
  int D.35460;
  unsigned int D.35462;
  unsigned int D.35463;
  int D.35464;
  unsigned char * D.35465;
  int D.35468;
  int D.35469;
  unsigned int D.35470;
  unsigned int D.35471;
  struct MonoBasicBlock * * D.35472;
  struct MonoDebugOptions * D.35481;
  int D.35482;
  unsigned int D.35486;
  int D.35487;
  struct MonoInst * D.35488;
  int D.35489;
  int D.35490;
  int D.35494;
  struct MonoInst * D.35495;
  int D.35496;
  int D.35497;
  _Bool D.35498;
  int D.35499;
  int D.35503;
  struct MonoInst * D.35504;
  int D.35505;
  int D.35506;
  void * D.35507;
  struct MonoBasicBlock * * D.35508;
  struct MonoBasicBlock * * D.35509;
  struct MonoBasicBlock * iftmp.222;
  struct MonoInst * * sp.223;
  struct MonoInst * D.35522;
  struct MonoDebugOptions * D.35530;
  int D.35531;
  struct MonoDebugOptions * D.35539;
  int D.35540;
  struct MonoClass * klass.224;
  struct MonoDebugOptions * D.35546;
  int D.35547;
  int D.35549;
  void * iftmp.225;
  int D.35553;
  unsigned int D.35554;
  unsigned int D.35557;
  unsigned int D.35558;
  struct MonoInst * * D.35559;
  struct MonoInst * iftmp.226;
  struct MonoInst * iftmp.227;
  unsigned char D.35569;
  unsigned char D.35570;
  struct MonoInst * iftmp.228;
  struct MonoClass * D.35575;
  unsigned int D.35576;
  int D.35577;
  struct MonoInst * iftmp.229;
  struct MonoType * D.35584;
  int D.35585;
  _Bool iftmp.230;
  int D.35589;
  int iftmp.231;
  struct MonoInst * iftmp.232;
  unsigned char D.35600;
  struct MonoInst * iftmp.233;
  unsigned char D.35606;
  struct MonoInst * iftmp.234;
  unsigned char D.35612;
  struct MonoInst * iftmp.235;
  struct MonoInst * iftmp.236;
  int D.35620;
  int D.35621;
  unsigned int D.35622;
  struct MonoInst * iftmp.237;
  int D.35629;
  sizetype D.35630;
  sizetype D.35631;
  sizetype D.35632;
  struct MonoInst * * D.35633;
  struct MonoInst * iftmp.238;
  struct MonoInst * iftmp.239;
  int D.35640;
  int D.35641;
  unsigned int D.35642;
  struct MonoInst * iftmp.240;
  int D.35649;
  sizetype D.35650;
  sizetype D.35651;
  sizetype D.35652;
  struct MonoInst * * D.35653;
  _Bool D.35655;
  long int D.35656;
  long int D.35657;
  _Bool D.35660;
  long int D.35661;
  long int D.35662;
  unsigned char D.35665;
  unsigned char D.35666;
  unsigned char D.35667;
  unsigned char D.35668;
  struct MonoInst * * sp.241;
  struct MonoInst * * sp.242;
  unsigned int op.243;
  unsigned int D.35676;
  _Bool D.35677;
  struct MonoDebugOptions * D.35688;
  int D.35689;
  struct MonoDebugOptions * D.35698;
  int D.35699;
  unsigned char D.35703;
  struct MonoDebugOptions * D.35709;
  int D.35710;
  struct MonoDebugOptions * D.35720;
  int D.35721;
  struct MonoDebugOptions * D.35732;
  int D.35733;
  struct MonoDebugOptions * D.35741;
  int D.35742;
  struct MonoClass * klass.244;
  struct MonoDebugOptions * D.35750;
  int D.35751;
  int D.35757;
  gchar * D.35760;
  int D.35765;
  struct MonoDebugOptions * D.35772;
  int D.35773;
  <unnamed type> D.35777;
  struct MonoType * D.35782;
  short unsigned int D.35783;
  int D.35784;
  int D.35785;
  unsigned int iftmp.245;
  unsigned int D.35789;
  int D.35792;
  unsigned int D.35793;
  int D.35797;
  struct MonoDebugOptions * D.35804;
  int D.35805;
  struct MonoMethodSignature * D.35812;
  unsigned int D.35813;
  unsigned int D.35814;
  int D.35817;
  unsigned int D.35818;
  struct MonoClass * D.35820;
  const char * D.35823;
  gchar * D.35824;
  void * D.35827;
  struct MonoInst * D.35828;
  int D.35829;
  struct MonoInst * D.35830;
  guint16 iftmp.246;
  int D.35835;
  int D.35836;
  unsigned int D.35837;
  int D.35838;
  void * D.35842;
  struct MonoInst * D.35843;
  int D.35844;
  struct MonoInst * D.35845;
  guint16 iftmp.247;
  int D.35850;
  int D.35851;
  unsigned int D.35852;
  int D.35853;
  void * D.35857;
  struct MonoInst * D.35858;
  int D.35859;
  struct MonoInst * D.35860;
  int D.35861;
  int D.35862;
  mgreg_t iftmp.248;
  unsigned int D.35866;
  unsigned int D.35868;
  int D.35869;
  struct MonoMethodSignature * D.35877;
  _Bool D.35879;
  long int D.35880;
  long int D.35881;
  int D.35886;
  struct MonoInst * D.35887;
  int D.35888;
  int D.35889;
  int D.35893;
  struct MonoInst * D.35894;
  int D.35895;
  int D.35896;
  int D.35901;
  unsigned int D.35904;
  int D.35905;
  int D.35909;
  struct MonoInst * D.35910;
  unsigned int D.35911;
  short unsigned int D.35912;
  int D.35913;
  int D.35914;
  struct MonoClass * D.35915;
  unsigned int D.35920;
  short unsigned int D.35921;
  int foffset.249;
  struct MonoClass * D.35923;
  unsigned char D.35929;
  unsigned char D.35930;
  unsigned int D.35935;
  unsigned int D.35939;
  int D.35940;
  struct MonoInst * D.35941;
  int D.35942;
  int D.35943;
  unsigned char D.35947;
  struct MonoMethodSignature * D.35954;
  unsigned int D.35955;
  unsigned int D.35956;
  struct MonoMethod * iftmp.250;
  const char * D.35966;
  gchar * D.35967;
  void * D.35970;
  struct MonoInst * D.35971;
  int D.35972;
  struct MonoInst * D.35973;
  guint16 iftmp.251;
  int D.35978;
  int D.35979;
  unsigned int D.35980;
  int D.35981;
  void * D.35985;
  struct MonoInst * D.35986;
  int D.35987;
  struct MonoInst * D.35988;
  guint16 iftmp.252;
  int D.35993;
  int D.35994;
  unsigned int D.35995;
  int D.35996;
  void * D.36000;
  struct MonoInst * D.36001;
  int D.36002;
  struct MonoInst * D.36003;
  int D.36004;
  int D.36005;
  mgreg_t iftmp.253;
  unsigned int D.36010;
  int D.36011;
  struct MonoMethodSignature * D.36019;
  struct MonoInst * * sp.254;
  struct MonoInst * D.36024;
  struct MonoInst * * sp.255;
  struct MonoInst * iftmp.256;
  unsigned int D.36031;
  unsigned int D.36034;
  unsigned int D.36035;
  struct MonoInst * * D.36036;
  struct MonoClass * D.36041;
  _Bool D.36042;
  long int D.36043;
  long int D.36044;
  unsigned char D.36047;
  unsigned char D.36048;
  unsigned int D.36049;
  int D.36050;
  struct MonoType * D.36053;
  int D.36054;
  _Bool iftmp.257;
  int D.36058;
  int iftmp.258;
  unsigned char D.36065;
  struct MonoInst * iftmp.259;
  int D.36071;
  int D.36072;
  unsigned int D.36073;
  sizetype D.36076;
  sizetype D.36077;
  sizetype D.36078;
  struct MonoInst * * D.36079;
  struct MonoInst * iftmp.260;
  int D.36082;
  unsigned int D.36083;
  sizetype D.36086;
  sizetype D.36087;
  struct MonoInst * * D.36088;
  _Bool D.36090;
  long int D.36091;
  long int D.36092;
  _Bool D.36095;
  long int D.36096;
  long int D.36097;
  unsigned char D.36100;
  unsigned char D.36101;
  unsigned char D.36102;
  unsigned char D.36103;
  int D.36109;
  const char * D.36114;
  gchar * D.36115;
  struct MonoInst * * sp.261;
  struct MonoInst * D.36119;
  int D.36123;
  struct MonoInst * D.36124;
  int D.36125;
  int D.36126;
  int D.36130;
  struct MonoInst * D.36131;
  int D.36132;
  int D.36133;
  unsigned int D.36137;
  int D.36138;
  int D.36141;
  struct MonoClass * D.36149;
  struct MonoInst * * sp.262;
  int D.36154;
  struct MonoInst * D.36155;
  int D.36156;
  int D.36157;
  int D.36161;
  struct MonoInst * D.36162;
  int D.36163;
  int D.36164;
  int D.36169;
  unsigned int D.36172;
  int D.36173;
  int D.36177;
  struct MonoInst * D.36178;
  unsigned int D.36179;
  short unsigned int D.36180;
  int D.36181;
  int D.36182;
  unsigned char D.36183;
  <unnamed type> D.36184;
  unsigned int D.36185;
  int D.36186;
  unsigned int D.36191;
  short unsigned int D.36192;
  unsigned int D.36193;
  int D.36194;
  unsigned char D.36198;
  unsigned char D.36199;
  unsigned char D.36202;
  struct MonoInst * * sp.263;
  short unsigned int D.36206;
  int D.36207;
  int D.36208;
  struct MonoDebugOptions * D.36215;
  int D.36216;
  struct MonoDebugOptions * D.36225;
  int D.36226;
  union mono_mutex_t * D.36228;
  _Bool D.36231;
  long int D.36232;
  long int D.36233;
  struct GHashTable * D.36236;
  _Bool D.36241;
  long int D.36242;
  long int D.36243;
  signed int addr.264;
  const char * D.36260;
  gchar * D.36261;
  unsigned int D.36267;
  int D.36268;
  struct MonoInst * D.36269;
  int D.36270;
  int D.36271;
  int D.36272;
  guint16 iftmp.265;
  unsigned int D.36282;
  int D.36283;
  int D.36287;
  struct MonoInst * D.36288;
  int D.36289;
  int D.36290;
  unsigned int D.36294;
  int D.36295;
  struct MonoInst * D.36296;
  int D.36297;
  int D.36298;
  int D.36302;
  struct MonoInst * D.36303;
  int D.36304;
  int D.36305;
  int D.36309;
  struct MonoInst * D.36310;
  int D.36311;
  int D.36312;
  int D.36316;
  struct MonoInst * D.36317;
  int D.36318;
  int D.36319;
  unsigned int D.36323;
  int D.36324;
  struct MonoInst * D.36325;
  int D.36326;
  int D.36327;
  unsigned int D.36331;
  int D.36332;
  struct MonoInst * D.36333;
  int D.36334;
  int D.36335;
  unsigned int D.36339;
  unsigned int addr.266;
  unsigned int D.36345;
  unsigned int D.36346;
  unsigned int D.36347;
  int D.36348;
  struct MonoInst * D.36349;
  int D.36350;
  int D.36351;
  unsigned int idx.267;
  unsigned int D.36353;
  int D.36354;
  unsigned int D.36358;
  int offset.268;
  int D.36360;
  _Bool D.36371;
  long int D.36372;
  long int D.36373;
  void * D.36380;
  struct MonoInst * D.36381;
  int D.36382;
  struct MonoInst * D.36383;
  int D.36384;
  int D.36385;
  int D.36386;
  unsigned int D.36387;
  unsigned int D.36388;
  struct MonoInst * * D.36389;
  struct MonoInst * D.36390;
  struct MonoType * D.36391;
  unsigned int D.36392;
  short unsigned int D.36393;
  struct MonoClass * D.36394;
  int D.36395;
  unsigned char D.36396;
  <unnamed type> D.36397;
  unsigned int D.36398;
  int D.36399;
  short unsigned int D.36400;
  struct MonoClass * D.36403;
  void * D.36404;
  unsigned int D.36405;
  int D.36406;
  struct MonoInst * D.36412;
  void * D.36414;
  struct MonoInst * D.36415;
  int D.36416;
  struct MonoInst * D.36417;
  guint16 iftmp.269;
  int D.36422;
  int D.36423;
  unsigned int D.36424;
  int D.36425;
  int D.36431;
  int D.36434;
  unsigned int D.36437;
  int D.36438;
  int D.36439;
  unsigned int D.36447;
  void * D.36463;
  struct MonoInst * D.36464;
  int D.36465;
  struct MonoInst * D.36466;
  int D.36467;
  int D.36468;
  int D.36469;
  unsigned int D.36470;
  unsigned int D.36471;
  struct MonoInst * * D.36472;
  struct MonoInst * D.36473;
  struct MonoType * D.36474;
  unsigned int D.36475;
  short unsigned int D.36476;
  struct MonoClass * D.36477;
  int D.36478;
  unsigned char D.36479;
  <unnamed type> D.36480;
  unsigned int D.36481;
  int D.36482;
  short unsigned int D.36483;
  struct MonoClass * D.36486;
  void * D.36487;
  unsigned int D.36488;
  int D.36489;
  void * D.36493;
  struct MonoInst * D.36494;
  int D.36495;
  struct MonoInst * D.36496;
  guint16 iftmp.270;
  int D.36501;
  int D.36502;
  unsigned int D.36503;
  int D.36504;
  struct MonoDebugOptions * D.36513;
  int D.36514;
  int D.36518;
  struct GSList * D.36521;
  const char * D.36526;
  const char * D.36527;
  const char * D.36528;
  unsigned int D.36530;
  _Bool D.36533;
  long int D.36534;
  long int D.36535;
  unsigned int D.36538;
  unsigned int D.36539;
  guint16 iftmp.271;
  unsigned int D.36556;
  int D.36557;
  void * D.36564;
  sizetype D.36565;
  _Bool D.36566;
  long int D.36567;
  long int D.36568;
  unsigned int D.36571;
  int D.36572;
  void * D.36577;
  struct MonoInst * D.36578;
  int D.36579;
  struct MonoInst * D.36580;
  int D.36581;
  int D.36582;
  int addr.272;
  unsigned int D.36584;
  int D.36585;
  struct MonoClass * D.36591;
  struct MonoInst * * sp.273;
  int D.36596;
  struct MonoInst * D.36597;
  unsigned int D.36598;
  short unsigned int D.36599;
  int D.36600;
  int D.36601;
  int D.36602;
  struct MonoClass * D.36603;
  unsigned char D.36607;
  unsigned char D.36608;
  struct MonoDebugOptions * D.36615;
  int D.36616;
  int D.36620;
  unsigned int D.36627;
  unsigned int D.36628;
  unsigned char D.36629;
  void * D.36632;
  struct MonoClass * D.36635;
  unsigned int D.36636;
  unsigned int D.36637;
  struct MonoType * D.36640;
  unsigned char D.36641;
  const char * D.36644;
  gchar * D.36645;
  void * D.36648;
  unsigned char D.36649;
  int D.36650;
  unsigned int D.36651;
  int D.36652;
  void * D.36656;
  signed char D.36657;
  int D.36658;
  unsigned int D.36659;
  int D.36660;
  void * D.36664;
  short unsigned int D.36665;
  int D.36666;
  unsigned int D.36667;
  int D.36668;
  void * D.36672;
  short int D.36673;
  int D.36674;
  unsigned int D.36675;
  int D.36676;
  void * D.36680;
  int D.36681;
  unsigned int D.36682;
  int D.36683;
  void * D.36687;
  unsigned int D.36688;
  int D.36689;
  unsigned int D.36690;
  int D.36691;
  void * D.36695;
  void * D.36696;
  unsigned int D.36697;
  int D.36698;
  int D.36702;
  void * D.36705;
  unsigned int D.36706;
  int D.36707;
  void * D.36712;
  unsigned int D.36713;
  int D.36714;
  long long int D.36715;
  struct MonoDebugOptions * D.36727;
  int D.36728;
  int D.36730;
  struct MonoInst * D.36731;
  unsigned int D.36732;
  short unsigned int D.36733;
  int D.36734;
  int D.36735;
  unsigned char D.36736;
  <unnamed type> D.36737;
  unsigned int D.36738;
  int D.36739;
  unsigned char D.36743;
  unsigned char D.36744;
  struct MonoInst * * sp.274;
  struct MonoDebugOptions * D.36752;
  int D.36753;
  struct MonoDebugOptions * D.36761;
  int D.36762;
  struct MonoClass * klass.275;
  struct MonoDebugOptions * D.36768;
  int D.36769;
  unsigned int D.36771;
  short unsigned int D.36772;
  struct MonoClass * D.36773;
  int D.36781;
  struct MonoDebugOptions * D.36790;
  int D.36791;
  struct MonoDebugOptions * D.36799;
  int D.36800;
  struct MonoClass * klass.276;
  struct MonoDebugOptions * D.36806;
  int D.36807;
  unsigned int D.36811;
  int D.36812;
  struct MonoInst * D.36816;
  struct MonoInst * D.36819;
  void * D.36830;
  struct MonoInst * D.36831;
  int D.36832;
  struct MonoInst * D.36833;
  int D.36834;
  int D.36835;
  int D.36836;
  unsigned int D.36837;
  unsigned int D.36838;
  struct MonoInst * * D.36839;
  struct MonoInst * D.36840;
  struct MonoType * D.36841;
  unsigned int D.36842;
  short unsigned int D.36843;
  struct MonoClass * D.36844;
  int D.36845;
  unsigned char D.36846;
  <unnamed type> D.36847;
  unsigned int D.36848;
  int D.36849;
  short unsigned int D.36850;
  struct MonoClass * D.36853;
  void * D.36854;
  unsigned int D.36855;
  int D.36856;
  void * D.36860;
  struct MonoInst * D.36861;
  int D.36862;
  struct MonoInst * D.36863;
  guint16 iftmp.277;
  int D.36868;
  int D.36869;
  unsigned int D.36870;
  int D.36871;
  unsigned char D.36879;
  struct MonoDebugOptions * D.36880;
  int D.36881;
  unsigned int D.36883;
  int D.36884;
  unsigned int D.36888;
  struct MonoInst * * sp.278;
  const guint8 * D.36894;
  int D.36895;
  short unsigned int D.36898;
  int D.36901;
  unsigned int D.36902;
  unsigned int D.36905;
  void * D.36906;
  struct MonoInst * D.36907;
  int D.36908;
  struct MonoInst * D.36909;
  int D.36910;
  int D.36911;
  void * D.36917;
  struct MonoInst * D.36918;
  int D.36919;
  struct MonoInst * D.36920;
  int D.36921;
  int D.36922;
  unsigned int field_token.279;
  struct MonoJumpInfoToken * D.36924;
  unsigned int D.36925;
  int D.36926;
  void * D.36931;
  unsigned int D.36932;
  int D.36933;
  void * D.36937;
  struct MonoInst * D.36938;
  int D.36939;
  struct MonoInst * D.36940;
  int D.36941;
  int D.36942;
  int data_size.280;
  unsigned int D.36944;
  int D.36945;
  struct MonoDebugOptions * D.36955;
  int D.36956;
  struct MonoDebugOptions * D.36964;
  int D.36965;
  unsigned int D.36967;
  int D.36968;
  unsigned char D.36969;
  struct MonoInst * * sp.281;
  struct MonoDebugOptions * D.36980;
  int D.36981;
  struct MonoDebugOptions * D.36989;
  int D.36990;
  struct MonoDebugOptions * D.36998;
  int D.36999;
  unsigned int D.37001;
  unsigned int D.37002;
  struct MonoClass * klass.282;
  struct MonoDebugOptions * D.37007;
  int D.37008;
  unsigned char D.37019;
  struct MonoDebugOptions * D.37020;
  int D.37021;
  struct MonoInst * * sp.283;
  struct MonoDebugOptions * D.37030;
  int D.37031;
  struct MonoDebugOptions * D.37041;
  int D.37042;
  struct MonoClass * klass.284;
  struct MonoDebugOptions * D.37048;
  int D.37049;
  struct MonoClass * klass.285;
  struct MonoDebugOptions * D.37059;
  int D.37060;
  int D.37062;
  unsigned int D.37065;
  short unsigned int D.37066;
  int D.37067;
  unsigned int D.37068;
  int D.37069;
  int D.37076;
  int D.37077;
  unsigned int D.37078;
  unsigned int D.37079;
  unsigned int D.37080;
  unsigned int D.37083;
  int D.37088;
  struct MonoInst * D.37089;
  int D.37090;
  int D.37091;
  int D.37095;
  struct MonoInst * D.37096;
  int D.37097;
  int D.37098;
  unsigned int D.37105;
  int D.37108;
  int D.37113;
  struct MonoInst * D.37114;
  int D.37115;
  int D.37116;
  int D.37120;
  struct MonoInst * D.37121;
  int D.37122;
  int D.37123;
  int D.37128;
  struct MonoInst * D.37129;
  int D.37130;
  int D.37131;
  unsigned char D.37132;
  int D.37137;
  int D.37142;
  struct MonoInst * D.37143;
  int D.37144;
  int D.37145;
  int D.37149;
  struct MonoInst * D.37150;
  int D.37151;
  int D.37152;
  int D.37157;
  struct MonoInst * D.37158;
  int D.37159;
  int D.37160;
  unsigned char D.37161;
  int D.37165;
  struct MonoInst * D.37166;
  int D.37167;
  int D.37168;
  int D.37172;
  struct MonoInst * D.37173;
  int D.37174;
  int D.37175;
  unsigned int D.37180;
  int D.37183;
  int D.37188;
  struct MonoInst * D.37189;
  int D.37190;
  int D.37191;
  int D.37195;
  struct MonoInst * D.37196;
  int D.37197;
  int D.37198;
  int D.37203;
  struct MonoInst * D.37204;
  int D.37205;
  int D.37206;
  unsigned char D.37207;
  int D.37212;
  int D.37217;
  struct MonoInst * D.37218;
  int D.37219;
  int D.37220;
  int D.37224;
  struct MonoInst * D.37225;
  int D.37226;
  int D.37227;
  int D.37232;
  struct MonoInst * D.37233;
  int D.37234;
  int D.37235;
  unsigned char D.37236;
  int D.37240;
  struct MonoInst * D.37241;
  int D.37242;
  int D.37243;
  int D.37247;
  struct MonoInst * D.37248;
  int D.37249;
  int D.37250;
  int D.37255;
  struct MonoInst * D.37256;
  int D.37257;
  int D.37258;
  unsigned char D.37259;
  unsigned char D.37260;
  unsigned int D.37264;
  short unsigned int D.37265;
  unsigned int D.37266;
  int D.37267;
  unsigned int D.37272;
  short unsigned int D.37273;
  unsigned int D.37274;
  int D.37275;
  struct MonoInst * * sp.286;
  struct MonoDebugOptions * D.37289;
  int D.37290;
  struct MonoDebugOptions * D.37300;
  int D.37301;
  struct MonoClass * klass.287;
  struct MonoDebugOptions * D.37307;
  int D.37308;
  struct MonoClass * klass.288;
  struct MonoDebugOptions * D.37318;
  int D.37319;
  struct MonoDebugOptions * D.37330;
  int D.37331;
  unsigned int D.37333;
  int D.37334;
  struct MonoInst * * sp.289;
  struct MonoInst * D.37339;
  unsigned int D.37340;
  unsigned int D.37341;
  const char * D.37344;
  gchar * D.37345;
  struct MonoDebugOptions * D.37354;
  int D.37355;
  struct MonoDebugOptions * D.37363;
  int D.37364;
  unsigned int D.37366;
  struct MonoClass * klass.290;
  struct MonoDebugOptions * D.37371;
  int D.37372;
  struct MonoInst * iftmp.291;
  struct MonoClass * D.37380;
  struct MonoType * D.37381;
  int D.37382;
  struct MonoInst * D.37383;
  int D.37384;
  int D.37385;
  unsigned char D.37386;
  unsigned char D.37387;
  struct MonoClass * D.37388;
  unsigned int D.37389;
  int D.37390;
  struct MonoType * D.37393;
  int D.37394;
  _Bool iftmp.292;
  int D.37398;
  int iftmp.293;
  unsigned char D.37405;
  struct MonoInst * iftmp.294;
  int D.37411;
  int D.37412;
  unsigned int D.37413;
  sizetype D.37416;
  sizetype D.37417;
  sizetype D.37418;
  struct MonoInst * * D.37419;
  struct MonoInst * iftmp.295;
  int D.37422;
  unsigned int D.37423;
  sizetype D.37426;
  sizetype D.37427;
  struct MonoInst * * D.37428;
  _Bool D.37430;
  long int D.37431;
  long int D.37432;
  _Bool D.37435;
  long int D.37436;
  long int D.37437;
  unsigned char D.37440;
  unsigned char D.37441;
  unsigned char D.37442;
  unsigned char D.37443;
  int D.37447;
  struct MonoInst * D.37448;
  int D.37449;
  int D.37450;
  int D.37451;
  int D.37457;
  struct MonoInst * D.37458;
  int D.37459;
  int D.37460;
  int D.37461;
  int D.37465;
  struct MonoInst * D.37466;
  int D.37467;
  int D.37468;
  struct MonoInst * * sp.296;
  const char * D.37479;
  gchar * D.37480;
  struct MonoDebugOptions * D.37489;
  int D.37490;
  struct MonoDebugOptions * D.37498;
  int D.37499;
  unsigned int D.37501;
  struct MonoClass * klass.297;
  struct MonoDebugOptions * D.37506;
  int D.37507;
  int D.37509;
  struct MonoInst * D.37510;
  int D.37511;
  int D.37512;
  int D.37513;
  unsigned int D.37514;
  unsigned int D.37515;
  struct MonoInst * * D.37516;
  struct MonoInst * D.37517;
  unsigned char D.37518;
  unsigned char D.37519;
  struct MonoClass * D.37520;
  unsigned int D.37521;
  int D.37522;
  struct MonoType * D.37525;
  int D.37526;
  _Bool iftmp.298;
  int D.37530;
  int iftmp.299;
  unsigned char D.37537;
  struct MonoInst * iftmp.300;
  int D.37543;
  int D.37544;
  unsigned int D.37545;
  sizetype D.37548;
  sizetype D.37549;
  sizetype D.37550;
  struct MonoInst * * D.37551;
  struct MonoInst * iftmp.301;
  int D.37554;
  unsigned int D.37555;
  sizetype D.37558;
  sizetype D.37559;
  struct MonoInst * * D.37560;
  _Bool D.37562;
  long int D.37563;
  long int D.37564;
  _Bool D.37567;
  long int D.37568;
  long int D.37569;
  unsigned char D.37572;
  unsigned char D.37573;
  unsigned char D.37574;
  unsigned char D.37575;
  unsigned int D.37581;
  int D.37582;
  struct MonoInst * D.37583;
  int D.37584;
  int D.37585;
  int D.37586;
  int D.37587;
  int D.37591;
  struct MonoInst * D.37592;
  int D.37593;
  int D.37594;
  int D.37598;
  struct MonoInst * D.37599;
  int D.37600;
  int D.37601;
  unsigned int D.37608;
  unsigned int D.37609;
  int D.37610;
  struct MonoInst * D.37611;
  guint16 iftmp.302;
  int D.37616;
  int D.37617;
  int D.37621;
  struct MonoInst * D.37622;
  int D.37623;
  int D.37624;
  int D.37628;
  struct MonoInst * D.37629;
  int D.37630;
  int D.37631;
  int D.37635;
  struct MonoInst * D.37636;
  int D.37637;
  int D.37638;
  int D.37643;
  struct MonoInst * D.37644;
  int D.37645;
  int D.37646;
  int D.37647;
  int D.37651;
  struct MonoInst * D.37652;
  int D.37653;
  int D.37654;
  int klass.303;
  int D.37659;
  struct MonoInst * D.37660;
  int D.37661;
  int D.37662;
  unsigned int D.37666;
  short unsigned int D.37667;
  unsigned int D.37668;
  int D.37669;
  struct MonoClass * D.37672;
  struct MonoInst * * sp.304;
  struct MonoDebugOptions * D.37683;
  int D.37684;
  struct MonoDebugOptions * D.37692;
  int D.37693;
  unsigned int D.37695;
  int D.37700;
  unsigned int D.37701;
  void * handle_class.305;
  struct MonoClass * D.37703;
  struct MonoClass * handle_class.306;
  struct MonoDebugOptions * D.37709;
  int D.37710;
  int D.37714;
  unsigned int D.37715;
  unsigned int D.37716;
  int D.37722;
  struct MonoClass * D.37726;
  struct MonoClass * D.37728;
  struct MonoClass * D.37731;
  struct MonoClass * D.37733;
  struct MonoType * D.37742;
  void * D.37743;
  struct MonoInst * D.37744;
  int D.37745;
  struct MonoInst * D.37746;
  guint16 iftmp.307;
  int D.37751;
  int D.37752;
  unsigned int D.37753;
  int D.37754;
  void * D.37758;
  struct MonoInst * D.37759;
  int D.37760;
  struct MonoInst * D.37761;
  int D.37762;
  int D.37763;
  unsigned int D.37764;
  int D.37765;
  struct MonoInst * D.37771;
  void * D.37773;
  struct MonoInst * D.37774;
  int D.37775;
  struct MonoInst * D.37776;
  int D.37777;
  int D.37778;
  unsigned int D.37779;
  int D.37780;
  int D.37784;
  struct MonoInst * D.37785;
  int D.37786;
  int D.37787;
  int D.37788;
  unsigned int D.37789;
  unsigned int D.37790;
  struct MonoInst * * D.37791;
  struct MonoInst * D.37792;
  unsigned char D.37793;
  unsigned char D.37794;
  struct MonoClass * D.37795;
  unsigned int D.37796;
  int D.37797;
  struct MonoType * D.37800;
  int D.37801;
  _Bool iftmp.308;
  int D.37805;
  int iftmp.309;
  unsigned char D.37812;
  struct MonoInst * iftmp.310;
  int D.37818;
  int D.37819;
  unsigned int D.37820;
  sizetype D.37823;
  sizetype D.37824;
  sizetype D.37825;
  struct MonoInst * * D.37826;
  struct MonoInst * iftmp.311;
  int D.37829;
  unsigned int D.37830;
  sizetype D.37833;
  sizetype D.37834;
  struct MonoInst * * D.37835;
  _Bool D.37837;
  long int D.37838;
  long int D.37839;
  _Bool D.37842;
  long int D.37843;
  long int D.37844;
  unsigned char D.37847;
  unsigned char D.37848;
  unsigned char D.37849;
  unsigned char D.37850;
  int D.37854;
  struct MonoInst * D.37855;
  int D.37856;
  int D.37857;
  int D.37858;
  unsigned int D.37862;
  short unsigned int D.37863;
  unsigned int D.37864;
  int D.37865;
  struct MonoClass * D.37868;
  int D.37876;
  unsigned int D.37879;
  struct MonoClass * D.37881;
  int D.27459;
  int iftmp.312;
  int D.27458;
  const char[18] * D.37886;
  unsigned char D.37887;
  int D.37888;
  unsigned char D.37889;
  int D.37890;
  const unsigned char * D.37895;
  unsigned char D.37896;
  int D.37897;
  const unsigned char * D.37898;
  unsigned char D.37899;
  int D.37900;
  const unsigned char * D.37905;
  unsigned char D.37906;
  int D.37907;
  const unsigned char * D.37908;
  unsigned char D.37909;
  int D.37910;
  const unsigned char * D.37915;
  unsigned char D.37916;
  int D.37917;
  const unsigned char * D.37918;
  unsigned char D.37919;
  int D.37920;
  struct MonoImage * D.37932;
  unsigned int D.37933;
  struct MonoClass * D.37934;
  struct MonoJumpInfoToken * D.37937;
  struct MonoClass * D.37938;
  unsigned int D.37939;
  int D.37940;
  unsigned int D.37946;
  int D.37947;
  struct MonoJumpInfoToken * D.37952;
  unsigned int D.37953;
  int D.37954;
  struct MonoReflectionType * D.37959;
  unsigned int D.37960;
  int D.37961;
  struct MonoClass * D.37969;
  struct MonoJumpInfoToken * D.37980;
  unsigned int D.37981;
  int D.37982;
  unsigned int D.37987;
  int D.37988;
  int D.37992;
  struct MonoInst * D.37993;
  int D.37994;
  int D.37995;
  int D.37996;
  unsigned int D.37997;
  unsigned int D.37998;
  struct MonoInst * * D.37999;
  struct MonoInst * D.38000;
  unsigned char D.38001;
  unsigned char D.38002;
  struct MonoClass * D.38003;
  unsigned int D.38004;
  int D.38005;
  struct MonoType * D.38008;
  int D.38009;
  _Bool iftmp.313;
  int D.38013;
  int iftmp.314;
  unsigned char D.38020;
  struct MonoInst * iftmp.315;
  int D.38026;
  int D.38027;
  unsigned int D.38028;
  sizetype D.38031;
  sizetype D.38032;
  sizetype D.38033;
  struct MonoInst * * D.38034;
  struct MonoInst * iftmp.316;
  int D.38037;
  unsigned int D.38038;
  sizetype D.38041;
  sizetype D.38042;
  struct MonoInst * * D.38043;
  _Bool D.38045;
  long int D.38046;
  long int D.38047;
  _Bool D.38050;
  long int D.38051;
  long int D.38052;
  unsigned char D.38055;
  unsigned char D.38056;
  unsigned char D.38057;
  unsigned char D.38058;
  int D.38062;
  struct MonoInst * D.38063;
  int D.38064;
  int D.38065;
  int D.38066;
  unsigned int D.38070;
  short unsigned int D.38071;
  unsigned int D.38072;
  int D.38073;
  struct MonoClass * D.38076;
  struct MonoInst * * sp.317;
  struct MonoDebugOptions * D.38087;
  int D.38088;
  struct MonoDebugOptions * D.38109;
  int D.38110;
  unsigned int D.38112;
  sizetype D.38113;
  struct MonoDebugOptions * D.38121;
  int D.38122;
  signed char D.38124;
  sizetype D.38125;
  sizetype D.38126;
  unsigned int D.38127;
  unsigned int D.38128;
  unsigned int D.38131;
  unsigned int D.38132;
  unsigned int D.38135;
  int iftmp.318;
  int D.38142;
  unsigned int D.38143;
  unsigned int D.38148;
  unsigned int D.38149;
  int D.38150;
  int D.38151;
  struct MonoInst * D.38152;
  int D.38153;
  int D.38154;
  int D.38155;
  int D.38159;
  struct MonoInst * D.38160;
  int D.38161;
  int D.38162;
  unsigned int D.38165;
  unsigned int D.38166;
  int D.38167;
  unsigned char * D.38171;
  int D.38174;
  int D.38175;
  unsigned int D.38176;
  unsigned int D.38177;
  struct MonoBasicBlock * * D.38178;
  void * D.38194;
  struct MonoBasicBlock * * D.38195;
  struct MonoBasicBlock * * D.38196;
  unsigned int D.38202;
  unsigned int D.38203;
  int D.38204;
  int D.38222;
  struct MonoInst * D.38223;
  int D.38224;
  int D.38225;
  unsigned char * D.38229;
  int D.38232;
  int D.38233;
  unsigned int D.38234;
  unsigned int D.38235;
  struct MonoBasicBlock * * D.38236;
  unsigned int D.38253;
  unsigned int D.38254;
  struct MonoBasicBlock * * D.38255;
  _Bool D.38256;
  long int D.38257;
  long int D.38258;
  struct MonoDebugOptions * D.38275;
  int D.38276;
  unsigned int D.38278;
  unsigned int D.38279;
  int D.38280;
  unsigned char * D.38281;
  int D.38284;
  int D.38285;
  unsigned int D.38286;
  unsigned int D.38287;
  struct MonoBasicBlock * * D.38288;
  struct MonoDebugOptions * D.38301;
  int D.38302;
  unsigned int D.38304;
  unsigned int D.38305;
  int D.38306;
  _Bool D.38312;
  long int D.38313;
  long int D.38314;
  struct MonoDebugOptions * D.38323;
  int D.38324;
  const unsigned char * D.38326;
  char * D.38329;
  _Bool D.38330;
  long int D.38331;
  long int D.38332;
  struct MonoMethodSignature * D.38335;
  short unsigned int D.38336;
  int D.38337;
  struct MonoDebugOptions * D.38344;
  int D.38345;
  unsigned int D.38347;
  unsigned int D.38348;
  sizetype D.38349;
  const void * D.38350;
  struct MonoType * D.38351;
  int D.38352;
  struct MonoInst * * sp.319;
  int num_calls.320;
  int D.38357;
  struct MonoDebugOptions * D.38364;
  int D.38365;
  struct MonoDebugOptions * D.38373;
  int D.38374;
  gint32 * D.38378;
  guint16 iftmp.321;
  unsigned int D.38385;
  int D.38386;
  struct MonoInst * * sp.322;
  unsigned int D.38391;
  int D.38392;
  struct MonoInst * * sp.323;
  int num_calls.324;
  int D.38398;
  struct MonoDebugOptions * D.38407;
  int D.38408;
  struct MonoDebugOptions * D.38416;
  int D.38417;
  _Bool D.38419;
  long int D.38420;
  long int D.38421;
  guint16 iftmp.325;
  const char * D.38428;
  unsigned int D.38429;
  int D.38430;
  struct MonoInst * * sp.326;
  int num_calls.327;
  int D.38436;
  struct MonoDebugOptions * D.38443;
  int D.38444;
  struct MonoDebugOptions * D.38452;
  int D.38453;
  guint16 iftmp.328;
  unsigned int D.38461;
  int D.38462;
  _Bool D.38467;
  long int D.38468;
  long int D.38469;
  unsigned int D.38472;
  int D.38473;
  struct MonoInst * * sp.329;
  struct MonoDebugOptions * D.38484;
  int D.38485;
  struct MonoInst * iftmp.330;
  int D.38491;
  struct MonoInst * D.38492;
  int D.38493;
  int D.38494;
  unsigned char D.38495;
  unsigned char D.38496;
  struct MonoClass * D.38497;
  unsigned int D.38498;
  int D.38499;
  struct MonoType * D.38502;
  int D.38503;
  _Bool iftmp.331;
  int D.38507;
  int iftmp.332;
  unsigned char D.38514;
  struct MonoInst * iftmp.333;
  int D.38520;
  int D.38521;
  unsigned int D.38522;
  sizetype D.38525;
  sizetype D.38526;
  sizetype D.38527;
  struct MonoInst * * D.38528;
  struct MonoInst * iftmp.334;
  int D.38531;
  unsigned int D.38532;
  sizetype D.38535;
  sizetype D.38536;
  struct MonoInst * * D.38537;
  _Bool D.38539;
  long int D.38540;
  long int D.38541;
  _Bool D.38544;
  long int D.38545;
  long int D.38546;
  unsigned char D.38549;
  unsigned char D.38550;
  unsigned char D.38551;
  unsigned char D.38552;
  struct MonoInst * * sp.335;
  struct MonoDebugOptions * D.38563;
  int D.38564;
  struct MonoDebugOptions * D.38572;
  int D.38573;
  void * klass.336;
  void * D.38580;
  struct MonoInst * D.38581;
  int D.38582;
  struct MonoInst * D.38583;
  int D.38584;
  int D.38585;
  int D.38586;
  unsigned int D.38587;
  unsigned int D.38588;
  struct MonoInst * * D.38589;
  struct MonoInst * D.38590;
  struct MonoType * D.38591;
  unsigned int D.38592;
  short unsigned int D.38593;
  struct MonoClass * D.38594;
  int D.38595;
  unsigned char D.38596;
  <unnamed type> D.38597;
  unsigned int D.38598;
  int D.38599;
  short unsigned int D.38600;
  struct MonoClass * D.38603;
  void * D.38604;
  unsigned int D.38605;
  int D.38606;
  void * D.38610;
  struct MonoInst * D.38611;
  int D.38612;
  struct MonoInst * D.38613;
  guint16 iftmp.337;
  int D.38618;
  int D.38619;
  unsigned int D.38620;
  int D.38621;
  struct MonoInst * * sp.338;
  struct MonoInst * D.38626;
  int num_calls.339;
  int D.38628;
  struct MonoDebugOptions * D.38635;
  int D.38636;
  unsigned int D.38638;
  int D.38639;
  struct MonoInst * * sp.340;
  struct MonoDebugOptions * D.38650;
  int D.38651;
  struct MonoDebugOptions * D.38659;
  int D.38660;
  void * klass.341;
  _Bool D.38663;
  long int D.38664;
  long int D.38665;
  int D.38668;
  struct MonoInst * D.38669;
  int D.38670;
  int D.38671;
  int D.38672;
  unsigned int D.38673;
  unsigned int D.38674;
  struct MonoInst * * D.38675;
  struct MonoInst * D.38676;
  unsigned char D.38677;
  unsigned char D.38678;
  struct MonoClass * D.38679;
  unsigned int D.38680;
  int D.38681;
  struct MonoType * D.38684;
  int D.38685;
  _Bool iftmp.342;
  int D.38689;
  int iftmp.343;
  unsigned char D.38696;
  struct MonoInst * iftmp.344;
  int D.38702;
  int D.38703;
  unsigned int D.38704;
  sizetype D.38707;
  sizetype D.38708;
  sizetype D.38709;
  struct MonoInst * * D.38710;
  struct MonoInst * iftmp.345;
  int D.38713;
  unsigned int D.38714;
  sizetype D.38717;
  sizetype D.38718;
  struct MonoInst * * D.38719;
  _Bool D.38721;
  long int D.38722;
  long int D.38723;
  _Bool D.38726;
  long int D.38727;
  long int D.38728;
  unsigned char D.38731;
  unsigned char D.38732;
  unsigned char D.38733;
  unsigned char D.38734;
  unsigned int D.38738;
  short unsigned int D.38739;
  unsigned char D.38740;
  <unnamed type> D.38741;
  unsigned int D.38742;
  int D.38743;
  short unsigned int D.38744;
  struct MonoClass * D.38747;
  struct MonoInst * * sp.346;
  _Bool D.38752;
  long int D.38753;
  long int D.38754;
  struct MonoMethodSignature * D.38757;
  unsigned int D.38758;
  unsigned int D.38759;
  _Bool D.38760;
  long int D.38761;
  long int D.38762;
  struct MonoDebugOptions * D.38771;
  int D.38772;
  struct MonoDebugOptions * D.38780;
  int D.38781;
  void * klass.347;
  unsigned int D.38786;
  _Bool D.38787;
  long int D.38788;
  long int D.38789;
  unsigned char D.38792;
  unsigned char D.38793;
  unsigned int D.38794;
  int D.38795;
  struct MonoType * D.38798;
  int D.38799;
  _Bool iftmp.348;
  int D.38803;
  int iftmp.349;
  unsigned char D.38810;
  struct MonoInst * iftmp.350;
  int D.38816;
  unsigned int D.38817;
  sizetype D.38820;
  sizetype D.38821;
  sizetype D.38822;
  struct MonoInst * * D.38823;
  struct MonoInst * iftmp.351;
  int D.38826;
  unsigned int D.38827;
  sizetype D.38830;
  sizetype D.38831;
  struct MonoInst * * D.38832;
  _Bool D.38834;
  long int D.38835;
  long int D.38836;
  _Bool D.38839;
  long int D.38840;
  long int D.38841;
  unsigned char D.38844;
  unsigned char D.38845;
  unsigned char D.38846;
  unsigned char D.38847;
  unsigned int D.38852;
  int D.38853;
  struct MonoDebugOptions * D.38863;
  int D.38864;
  struct MonoDebugOptions * D.38875;
  int D.38876;
  struct MonoDebugOptions * D.38884;
  int D.38885;
  unsigned int D.38887;
  unsigned int token.352;
  void * klass.353;
  struct MonoInst * * sp.354;
  struct MonoDebugOptions * D.38900;
  int D.38901;
  struct MonoDebugOptions * D.38909;
  int D.38910;
  guint16 iftmp.355;
  void * D.38916;
  unsigned int D.38917;
  int D.38918;
  struct MonoInst * * sp.356;
  int num_calls.357;
  int D.38924;
  struct MonoDebugOptions * D.38931;
  int D.38932;
  struct MonoDebugOptions * D.38940;
  int D.38941;
  unsigned int D.38943;
  _Bool D.38944;
  long int D.38945;
  long int D.38946;
  <unnamed type> key.358;
  unsigned int D.38956;
  int D.38957;
  struct MonoInst * * sp.359;
  struct MonoInst * D.38963;
  struct MonoInst * D.38966;
  unsigned char D.38967;
  unsigned char D.38968;
  int D.38969;
  int D.38970;
  unsigned int D.38974;
  int num_calls.360;
  int D.38976;
  struct MonoDebugOptions * D.38983;
  int D.38984;
  unsigned int D.38986;
  int D.38987;
  struct MonoInst * D.38988;
  unsigned int D.38989;
  int D.38990;
  int D.38994;
  struct MonoInst * D.38995;
  int D.38996;
  int D.38997;
  struct MonoInst * D.38998;
  int D.38999;
  unsigned int D.39005;
  unsigned int D.39006;
  int D.39007;
  int D.39011;
  struct MonoInst * D.39012;
  int D.39013;
  int D.39014;
  int D.39015;
  int D.39019;
  struct MonoInst * D.39020;
  int D.39021;
  int D.39022;
  unsigned int D.39025;
  unsigned int D.39026;
  int D.39027;
  unsigned char * D.39031;
  int D.39034;
  int D.39035;
  unsigned int D.39036;
  unsigned int D.39037;
  struct MonoBasicBlock * * D.39038;
  void * D.39054;
  struct MonoBasicBlock * * D.39055;
  struct MonoBasicBlock * * D.39056;
  unsigned int D.39062;
  unsigned int D.39063;
  int D.39064;
  int D.39085;
  struct MonoInst * D.39086;
  int D.39087;
  int D.39088;
  int D.39089;
  int D.39093;
  struct MonoInst * D.39094;
  int D.39095;
  int D.39096;
  unsigned int D.39099;
  unsigned int D.39100;
  int D.39101;
  unsigned char * D.39105;
  int D.39108;
  int D.39109;
  unsigned int D.39110;
  unsigned int D.39111;
  struct MonoBasicBlock * * D.39112;
  void * D.39128;
  struct MonoBasicBlock * * D.39129;
  struct MonoBasicBlock * * D.39130;
  unsigned int D.39136;
  unsigned int D.39137;
  int D.39138;
  void * D.39158;
  struct MonoInst * D.39159;
  int D.39160;
  struct MonoInst * D.39161;
  int D.39162;
  int D.39163;
  unsigned int D.39164;
  int D.39165;
  void * D.39170;
  unsigned int D.39171;
  int D.39172;
  int D.39176;
  struct MonoInst * D.39177;
  int D.39178;
  int D.39179;
  unsigned char * D.39185;
  int D.39188;
  int D.39189;
  unsigned int D.39190;
  unsigned int D.39191;
  struct MonoBasicBlock * * D.39192;
  unsigned int D.39207;
  void * D.39208;
  struct MonoInst * D.39209;
  int D.39210;
  struct MonoInst * D.39211;
  int D.39212;
  int D.39213;
  struct MonoDebugOptions * D.39223;
  int D.39224;
  struct MonoDebugOptions * D.39232;
  int D.39233;
  struct MonoClass * D.39235;
  struct MonoType * D.39236;
  int D.39237;
  struct MonoInst * D.39238;
  int D.39239;
  int D.39240;
  int D.39241;
  unsigned int D.39242;
  unsigned int D.39243;
  struct MonoInst * * D.39244;
  struct MonoInst * D.39245;
  unsigned char D.39246;
  unsigned char D.39247;
  struct MonoClass * D.39248;
  unsigned int D.39249;
  int D.39250;
  struct MonoType * D.39253;
  int D.39254;
  _Bool iftmp.361;
  int D.39258;
  int iftmp.362;
  unsigned char D.39265;
  struct MonoInst * iftmp.363;
  int D.39271;
  int D.39272;
  unsigned int D.39273;
  sizetype D.39276;
  sizetype D.39277;
  sizetype D.39278;
  struct MonoInst * * D.39279;
  struct MonoInst * iftmp.364;
  int D.39282;
  unsigned int D.39283;
  sizetype D.39286;
  sizetype D.39287;
  struct MonoInst * * D.39288;
  _Bool D.39290;
  long int D.39291;
  long int D.39292;
  _Bool D.39295;
  long int D.39296;
  long int D.39297;
  unsigned char D.39300;
  unsigned char D.39301;
  unsigned char D.39302;
  unsigned char D.39303;
  int D.39307;
  unsigned int D.39311;
  short unsigned int D.39312;
  unsigned int D.39313;
  int D.39314;
  struct MonoClass * D.39317;
  struct MonoInst * * sp.365;
  struct MonoDebugOptions * D.39328;
  int D.39329;
  int D.39331;
  struct MonoInst * D.39332;
  short unsigned int D.39333;
  short unsigned int D.39334;
  int D.39335;
  int D.39336;
  short unsigned int D.39337;
  unsigned char D.39338;
  struct MonoDebugOptions * D.39345;
  int D.39346;
  unsigned int D.39357;
  int D.39358;
  int D.39361;
  struct MonoInst * * sp.366;
  struct MonoDebugOptions * D.39372;
  int D.39373;
  struct MonoDebugOptions * D.39381;
  int D.39382;
  unsigned int D.39384;
  struct MonoLoaderError * D.39388;
  struct MonoDebugOptions * D.39389;
  int D.39390;
  int D.39396;
  gchar * D.39399;
  <unnamed type> D.39400;
  int D.39403;
  <unnamed type> D.39414;
  unsigned char * D.39419;
  int D.39422;
  const unsigned char * D.39427;
  unsigned int D.39428;
  struct MonoClass * D.39431;
  struct MonoClass * D.39432;
  struct MonoMethodSignature * D.39438;
  struct MonoDebugOptions * D.39439;
  int D.39440;
  <unnamed type> D.39442;
  int D.39445;
  struct MonoMethodSignature * D.39448;
  short unsigned int D.39449;
  struct MonoMethodSignature * D.39450;
  short unsigned int D.39451;
  int D.39454;
  struct MonoInst * D.39455;
  int D.39456;
  int D.39457;
  int D.39458;
  int D.39462;
  struct MonoInst * D.39463;
  int D.39464;
  int D.39465;
  char * D.39473;
  struct MonoInst * D.39474;
  struct MonoInst * argconst.367;
  struct MonoInst * * sp.368;
  int num_calls.369;
  int D.39479;
  struct MonoDebugOptions * D.39486;
  int D.39487;
  struct MonoDebugOptions * D.39495;
  int D.39496;
  unsigned int D.39498;
  struct MonoLoaderError * D.39502;
  struct MonoDebugOptions * D.39503;
  int D.39504;
  <unnamed type> D.39506;
  int D.39509;
  <unnamed type> D.39520;
  struct MonoInst * D.39523;
  struct MonoInst * * sp.370;
  struct MonoInst * D.39527;
  struct MonoInst * * sp.371;
  struct MonoInst * D.39530;
  int num_calls.372;
  int D.39532;
  struct MonoDebugOptions * D.39539;
  int D.39540;
  unsigned char * D.39542;
  struct MonoDebugOptions * D.39549;
  int D.39550;
  short unsigned int D.39552;
  struct MonoDebugOptions * D.39559;
  int D.39560;
  unsigned int D.39562;
  short unsigned int D.39563;
  unsigned int D.39564;
  int D.39565;
  struct MonoClass * D.39568;
  struct MonoInst * * sp.373;
  struct MonoDebugOptions * D.39579;
  int D.39580;
  struct MonoDebugOptions * D.39588;
  int D.39589;
  short unsigned int D.39591;
  struct MonoDebugOptions * D.39598;
  int D.39599;
  unsigned int D.39601;
  int D.39602;
  int D.39605;
  _Bool iftmp.374;
  int D.39609;
  int iftmp.375;
  struct MonoInst * iftmp.376;
  struct MonoInst * iftmp.377;
  _Bool D.39628;
  long int D.39629;
  long int D.39630;
  _Bool D.39633;
  long int D.39634;
  long int D.39635;
  unsigned char D.39638;
  unsigned char D.39639;
  unsigned char D.39640;
  unsigned char D.39641;
  struct MonoInst * * sp.378;
  struct MonoDebugOptions * D.39652;
  int D.39653;
  struct MonoDebugOptions * D.39661;
  int D.39662;
  short unsigned int D.39664;
  struct MonoDebugOptions * D.39671;
  int D.39672;
  struct MonoType * * D.39676;
  struct MonoType * D.39677;
  int D.39678;
  struct MonoDebugOptions * D.39685;
  int D.39686;
  unsigned int D.39688;
  short unsigned int D.39689;
  struct MonoClass * D.39692;
  struct MonoDebugOptions * D.39702;
  int D.39703;
  struct MonoDebugOptions * D.39711;
  int D.39712;
  short unsigned int D.39714;
  struct MonoDebugOptions * D.39721;
  int D.39722;
  unsigned int D.39724;
  short unsigned int D.39725;
  unsigned int D.39726;
  int D.39727;
  struct MonoClass * D.39730;
  struct MonoInst * * sp.379;
  struct MonoDebugOptions * D.39741;
  int D.39742;
  struct MonoDebugOptions * D.39750;
  int D.39751;
  short unsigned int D.39753;
  struct MonoDebugOptions * D.39760;
  int D.39761;
  unsigned char D.39765;
  unsigned char D.39766;
  unsigned int D.39767;
  int D.39768;
  struct MonoType * D.39771;
  int D.39772;
  _Bool iftmp.380;
  int D.39776;
  int iftmp.381;
  unsigned char D.39783;
  struct MonoInst * iftmp.382;
  int D.39789;
  unsigned int D.39790;
  sizetype D.39793;
  sizetype D.39794;
  sizetype D.39795;
  struct MonoInst * * D.39796;
  struct MonoInst * iftmp.383;
  int D.39799;
  unsigned int D.39800;
  sizetype D.39803;
  sizetype D.39804;
  struct MonoInst * * D.39805;
  _Bool D.39807;
  long int D.39808;
  long int D.39809;
  _Bool D.39812;
  long int D.39813;
  long int D.39814;
  unsigned char D.39817;
  unsigned char D.39818;
  unsigned char D.39819;
  unsigned char D.39820;
  struct MonoInst * * sp.384;
  struct MonoDebugOptions * D.39831;
  int D.39832;
  struct MonoDebugOptions * D.39840;
  int D.39841;
  short unsigned int D.39843;
  struct MonoDebugOptions * D.39850;
  int D.39851;
  int D.39855;
  struct MonoDebugOptions * D.39862;
  int D.39863;
  struct MonoDebugOptions * D.39871;
  int D.39872;
  struct MonoDebugOptions * D.39880;
  int D.39881;
  unsigned int D.39884;
  int D.39885;
  unsigned char D.39891;
  struct MonoInst * * sp.385;
  struct MonoDebugOptions * D.39899;
  int D.39900;
  struct MonoDebugOptions * D.39909;
  int D.39910;
  unsigned int cc.386;
  unsigned int D.39916;
  unsigned int D.39919;
  unsigned int D.39920;
  unsigned int D.39923;
  unsigned int D.39926;
  unsigned int D.39930;
  _Bool D.39931;
  long int D.39932;
  long int D.39933;
  unsigned int D.39936;
  struct MonoDebugOptions * D.39943;
  int D.39944;
  unsigned char * D.39946;
  struct MonoDebugOptions * D.39953;
  int D.39954;
  unsigned int D.39956;
  struct MonoDebugOptions * D.39963;
  int D.39964;
  struct MonoDebugOptions * D.39972;
  int D.39973;
  struct MonoClass * klass.387;
  struct MonoDebugOptions * D.39979;
  int D.39980;
  int D.39982;
  int D.39985;
  struct MonoInst * D.39986;
  int D.39987;
  int D.39988;
  struct MonoDebugOptions * D.39999;
  int D.40000;
  struct MonoDebugOptions * D.40005;
  int D.40006;
  struct MonoDebugOptions * D.40014;
  int D.40015;
  struct MonoInst * * D.40021;
  struct MonoInst * D.40022;
  short unsigned int D.40023;
  int D.40026;
  struct MonoInst * D.40035;
  struct MonoDebugOptions * D.40045;
  int D.40046;
  unsigned char D.40048;
  int D.40049;
  int D.40050;
  int D.40053;
  unsigned int D.40056;
  unsigned int D.40059;
  unsigned int D.40060;
  unsigned int D.40063;
  unsigned int D.40064;
  unsigned int D.40067;
  unsigned int D.40068;
  _Bool D.40069;
  long int D.40070;
  long int D.40071;
  int D.40074;
  struct MonoInst * D.40075;
  int D.40076;
  int D.40077;
  struct MonoInst * D.40078;
  int D.40079;
  unsigned int D.40080;
  unsigned int D.40081;
  struct MonoInst * * D.40082;
  struct MonoInst * D.40083;
  struct MonoType * D.40084;
  unsigned int D.40085;
  short unsigned int D.40086;
  struct MonoInst * D.40087;
  int D.40088;
  unsigned int D.40089;
  unsigned int D.40090;
  struct MonoInst * * D.40091;
  struct MonoInst * D.40092;
  struct MonoType * D.40093;
  struct MonoInst * D.40094;
  int D.40095;
  unsigned int D.40096;
  unsigned int D.40097;
  struct MonoInst * * D.40098;
  struct MonoInst * D.40099;
  struct MonoClass * D.40100;
  struct MonoInst * D.40101;
  int D.40102;
  unsigned int D.40103;
  unsigned int D.40104;
  struct MonoInst * * D.40105;
  struct MonoInst * D.40106;
  int D.40107;
  unsigned char D.40108;
  <unnamed type> D.40109;
  unsigned int D.40110;
  int D.40111;
  short unsigned int D.40112;
  struct MonoInst * D.40115;
  int D.40116;
  unsigned int D.40117;
  unsigned int D.40118;
  struct MonoInst * * D.40119;
  struct MonoInst * D.40120;
  struct MonoType * D.40121;
  struct MonoClass * D.40122;
  int D.40126;
  const char * D.40135;
  gchar * D.40136;
  struct MonoDebugOptions * D.40145;
  int D.40146;
  struct MonoDebugOptions * D.40154;
  int D.40155;
  unsigned int D.40159;
  unsigned int D.40161;
  unsigned int D.40162;
  int D.40165;
  unsigned char D.40169;
  struct MonoDebugOptions * D.40170;
  int D.40171;
  struct MonoType * D.40173;
  int D.40174;
  int val.388;
  unsigned int D.40176;
  int D.40177;
  struct MonoInst * * sp.389;
  const char * D.40184;
  gchar * D.40185;
  struct MonoDebugOptions * D.40194;
  int D.40195;
  struct MonoInst * iftmp.390;
  int D.40203;
  struct MonoInst * D.40204;
  int D.40205;
  int D.40206;
  unsigned char D.40207;
  unsigned char D.40208;
  struct MonoClass * D.40209;
  unsigned int D.40210;
  int D.40211;
  struct MonoType * D.40214;
  int D.40215;
  _Bool iftmp.391;
  int D.40219;
  int iftmp.392;
  unsigned char D.40226;
  struct MonoInst * iftmp.393;
  int D.40232;
  int D.40233;
  unsigned int D.40234;
  sizetype D.40237;
  sizetype D.40238;
  sizetype D.40239;
  struct MonoInst * * D.40240;
  struct MonoInst * iftmp.394;
  int D.40243;
  unsigned int D.40244;
  sizetype D.40247;
  sizetype D.40248;
  struct MonoInst * * D.40249;
  _Bool D.40251;
  long int D.40252;
  long int D.40253;
  _Bool D.40256;
  long int D.40257;
  long int D.40258;
  unsigned char D.40261;
  unsigned char D.40262;
  unsigned char D.40263;
  unsigned char D.40264;
  struct MonoType * D.40268;
  unsigned int D.40269;
  short unsigned int D.40270;
  int D.40271;
  unsigned int D.40272;
  int D.40273;
  struct MonoInst * * sp.395;
  struct MonoDebugOptions * D.40282;
  int D.40283;
  struct MonoDebugOptions * D.40289;
  int D.40290;
  struct MonoDebugOptions * D.40296;
  int D.40297;
  struct MonoDebugOptions * D.40303;
  int D.40304;
  struct MonoDebugOptions * D.40312;
  int D.40313;
  struct MonoBasicBlock * D.40315;
  struct MonoBasicBlock * D.40318;
  struct MonoInst * D.40322;
  int D.40331;
  struct MonoInst * D.40332;
  int D.40333;
  int D.40334;
  int D.40335;
  unsigned int D.40336;
  unsigned int D.40337;
  struct MonoInst * * D.40338;
  struct MonoInst * D.40339;
  struct MonoType * D.40340;
  unsigned int D.40341;
  short unsigned int D.40342;
  struct MonoClass * D.40343;
  int D.40344;
  int D.40345;
  short unsigned int D.40346;
  struct MonoClass * D.40349;
  struct MonoInst * D.40355;
  struct MonoType * D.40360;
  unsigned int D.40361;
  struct MonoInst * * D.40366;
  unsigned int D.40367;
  unsigned int D.40368;
  int D.40371;
  struct MonoInst * D.40372;
  int D.40373;
  int D.40374;
  int D.40375;
  unsigned int D.40379;
  struct MonoInst * D.40386;
  short int D.40389;
  short unsigned int D.40392;
  unsigned char D.40395;
  unsigned char D.40396;
  struct MonoInst * D.40399;
  struct MonoBasicBlock * D.40403;
  struct MonoInst * D.40404;
  unsigned int D.40410;
  unsigned int D.40411;
  int D.40412;
  unsigned int D.40413;
  unsigned int D.40414;
  unsigned int D.40417;
  unsigned int D.40418;
  int D.40421;
  struct MonoInst * D.40422;
  int D.40423;
  int D.40424;
  unsigned int i.396;
  unsigned int D.40428;
  int D.40429;
  int D.40430;
  unsigned int D.40431;
  struct GHashTable * D.40432;
  unsigned int D.40435;
  int D.40436;
  int D.40439;
  gchar * D.40442;
  struct GSList * D.40443;
  struct GSList * D.40444;
  int D.40445;
  struct GSList * D.40450;
  _Bool D.40451;
  long int D.40452;
  long int D.40453;
  struct GSList * D.40456;
  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.29629 = method->klass;
      D.29630 = D.29629->image;
      D.29631 = D.29630->assembly;
      D.29632 = D.29631->corlib_internal;
      D.29633 = D.29632 != 0;
      dont_verify = (gboolean) D.29633;
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29635 = D.29634 & 124;
      D.29636 = D.29635 == 40;
      D.29637 = (int) D.29636;
      dont_verify = D.29637 | dont_verify;
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29635 = D.29634 & 124;
      D.29638 = D.29635 == 44;
      D.29639 = (int) D.29638;
      dont_verify = D.29639 | dont_verify;
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29635 = D.29634 & 124;
      D.29640 = D.29635 == 24;
      D.29641 = (int) D.29640;
      dont_verify = D.29641 | dont_verify;
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29635 = D.29634 & 124;
      D.29642 = D.29635 == 108;
      D.29643 = (int) D.29642;
      dont_verify = D.29643 | dont_verify;
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29635 = D.29634 & 124;
      D.29644 = D.29635 == 104;
      D.29645 = (int) D.29644;
      dont_verify = D.29645 | dont_verify;
      D.29646 = mono_security_get_mode ();
      D.29647 = D.29646 == 3;
      D.29648 = (int) D.29647;
      dont_verify = D.29648 | dont_verify;
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29635 = D.29634 & 124;
      D.29640 = D.29635 == 24;
      dont_verify_stloc = (gboolean) D.29640;
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29635 = D.29634 & 124;
      D.29649 = D.29635 == 100;
      D.29650 = (int) D.29649;
      dont_verify_stloc = D.29650 | dont_verify_stloc;
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29635 = D.29634 & 124;
      D.29651 = D.29635 == 20;
      D.29652 = (int) D.29651;
      dont_verify_stloc = D.29652 | dont_verify_stloc;
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29635 = D.29634 & 124;
      D.29653 = D.29635 == 84;
      D.29654 = (int) D.29653;
      dont_verify_stloc = D.29654 | dont_verify_stloc;
      D.29629 = method->klass;
      image = D.29629->image;
      header = mono_method_get_header (method);
      if (header == 0B) goto <D.29655>; else goto <D.29656>;
      <D.29655>:
      {
        struct MonoLoaderError * error;

        error = mono_loader_get_last_error ();
        if (error != 0B) goto <D.29657>; else goto <D.29658>;
        <D.29657>:
        D.29659 = error->exception_type;
        D.29660 = (int) D.29659;
        mono_cfg_set_exception (cfg, D.29660);
        goto <D.29661>;
        <D.29658>:
        mono_cfg_set_exception (cfg, 3);
        D.29662 = cfg->method;
        D.29663 = D.29662->name;
        D.29664 = monoeg_g_strdup_printf ("Missing or incorrect header for method %s", D.29663);
        cfg->exception_message = D.29664;
        <D.29661>:
        goto exception_exit;
      }
      <D.29656>:
      generic_container = mono_method_get_generic_container (method);
      sig = mono_method_signature (method);
      D.29665 = sig->hasthis;
      D.29666 = (int) D.29665;
      D.29667 = sig->param_count;
      D.29668 = (int) D.29667;
      D.29669 = D.29666 + D.29668;
      num_args = (guint) D.29669;
      ip = header->code;
      cfg->cil_start = ip;
      D.29670 = header->code_size;
      end = ip + D.29670;
      D.29671 = cfg->stat_cil_code_size;
      D.29672 = (unsigned int) D.29671;
      D.29670 = header->code_size;
      D.29673 = D.29672 + D.29670;
      D.29674 = (int) D.29673;
      cfg->stat_cil_code_size = D.29674;
      D.29675 = header->init_locals;
      init_locals = (gboolean) D.29675;
      D.29679 = BIT_FIELD_REF <*cfg, 32, 3424>;
      D.29680 = D.29679 & 32;
      if (D.29680 != 0) goto <D.29681>; else goto <D.29677>;
      <D.29681>:
      D.29662 = cfg->method;
      if (D.29662 == method) goto <D.29682>; else goto <D.29677>;
      <D.29682>:
      iftmp.69 = 1;
      goto <D.29678>;
      <D.29677>:
      iftmp.69 = 0;
      <D.29678>:
      seq_points = iftmp.69;
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29635 = D.29634 & 124;
      if (D.29635 == 20) goto <D.29683>; else goto <D.29684>;
      <D.29683>:
      seq_points = 0;
      <D.29684>:
      D.29679 = BIT_FIELD_REF <*cfg, 32, 3424>;
      D.29680 = D.29679 & 32;
      if (D.29680 != 0) goto <D.29685>; else goto <D.29686>;
      <D.29685>:
      D.29662 = cfg->method;
      if (D.29662 == method) goto <D.29687>; else goto <D.29688>;
      <D.29687>:
      minfo = mono_debug_lookup_method (method);
      if (minfo != 0B) goto <D.29689>; else goto <D.29690>;
      <D.29689>:
      {
        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.29691 = cfg->mempool;
            D.29670 = header->code_size;
            D.29692 = mono_bitset_alloc_size (D.29670, 0);
            D.29693 = mono_mempool_alloc0 (D.29691, D.29692);
            D.29670 = header->code_size;
            seq_point_locs = mono_bitset_mem_new (D.29693, D.29670, 0);
            D.29691 = cfg->mempool;
            D.29670 = header->code_size;
            D.29694 = mono_bitset_alloc_size (D.29670, 0);
            D.29695 = mono_mempool_alloc0 (D.29691, D.29694);
            D.29670 = header->code_size;
            seq_point_set_locs = mono_bitset_mem_new (D.29695, D.29670, 0);
            sym_seq_points = 1;
            i = 0;
            goto <D.26757>;
            <D.26756>:
            il_offsets.70 = il_offsets;
            i.71 = (unsigned int) i;
            D.29698 = i.71 * 4;
            D.29699 = il_offsets.70 + D.29698;
            D.29700 = *D.29699;
            D.29701 = (unsigned int) D.29700;
            D.29670 = header->code_size;
            if (D.29701 < D.29670) goto <D.29702>; else goto <D.29703>;
            <D.29702>:
            il_offsets.70 = il_offsets;
            i.71 = (unsigned int) i;
            D.29698 = i.71 * 4;
            D.29699 = il_offsets.70 + D.29698;
            D.29700 = *D.29699;
            D.29704 = (unsigned int) D.29700;
            D.29705 = D.29704 / 32;
            D.29706 = seq_point_locs->data[D.29705];
            il_offsets.70 = il_offsets;
            i.71 = (unsigned int) i;
            D.29698 = i.71 * 4;
            D.29699 = il_offsets.70 + D.29698;
            D.29700 = *D.29699;
            D.29707 = D.29700 & 31;
            D.29708 = 1 << D.29707;
            D.29709 = D.29706 | D.29708;
            seq_point_locs->data[D.29705] = D.29709;
            <D.29703>:
            i = i + 1;
            <D.26757>:
            n_il_offsets.72 = n_il_offsets;
            if (i < n_il_offsets.72) goto <D.26756>; else goto <D.26758>;
            <D.26758>:
            il_offsets.70 = il_offsets;
            monoeg_g_free (il_offsets.70);
            line_numbers.73 = line_numbers;
            monoeg_g_free (line_numbers.73);
          }
        finally
          {
            n_il_offsets = {CLOBBER};
            il_offsets = {CLOBBER};
            line_numbers = {CLOBBER};
          }
      }
      <D.29690>:
      <D.29688>:
      <D.29686>:
      init_locals = 1;
      method_definition = method;
      goto <D.26761>;
      <D.26760>:
      {
        struct MonoMethodInflated * imethod;

        imethod = method_definition;
        method_definition = imethod->declaring;
      }
      <D.26761>:
      D.29712 = BIT_FIELD_REF <*method_definition, 32, 160>;
      D.29713 = D.29712 & 4096;
      if (D.29713 != 0) goto <D.26760>; else goto <D.26762>;
      <D.26762>:
      if (dont_verify == 0) goto <D.29714>; else goto <D.29715>;
      <D.29714>:
      D.29716 = cfg->domain;
      D.29717 = mini_assembly_can_skip_verification (D.29716, method);
      if (D.29717 != 0) goto <D.29718>; else goto <D.29719>;
      <D.29718>:
      dont_verify = 1;
      dont_verify_stloc = 1;
      <D.29719>:
      <D.29715>:
      D.29720 = BIT_FIELD_REF <*sig, 32, 64>;
      D.29721 = D.29720 & 33554432;
      if (D.29721 != 0) goto <D.29722>; else goto <D.29723>;
      <D.29722>:
      generic_context = mono_method_get_context (method);
      goto <D.29724>;
      <D.29723>:
      if (generic_container != 0B) goto <D.29725>; else goto <D.29726>;
      <D.29725>:
      generic_context = &generic_container->context;
      <D.29726>:
      <D.29724>:
      cfg->generic_context = generic_context;
      D.29727 = cfg->generic_sharing_context;
      if (D.29727 == 0B) goto <D.29728>; else goto <D.29729>;
      <D.29728>:
      D.29720 = BIT_FIELD_REF <*sig, 32, 64>;
      D.29730 = D.29720 & 67108864;
      D.29731 = D.29730 != 0;
      D.29732 = (long int) D.29731;
      D.29733 = __builtin_expect (D.29732, 0);
      if (D.29733 != 0) goto <D.29734>; else goto <D.29735>;
      <D.29734>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6727, "!sig->has_type_parameters");
      <D.29735>:
      <D.29729>:
      D.29736 = sig->generic_param_count;
      if (D.29736 != 0) goto <D.29737>; else goto <D.29738>;
      <D.29737>:
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29635 = D.29634 & 124;
      if (D.29635 == 0) goto <D.29739>; else goto <D.29740>;
      <D.29739>:
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29741 = D.29634 & 4096;
      D.29742 = D.29741 == 0;
      D.29743 = (long int) D.29742;
      D.29744 = __builtin_expect (D.29743, 0);
      if (D.29744 != 0) goto <D.29745>; else goto <D.29746>;
      <D.29745>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6730, "method->is_inflated");
      <D.29746>:
      D.29747 = mono_method_get_context (method);
      D.29748 = D.29747->method_inst;
      D.29749 = D.29748 == 0B;
      D.29750 = (long int) D.29749;
      D.29751 = __builtin_expect (D.29750, 0);
      if (D.29751 != 0) goto <D.29752>; else goto <D.29753>;
      <D.29752>:
      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.29753>:
      <D.29740>:
      <D.29738>:
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29741 = D.29634 & 4096;
      if (D.29741 != 0) goto <D.29754>; else goto <D.29755>;
      <D.29754>:
      D.29756 = mono_method_get_context (method);
      D.29757 = D.29756->method_inst;
      if (D.29757 != 0B) goto <D.29758>; else goto <D.29759>;
      <D.29758>:
      D.29736 = sig->generic_param_count;
      D.29760 = D.29736 == 0;
      D.29761 = (long int) D.29760;
      D.29762 = __builtin_expect (D.29761, 0);
      if (D.29762 != 0) goto <D.29763>; else goto <D.29764>;
      <D.29763>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6734, "sig->generic_param_count");
      <D.29764>:
      <D.29759>:
      <D.29755>:
      D.29662 = cfg->method;
      if (D.29662 == method) goto <D.29765>; else goto <D.29766>;
      <D.29765>:
      cfg->real_offset = 0;
      goto <D.29767>;
      <D.29766>:
      cfg->real_offset = inline_offset;
      <D.29767>:
      D.29691 = cfg->mempool;
      D.29670 = header->code_size;
      D.29768 = D.29670 * 4;
      D.29769 = mono_mempool_alloc0 (D.29691, D.29768);
      cfg->cil_offset_to_bb = D.29769;
      D.29670 = header->code_size;
      D.29770 = (int) D.29670;
      cfg->cil_offset_to_bb_len = D.29770;
      cfg->current_method = method;
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.29772>; else goto <D.29773>;
      <D.29772>:
      D.29774 = mono_method_full_name (method, 1);
      printf ("method to IR %s\n", D.29774);
      <D.29773>:
      D.29691 = cfg->mempool;
      D.29775 = num_args * 4;
      param_types = mono_mempool_alloc (D.29691, D.29775);
      D.29720 = BIT_FIELD_REF <*sig, 32, 64>;
      D.29776 = D.29720 & 4194304;
      if (D.29776 != 0) goto <D.29777>; else goto <D.29778>;
      <D.29777>:
      D.29629 = method->klass;
      D.29780 = BIT_FIELD_REF <*D.29629, 32, 160>;
      D.29781 = D.29780 & 8;
      if (D.29781 != 0) goto <D.29782>; else goto <D.29783>;
      <D.29782>:
      D.29629 = method->klass;
      iftmp.74 = &D.29629->this_arg;
      goto <D.29784>;
      <D.29783>:
      D.29629 = method->klass;
      iftmp.74 = &D.29629->byval_arg;
      <D.29784>:
      *param_types = iftmp.74;
      <D.29778>:
      n = 0;
      goto <D.26764>;
      <D.26763>:
      D.29665 = sig->hasthis;
      D.29666 = (int) D.29665;
      D.29785 = D.29666 + n;
      D.29786 = (unsigned int) D.29785;
      D.29787 = D.29786 * 4;
      D.29788 = param_types + D.29787;
      D.29789 = sig->params[n];
      *D.29788 = D.29789;
      n = n + 1;
      <D.26764>:
      D.29667 = sig->param_count;
      D.29668 = (int) D.29667;
      if (D.29668 > n) goto <D.26763>; else goto <D.26765>;
      <D.26765>:
      cfg->arg_types = param_types;
      dont_inline = monoeg_g_list_prepend (dont_inline, method);
      D.29662 = cfg->method;
      if (D.29662 == method) goto <D.29790>; else goto <D.29791>;
      <D.29790>:
      D.29792 = cfg->prof_options;
      D.29793 = D.29792 & 16384;
      if (D.29793 != 0) goto <D.29794>; else goto <D.29795>;
      <D.29794>:
      D.29662 = cfg->method;
      D.29670 = header->code_size;
      D.29796 = (int) D.29670;
      D.29797 = mono_profiler_coverage_alloc (D.29662, D.29796);
      cfg->coverage_info = D.29797;
      <D.29795>:
      D.29691 = cfg->mempool;
      start_bblock = mono_mempool_alloc0 (D.29691, 172);
      D.29798 = cfg->num_bblocks;
      D.29799 = D.29798;
      D.29800 = D.29799 + 1;
      cfg->num_bblocks = D.29800;
      D.29801 = (int) D.29799;
      start_bblock->block_num = D.29801;
      cfg->bb_entry = start_bblock;
      start_bblock->cil_code = 0B;
      start_bblock->cil_length = 0;
      D.29691 = cfg->mempool;
      end_bblock = mono_mempool_alloc0 (D.29691, 172);
      D.29798 = cfg->num_bblocks;
      D.29802 = D.29798;
      D.29803 = D.29802 + 1;
      cfg->num_bblocks = D.29803;
      D.29804 = (int) D.29802;
      end_bblock->block_num = D.29804;
      cfg->bb_exit = end_bblock;
      end_bblock->cil_code = 0B;
      end_bblock->cil_length = 0;
      D.29805 = end_bblock->flags;
      D.29806 = D.29805 | 32;
      end_bblock->flags = D.29806;
      D.29798 = cfg->num_bblocks;
      D.29807 = D.29798 != 2;
      D.29808 = (long int) D.29807;
      D.29809 = __builtin_expect (D.29808, 0);
      if (D.29809 != 0) goto <D.29810>; else goto <D.29811>;
      <D.29810>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6780, "cfg->num_bblocks == 2");
      <D.29811>:
      arg_array = cfg->args;
      D.29812 = BIT_FIELD_REF <*header, 32, 64>;
      D.29813 = D.29812 & 2147418112;
      if (D.29813 != 0) goto <D.29814>; else goto <D.29815>;
      <D.29814>:
      D.29816 = monoeg_g_hash_table_new (0B, 0B);
      cfg->spvars = D.29816;
      D.29817 = monoeg_g_hash_table_new (0B, 0B);
      cfg->exvars = D.29817;
      <D.29815>:
      i = 0;
      goto <D.26772>;
      <D.26771>:
      {
        struct MonoBasicBlock * try_bb;
        struct MonoExceptionClause * clause;

        D.29818 = header->clauses;
        i.75 = (unsigned int) i;
        D.29820 = i.75 * 24;
        clause = D.29818 + D.29820;
        D.29821 = cfg->cil_offset_to_bb;
        D.29822 = clause->try_offset;
        D.29823 = ip + D.29822;
        D.29824 = (int) D.29823;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.29827 = D.29824 - D.29826;
        D.29828 = (unsigned int) D.29827;
        D.29829 = D.29828 * 4;
        D.29830 = D.29821 + D.29829;
        try_bb = *D.29830;
        if (try_bb == 0B) goto <D.29831>; else goto <D.29832>;
        <D.29831>:
        D.29822 = clause->try_offset;
        D.29823 = ip + D.29822;
        if (D.29823 >= end) goto <D.29833>; else goto <D.29835>;
        <D.29835>:
        D.29822 = clause->try_offset;
        D.29836 = ip + D.29822;
        D.29837 = header->code;
        if (D.29836 < D.29837) goto <D.29833>; else goto <D.29834>;
        <D.29833>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.29839>; else goto <D.29840>;
        <D.29839>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.29841>; else goto <D.29842>;
        <D.29841>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.29842>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.29840>:
        D.29843 = mini_get_debug_options ();
        D.29844 = D.29843->break_on_unverified;
        if (D.29844 != 0) goto <D.29845>; else goto unverified;
        <D.29845>:
        raise (5);
        <D.29834>:
        D.29691 = cfg->mempool;
        try_bb = mono_mempool_alloc0 (D.29691, 172);
        D.29798 = cfg->num_bblocks;
        D.29846 = D.29798;
        D.29847 = D.29846 + 1;
        cfg->num_bblocks = D.29847;
        D.29848 = (int) D.29846;
        try_bb->block_num = D.29848;
        D.29822 = clause->try_offset;
        D.29823 = ip + D.29822;
        try_bb->cil_code = D.29823;
        D.29849 = try_bb->cil_code;
        if (D.29849 != 0B) goto <D.29850>; else goto <D.29851>;
        <D.29850>:
        D.29821 = cfg->cil_offset_to_bb;
        D.29849 = try_bb->cil_code;
        D.29852 = (int) D.29849;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.29853 = D.29852 - D.29826;
        D.29854 = (unsigned int) D.29853;
        D.29855 = D.29854 * 4;
        D.29856 = D.29821 + D.29855;
        *D.29856 = try_bb;
        <D.29851>:
        D.29857 = cfg->real_offset;
        try_bb->real_offset = D.29857;
        <D.29832>:
        D.29822 = clause->try_offset;
        try_bb->real_offset = D.29822;
        try_bb->try_start = 1;
        D.29858 = i + 1;
        D.29859 = D.29858 << 8;
        D.29860 = (unsigned int) D.29859;
        D.29861 = clause->flags;
        D.29862 = D.29860 | D.29861;
        try_bb->region = D.29862;
        D.29821 = cfg->cil_offset_to_bb;
        D.29863 = clause->handler_offset;
        D.29864 = ip + D.29863;
        D.29865 = (int) D.29864;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.29866 = D.29865 - D.29826;
        D.29867 = (unsigned int) D.29866;
        D.29868 = D.29867 * 4;
        D.29869 = D.29821 + D.29868;
        tblock = *D.29869;
        if (tblock == 0B) goto <D.29870>; else goto <D.29871>;
        <D.29870>:
        D.29863 = clause->handler_offset;
        D.29864 = ip + D.29863;
        if (D.29864 >= end) goto <D.29872>; else goto <D.29874>;
        <D.29874>:
        D.29863 = clause->handler_offset;
        D.29875 = ip + D.29863;
        D.29837 = header->code;
        if (D.29875 < D.29837) goto <D.29872>; else goto <D.29873>;
        <D.29872>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.29876>; else goto <D.29877>;
        <D.29876>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.29878>; else goto <D.29879>;
        <D.29878>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.29879>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.29877>:
        D.29880 = mini_get_debug_options ();
        D.29881 = D.29880->break_on_unverified;
        if (D.29881 != 0) goto <D.29882>; else goto unverified;
        <D.29882>:
        raise (5);
        <D.29873>:
        D.29691 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.29691, 172);
        D.29798 = cfg->num_bblocks;
        D.29883 = D.29798;
        D.29884 = D.29883 + 1;
        cfg->num_bblocks = D.29884;
        D.29885 = (int) D.29883;
        tblock->block_num = D.29885;
        D.29863 = clause->handler_offset;
        D.29864 = ip + D.29863;
        tblock->cil_code = D.29864;
        D.29886 = tblock->cil_code;
        if (D.29886 != 0B) goto <D.29887>; else goto <D.29888>;
        <D.29887>:
        D.29821 = cfg->cil_offset_to_bb;
        D.29886 = tblock->cil_code;
        D.29889 = (int) D.29886;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.29890 = D.29889 - D.29826;
        D.29891 = (unsigned int) D.29890;
        D.29892 = D.29891 * 4;
        D.29893 = D.29821 + D.29892;
        *D.29893 = tblock;
        <D.29888>:
        D.29857 = cfg->real_offset;
        tblock->real_offset = D.29857;
        <D.29871>:
        D.29863 = clause->handler_offset;
        tblock->real_offset = D.29863;
        D.29894 = tblock->flags;
        D.29895 = D.29894 | 16;
        tblock->flags = D.29895;
        if (0 != 0) goto <D.29896>; else goto <D.29897>;
        <D.29896>:
        link_bblock (cfg, try_bb, tblock);
        <D.29897>:
        D.29863 = clause->handler_offset;
        D.29864 = ip + D.29863;
        D.29898 = *D.29864;
        if (D.29898 == 38) goto <D.29899>; else goto <D.29900>;
        <D.29899>:
        D.29894 = tblock->flags;
        D.29901 = D.29894 | 4;
        tblock->flags = D.29901;
        <D.29900>:
        D.29861 = clause->flags;
        D.29904 = D.29861 + 4294967295;
        if (D.29904 <= 1) goto <D.29902>; else goto <D.29905>;
        <D.29905>:
        D.29861 = clause->flags;
        if (D.29861 == 4) goto <D.29902>; else goto <D.29903>;
        <D.29902>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 736;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        D.29911 = tblock->last_ins;
        if (D.29911 != 0B) goto <D.29912>; else goto <D.29913>;
        <D.29912>:
        D.29911 = tblock->last_ins;
        D.29911->next = ins;
        D.29911 = tblock->last_ins;
        ins->prev = D.29911;
        tblock->last_ins = ins;
        goto <D.29914>;
        <D.29913>:
        tblock->last_ins = ins;
        D.29911 = tblock->last_ins;
        tblock->code = D.29911;
        <D.29914>:
        if (seq_points != 0) goto <D.29915>; else goto <D.29916>;
        <D.29915>:
        D.29861 = clause->flags;
        if (D.29861 != 2) goto <D.29917>; else goto <D.29918>;
        <D.29917>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 341;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        D.29863 = clause->handler_offset;
        D.29919 = (int) D.29863;
        ins->data.op[1].const_val = D.29919;
        ins->flags = 1;
        D.29911 = tblock->last_ins;
        if (D.29911 != 0B) goto <D.29920>; else goto <D.29921>;
        <D.29920>:
        D.29911 = tblock->last_ins;
        D.29911->next = ins;
        D.29911 = tblock->last_ins;
        ins->prev = D.29911;
        tblock->last_ins = ins;
        goto <D.29922>;
        <D.29921>:
        tblock->last_ins = ins;
        D.29911 = tblock->last_ins;
        tblock->code = D.29911;
        <D.29922>:
        <D.29918>:
        <D.29916>:
        D.29861 = clause->flags;
        if (D.29861 == 4) goto <D.29923>; else goto <D.29924>;
        <D.29923>:
        D.29894 = tblock->flags;
        D.29925 = D.29894 | 8;
        tblock->flags = D.29925;
        <D.29924>:
        <D.29903>:
        D.29861 = clause->flags;
        if (D.29861 <= 1) goto <D.29926>; else goto <D.29927>;
        <D.29926>:
        {
          struct MonoInst * dummy_use;

          tblock->in_scount = 1;
          D.29691 = cfg->mempool;
          D.29928 = mono_mempool_alloc (D.29691, 4);
          tblock->in_stack = D.29928;
          D.29929 = tblock->in_stack;
          D.29863 = clause->handler_offset;
          D.29930 = (int) D.29863;
          D.29931 = mono_create_exvar_for_offset (cfg, D.29930);
          *D.29929 = D.29931;
          cfg->cbb = tblock;
          D.29691 = cfg->mempool;
          dummy_use = mono_mempool_alloc (D.29691, 56);
          dummy_use->data.op[1].const_val = 0;
          D.29932 = dummy_use->data.op[1].const_val;
          dummy_use->data.op[0].const_val = D.29932;
          dummy_use->prev = 0B;
          D.29933 = dummy_use->prev;
          dummy_use->next = D.29933;
          dummy_use->opcode = 796;
          dummy_use->flags = 0;
          dummy_use->type = 0;
          dummy_use->dreg = -1;
          dummy_use->sreg3 = -1;
          D.29934 = dummy_use->sreg3;
          dummy_use->sreg2 = D.29934;
          D.29935 = dummy_use->sreg2;
          dummy_use->sreg1 = D.29935;
          D.29910 = cfg->ip;
          dummy_use->cil_code = D.29910;
          D.29929 = tblock->in_stack;
          D.29936 = *D.29929;
          D.29937 = D.29936->dreg;
          dummy_use->sreg1 = D.29937;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.29940>; else goto <D.29941>;
          <D.29940>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = dummy_use;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          dummy_use->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = dummy_use;
          goto <D.29942>;
          <D.29941>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = dummy_use;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.29942>:
          D.29861 = clause->flags;
          if (D.29861 == 1) goto <D.29943>; else goto <D.29944>;
          <D.29943>:
          D.29821 = cfg->cil_offset_to_bb;
          D.29945 = clause->data.filter_offset;
          D.29946 = ip + D.29945;
          D.29947 = (int) D.29946;
          D.29825 = cfg->cil_start;
          D.29826 = (int) D.29825;
          D.29948 = D.29947 - D.29826;
          D.29949 = (unsigned int) D.29948;
          D.29950 = D.29949 * 4;
          D.29951 = D.29821 + D.29950;
          tblock = *D.29951;
          if (tblock == 0B) goto <D.29952>; else goto <D.29953>;
          <D.29952>:
          D.29945 = clause->data.filter_offset;
          D.29946 = ip + D.29945;
          if (D.29946 >= end) goto <D.29954>; else goto <D.29956>;
          <D.29956>:
          D.29945 = clause->data.filter_offset;
          D.29957 = ip + D.29945;
          D.29837 = header->code;
          if (D.29957 < D.29837) goto <D.29954>; else goto <D.29955>;
          <D.29954>:
          D.29838 = cfg->gsharedvt;
          if (D.29838 != 0) goto <D.29958>; else goto <D.29959>;
          <D.29958>:
          D.29771 = cfg->verbose_level;
          if (D.29771 > 2) goto <D.29960>; else goto <D.29961>;
          <D.29960>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.29961>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.29959>:
          D.29962 = mini_get_debug_options ();
          D.29963 = D.29962->break_on_unverified;
          if (D.29963 != 0) goto <D.29964>; else goto unverified;
          <D.29964>:
          raise (5);
          <D.29955>:
          D.29691 = cfg->mempool;
          tblock = mono_mempool_alloc0 (D.29691, 172);
          D.29798 = cfg->num_bblocks;
          D.29965 = D.29798;
          D.29966 = D.29965 + 1;
          cfg->num_bblocks = D.29966;
          D.29967 = (int) D.29965;
          tblock->block_num = D.29967;
          D.29945 = clause->data.filter_offset;
          D.29946 = ip + D.29945;
          tblock->cil_code = D.29946;
          D.29886 = tblock->cil_code;
          if (D.29886 != 0B) goto <D.29968>; else goto <D.29969>;
          <D.29968>:
          D.29821 = cfg->cil_offset_to_bb;
          D.29886 = tblock->cil_code;
          D.29889 = (int) D.29886;
          D.29825 = cfg->cil_start;
          D.29826 = (int) D.29825;
          D.29890 = D.29889 - D.29826;
          D.29891 = (unsigned int) D.29890;
          D.29892 = D.29891 * 4;
          D.29893 = D.29821 + D.29892;
          *D.29893 = tblock;
          <D.29969>:
          D.29857 = cfg->real_offset;
          tblock->real_offset = D.29857;
          <D.29953>:
          D.29894 = tblock->flags;
          D.29895 = D.29894 | 16;
          tblock->flags = D.29895;
          D.29945 = clause->data.filter_offset;
          tblock->real_offset = D.29945;
          tblock->in_scount = 1;
          D.29691 = cfg->mempool;
          D.29970 = mono_mempool_alloc (D.29691, 4);
          tblock->in_stack = D.29970;
          D.29929 = tblock->in_stack;
          D.29863 = clause->handler_offset;
          D.29930 = (int) D.29863;
          D.29971 = mono_create_exvar_for_offset (cfg, D.29930);
          *D.29929 = D.29971;
          D.29691 = cfg->mempool;
          ins = mono_mempool_alloc (D.29691, 56);
          ins->data.op[1].const_val = 0;
          D.29906 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.29906;
          ins->prev = 0B;
          D.29907 = ins->prev;
          ins->next = D.29907;
          ins->opcode = 736;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.29908 = ins->sreg3;
          ins->sreg2 = D.29908;
          D.29909 = ins->sreg2;
          ins->sreg1 = D.29909;
          D.29910 = cfg->ip;
          ins->cil_code = D.29910;
          D.29911 = tblock->last_ins;
          if (D.29911 != 0B) goto <D.29972>; else goto <D.29973>;
          <D.29972>:
          D.29911 = tblock->last_ins;
          D.29911->next = ins;
          D.29911 = tblock->last_ins;
          ins->prev = D.29911;
          tblock->last_ins = ins;
          goto <D.29974>;
          <D.29973>:
          tblock->last_ins = ins;
          D.29911 = tblock->last_ins;
          tblock->code = D.29911;
          <D.29974>:
          <D.29944>:
        }
        <D.29927>:
        D.29861 = clause->flags;
        if (D.29861 != 1) goto <D.29975>; else goto <D.29976>;
        <D.29975>:
        D.29977 = clause->data.catch_class;
        if (D.29977 != 0B) goto <D.29978>; else goto <D.29979>;
        <D.29978>:
        D.29727 = cfg->generic_sharing_context;
        if (D.29727 != 0B) goto <D.29980>; else goto <D.29981>;
        <D.29980>:
        D.29977 = clause->data.catch_class;
        D.29982 = mono_class_check_context_used (D.29977);
        if (D.29982 != 0) goto <D.29983>; else goto <D.29984>;
        <D.29983>:
        D.29988 = method->flags;
        D.29989 = (int) D.29988;
        D.29990 = D.29989 & 16;
        if (D.29990 != 0) goto <D.29985>; else goto <D.29991>;
        <D.29991>:
        D.29992 = mini_method_get_context (method);
        D.29993 = D.29992->method_inst;
        if (D.29993 != 0B) goto <D.29985>; else goto <D.29994>;
        <D.29994>:
        D.29629 = method->klass;
        D.29780 = BIT_FIELD_REF <*D.29629, 32, 160>;
        D.29781 = D.29780 & 8;
        if (D.29781 != 0) goto <D.29985>; else goto <D.29986>;
        <D.29985>:
        mono_get_vtable_var (cfg);
        goto <D.29987>;
        <D.29986>:
        {
          struct MonoInst * dummy_use;

          D.29691 = cfg->mempool;
          dummy_use = mono_mempool_alloc (D.29691, 56);
          dummy_use->data.op[1].const_val = 0;
          D.29995 = dummy_use->data.op[1].const_val;
          dummy_use->data.op[0].const_val = D.29995;
          dummy_use->prev = 0B;
          D.29996 = dummy_use->prev;
          dummy_use->next = D.29996;
          dummy_use->opcode = 796;
          dummy_use->flags = 0;
          dummy_use->type = 0;
          dummy_use->dreg = -1;
          dummy_use->sreg3 = -1;
          D.29997 = dummy_use->sreg3;
          dummy_use->sreg2 = D.29997;
          D.29998 = dummy_use->sreg2;
          dummy_use->sreg1 = D.29998;
          D.29910 = cfg->ip;
          dummy_use->cil_code = D.29910;
          D.29999 = *arg_array;
          D.30000 = D.29999->dreg;
          dummy_use->sreg1 = D.30000;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.30001>; else goto <D.30002>;
          <D.30001>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = dummy_use;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          dummy_use->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = dummy_use;
          goto <D.30003>;
          <D.30002>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = dummy_use;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.30003>:
        }
        <D.29987>:
        <D.29984>:
        <D.29981>:
        <D.29979>:
        <D.29976>:
      }
      i = i + 1;
      <D.26772>:
      D.30004 = header->num_clauses;
      D.30005 = (int) D.30004;
      if (D.30005 > i) goto <D.26771>; else goto <D.26773>;
      <D.26773>:
      goto <D.30006>;
      <D.29791>:
      D.29775 = num_args * 4;
      arg_array = __builtin_alloca (D.29775);
      cfg->cbb = start_bblock;
      cfg->args = arg_array;
      mono_save_args (cfg, sig, inline_args);
      <D.30006>:
      D.29691 = cfg->mempool;
      bblock.76 = mono_mempool_alloc0 (D.29691, 172);
      bblock = bblock.76;
      bblock.77 = bblock;
      D.29798 = cfg->num_bblocks;
      D.30009 = D.29798;
      D.30010 = D.30009 + 1;
      cfg->num_bblocks = D.30010;
      D.30011 = (int) D.30009;
      bblock.77->block_num = D.30011;
      bblock.77 = bblock;
      bblock.77->cil_code = ip;
      bblock.77 = bblock;
      cfg->cbb = bblock.77;
      cfg->ip = ip;
      bblock.77 = bblock;
      D.30012 = bblock.77->cil_code;
      if (D.30012 != 0B) goto <D.30013>; else goto <D.30014>;
      <D.30013>:
      D.29821 = cfg->cil_offset_to_bb;
      bblock.77 = bblock;
      D.30012 = bblock.77->cil_code;
      D.30015 = (int) D.30012;
      D.29825 = cfg->cil_start;
      D.29826 = (int) D.29825;
      D.30016 = D.30015 - D.29826;
      D.30017 = (unsigned int) D.30016;
      D.30018 = D.30017 * 4;
      D.30019 = D.29821 + D.30018;
      bblock.77 = bblock;
      *D.30019 = bblock.77;
      <D.30014>:
      bblock.77 = bblock;
      D.29857 = cfg->real_offset;
      bblock.77->real_offset = D.29857;
      D.29662 = cfg->method;
      if (D.29662 == method) goto <D.30020>; else goto <D.30021>;
      <D.30020>:
      breakpoint_id = mono_debugger_method_has_breakpoint (method);
      if (breakpoint_id != 0) goto <D.30022>; else goto <D.30023>;
      <D.30022>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 445;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      if (D.30024 != 0B) goto <D.30025>; else goto <D.30026>;
      <D.30025>:
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      D.30024->next = ins;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      ins->prev = D.30024;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      goto <D.30027>;
      <D.30026>:
      bblock.77 = bblock;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      D.30024 = bblock.77->last_ins;
      bblock.77->code = D.30024;
      <D.30027>:
      <D.30023>:
      <D.30021>:
      D.30028 = mono_security_get_mode ();
      if (D.30028 == 2) goto <D.30029>; else goto <D.30030>;
      <D.30029>:
      secman = mono_security_manager_get_methods ();
      <D.30030>:
      if (secman != 0B) goto <D.30034>; else goto <D.30032>;
      <D.30034>:
      D.30035 = mono_method_has_declsec (method);
      if (D.30035 != 0) goto <D.30036>; else goto <D.30032>;
      <D.30036>:
      iftmp.78 = 1;
      goto <D.30033>;
      <D.30032>:
      iftmp.78 = 0;
      <D.30033>:
      security = (MonoBoolean) iftmp.78;
      if (security != 0) goto <D.30037>; else goto <D.30038>;
      <D.30037>:
      D.29662 = cfg->method;
      if (D.29662 == method) goto <D.30039>; else goto <D.30040>;
      <D.30039>:
      security = mono_declsec_get_demands (method, &actions);
      <D.30040>:
      <D.30038>:
      if (secman != 0B) goto <D.30044>; else goto <D.30042>;
      <D.30044>:
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29635 = D.29634 & 124;
      if (D.29635 == 24) goto <D.30045>; else goto <D.30042>;
      <D.30045>:
      iftmp.79 = 1;
      goto <D.30043>;
      <D.30042>:
      iftmp.79 = 0;
      <D.30043>:
      pinvoke = (MonoBoolean) iftmp.79;
      if (pinvoke != 0) goto <D.30046>; else goto <D.30047>;
      <D.30046>:
      {
        struct MonoMethod * wrapped;

        wrapped = mono_marshal_method_from_wrapper (method);
        if (wrapped != 0B) goto <D.30050>; else goto <D.30048>;
        <D.30050>:
        D.30051 = wrapped->flags;
        D.30052 = (int) D.30051;
        D.30053 = D.30052 & 8192;
        if (D.30053 != 0) goto <D.30054>; else goto <D.30048>;
        <D.30054>:
        {
          struct MonoCustomAttrInfo * custom;

          custom = mono_custom_attrs_from_method (wrapped);
          if (custom != 0B) goto <D.30055>; else goto <D.30056>;
          <D.30055>:
          D.30057 = secman->suppressunmanagedcodesecurity;
          D.30058 = mono_custom_attrs_has_attr (custom, D.30057);
          if (D.30058 != 0) goto <D.30059>; else goto <D.30060>;
          <D.30059>:
          pinvoke = 0;
          <D.30060>:
          <D.30056>:
          if (custom != 0B) goto <D.30061>; else goto <D.30062>;
          <D.30061>:
          mono_custom_attrs_free (custom);
          <D.30062>:
          if (pinvoke != 0) goto <D.30063>; else goto <D.30064>;
          <D.30063>:
          D.30065 = wrapped->klass;
          custom = mono_custom_attrs_from_class (D.30065);
          if (custom != 0B) goto <D.30066>; else goto <D.30067>;
          <D.30066>:
          D.30057 = secman->suppressunmanagedcodesecurity;
          D.30068 = mono_custom_attrs_has_attr (custom, D.30057);
          if (D.30068 != 0) goto <D.30069>; else goto <D.30070>;
          <D.30069>:
          pinvoke = 0;
          <D.30070>:
          <D.30067>:
          if (custom != 0B) goto <D.30071>; else goto <D.30072>;
          <D.30071>:
          mono_custom_attrs_free (custom);
          <D.30072>:
          <D.30064>:
        }
        goto <D.30049>;
        <D.30048>:
        pinvoke = 0;
        <D.30049>:
      }
      <D.30047>:
      if (init_locals != 0) goto <D.30073>; else goto <D.30077>;
      <D.30077>:
      D.29662 = cfg->method;
      if (D.29662 == method) goto <D.30078>; else goto <D.30074>;
      <D.30078>:
      D.30079 = cfg->opt;
      D.30080 = D.30079 & 512;
      if (D.30080 != 0) goto <D.30073>; else goto <D.30074>;
      <D.30074>:
      D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.30082 = D.30081 & 64;
      if (D.30082 != 0) goto <D.30073>; else goto <D.30083>;
      <D.30083>:
      if (security != 0) goto <D.30073>; else goto <D.30084>;
      <D.30084>:
      if (pinvoke != 0) goto <D.30073>; else goto <D.30075>;
      <D.30073>:
      D.29691 = cfg->mempool;
      init_localsbb = mono_mempool_alloc0 (D.29691, 172);
      D.29798 = cfg->num_bblocks;
      D.30085 = D.29798;
      D.30086 = D.30085 + 1;
      cfg->num_bblocks = D.30086;
      D.30087 = (int) D.30085;
      init_localsbb->block_num = D.30087;
      cfg->bb_init = init_localsbb;
      D.29857 = cfg->real_offset;
      init_localsbb->real_offset = D.29857;
      start_bblock->next_bb = init_localsbb;
      bblock.77 = bblock;
      init_localsbb->next_bb = bblock.77;
      link_bblock (cfg, start_bblock, init_localsbb);
      bblock.77 = bblock;
      link_bblock (cfg, init_localsbb, bblock.77);
      cfg->cbb = init_localsbb;
      goto <D.30076>;
      <D.30075>:
      bblock.77 = bblock;
      start_bblock->next_bb = bblock.77;
      bblock.77 = bblock;
      link_bblock (cfg, start_bblock, bblock.77);
      <D.30076>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30088>; else goto <D.30089>;
      <D.30088>:
      D.29662 = cfg->method;
      if (D.29662 == method) goto <D.30090>; else goto <D.30091>;
      <D.30090>:
      {
        struct MonoGSharedVtMethodInfo * info;
        struct MonoInst * var;
        struct MonoInst * locals_var;
        int dreg;

        D.29691 = cfg->mempool;
        info = mono_mempool_alloc0 (D.29691, 8);
        D.29662 = cfg->method;
        info->method = D.29662;
        D.30092 = monoeg_g_ptr_array_new ();
        info->entries = D.30092;
        cfg->gsharedvt_info = info;
        D.30093 = mono_defaults.int_class;
        D.30094 = &D.30093->byval_arg;
        var = mono_compile_create_var (cfg, D.30094, 329);
        cfg->gsharedvt_info_var = var;
        D.30095 = mini_method_check_context_used (cfg, method);
        ins = emit_get_rgctx_gsharedvt_method (cfg, D.30095, method, info);
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.30096 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30096;
          inst->prev = 0B;
          D.30097 = inst->prev;
          inst->next = D.30097;
          inst->opcode = 424;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30098 = inst->sreg3;
          inst->sreg2 = D.30098;
          D.30099 = inst->sreg2;
          inst->sreg1 = D.30099;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          D.30100 = var->dreg;
          inst->dreg = D.30100;
          D.30101 = ins->dreg;
          inst->sreg1 = D.30101;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.30102>; else goto <D.30103>;
          <D.30102>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.30104>;
          <D.30103>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.30104>:
        }
        D.30093 = mono_defaults.int_class;
        D.30094 = &D.30093->byval_arg;
        locals_var = mono_compile_create_var (cfg, D.30094, 329);
        cfg->gsharedvt_locals_var = locals_var;
        D.30105 = alloc_ireg (cfg);
        dreg = (int) D.30105;
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.30106 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30106;
          inst->prev = 0B;
          D.30107 = inst->prev;
          inst->next = D.30107;
          inst->opcode = 393;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30108 = inst->sreg3;
          inst->sreg2 = D.30108;
          D.30109 = inst->sreg2;
          inst->sreg1 = D.30109;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          inst->dreg = dreg;
          D.30100 = var->dreg;
          inst->sreg1 = D.30100;
          inst->data.op[0].const_val = 0;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.30110>; else goto <D.30111>;
          <D.30110>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.30112>;
          <D.30111>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.30112>:
        }
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 338;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        D.30113 = locals_var->dreg;
        ins->dreg = D.30113;
        ins->sreg1 = dreg;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.30114>; else goto <D.30115>;
        <D.30114>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.30116>;
        <D.30115>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.30116>:
        cfg->gsharedvt_locals_var_ins = ins;
        D.30117 = cfg->flags;
        D.30118 = D.30117 | 1;
        cfg->flags = D.30118;
      }
      <D.30091>:
      <D.30089>:
      if (security != 0) goto <D.30119>; else goto <D.30120>;
      <D.30119>:
      D.29662 = cfg->method;
      if (D.29662 == method) goto <D.30121>; else goto <D.30122>;
      <D.30121>:
      {
        struct MonoInst * args[2];

        try
          {
            D.30123 = cfg->stat_cas_demand_generation;
            D.30124 = D.30123 + 1;
            cfg->stat_cas_demand_generation = D.30124;
            D.30125 = actions.demand.blob;
            if (D.30125 != 0B) goto <D.30126>; else goto <D.30127>;
            <D.30126>:
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.30128>; else goto <D.30129>;
            <D.30128>:
            D.29691 = cfg->mempool;
            D.30130 = mono_mempool_alloc (D.29691, 56);
            args[0] = D.30130;
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131->data.op[1].const_val = 0;
            D.30132 = D.30131->data.op[1].const_val;
            D.30131->data.op[0].const_val = D.30132;
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131->prev = 0B;
            D.30133 = D.30131->prev;
            D.30131->next = D.30133;
            D.30131 = args[0];
            D.30131->opcode = 732;
            D.30131 = args[0];
            D.30131->flags = 0;
            D.30131 = args[0];
            D.30131->type = 0;
            D.30131 = args[0];
            D.30131->dreg = -1;
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131->sreg3 = -1;
            D.30134 = D.30131->sreg3;
            D.30131->sreg2 = D.30134;
            D.30135 = D.30131->sreg2;
            D.30131->sreg1 = D.30135;
            D.30131 = args[0];
            D.29910 = cfg->ip;
            D.30131->cil_code = D.29910;
            D.30131 = args[0];
            D.29691 = cfg->mempool;
            D.30136 = actions.demand.index;
            D.30137 = mono_jump_info_token_new2 (D.29691, image, D.30136, 0B);
            D.30131->data.op[0].p = D.30137;
            D.30131 = args[0];
            D.30131->data.op[1].p = 28B;
            D.30131 = args[0];
            D.30131->type = 6;
            D.30131 = args[0];
            D.30131->klass = 0B;
            D.30131 = args[0];
            D.30138 = alloc_dreg (cfg, 6);
            D.30139 = (int) D.30138;
            D.30131->dreg = D.30139;
            goto <D.30140>;
            <D.30129>:
            D.29691 = cfg->mempool;
            D.30141 = mono_mempool_alloc (D.29691, 56);
            args[0] = D.30141;
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131->data.op[1].const_val = 0;
            D.30132 = D.30131->data.op[1].const_val;
            D.30131->data.op[0].const_val = D.30132;
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131->prev = 0B;
            D.30133 = D.30131->prev;
            D.30131->next = D.30133;
            D.30131 = args[0];
            D.30131->opcode = 362;
            D.30131 = args[0];
            D.30131->flags = 0;
            D.30131 = args[0];
            D.30131->type = 0;
            D.30131 = args[0];
            D.30131->dreg = -1;
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131->sreg3 = -1;
            D.30134 = D.30131->sreg3;
            D.30131->sreg2 = D.30134;
            D.30135 = D.30131->sreg2;
            D.30131->sreg1 = D.30135;
            D.30131 = args[0];
            D.29910 = cfg->ip;
            D.30131->cil_code = D.29910;
            D.30131 = args[0];
            D.30125 = actions.demand.blob;
            D.30131->data.op[0].p = D.30125;
            D.30131 = args[0];
            D.30131->type = 3;
            D.30131 = args[0];
            D.30142 = alloc_dreg (cfg, 3);
            D.30143 = (int) D.30142;
            D.30131->dreg = D.30143;
            <D.30140>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.30144>; else goto <D.30145>;
            <D.30144>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30131 = args[0];
            D.29939->next = D.30131;
            D.30131 = args[0];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30131->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.30131 = args[0];
            bblock.129->last_ins = D.30131;
            goto <D.30146>;
            <D.30145>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.30131 = args[0];
            bblock.129->last_ins = D.30131;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.30146>:
            D.29691 = cfg->mempool;
            D.30147 = mono_mempool_alloc (D.29691, 56);
            args[1] = D.30147;
            D.30148 = args[1];
            D.30148 = args[1];
            D.30148->data.op[1].const_val = 0;
            D.30149 = D.30148->data.op[1].const_val;
            D.30148->data.op[0].const_val = D.30149;
            D.30148 = args[1];
            D.30148 = args[1];
            D.30148->prev = 0B;
            D.30150 = D.30148->prev;
            D.30148->next = D.30150;
            D.30148 = args[1];
            D.30148->opcode = 362;
            D.30148 = args[1];
            D.30148->flags = 0;
            D.30148 = args[1];
            D.30148->type = 0;
            D.30148 = args[1];
            D.30148->dreg = -1;
            D.30148 = args[1];
            D.30148 = args[1];
            D.30148 = args[1];
            D.30148->sreg3 = -1;
            D.30151 = D.30148->sreg3;
            D.30148->sreg2 = D.30151;
            D.30152 = D.30148->sreg2;
            D.30148->sreg1 = D.30152;
            D.30148 = args[1];
            D.29910 = cfg->ip;
            D.30148->cil_code = D.29910;
            D.30148 = args[1];
            D.30153 = actions.demand.size;
            D.30154 = (int) D.30153;
            D.30148->data.op[0].const_val = D.30154;
            D.30148 = args[1];
            D.30148->type = 1;
            D.30148 = args[1];
            D.30155 = alloc_dreg (cfg, 1);
            D.30156 = (int) D.30155;
            D.30148->dreg = D.30156;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.30157>; else goto <D.30158>;
            <D.30157>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30148 = args[1];
            D.29939->next = D.30148;
            D.30148 = args[1];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30148->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.30148 = args[1];
            bblock.129->last_ins = D.30148;
            goto <D.30159>;
            <D.30158>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.30148 = args[1];
            bblock.129->last_ins = D.30148;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.30159>:
            D.30160 = secman->demand;
            mono_emit_method_call (cfg, D.30160, &args, 0B);
            <D.30127>:
            D.30161 = actions.noncasdemand.blob;
            if (D.30161 != 0B) goto <D.30162>; else goto <D.30163>;
            <D.30162>:
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.30164>; else goto <D.30165>;
            <D.30164>:
            D.29691 = cfg->mempool;
            D.30166 = mono_mempool_alloc (D.29691, 56);
            args[0] = D.30166;
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131->data.op[1].const_val = 0;
            D.30132 = D.30131->data.op[1].const_val;
            D.30131->data.op[0].const_val = D.30132;
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131->prev = 0B;
            D.30133 = D.30131->prev;
            D.30131->next = D.30133;
            D.30131 = args[0];
            D.30131->opcode = 732;
            D.30131 = args[0];
            D.30131->flags = 0;
            D.30131 = args[0];
            D.30131->type = 0;
            D.30131 = args[0];
            D.30131->dreg = -1;
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131->sreg3 = -1;
            D.30134 = D.30131->sreg3;
            D.30131->sreg2 = D.30134;
            D.30135 = D.30131->sreg2;
            D.30131->sreg1 = D.30135;
            D.30131 = args[0];
            D.29910 = cfg->ip;
            D.30131->cil_code = D.29910;
            D.30131 = args[0];
            D.29691 = cfg->mempool;
            D.30167 = actions.noncasdemand.index;
            D.30168 = mono_jump_info_token_new2 (D.29691, image, D.30167, 0B);
            D.30131->data.op[0].p = D.30168;
            D.30131 = args[0];
            D.30131->data.op[1].p = 28B;
            D.30131 = args[0];
            D.30131->type = 6;
            D.30131 = args[0];
            D.30131->klass = 0B;
            D.30131 = args[0];
            D.30169 = alloc_dreg (cfg, 6);
            D.30170 = (int) D.30169;
            D.30131->dreg = D.30170;
            goto <D.30171>;
            <D.30165>:
            D.29691 = cfg->mempool;
            D.30172 = mono_mempool_alloc (D.29691, 56);
            args[0] = D.30172;
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131->data.op[1].const_val = 0;
            D.30132 = D.30131->data.op[1].const_val;
            D.30131->data.op[0].const_val = D.30132;
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131->prev = 0B;
            D.30133 = D.30131->prev;
            D.30131->next = D.30133;
            D.30131 = args[0];
            D.30131->opcode = 362;
            D.30131 = args[0];
            D.30131->flags = 0;
            D.30131 = args[0];
            D.30131->type = 0;
            D.30131 = args[0];
            D.30131->dreg = -1;
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131->sreg3 = -1;
            D.30134 = D.30131->sreg3;
            D.30131->sreg2 = D.30134;
            D.30135 = D.30131->sreg2;
            D.30131->sreg1 = D.30135;
            D.30131 = args[0];
            D.29910 = cfg->ip;
            D.30131->cil_code = D.29910;
            D.30131 = args[0];
            D.30161 = actions.noncasdemand.blob;
            D.30131->data.op[0].p = D.30161;
            D.30131 = args[0];
            D.30131->type = 3;
            D.30131 = args[0];
            D.30173 = alloc_dreg (cfg, 3);
            D.30174 = (int) D.30173;
            D.30131->dreg = D.30174;
            <D.30171>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.30175>; else goto <D.30176>;
            <D.30175>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30131 = args[0];
            D.29939->next = D.30131;
            D.30131 = args[0];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30131->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.30131 = args[0];
            bblock.129->last_ins = D.30131;
            goto <D.30177>;
            <D.30176>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.30131 = args[0];
            bblock.129->last_ins = D.30131;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.30177>:
            D.29691 = cfg->mempool;
            D.30178 = mono_mempool_alloc (D.29691, 56);
            args[1] = D.30178;
            D.30148 = args[1];
            D.30148 = args[1];
            D.30148->data.op[1].const_val = 0;
            D.30149 = D.30148->data.op[1].const_val;
            D.30148->data.op[0].const_val = D.30149;
            D.30148 = args[1];
            D.30148 = args[1];
            D.30148->prev = 0B;
            D.30150 = D.30148->prev;
            D.30148->next = D.30150;
            D.30148 = args[1];
            D.30148->opcode = 362;
            D.30148 = args[1];
            D.30148->flags = 0;
            D.30148 = args[1];
            D.30148->type = 0;
            D.30148 = args[1];
            D.30148->dreg = -1;
            D.30148 = args[1];
            D.30148 = args[1];
            D.30148 = args[1];
            D.30148->sreg3 = -1;
            D.30151 = D.30148->sreg3;
            D.30148->sreg2 = D.30151;
            D.30152 = D.30148->sreg2;
            D.30148->sreg1 = D.30152;
            D.30148 = args[1];
            D.29910 = cfg->ip;
            D.30148->cil_code = D.29910;
            D.30148 = args[1];
            D.30179 = actions.noncasdemand.size;
            D.30180 = (int) D.30179;
            D.30148->data.op[0].const_val = D.30180;
            D.30148 = args[1];
            D.30148->type = 1;
            D.30148 = args[1];
            D.30181 = alloc_dreg (cfg, 1);
            D.30182 = (int) D.30181;
            D.30148->dreg = D.30182;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.30183>; else goto <D.30184>;
            <D.30183>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30148 = args[1];
            D.29939->next = D.30148;
            D.30148 = args[1];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30148->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.30148 = args[1];
            bblock.129->last_ins = D.30148;
            goto <D.30185>;
            <D.30184>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.30148 = args[1];
            bblock.129->last_ins = D.30148;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.30185>:
            D.30160 = secman->demand;
            mono_emit_method_call (cfg, D.30160, &args, 0B);
            <D.30163>:
            D.30186 = actions.demandchoice.blob;
            if (D.30186 != 0B) goto <D.30187>; else goto <D.30188>;
            <D.30187>:
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.30189>; else goto <D.30190>;
            <D.30189>:
            D.29691 = cfg->mempool;
            D.30191 = mono_mempool_alloc (D.29691, 56);
            args[0] = D.30191;
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131->data.op[1].const_val = 0;
            D.30132 = D.30131->data.op[1].const_val;
            D.30131->data.op[0].const_val = D.30132;
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131->prev = 0B;
            D.30133 = D.30131->prev;
            D.30131->next = D.30133;
            D.30131 = args[0];
            D.30131->opcode = 732;
            D.30131 = args[0];
            D.30131->flags = 0;
            D.30131 = args[0];
            D.30131->type = 0;
            D.30131 = args[0];
            D.30131->dreg = -1;
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131->sreg3 = -1;
            D.30134 = D.30131->sreg3;
            D.30131->sreg2 = D.30134;
            D.30135 = D.30131->sreg2;
            D.30131->sreg1 = D.30135;
            D.30131 = args[0];
            D.29910 = cfg->ip;
            D.30131->cil_code = D.29910;
            D.30131 = args[0];
            D.29691 = cfg->mempool;
            D.30192 = actions.demandchoice.index;
            D.30193 = mono_jump_info_token_new2 (D.29691, image, D.30192, 0B);
            D.30131->data.op[0].p = D.30193;
            D.30131 = args[0];
            D.30131->data.op[1].p = 28B;
            D.30131 = args[0];
            D.30131->type = 6;
            D.30131 = args[0];
            D.30131->klass = 0B;
            D.30131 = args[0];
            D.30194 = alloc_dreg (cfg, 6);
            D.30195 = (int) D.30194;
            D.30131->dreg = D.30195;
            goto <D.30196>;
            <D.30190>:
            D.29691 = cfg->mempool;
            D.30197 = mono_mempool_alloc (D.29691, 56);
            args[0] = D.30197;
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131->data.op[1].const_val = 0;
            D.30132 = D.30131->data.op[1].const_val;
            D.30131->data.op[0].const_val = D.30132;
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131->prev = 0B;
            D.30133 = D.30131->prev;
            D.30131->next = D.30133;
            D.30131 = args[0];
            D.30131->opcode = 362;
            D.30131 = args[0];
            D.30131->flags = 0;
            D.30131 = args[0];
            D.30131->type = 0;
            D.30131 = args[0];
            D.30131->dreg = -1;
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131 = args[0];
            D.30131->sreg3 = -1;
            D.30134 = D.30131->sreg3;
            D.30131->sreg2 = D.30134;
            D.30135 = D.30131->sreg2;
            D.30131->sreg1 = D.30135;
            D.30131 = args[0];
            D.29910 = cfg->ip;
            D.30131->cil_code = D.29910;
            D.30131 = args[0];
            D.30186 = actions.demandchoice.blob;
            D.30131->data.op[0].p = D.30186;
            D.30131 = args[0];
            D.30131->type = 3;
            D.30131 = args[0];
            D.30198 = alloc_dreg (cfg, 3);
            D.30199 = (int) D.30198;
            D.30131->dreg = D.30199;
            <D.30196>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.30200>; else goto <D.30201>;
            <D.30200>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30131 = args[0];
            D.29939->next = D.30131;
            D.30131 = args[0];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30131->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.30131 = args[0];
            bblock.129->last_ins = D.30131;
            goto <D.30202>;
            <D.30201>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.30131 = args[0];
            bblock.129->last_ins = D.30131;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.30202>:
            D.29691 = cfg->mempool;
            D.30203 = mono_mempool_alloc (D.29691, 56);
            args[1] = D.30203;
            D.30148 = args[1];
            D.30148 = args[1];
            D.30148->data.op[1].const_val = 0;
            D.30149 = D.30148->data.op[1].const_val;
            D.30148->data.op[0].const_val = D.30149;
            D.30148 = args[1];
            D.30148 = args[1];
            D.30148->prev = 0B;
            D.30150 = D.30148->prev;
            D.30148->next = D.30150;
            D.30148 = args[1];
            D.30148->opcode = 362;
            D.30148 = args[1];
            D.30148->flags = 0;
            D.30148 = args[1];
            D.30148->type = 0;
            D.30148 = args[1];
            D.30148->dreg = -1;
            D.30148 = args[1];
            D.30148 = args[1];
            D.30148 = args[1];
            D.30148->sreg3 = -1;
            D.30151 = D.30148->sreg3;
            D.30148->sreg2 = D.30151;
            D.30152 = D.30148->sreg2;
            D.30148->sreg1 = D.30152;
            D.30148 = args[1];
            D.29910 = cfg->ip;
            D.30148->cil_code = D.29910;
            D.30148 = args[1];
            D.30204 = actions.demandchoice.size;
            D.30205 = (int) D.30204;
            D.30148->data.op[0].const_val = D.30205;
            D.30148 = args[1];
            D.30148->type = 1;
            D.30148 = args[1];
            D.30206 = alloc_dreg (cfg, 1);
            D.30207 = (int) D.30206;
            D.30148->dreg = D.30207;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.30208>; else goto <D.30209>;
            <D.30208>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30148 = args[1];
            D.29939->next = D.30148;
            D.30148 = args[1];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30148->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.30148 = args[1];
            bblock.129->last_ins = D.30148;
            goto <D.30210>;
            <D.30209>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.30148 = args[1];
            bblock.129->last_ins = D.30148;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.30210>:
            D.30211 = secman->demandchoice;
            mono_emit_method_call (cfg, D.30211, &args, 0B);
            <D.30188>:
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      <D.30122>:
      <D.30120>:
      if (pinvoke != 0) goto <D.30212>; else goto <D.30213>;
      <D.30212>:
      D.30214 = secman->demandunmanaged;
      mono_emit_method_call (cfg, D.30214, 0B, 0B);
      <D.30213>:
      D.30215 = mono_security_get_mode ();
      if (D.30215 == 1) goto <D.30216>; else goto <D.30217>;
      <D.30216>:
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29635 = D.29634 & 124;
      if (D.29635 == 24) goto <D.30218>; else goto <D.30219>;
      <D.30218>:
      {
        struct MonoMethod * wrapped;

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

          D.30222 = wrapped->flags;
          D.30223 = (int) D.30222;
          pinvk = D.30223 & 8192;
          D.30224 = wrapped->iflags;
          D.30225 = (int) D.30224;
          icall = D.30225 & 4096;
          if (icall != 0) goto <D.30226>; else goto <D.30228>;
          <D.30228>:
          if (pinvk != 0) goto <D.30226>; else goto <D.30227>;
          <D.30226>:
          D.29629 = method->klass;
          if (D.29629 != 0B) goto <D.30229>; else goto <D.30230>;
          <D.30229>:
          D.29629 = method->klass;
          D.29630 = D.29629->image;
          if (D.29630 != 0B) goto <D.30231>; else goto <D.30232>;
          <D.30231>:
          D.29629 = method->klass;
          D.29630 = D.29629->image;
          D.30233 = mono_security_core_clr_is_platform_image (D.29630);
          if (D.30233 == 0) goto <D.30234>; else goto <D.30235>;
          <D.30234>:
          {
            struct MonoException * ex;

            if (icall != 0) goto <D.30237>; else goto <D.30238>;
            <D.30237>:
            iftmp.80 = mono_get_exception_security ();
            goto <D.30239>;
            <D.30238>:
            iftmp.80 = mono_get_exception_method_access ();
            <D.30239>:
            ex = iftmp.80;
            emit_throw_exception (cfg, ex);
          }
          <D.30235>:
          <D.30232>:
          <D.30230>:
          <D.30227>:
        }
        <D.30221>:
      }
      <D.30219>:
      <D.30217>:
      D.30240 = cfg->exception_type;
      if (D.30240 != 0) goto exception_exit; else goto <D.30241>;
      <D.30241>:
      D.29670 = header->code_size;
      if (D.29670 == 0) goto <D.30242>; else goto <D.30243>;
      <D.30242>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30244>; else goto <D.30245>;
      <D.30244>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30246>; else goto <D.30247>;
      <D.30246>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30247>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30245>:
      D.30248 = mini_get_debug_options ();
      D.30249 = D.30248->break_on_unverified;
      if (D.30249 != 0) goto <D.30250>; else goto unverified;
      <D.30250>:
      raise (5);
      <D.30243>:
      D.29857 = cfg->real_offset;
      D.30251 = get_basic_blocks (cfg, header, D.29857, ip, end, &err_pos);
      if (D.30251 != 0) goto <D.30252>; else goto <D.30253>;
      <D.30252>:
      ip = err_pos;
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30254>; else goto <D.30255>;
      <D.30254>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30256>; else goto <D.30257>;
      <D.30256>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30257>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30255>:
      D.30258 = mini_get_debug_options ();
      D.30259 = D.30258->break_on_unverified;
      if (D.30259 != 0) goto <D.30260>; else goto unverified;
      <D.30260>:
      raise (5);
      <D.30253>:
      D.29662 = cfg->method;
      if (D.29662 == method) goto <D.30261>; else goto <D.30262>;
      <D.30261>:
      bblock.77 = bblock;
      breakpoint_id.81 = (unsigned int) breakpoint_id;
      mono_debug_init_method (cfg, bblock.77, breakpoint_id.81);
      <D.30262>:
      n = 0;
      goto <D.26788>;
      <D.26787>:
      D.30264 = header->locals[n];
      D.30265 = BIT_FIELD_REF <*D.30264, 32, 32>;
      D.30266 = D.30265 & 1090453504;
      if (D.30266 == 65536) goto <D.30267>; else goto <D.30268>;
      <D.30267>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30269>; else goto <D.30270>;
      <D.30269>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30271>; else goto <D.30272>;
      <D.30271>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30272>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30270>:
      D.30273 = mini_get_debug_options ();
      D.30274 = D.30273->break_on_unverified;
      if (D.30274 != 0) goto <D.30275>; else goto unverified;
      <D.30275>:
      raise (5);
      <D.30268>:
      n = n + 1;
      <D.26788>:
      D.30276 = header->num_locals;
      D.30277 = (int) D.30276;
      if (D.30277 > n) goto <D.26787>; else goto <D.26789>;
      <D.26789>:
      class_inits = 0B;
      D.29727 = cfg->generic_sharing_context;
      if (D.29727 != 0B) goto <D.30278>; else goto <D.30279>;
      <D.30278>:
      D.29662 = cfg->method;
      if (D.29662 == method) goto <D.30280>; else goto <D.30281>;
      <D.30280>:
      D.29988 = method->flags;
      D.29989 = (int) D.29988;
      D.29990 = D.29989 & 16;
      if (D.29990 != 0) goto <D.30282>; else goto <D.30285>;
      <D.30285>:
      D.30286 = mini_method_get_context (method);
      D.30287 = D.30286->method_inst;
      if (D.30287 != 0B) goto <D.30282>; else goto <D.30288>;
      <D.30288>:
      D.29629 = method->klass;
      D.29780 = BIT_FIELD_REF <*D.29629, 32, 160>;
      D.29781 = D.29780 & 8;
      if (D.29781 != 0) goto <D.30282>; else goto <D.30283>;
      <D.30282>:
      mono_get_vtable_var (cfg);
      goto <D.30284>;
      <D.30283>:
      D.30289 = cfg->args;
      D.30290 = *D.30289;
      D.30289 = cfg->args;
      D.30290 = *D.30289;
      D.30291 = D.30290->flags;
      D.30292 = D.30291 | 4;
      D.30290->flags = D.30292;
      <D.30284>:
      <D.30281>:
      <D.30279>:
      if (is_virtual_call != 0) goto <D.30293>; else goto <D.30294>;
      <D.30293>:
      {
        struct MonoInst * arg_ins;

        D.29691 = cfg->mempool;
        arg_ins = mono_mempool_alloc (D.29691, 56);
        arg_ins->data.op[1].const_val = 0;
        D.30295 = arg_ins->data.op[1].const_val;
        arg_ins->data.op[0].const_val = D.30295;
        arg_ins->prev = 0B;
        D.30296 = arg_ins->prev;
        arg_ins->next = D.30296;
        arg_ins->opcode = 424;
        arg_ins->flags = 0;
        arg_ins->type = 0;
        arg_ins->dreg = -1;
        arg_ins->sreg3 = -1;
        D.30297 = arg_ins->sreg3;
        arg_ins->sreg2 = D.30297;
        D.30298 = arg_ins->sreg2;
        arg_ins->sreg1 = D.30298;
        D.29910 = cfg->ip;
        arg_ins->cil_code = D.29910;
        D.30299 = cfg->arg_types;
        D.30300 = *D.30299;
        D.30301 = mono_type_to_regmove (cfg, D.30300);
        D.30302 = (short unsigned int) D.30301;
        arg_ins->opcode = D.30302;
        D.30299 = cfg->arg_types;
        D.30300 = *D.30299;
        type_to_eval_stack_type (cfg, D.30300, arg_ins);
        D.30289 = cfg->args;
        D.30290 = *D.30289;
        D.30303 = D.30290->klass;
        arg_ins->klass = D.30303;
        D.30289 = cfg->args;
        D.30290 = *D.30289;
        D.30304 = D.30290->dreg;
        arg_ins->sreg1 = D.30304;
        D.30305 = arg_ins->type;
        D.30306 = (<unnamed type>) D.30305;
        D.30307 = alloc_dreg (cfg, D.30306);
        D.30308 = (int) D.30307;
        arg_ins->dreg = D.30308;
        D.30309 = arg_ins->opcode;
        if (D.30309 == 427) goto <D.30310>; else goto <D.30311>;
        <D.30310>:
        D.30299 = cfg->arg_types;
        D.30300 = *D.30299;
        D.30312 = mono_class_from_mono_type (D.30300);
        arg_ins->klass = D.30312;
        <D.30311>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.30313>; else goto <D.30314>;
        <D.30313>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = arg_ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        arg_ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = arg_ins;
        goto <D.30315>;
        <D.30314>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = arg_ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.30315>:
        D.30117 = cfg->flags;
        D.30316 = D.30117 | 128;
        cfg->flags = D.30316;
        D.29679 = BIT_FIELD_REF <*cfg, 32, 3424>;
        D.30317 = D.29679 & 64;
        if (D.30317 != 0) goto <D.30318>; else goto <D.30319>;
        <D.30318>:
        D.29679 = BIT_FIELD_REF <*cfg, 32, 3424>;
        D.30317 = D.29679 & 64;
        if (D.30317 != 0) goto <D.30320>; else goto <D.30321>;
        <D.30320>:
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.30322 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30322;
          inst->prev = 0B;
          D.30323 = inst->prev;
          inst->next = D.30323;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30324 = inst->sreg3;
          inst->sreg2 = D.30324;
          D.30325 = inst->sreg2;
          inst->sreg1 = D.30325;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          inst->dreg = -1;
          D.30326 = arg_ins->dreg;
          inst->sreg1 = D.30326;
          inst->data.op[1].const_val = 0;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.30327>; else goto <D.30328>;
          <D.30327>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.30329>;
          <D.30328>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.30329>:
        }
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.30330 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30330;
          inst->prev = 0B;
          D.30331 = inst->prev;
          inst->next = D.30331;
          inst->opcode = 451;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30332 = inst->sreg3;
          inst->sreg2 = D.30332;
          D.30333 = inst->sreg2;
          inst->sreg1 = D.30333;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          inst->data.op[1].p = "NullReferenceException";
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.30334>; else goto <D.30335>;
          <D.30334>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.30336>;
          <D.30335>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.30336>:
        }
        goto <D.30337>;
        <D.30321>:
        <D.30337>:
        goto <D.30338>;
        <D.30319>:
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.30339 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30339;
          inst->prev = 0B;
          D.30340 = inst->prev;
          inst->next = D.30340;
          inst->opcode = 340;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30341 = inst->sreg3;
          inst->sreg2 = D.30341;
          D.30342 = inst->sreg2;
          inst->sreg1 = D.30342;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          inst->dreg = -1;
          D.30326 = arg_ins->dreg;
          inst->sreg1 = D.30326;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.30343>; else goto <D.30344>;
          <D.30343>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.30345>;
          <D.30344>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.30345>:
        }
        <D.30338>:
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.30346 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30346;
          inst->prev = 0B;
          D.30347 = inst->prev;
          inst->next = D.30347;
          inst->opcode = 799;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30348 = inst->sreg3;
          inst->sreg2 = D.30348;
          D.30349 = inst->sreg2;
          inst->sreg1 = D.30349;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          inst->dreg = -1;
          D.30326 = arg_ins->dreg;
          inst->sreg1 = D.30326;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.30350>; else goto <D.30351>;
          <D.30350>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.30352>;
          <D.30351>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.30352>:
        }
      }
      <D.30294>:
      D.30353 = dont_verify == 0;
      skip_dead_blocks = (gboolean) D.30353;
      if (skip_dead_blocks != 0) goto <D.30354>; else goto <D.30355>;
      <D.30354>:
      bb = mono_basic_block_split (method, &error);
      original_bb = bb;
      D.30356 = mono_error_ok (&error);
      if (D.30356 == 0) goto <D.30357>; else goto <D.30358>;
      <D.30357>:
      mono_error_cleanup (&error);
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30359>; else goto <D.30360>;
      <D.30359>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30361>; else goto <D.30362>;
      <D.30361>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30362>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30360>:
      D.30363 = mini_get_debug_options ();
      D.30364 = D.30363->break_on_unverified;
      if (D.30364 != 0) goto <D.30365>; else goto unverified;
      <D.30365>:
      raise (5);
      <D.30358>:
      D.30366 = bb == 0B;
      D.30367 = (long int) D.30366;
      D.30368 = __builtin_expect (D.30367, 0);
      if (D.30368 != 0) goto <D.30369>; else goto <D.30370>;
      <D.30369>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7115, "bb");
      <D.30370>:
      <D.30355>:
      D.29691 = cfg->mempool;
      D.30371 = header->max_stack;
      D.30372 = (int) D.30371;
      D.30373 = D.30372 + 1;
      D.30374 = (unsigned int) D.30373;
      D.30375 = D.30374 * 4;
      sp = mono_mempool_alloc0 (D.29691, D.30375);
      stack_start = sp;
      ins_flag = 0;
      start_new_bblock = 0;
      bblock.77 = bblock;
      cfg->cbb = bblock.77;
      goto <D.26803>;
      <D.27639>:
      D.29662 = cfg->method;
      if (D.29662 == method) goto <D.30376>; else goto <D.30377>;
      <D.30376>:
      ip.82 = (int) ip;
      D.29837 = header->code;
      D.30379 = (int) D.29837;
      D.30380 = ip.82 - D.30379;
      D.30381 = (unsigned int) D.30380;
      cfg->real_offset = D.30381;
      goto <D.30382>;
      <D.30377>:
      cfg->real_offset = inline_offset;
      <D.30382>:
      cfg->ip = ip;
      context_used = 0;
      if (start_new_bblock != 0) goto <D.30383>; else goto <D.30384>;
      <D.30383>:
      bblock.77 = bblock;
      ip.82 = (int) ip;
      bblock.77 = bblock;
      D.30012 = bblock.77->cil_code;
      D.30015 = (int) D.30012;
      D.30385 = ip.82 - D.30015;
      bblock.77->cil_length = D.30385;
      if (start_new_bblock == 2) goto <D.30386>; else goto <D.30387>;
      <D.30386>:
      D.29886 = tblock->cil_code;
      D.30388 = D.29886 != ip;
      D.30389 = (long int) D.30388;
      D.30390 = __builtin_expect (D.30389, 0);
      if (D.30390 != 0) goto <D.30391>; else goto <D.30392>;
      <D.30391>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7136, "ip == tblock->cil_code");
      <D.30392>:
      goto <D.30393>;
      <D.30387>:
      D.29821 = cfg->cil_offset_to_bb;
      ip.82 = (int) ip;
      D.29825 = cfg->cil_start;
      D.29826 = (int) D.29825;
      D.30394 = ip.82 - D.29826;
      D.30395 = (unsigned int) D.30394;
      D.30396 = D.30395 * 4;
      D.30397 = D.29821 + D.30396;
      tblock = *D.30397;
      if (tblock == 0B) goto <D.30398>; else goto <D.30399>;
      <D.30398>:
      if (ip >= end) goto <D.30400>; else goto <D.30402>;
      <D.30402>:
      D.29837 = header->code;
      if (D.29837 > ip) goto <D.30400>; else goto <D.30401>;
      <D.30400>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30403>; else goto <D.30404>;
      <D.30403>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30405>; else goto <D.30406>;
      <D.30405>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30406>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30404>:
      D.30407 = mini_get_debug_options ();
      D.30408 = D.30407->break_on_unverified;
      if (D.30408 != 0) goto <D.30409>; else goto unverified;
      <D.30409>:
      raise (5);
      <D.30401>:
      D.29691 = cfg->mempool;
      tblock = mono_mempool_alloc0 (D.29691, 172);
      D.29798 = cfg->num_bblocks;
      D.30410 = D.29798;
      D.30411 = D.30410 + 1;
      cfg->num_bblocks = D.30411;
      D.30412 = (int) D.30410;
      tblock->block_num = D.30412;
      tblock->cil_code = ip;
      D.29886 = tblock->cil_code;
      if (D.29886 != 0B) goto <D.30413>; else goto <D.30414>;
      <D.30413>:
      D.29821 = cfg->cil_offset_to_bb;
      D.29886 = tblock->cil_code;
      D.29889 = (int) D.29886;
      D.29825 = cfg->cil_start;
      D.29826 = (int) D.29825;
      D.29890 = D.29889 - D.29826;
      D.29891 = (unsigned int) D.29890;
      D.29892 = D.29891 * 4;
      D.29893 = D.29821 + D.29892;
      *D.29893 = tblock;
      <D.30414>:
      D.29857 = cfg->real_offset;
      tblock->real_offset = D.29857;
      <D.30399>:
      <D.30393>:
      bblock.77 = bblock;
      bblock.77->next_bb = tblock;
      bblock = tblock;
      bblock.77 = bblock;
      cfg->cbb = bblock.77;
      start_new_bblock = 0;
      i = 0;
      goto <D.26796>;
      <D.26795>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 3) goto <D.30415>; else goto <D.30416>;
      <D.30415>:
      bblock.77 = bblock;
      D.30417 = bblock.77->in_stack;
      i.75 = (unsigned int) i;
      D.30418 = i.75 * 4;
      D.30419 = D.30417 + D.30418;
      D.30420 = *D.30419;
      D.30421 = D.30420->data.op[0].const_val;
      printf ("loading %d from temp %d\n", i, D.30421);
      <D.30416>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.30422 = cfg->varinfo;
      bblock.77 = bblock;
      D.30417 = bblock.77->in_stack;
      i.75 = (unsigned int) i;
      D.30418 = i.75 * 4;
      D.30419 = D.30417 + D.30418;
      D.30420 = *D.30419;
      D.30421 = D.30420->data.op[0].const_val;
      D.30423 = (unsigned int) D.30421;
      D.30424 = D.30423 * 4;
      D.30425 = D.30422 + D.30424;
      D.30426 = *D.30425;
      D.30427 = D.30426->data.op[1].vtype;
      D.30428 = mono_type_to_regmove (cfg, D.30427);
      D.30429 = (short unsigned int) D.30428;
      ins->opcode = D.30429;
      D.30422 = cfg->varinfo;
      bblock.77 = bblock;
      D.30417 = bblock.77->in_stack;
      i.75 = (unsigned int) i;
      D.30418 = i.75 * 4;
      D.30419 = D.30417 + D.30418;
      D.30420 = *D.30419;
      D.30421 = D.30420->data.op[0].const_val;
      D.30423 = (unsigned int) D.30421;
      D.30424 = D.30423 * 4;
      D.30425 = D.30422 + D.30424;
      D.30426 = *D.30425;
      D.30427 = D.30426->data.op[1].vtype;
      type_to_eval_stack_type (cfg, D.30427, ins);
      D.30422 = cfg->varinfo;
      bblock.77 = bblock;
      D.30417 = bblock.77->in_stack;
      i.75 = (unsigned int) i;
      D.30418 = i.75 * 4;
      D.30419 = D.30417 + D.30418;
      D.30420 = *D.30419;
      D.30421 = D.30420->data.op[0].const_val;
      D.30423 = (unsigned int) D.30421;
      D.30424 = D.30423 * 4;
      D.30425 = D.30422 + D.30424;
      D.30426 = *D.30425;
      D.30430 = D.30426->klass;
      ins->klass = D.30430;
      D.30422 = cfg->varinfo;
      bblock.77 = bblock;
      D.30417 = bblock.77->in_stack;
      i.75 = (unsigned int) i;
      D.30418 = i.75 * 4;
      D.30419 = D.30417 + D.30418;
      D.30420 = *D.30419;
      D.30421 = D.30420->data.op[0].const_val;
      D.30423 = (unsigned int) D.30421;
      D.30424 = D.30423 * 4;
      D.30425 = D.30422 + D.30424;
      D.30426 = *D.30425;
      D.30431 = D.30426->dreg;
      ins->sreg1 = D.30431;
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.30434 = alloc_dreg (cfg, D.30433);
      D.30435 = (int) D.30434;
      ins->dreg = D.30435;
      D.30436 = ins->opcode;
      if (D.30436 == 427) goto <D.30437>; else goto <D.30438>;
      <D.30437>:
      D.30422 = cfg->varinfo;
      bblock.77 = bblock;
      D.30417 = bblock.77->in_stack;
      i.75 = (unsigned int) i;
      D.30418 = i.75 * 4;
      D.30419 = D.30417 + D.30418;
      D.30420 = *D.30419;
      D.30421 = D.30420->data.op[0].const_val;
      D.30423 = (unsigned int) D.30421;
      D.30424 = D.30423 * 4;
      D.30425 = D.30422 + D.30424;
      D.30426 = *D.30425;
      D.30427 = D.30426->data.op[1].vtype;
      D.30439 = mono_class_from_mono_type (D.30427);
      ins->klass = D.30439;
      <D.30438>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.30440>; else goto <D.30441>;
      <D.30440>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.30442>;
      <D.30441>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.30442>:
      sp.83 = sp;
      sp = sp.83 + 4;
      *sp.83 = ins;
      i = i + 1;
      <D.26796>:
      bblock.77 = bblock;
      D.30444 = bblock.77->in_scount;
      D.30445 = (int) D.30444;
      if (D.30445 > i) goto <D.26795>; else goto <D.26797>;
      <D.26797>:
      if (class_inits != 0B) goto <D.30446>; else goto <D.30447>;
      <D.30446>:
      monoeg_g_slist_free (class_inits);
      <D.30447>:
      class_inits = 0B;
      goto <D.30448>;
      <D.30384>:
      D.29821 = cfg->cil_offset_to_bb;
      ip.82 = (int) ip;
      D.29825 = cfg->cil_start;
      D.29826 = (int) D.29825;
      D.30394 = ip.82 - D.29826;
      D.30395 = (unsigned int) D.30394;
      D.30396 = D.30395 * 4;
      D.30397 = D.29821 + D.30396;
      tblock = *D.30397;
      if (tblock != 0B) goto <D.30449>; else goto <D.30450>;
      <D.30449>:
      bblock.77 = bblock;
      if (tblock != bblock.77) goto <D.30451>; else goto <D.30452>;
      <D.30451>:
      bblock.77 = bblock;
      link_bblock (cfg, bblock.77, tblock);
      if (sp != stack_start) goto <D.30453>; else goto <D.30454>;
      <D.30453>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      handle_stack_args (cfg, stack_start, D.30458);
      sp = stack_start;
      D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.30459 = D.30081 & 8192;
      if (D.30459 != 0) goto <D.30460>; else goto <D.30461>;
      <D.30460>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30462>; else goto <D.30463>;
      <D.30462>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30464>; else goto <D.30465>;
      <D.30464>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30465>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30463>:
      D.30466 = mini_get_debug_options ();
      D.30467 = D.30466->break_on_unverified;
      if (D.30467 != 0) goto <D.30468>; else goto unverified;
      <D.30468>:
      raise (5);
      <D.30461>:
      <D.30454>:
      bblock.77 = bblock;
      bblock.77->next_bb = tblock;
      bblock = tblock;
      bblock.77 = bblock;
      cfg->cbb = bblock.77;
      i = 0;
      goto <D.26799>;
      <D.26798>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 3) goto <D.30469>; else goto <D.30470>;
      <D.30469>:
      bblock.77 = bblock;
      D.30417 = bblock.77->in_stack;
      i.75 = (unsigned int) i;
      D.30418 = i.75 * 4;
      D.30419 = D.30417 + D.30418;
      D.30420 = *D.30419;
      D.30421 = D.30420->data.op[0].const_val;
      printf ("loading %d from temp %d\n", i, D.30421);
      <D.30470>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.30422 = cfg->varinfo;
      bblock.77 = bblock;
      D.30417 = bblock.77->in_stack;
      i.75 = (unsigned int) i;
      D.30418 = i.75 * 4;
      D.30419 = D.30417 + D.30418;
      D.30420 = *D.30419;
      D.30421 = D.30420->data.op[0].const_val;
      D.30423 = (unsigned int) D.30421;
      D.30424 = D.30423 * 4;
      D.30425 = D.30422 + D.30424;
      D.30426 = *D.30425;
      D.30427 = D.30426->data.op[1].vtype;
      D.30471 = mono_type_to_regmove (cfg, D.30427);
      D.30472 = (short unsigned int) D.30471;
      ins->opcode = D.30472;
      D.30422 = cfg->varinfo;
      bblock.77 = bblock;
      D.30417 = bblock.77->in_stack;
      i.75 = (unsigned int) i;
      D.30418 = i.75 * 4;
      D.30419 = D.30417 + D.30418;
      D.30420 = *D.30419;
      D.30421 = D.30420->data.op[0].const_val;
      D.30423 = (unsigned int) D.30421;
      D.30424 = D.30423 * 4;
      D.30425 = D.30422 + D.30424;
      D.30426 = *D.30425;
      D.30427 = D.30426->data.op[1].vtype;
      type_to_eval_stack_type (cfg, D.30427, ins);
      D.30422 = cfg->varinfo;
      bblock.77 = bblock;
      D.30417 = bblock.77->in_stack;
      i.75 = (unsigned int) i;
      D.30418 = i.75 * 4;
      D.30419 = D.30417 + D.30418;
      D.30420 = *D.30419;
      D.30421 = D.30420->data.op[0].const_val;
      D.30423 = (unsigned int) D.30421;
      D.30424 = D.30423 * 4;
      D.30425 = D.30422 + D.30424;
      D.30426 = *D.30425;
      D.30430 = D.30426->klass;
      ins->klass = D.30430;
      D.30422 = cfg->varinfo;
      bblock.77 = bblock;
      D.30417 = bblock.77->in_stack;
      i.75 = (unsigned int) i;
      D.30418 = i.75 * 4;
      D.30419 = D.30417 + D.30418;
      D.30420 = *D.30419;
      D.30421 = D.30420->data.op[0].const_val;
      D.30423 = (unsigned int) D.30421;
      D.30424 = D.30423 * 4;
      D.30425 = D.30422 + D.30424;
      D.30426 = *D.30425;
      D.30431 = D.30426->dreg;
      ins->sreg1 = D.30431;
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.30473 = alloc_dreg (cfg, D.30433);
      D.30474 = (int) D.30473;
      ins->dreg = D.30474;
      D.30436 = ins->opcode;
      if (D.30436 == 427) goto <D.30475>; else goto <D.30476>;
      <D.30475>:
      D.30422 = cfg->varinfo;
      bblock.77 = bblock;
      D.30417 = bblock.77->in_stack;
      i.75 = (unsigned int) i;
      D.30418 = i.75 * 4;
      D.30419 = D.30417 + D.30418;
      D.30420 = *D.30419;
      D.30421 = D.30420->data.op[0].const_val;
      D.30423 = (unsigned int) D.30421;
      D.30424 = D.30423 * 4;
      D.30425 = D.30422 + D.30424;
      D.30426 = *D.30425;
      D.30427 = D.30426->data.op[1].vtype;
      D.30477 = mono_class_from_mono_type (D.30427);
      ins->klass = D.30477;
      <D.30476>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.30478>; else goto <D.30479>;
      <D.30478>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.30480>;
      <D.30479>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.30480>:
      sp.86 = sp;
      sp = sp.86 + 4;
      *sp.86 = ins;
      i = i + 1;
      <D.26799>:
      bblock.77 = bblock;
      D.30444 = bblock.77->in_scount;
      D.30445 = (int) D.30444;
      if (D.30445 > i) goto <D.26798>; else goto <D.26800>;
      <D.26800>:
      monoeg_g_slist_free (class_inits);
      class_inits = 0B;
      <D.30452>:
      <D.30450>:
      <D.30448>:
      if (skip_dead_blocks != 0) goto <D.30482>; else goto <D.30483>;
      <D.30482>:
      {
        int ip_offset;

        ip.82 = (int) ip;
        D.29837 = header->code;
        D.30379 = (int) D.29837;
        ip_offset = ip.82 - D.30379;
        D.30484 = bb->end;
        if (D.30484 == ip_offset) goto <D.30485>; else goto <D.30486>;
        <D.30485>:
        bb = bb->next;
        <D.30486>:
        D.30487 = BIT_FIELD_REF <*bb, 32, 224>;
        D.30488 = D.30487 & 2;
        if (D.30488 != 0) goto <D.30489>; else goto <D.30490>;
        <D.30489>:
        {
          int op_size;

          op_size = mono_opcode_size (ip, end);
          D.30491 = op_size <= 0;
          D.30492 = (long int) D.30491;
          D.30493 = __builtin_expect (D.30492, 0);
          if (D.30493 != 0) goto <D.30494>; else goto <D.30495>;
          <D.30494>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7183, "op_size > 0");
          <D.30495>:
          D.29771 = cfg->verbose_level;
          if (D.29771 > 3) goto <D.30496>; else goto <D.30497>;
          <D.30496>:
          printf ("SKIPPING DEAD OP at %x\n", ip_offset);
          <D.30497>:
          D.30498 = ip_offset + op_size;
          D.30484 = bb->end;
          if (D.30498 == D.30484) goto <D.30499>; else goto <D.30500>;
          <D.30499>:
          D.29691 = cfg->mempool;
          ins = mono_mempool_alloc (D.29691, 56);
          ins->data.op[1].const_val = 0;
          D.29906 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.29906;
          ins->prev = 0B;
          D.29907 = ins->prev;
          ins->next = D.29907;
          ins->opcode = 316;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.29908 = ins->sreg3;
          ins->sreg2 = D.29908;
          D.29909 = ins->sreg2;
          ins->sreg1 = D.29909;
          D.29910 = cfg->ip;
          ins->cil_code = D.29910;
          bblock.77 = bblock;
          D.30024 = bblock.77->last_ins;
          if (D.30024 != 0B) goto <D.30501>; else goto <D.30502>;
          <D.30501>:
          bblock.77 = bblock;
          D.30024 = bblock.77->last_ins;
          D.30024->next = ins;
          bblock.77 = bblock;
          D.30024 = bblock.77->last_ins;
          ins->prev = D.30024;
          bblock.77 = bblock;
          bblock.77->last_ins = ins;
          goto <D.30503>;
          <D.30502>:
          bblock.77 = bblock;
          bblock.77 = bblock;
          bblock.77->last_ins = ins;
          D.30024 = bblock.77->last_ins;
          bblock.77->code = D.30024;
          <D.30503>:
          start_new_bblock = 1;
          <D.30500>:
          op_size.87 = (sizetype) op_size;
          ip = ip + op_size.87;
          // predicted unlikely by continue predictor.
          goto <D.26803>;
        }
        <D.30490>:
      }
      <D.30483>:
      if (seq_points != 0) goto <D.30507>; else goto <D.30508>;
      <D.30507>:
      if (sp == stack_start) goto <D.30505>; else goto <D.30509>;
      <D.30509>:
      if (sym_seq_points != 0) goto <D.30510>; else goto <D.30506>;
      <D.30510>:
      ip.82 = (int) ip;
      D.29837 = header->code;
      D.30379 = (int) D.29837;
      D.30380 = ip.82 - D.30379;
      D.30511 = (unsigned int) D.30380;
      D.30512 = D.30511 / 32;
      D.30513 = seq_point_locs->data[D.30512];
      ip.82 = (int) ip;
      D.29837 = header->code;
      D.30379 = (int) D.29837;
      D.30380 = ip.82 - D.30379;
      D.30514 = D.30380 & 31;
      D.30515 = 1 << D.30514;
      D.30516 = D.30513 & D.30515;
      if (D.30516 != 0) goto <D.30505>; else goto <D.30506>;
      <D.30505>:
      {
        gboolean intr_loc;

        D.29837 = header->code;
        if (D.29837 == ip) goto <D.30518>; else goto <D.30521>;
        <D.30521>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 == 0B) goto <D.30522>; else goto <D.30519>;
        <D.30522>:
        D.30523 = cfg->header;
        D.30524 = BIT_FIELD_REF <*D.30523, 32, 64>;
        D.30525 = D.30524 & 2147418112;
        if (D.30525 != 0) goto <D.30518>; else goto <D.30519>;
        <D.30518>:
        iftmp.88 = 1;
        goto <D.30520>;
        <D.30519>:
        iftmp.88 = 0;
        <D.30520>:
        intr_loc = iftmp.88;
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 341;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        ip.82 = (int) ip;
        D.29837 = header->code;
        D.30379 = (int) D.29837;
        D.30380 = ip.82 - D.30379;
        ins->data.op[1].const_val = D.30380;
        D.30526 = intr_loc != 0;
        D.30527 = (unsigned char) D.30526;
        ins->flags = D.30527;
        if (sp != stack_start) goto <D.30528>; else goto <D.30529>;
        <D.30528>:
        D.30530 = ins->flags;
        D.30531 = D.30530 | 4;
        ins->flags = D.30531;
        <D.30529>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.30532>; else goto <D.30533>;
        <D.30532>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.30534>;
        <D.30533>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.30534>:
        if (sym_seq_points != 0) goto <D.30535>; else goto <D.30536>;
        <D.30535>:
        ip.82 = (int) ip;
        D.29837 = header->code;
        D.30379 = (int) D.29837;
        D.30380 = ip.82 - D.30379;
        D.30511 = (unsigned int) D.30380;
        D.30537 = D.30511 / 32;
        D.30538 = seq_point_set_locs->data[D.30537];
        ip.82 = (int) ip;
        D.29837 = header->code;
        D.30379 = (int) D.29837;
        D.30380 = ip.82 - D.30379;
        D.30514 = D.30380 & 31;
        D.30515 = 1 << D.30514;
        D.30539 = D.30538 | D.30515;
        seq_point_set_locs->data[D.30537] = D.30539;
        <D.30536>:
      }
      <D.30506>:
      <D.30508>:
      bblock.77 = bblock;
      D.29857 = cfg->real_offset;
      bblock.77->real_offset = D.29857;
      D.29662 = cfg->method;
      if (D.29662 == method) goto <D.30540>; else goto <D.30541>;
      <D.30540>:
      D.30542 = cfg->coverage_info;
      if (D.30542 != 0B) goto <D.30543>; else goto <D.30544>;
      <D.30543>:
      {
        guint32 cil_offset;

        ip.82 = (int) ip;
        D.29837 = header->code;
        D.30379 = (int) D.29837;
        D.30380 = ip.82 - D.30379;
        cil_offset = (guint32) D.30380;
        D.30542 = cfg->coverage_info;
        D.30542->data[cil_offset].cil_code = ip;
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 362;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        D.30542 = cfg->coverage_info;
        D.30545 = &D.30542->data[cil_offset].count;
        ins->data.op[0].p = D.30545;
        ins->type = 3;
        D.30546 = alloc_dreg (cfg, 3);
        D.30547 = (int) D.30546;
        ins->dreg = D.30547;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.30548>; else goto <D.30549>;
        <D.30548>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.30550>;
        <D.30549>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.30550>:
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.30551 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30551;
          inst->prev = 0B;
          D.30552 = inst->prev;
          inst->next = D.30552;
          inst->opcode = 381;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30553 = inst->sreg3;
          inst->sreg2 = D.30553;
          D.30554 = inst->sreg2;
          inst->sreg1 = D.30554;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          D.30101 = ins->dreg;
          inst->dreg = D.30101;
          inst->data.op[0].const_val = 0;
          inst->data.op[1].const_val = 1;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.30555>; else goto <D.30556>;
          <D.30555>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.30557>;
          <D.30556>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.30557>:
        }
      }
      <D.30544>:
      <D.30541>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 3) goto <D.30558>; else goto <D.30559>;
      <D.30558>:
      bblock.77 = bblock;
      D.30560 = bblock.77->block_num;
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      D.30561 = mono_disasm_code_one (0B, method, ip, 0B);
      printf ("converting (in B%d: stack: %d) %s", D.30560, D.30458, D.30561);
      <D.30559>:
      D.30562 = *ip;
      D.30563 = (int) D.30562;
      switch (D.30563) <default: <D.27638>, case 0: <D.26807>, case 1: <D.26809>, case 2: <D.26810>, case 3: <D.26811>, case 4: <D.26812>, case 5: <D.26813>, case 6: <D.26814>, case 7: <D.26815>, case 8: <D.26816>, case 9: <D.26817>, case 10: <D.26818>, case 11: <D.26819>, case 12: <D.26820>, case 13: <D.26821>, case 14: <D.26822>, case 15: <D.26823>, case 16: <D.26826>, case 17: <D.26827>, case 18: <D.26828>, case 19: <D.26832>, case 20: <D.26833>, case 21: <D.26834>, case 22: <D.26835>, case 23: <D.26836>, case 24: <D.26837>, case 25: <D.26838>, case 26: <D.26839>, case 27: <D.26840>, case 28: <D.26841>, case 29: <D.26842>, case 30: <D.26843>, case 31: <D.26844>, case 32: <D.26845>, case 33: <D.26846>, case 34: <D.26847>, case 35: <D.26853>, case 37: <D.26859>, case 38: <D.26862>, case 39: <D.26863>, case 40: <D.26877>, case 41: <D.26876>, case 42: <D.27012>, case 43: <D.27018>, case 44: <D.27031>, case 45: <D.27032>, case 46: <D.27019>, case 47: <D.27020>, case 48: <D.27021>, case 49: <D.27022>, case 50: <D.27023>, case 51: <D.27024>, case 52: <D.27025>, case 53: <D.27026>, case 54: <D.27027>, case 55: <D.27028>, case 56: <D.27030>, case 57: <D.27033>, case 58: <D.27034>, case 59: <D.27039>, case 60: <D.27040>, case 61: <D.27041>, case 62: <D.27042>, case 63: <D.27043>, case 64: <D.27044>, case 65: <D.27045>, case 66: <D.27046>, case 67: <D.27047>, case 68: <D.27048>, case 69: <D.27050>, case 70: <D.27078>, case 71: <D.27079>, case 72: <D.27080>, case 73: <D.27081>, case 74: <D.27082>, case 75: <D.27083>, case 76: <D.27084>, case 77: <D.27085>, case 78: <D.27086>, case 79: <D.27087>, case 80: <D.27088>, case 81: <D.27095>, case 82: <D.27096>, case 83: <D.27097>, case 84: <D.27098>, case 85: <D.27099>, case 86: <D.27100>, case 87: <D.27101>, case 88: <D.27105>, case 89: <D.27106>, case 90: <D.27103>, case 91: <D.27107>, case 92: <D.27108>, case 93: <D.27109>, case 94: <D.27110>, case 95: <D.27111>, case 96: <D.27112>, case 97: <D.27113>, case 98: <D.27114>, case 99: <D.27115>, case 100: <D.27116>, case 101: <D.27118>, case 102: <D.27119>, case 103: <D.27120>, case 104: <D.27121>, case 105: <D.27122>, case 106: <D.27126>, case 107: <D.27123>, case 108: <D.27124>, case 109: <D.27125>, case 110: <D.27127>, case 111: <D.26878>, case 112: <D.27160>, case 113: <D.27164>, case 114: <D.27174>, case 115: <D.27179>, case 116: <D.27203>, case 117: <D.27209>, case 118: <D.27130>, case 119: <D.27636>, case 120: <D.27637>, case 121: <D.27236>, case 122: <D.27466>, case 123: <D.27240>, case 124: <D.27241>, case 125: <D.27242>, case 126: <D.27243>, case 127: <D.27244>, case 128: <D.27245>, case 129: <D.27342>, case 130: <D.27140>, case 131: <D.27141>, case 132: <D.27142>, case 133: <D.27143>, case 134: <D.27144>, case 135: <D.27145>, case 136: <D.27146>, case 137: <D.27147>, case 138: <D.27148>, case 139: <D.27149>, case 140: <D.27221>, case 141: <D.27343>, case 142: <D.27357>, case 143: <D.27358>, case 144: <D.27361>, case 145: <D.27362>, case 146: <D.27363>, case 147: <D.27364>, case 148: <D.27365>, case 149: <D.27366>, case 150: <D.27367>, case 151: <D.27368>, case 152: <D.27369>, case 153: <D.27370>, case 154: <D.27371>, case 155: <D.27401>, case 156: <D.27402>, case 157: <D.27403>, case 158: <D.27404>, case 159: <D.27405>, case 160: <D.27406>, case 161: <D.27407>, case 162: <D.27408>, case 163: <D.27360>, case 164: <D.27409>, case 165: <D.27215>, case 179: <D.27133>, case 180: <D.27137>, case 181: <D.27134>, case 182: <D.27138>, case 183: <D.27132>, case 184: <D.27139>, case 185: <D.27128>, case 186: <D.27129>, case 194: <D.27411>, case 195: <D.27410>, case 198: <D.27422>, case 208: <D.27441>, case 209: <D.27150>, case 210: <D.27151>, case 211: <D.27152>, case 212: <D.27135>, case 213: <D.27136>, case 214: <D.27154>, case 215: <D.27155>, case 216: <D.27156>, case 217: <D.27157>, case 218: <D.27158>, case 219: <D.27159>, case 220: <D.27467>, case 221: <D.27471>, case 222: <D.27472>, case 223: <D.27102>, case 224: <D.27153>, case 240: <D.27493>, case 254: <D.27554>>
      <D.26807>:
      if (seq_points != 0) goto <D.30564>; else goto <D.30565>;
      <D.30564>:
      if (sym_seq_points == 0) goto <D.30566>; else goto <D.30567>;
      <D.30566>:
      if (sp != stack_start) goto <D.30568>; else goto <D.30569>;
      <D.30568>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 341;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      ip.82 = (int) ip;
      D.29837 = header->code;
      D.30379 = (int) D.29837;
      D.30380 = ip.82 - D.30379;
      ins->data.op[1].const_val = D.30380;
      ins->flags = 0;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.30570>; else goto <D.30571>;
      <D.30570>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.30572>;
      <D.30571>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.30572>:
      <D.30569>:
      <D.30567>:
      <D.30565>:
      D.29679 = BIT_FIELD_REF <*cfg, 32, 3424>;
      D.30573 = D.29679 & 16;
      if (D.30573 != 0) goto <D.30574>; else goto <D.30575>;
      <D.30574>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 317;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      goto <D.30576>;
      <D.30575>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 316;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      <D.30576>:
      ip = ip + 1;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      if (D.30024 != 0B) goto <D.30577>; else goto <D.30578>;
      <D.30577>:
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      D.30024->next = ins;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      ins->prev = D.30024;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      goto <D.30579>;
      <D.30578>:
      bblock.77 = bblock;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      D.30024 = bblock.77->last_ins;
      bblock.77->code = D.30024;
      <D.30579>:
      goto <D.26808>;
      <D.26809>:
      D.29662 = cfg->method;
      D.30580 = should_insert_brekpoint (D.29662);
      if (D.30580 != 0) goto <D.30581>; else goto <D.30582>;
      <D.30581>:
      ins = mono_emit_jit_icall (cfg, mono_debugger_agent_user_break, 0B);
      goto <D.30583>;
      <D.30582>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 316;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      <D.30583>:
      ip = ip + 1;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      if (D.30024 != 0B) goto <D.30584>; else goto <D.30585>;
      <D.30584>:
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      D.30024->next = ins;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      ins->prev = D.30024;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      goto <D.30586>;
      <D.30585>:
      bblock.77 = bblock;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      D.30024 = bblock.77->last_ins;
      bblock.77->code = D.30024;
      <D.30586>:
      goto <D.26808>;
      <D.26810>:
      <D.26811>:
      <D.26812>:
      <D.26813>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      D.30371 = header->max_stack;
      D.30372 = (int) D.30371;
      if (D.30458 >= D.30372) goto <D.30587>; else goto <D.30588>;
      <D.30587>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30589>; else goto <D.30590>;
      <D.30589>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30591>; else goto <D.30592>;
      <D.30591>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30592>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30590>:
      D.30593 = mini_get_debug_options ();
      D.30594 = D.30593->break_on_unverified;
      if (D.30594 != 0) goto <D.30595>; else goto unverified;
      <D.30595>:
      raise (5);
      <D.30588>:
      D.30562 = *ip;
      D.30563 = (int) D.30562;
      n = D.30563 + -2;
      n.89 = (unsigned int) n;
      if (n.89 >= num_args) goto <D.30597>; else goto <D.30598>;
      <D.30597>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30599>; else goto <D.30600>;
      <D.30599>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30601>; else goto <D.30602>;
      <D.30601>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30602>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30600>:
      D.30603 = mini_get_debug_options ();
      D.30604 = D.30603->break_on_unverified;
      if (D.30604 != 0) goto <D.30605>; else goto unverified;
      <D.30605>:
      raise (5);
      <D.30598>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.30299 = cfg->arg_types;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30607 = D.30299 + D.30606;
      D.30608 = *D.30607;
      D.30609 = mono_type_to_regmove (cfg, D.30608);
      D.30610 = (short unsigned int) D.30609;
      ins->opcode = D.30610;
      D.30299 = cfg->arg_types;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30607 = D.30299 + D.30606;
      D.30608 = *D.30607;
      type_to_eval_stack_type (cfg, D.30608, ins);
      D.30289 = cfg->args;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30611 = D.30289 + D.30606;
      D.30612 = *D.30611;
      D.30613 = D.30612->klass;
      ins->klass = D.30613;
      D.30289 = cfg->args;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30611 = D.30289 + D.30606;
      D.30612 = *D.30611;
      D.30614 = D.30612->dreg;
      ins->sreg1 = D.30614;
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.30615 = alloc_dreg (cfg, D.30433);
      D.30616 = (int) D.30615;
      ins->dreg = D.30616;
      D.30436 = ins->opcode;
      if (D.30436 == 427) goto <D.30617>; else goto <D.30618>;
      <D.30617>:
      D.30299 = cfg->arg_types;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30607 = D.30299 + D.30606;
      D.30608 = *D.30607;
      D.30619 = mono_class_from_mono_type (D.30608);
      ins->klass = D.30619;
      <D.30618>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.30620>; else goto <D.30621>;
      <D.30620>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.30622>;
      <D.30621>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.30622>:
      ip = ip + 1;
      sp.90 = sp;
      sp = sp.90 + 4;
      *sp.90 = ins;
      goto <D.26808>;
      <D.26814>:
      <D.26815>:
      <D.26816>:
      <D.26817>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      D.30371 = header->max_stack;
      D.30372 = (int) D.30371;
      if (D.30458 >= D.30372) goto <D.30624>; else goto <D.30625>;
      <D.30624>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30626>; else goto <D.30627>;
      <D.30626>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30628>; else goto <D.30629>;
      <D.30628>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30629>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30627>:
      D.30630 = mini_get_debug_options ();
      D.30631 = D.30630->break_on_unverified;
      if (D.30631 != 0) goto <D.30632>; else goto unverified;
      <D.30632>:
      raise (5);
      <D.30625>:
      D.30562 = *ip;
      D.30563 = (int) D.30562;
      n = D.30563 + -6;
      n.89 = (unsigned int) n;
      D.30276 = header->num_locals;
      D.30633 = (unsigned int) D.30276;
      if (n.89 >= D.30633) goto <D.30634>; else goto <D.30635>;
      <D.30634>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30636>; else goto <D.30637>;
      <D.30636>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30638>; else goto <D.30639>;
      <D.30638>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30639>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30637>:
      D.30640 = mini_get_debug_options ();
      D.30641 = D.30640->break_on_unverified;
      if (D.30641 != 0) goto <D.30642>; else goto unverified;
      <D.30642>:
      raise (5);
      <D.30635>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.30264 = header->locals[n];
      D.30643 = mono_type_to_regmove (cfg, D.30264);
      D.30644 = (short unsigned int) D.30643;
      ins->opcode = D.30644;
      D.30264 = header->locals[n];
      type_to_eval_stack_type (cfg, D.30264, ins);
      D.30645 = cfg->locals;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30646 = D.30645 + D.30606;
      D.30647 = *D.30646;
      D.30648 = D.30647->klass;
      ins->klass = D.30648;
      D.30645 = cfg->locals;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30646 = D.30645 + D.30606;
      D.30647 = *D.30646;
      D.30649 = D.30647->dreg;
      ins->sreg1 = D.30649;
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.30650 = alloc_dreg (cfg, D.30433);
      D.30651 = (int) D.30650;
      ins->dreg = D.30651;
      D.30436 = ins->opcode;
      if (D.30436 == 427) goto <D.30652>; else goto <D.30653>;
      <D.30652>:
      D.30264 = header->locals[n];
      D.30654 = mono_class_from_mono_type (D.30264);
      ins->klass = D.30654;
      <D.30653>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.30655>; else goto <D.30656>;
      <D.30655>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.30657>;
      <D.30656>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.30657>:
      ip = ip + 1;
      sp.91 = sp;
      sp = sp.91 + 4;
      *sp.91 = ins;
      goto <D.26808>;
      <D.26818>:
      <D.26819>:
      <D.26820>:
      <D.26821>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.30659>; else goto <D.30660>;
      <D.30659>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30661>; else goto <D.30662>;
      <D.30661>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30663>; else goto <D.30664>;
      <D.30663>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30664>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30662>:
      D.30665 = mini_get_debug_options ();
      D.30666 = D.30665->break_on_unverified;
      if (D.30666 != 0) goto <D.30667>; else goto unverified;
      <D.30667>:
      raise (5);
      <D.30660>:
      D.30562 = *ip;
      D.30563 = (int) D.30562;
      n = D.30563 + -10;
      n.89 = (unsigned int) n;
      D.30276 = header->num_locals;
      D.30633 = (unsigned int) D.30276;
      if (n.89 >= D.30633) goto <D.30668>; else goto <D.30669>;
      <D.30668>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30670>; else goto <D.30671>;
      <D.30670>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30672>; else goto <D.30673>;
      <D.30672>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30673>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30671>:
      D.30674 = mini_get_debug_options ();
      D.30675 = D.30674->break_on_unverified;
      if (D.30675 != 0) goto <D.30676>; else goto unverified;
      <D.30676>:
      raise (5);
      <D.30669>:
      sp = sp + 4294967292;
      if (dont_verify_stloc == 0) goto <D.30677>; else goto <D.30678>;
      <D.30677>:
      D.30264 = header->locals[n];
      D.30679 = *sp;
      D.30680 = target_type_is_incompatible (cfg, D.30264, D.30679);
      if (D.30680 != 0) goto <D.30681>; else goto <D.30682>;
      <D.30681>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30683>; else goto <D.30684>;
      <D.30683>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30685>; else goto <D.30686>;
      <D.30685>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30686>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30684>:
      D.30687 = mini_get_debug_options ();
      D.30688 = D.30687->break_on_unverified;
      if (D.30688 != 0) goto <D.30689>; else goto unverified;
      <D.30689>:
      raise (5);
      <D.30682>:
      <D.30678>:
      emit_stloc_ir (cfg, sp, header, n);
      ip = ip + 1;
      inline_costs = inline_costs + 1;
      goto <D.26808>;
      <D.26822>:
      D.30690 = ip + 2;
      if (D.30690 > end) goto <D.30691>; else goto <D.30692>;
      <D.30691>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30693>; else goto <D.30694>;
      <D.30693>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30695>; else goto <D.30696>;
      <D.30695>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30696>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30694>:
      D.30697 = mini_get_debug_options ();
      D.30698 = D.30697->break_on_unverified;
      if (D.30698 != 0) goto <D.30699>; else goto unverified;
      <D.30699>:
      raise (5);
      <D.30692>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      D.30371 = header->max_stack;
      D.30372 = (int) D.30371;
      if (D.30458 >= D.30372) goto <D.30700>; else goto <D.30701>;
      <D.30700>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30702>; else goto <D.30703>;
      <D.30702>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30704>; else goto <D.30705>;
      <D.30704>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30705>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30703>:
      D.30706 = mini_get_debug_options ();
      D.30707 = D.30706->break_on_unverified;
      if (D.30707 != 0) goto <D.30708>; else goto unverified;
      <D.30708>:
      raise (5);
      <D.30701>:
      D.30709 = ip + 1;
      D.30710 = *D.30709;
      n = (int) D.30710;
      n.89 = (unsigned int) n;
      if (n.89 >= num_args) goto <D.30711>; else goto <D.30712>;
      <D.30711>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30713>; else goto <D.30714>;
      <D.30713>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30715>; else goto <D.30716>;
      <D.30715>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30716>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30714>:
      D.30717 = mini_get_debug_options ();
      D.30718 = D.30717->break_on_unverified;
      if (D.30718 != 0) goto <D.30719>; else goto unverified;
      <D.30719>:
      raise (5);
      <D.30712>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.30299 = cfg->arg_types;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30607 = D.30299 + D.30606;
      D.30608 = *D.30607;
      D.30720 = mono_type_to_regmove (cfg, D.30608);
      D.30721 = (short unsigned int) D.30720;
      ins->opcode = D.30721;
      D.30299 = cfg->arg_types;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30607 = D.30299 + D.30606;
      D.30608 = *D.30607;
      type_to_eval_stack_type (cfg, D.30608, ins);
      D.30289 = cfg->args;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30611 = D.30289 + D.30606;
      D.30612 = *D.30611;
      D.30613 = D.30612->klass;
      ins->klass = D.30613;
      D.30289 = cfg->args;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30611 = D.30289 + D.30606;
      D.30612 = *D.30611;
      D.30614 = D.30612->dreg;
      ins->sreg1 = D.30614;
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.30722 = alloc_dreg (cfg, D.30433);
      D.30723 = (int) D.30722;
      ins->dreg = D.30723;
      D.30436 = ins->opcode;
      if (D.30436 == 427) goto <D.30724>; else goto <D.30725>;
      <D.30724>:
      D.30299 = cfg->arg_types;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30607 = D.30299 + D.30606;
      D.30608 = *D.30607;
      D.30726 = mono_class_from_mono_type (D.30608);
      ins->klass = D.30726;
      <D.30725>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.30727>; else goto <D.30728>;
      <D.30727>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.30729>;
      <D.30728>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.30729>:
      sp.92 = sp;
      sp = sp.92 + 4;
      *sp.92 = ins;
      ip = ip + 2;
      goto <D.26808>;
      <D.26823>:
      D.30690 = ip + 2;
      if (D.30690 > end) goto <D.30731>; else goto <D.30732>;
      <D.30731>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30733>; else goto <D.30734>;
      <D.30733>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30735>; else goto <D.30736>;
      <D.30735>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30736>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30734>:
      D.30737 = mini_get_debug_options ();
      D.30738 = D.30737->break_on_unverified;
      if (D.30738 != 0) goto <D.30739>; else goto unverified;
      <D.30739>:
      raise (5);
      <D.30732>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      D.30371 = header->max_stack;
      D.30372 = (int) D.30371;
      if (D.30458 >= D.30372) goto <D.30740>; else goto <D.30741>;
      <D.30740>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30742>; else goto <D.30743>;
      <D.30742>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30744>; else goto <D.30745>;
      <D.30744>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30745>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30743>:
      D.30746 = mini_get_debug_options ();
      D.30747 = D.30746->break_on_unverified;
      if (D.30747 != 0) goto <D.30748>; else goto unverified;
      <D.30748>:
      raise (5);
      <D.30741>:
      D.30709 = ip + 1;
      D.30710 = *D.30709;
      n = (int) D.30710;
      n.89 = (unsigned int) n;
      if (n.89 >= num_args) goto <D.30749>; else goto <D.30750>;
      <D.30749>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30751>; else goto <D.30752>;
      <D.30751>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30753>; else goto <D.30754>;
      <D.30753>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30754>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30752>:
      D.30755 = mini_get_debug_options ();
      D.30756 = D.30755->break_on_unverified;
      if (D.30756 != 0) goto <D.30757>; else goto unverified;
      <D.30757>:
      raise (5);
      <D.30750>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 314;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30758 = arg_array + D.30606;
      D.30759 = *D.30758;
      ins->data.op[0].p = D.30759;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30758 = arg_array + D.30606;
      D.30759 = *D.30758;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30758 = arg_array + D.30606;
      D.30759 = *D.30758;
      D.30760 = D.30759->flags;
      D.30761 = D.30760 | 16;
      D.30759->flags = D.30761;
      ins->type = 5;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30758 = arg_array + D.30606;
      D.30759 = *D.30758;
      D.30762 = D.30759->klass;
      ins->klass = D.30762;
      D.30763 = alloc_dreg (cfg, 5);
      D.30764 = (int) D.30763;
      ins->dreg = D.30764;
      cfg->has_indirection = 1;
      D.29838 = cfg->gsharedvt;
      D.30765 = D.29838 != 0;
      D.30766 = (long int) D.30765;
      D.30767 = __builtin_expect (D.30766, 0);
      if (D.30767 != 0) goto <D.30768>; else goto <D.30769>;
      <D.30768>:
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30758 = arg_array + D.30606;
      D.30759 = *D.30758;
      D.30770 = D.30759->data.op[1].vtype;
      D.30771 = mini_is_gsharedvt_variable_type (cfg, D.30770);
      if (D.30771 != 0) goto <D.30772>; else goto <D.30773>;
      <D.30772>:
      handle_gsharedvt_ldaddr (cfg);
      <D.30773>:
      <D.30769>:
      D.30775 = mono_arch_is_soft_float ();
      if (D.30775 != 0) goto <D.30776>; else goto <D.30777>;
      <D.30776>:
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30758 = arg_array + D.30606;
      D.30759 = *D.30758;
      D.30782 = D.30759->type;
      if (D.30782 == 2) goto <D.30779>; else goto <D.30783>;
      <D.30783>:
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30758 = arg_array + D.30606;
      D.30759 = *D.30758;
      D.30782 = D.30759->type;
      if (D.30782 == 4) goto <D.30779>; else goto <D.30780>;
      <D.30779>:
      iftmp.94 = 1;
      goto <D.30781>;
      <D.30780>:
      iftmp.94 = 0;
      <D.30781>:
      iftmp.93 = (_Bool) iftmp.94;
      goto <D.30784>;
      <D.30777>:
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30758 = arg_array + D.30606;
      D.30759 = *D.30758;
      D.30782 = D.30759->type;
      iftmp.93 = D.30782 == 2;
      <D.30784>:
      if (iftmp.93 != 0) goto <D.30785>; else goto <D.30786>;
      <D.30785>:
      {
        struct MonoInst * var1;
        struct MonoInst * var2;

        n.89 = (unsigned int) n;
        D.30606 = n.89 * 4;
        D.30758 = arg_array + D.30606;
        D.30759 = *D.30758;
        D.30788 = D.30759->dreg;
        D.30789 = D.30788 + 1;
        D.30790 = (unsigned int) D.30789;
        D.30791 = cfg->vreg_to_inst_len;
        if (D.30790 < D.30791) goto <D.30792>; else goto <D.30793>;
        <D.30792>:
        D.30794 = cfg->vreg_to_inst;
        n.89 = (unsigned int) n;
        D.30606 = n.89 * 4;
        D.30758 = arg_array + D.30606;
        D.30759 = *D.30758;
        D.30788 = D.30759->dreg;
        D.30795 = (sizetype) D.30788;
        D.30796 = D.30795 + 1;
        D.30797 = D.30796 * 4;
        D.30798 = D.30794 + D.30797;
        iftmp.95 = *D.30798;
        goto <D.30799>;
        <D.30793>:
        iftmp.95 = 0B;
        <D.30799>:
        var1 = iftmp.95;
        n.89 = (unsigned int) n;
        D.30606 = n.89 * 4;
        D.30758 = arg_array + D.30606;
        D.30759 = *D.30758;
        D.30788 = D.30759->dreg;
        D.30801 = D.30788 + 2;
        D.30802 = (unsigned int) D.30801;
        D.30791 = cfg->vreg_to_inst_len;
        if (D.30802 < D.30791) goto <D.30803>; else goto <D.30804>;
        <D.30803>:
        D.30794 = cfg->vreg_to_inst;
        n.89 = (unsigned int) n;
        D.30606 = n.89 * 4;
        D.30758 = arg_array + D.30606;
        D.30759 = *D.30758;
        D.30788 = D.30759->dreg;
        D.30795 = (sizetype) D.30788;
        D.30805 = D.30795 + 2;
        D.30806 = D.30805 * 4;
        D.30807 = D.30794 + D.30806;
        iftmp.96 = *D.30807;
        goto <D.30808>;
        <D.30804>:
        iftmp.96 = 0B;
        <D.30808>:
        var2 = iftmp.96;
        D.30809 = var1 == 0B;
        D.30810 = (long int) D.30809;
        D.30811 = __builtin_expect (D.30810, 0);
        if (D.30811 != 0) goto <D.30812>; else goto <D.30813>;
        <D.30812>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7323, "var1");
        <D.30813>:
        D.30814 = var2 == 0B;
        D.30815 = (long int) D.30814;
        D.30816 = __builtin_expect (D.30815, 0);
        if (D.30816 != 0) goto <D.30817>; else goto <D.30818>;
        <D.30817>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7323, "var2");
        <D.30818>:
        D.30819 = var1->flags;
        D.30820 = D.30819 | 16;
        var1->flags = D.30820;
        D.30821 = var2->flags;
        D.30822 = D.30821 | 16;
        var2->flags = D.30822;
      }
      <D.30786>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.30823>; else goto <D.30824>;
      <D.30823>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.30825>;
      <D.30824>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.30825>:
      sp.97 = sp;
      sp = sp.97 + 4;
      *sp.97 = ins;
      ip = ip + 2;
      goto <D.26808>;
      <D.26826>:
      D.30690 = ip + 2;
      if (D.30690 > end) goto <D.30827>; else goto <D.30828>;
      <D.30827>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30829>; else goto <D.30830>;
      <D.30829>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30831>; else goto <D.30832>;
      <D.30831>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30832>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30830>:
      D.30833 = mini_get_debug_options ();
      D.30834 = D.30833->break_on_unverified;
      if (D.30834 != 0) goto <D.30835>; else goto unverified;
      <D.30835>:
      raise (5);
      <D.30828>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.30836>; else goto <D.30837>;
      <D.30836>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30838>; else goto <D.30839>;
      <D.30838>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30840>; else goto <D.30841>;
      <D.30840>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30841>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30839>:
      D.30842 = mini_get_debug_options ();
      D.30843 = D.30842->break_on_unverified;
      if (D.30843 != 0) goto <D.30844>; else goto unverified;
      <D.30844>:
      raise (5);
      <D.30837>:
      sp = sp + 4294967292;
      D.30709 = ip + 1;
      D.30710 = *D.30709;
      n = (int) D.30710;
      n.89 = (unsigned int) n;
      if (n.89 >= num_args) goto <D.30845>; else goto <D.30846>;
      <D.30845>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30847>; else goto <D.30848>;
      <D.30847>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30849>; else goto <D.30850>;
      <D.30849>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30850>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30848>:
      D.30851 = mini_get_debug_options ();
      D.30852 = D.30851->break_on_unverified;
      if (D.30852 != 0) goto <D.30853>; else goto unverified;
      <D.30853>:
      raise (5);
      <D.30846>:
      if (dont_verify_stloc == 0) goto <D.30854>; else goto <D.30855>;
      <D.30854>:
      D.30709 = ip + 1;
      D.30710 = *D.30709;
      D.30856 = (unsigned int) D.30710;
      D.30857 = D.30856 * 4;
      D.30858 = param_types + D.30857;
      D.30859 = *D.30858;
      D.30679 = *sp;
      D.30860 = target_type_is_incompatible (cfg, D.30859, D.30679);
      if (D.30860 != 0) goto <D.30861>; else goto <D.30862>;
      <D.30861>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30863>; else goto <D.30864>;
      <D.30863>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30865>; else goto <D.30866>;
      <D.30865>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30866>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30864>:
      D.30867 = mini_get_debug_options ();
      D.30868 = D.30867->break_on_unverified;
      if (D.30868 != 0) goto <D.30869>; else goto unverified;
      <D.30869>:
      raise (5);
      <D.30862>:
      <D.30855>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.30299 = cfg->arg_types;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30607 = D.30299 + D.30606;
      D.30608 = *D.30607;
      D.30870 = mono_type_to_regmove (cfg, D.30608);
      D.30871 = (short unsigned int) D.30870;
      ins->opcode = D.30871;
      D.30289 = cfg->args;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30611 = D.30289 + D.30606;
      D.30612 = *D.30611;
      D.30613 = D.30612->klass;
      ins->klass = D.30613;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      D.30289 = cfg->args;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30611 = D.30289 + D.30606;
      D.30612 = *D.30611;
      D.30614 = D.30612->dreg;
      ins->dreg = D.30614;
      D.30436 = ins->opcode;
      if (D.30436 == 427) goto <D.30873>; else goto <D.30874>;
      <D.30873>:
      D.30299 = cfg->arg_types;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30607 = D.30299 + D.30606;
      D.30608 = *D.30607;
      D.30875 = mono_class_from_mono_type (D.30608);
      ins->klass = D.30875;
      <D.30874>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.30876>; else goto <D.30877>;
      <D.30876>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.30878>;
      <D.30877>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.30878>:
      ip = ip + 2;
      goto <D.26808>;
      <D.26827>:
      D.30690 = ip + 2;
      if (D.30690 > end) goto <D.30879>; else goto <D.30880>;
      <D.30879>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30881>; else goto <D.30882>;
      <D.30881>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30883>; else goto <D.30884>;
      <D.30883>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30884>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30882>:
      D.30885 = mini_get_debug_options ();
      D.30886 = D.30885->break_on_unverified;
      if (D.30886 != 0) goto <D.30887>; else goto unverified;
      <D.30887>:
      raise (5);
      <D.30880>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      D.30371 = header->max_stack;
      D.30372 = (int) D.30371;
      if (D.30458 >= D.30372) goto <D.30888>; else goto <D.30889>;
      <D.30888>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30890>; else goto <D.30891>;
      <D.30890>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30892>; else goto <D.30893>;
      <D.30892>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30893>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30891>:
      D.30894 = mini_get_debug_options ();
      D.30895 = D.30894->break_on_unverified;
      if (D.30895 != 0) goto <D.30896>; else goto unverified;
      <D.30896>:
      raise (5);
      <D.30889>:
      D.30709 = ip + 1;
      D.30710 = *D.30709;
      n = (int) D.30710;
      n.89 = (unsigned int) n;
      D.30276 = header->num_locals;
      D.30633 = (unsigned int) D.30276;
      if (n.89 >= D.30633) goto <D.30897>; else goto <D.30898>;
      <D.30897>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.30899>; else goto <D.30900>;
      <D.30899>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.30901>; else goto <D.30902>;
      <D.30901>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.30902>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.30900>:
      D.30903 = mini_get_debug_options ();
      D.30904 = D.30903->break_on_unverified;
      if (D.30904 != 0) goto <D.30905>; else goto unverified;
      <D.30905>:
      raise (5);
      <D.30898>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.30264 = header->locals[n];
      D.30906 = mono_type_to_regmove (cfg, D.30264);
      D.30907 = (short unsigned int) D.30906;
      ins->opcode = D.30907;
      D.30264 = header->locals[n];
      type_to_eval_stack_type (cfg, D.30264, ins);
      D.30645 = cfg->locals;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30646 = D.30645 + D.30606;
      D.30647 = *D.30646;
      D.30648 = D.30647->klass;
      ins->klass = D.30648;
      D.30645 = cfg->locals;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30646 = D.30645 + D.30606;
      D.30647 = *D.30646;
      D.30649 = D.30647->dreg;
      ins->sreg1 = D.30649;
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.30908 = alloc_dreg (cfg, D.30433);
      D.30909 = (int) D.30908;
      ins->dreg = D.30909;
      D.30436 = ins->opcode;
      if (D.30436 == 427) goto <D.30910>; else goto <D.30911>;
      <D.30910>:
      D.30264 = header->locals[n];
      D.30912 = mono_class_from_mono_type (D.30264);
      ins->klass = D.30912;
      <D.30911>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.30913>; else goto <D.30914>;
      <D.30913>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.30915>;
      <D.30914>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.30915>:
      sp.98 = sp;
      sp = sp.98 + 4;
      *sp.98 = ins;
      ip = ip + 2;
      goto <D.26808>;
      <D.26828>:
      {
        unsigned char * tmp_ip;

        D.30690 = ip + 2;
        if (D.30690 > end) goto <D.30917>; else goto <D.30918>;
        <D.30917>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.30919>; else goto <D.30920>;
        <D.30919>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.30921>; else goto <D.30922>;
        <D.30921>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.30922>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.30920>:
        D.30923 = mini_get_debug_options ();
        D.30924 = D.30923->break_on_unverified;
        if (D.30924 != 0) goto <D.30925>; else goto unverified;
        <D.30925>:
        raise (5);
        <D.30918>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        D.30458 = D.30457 /[ex] 4;
        D.30371 = header->max_stack;
        D.30372 = (int) D.30371;
        if (D.30458 >= D.30372) goto <D.30926>; else goto <D.30927>;
        <D.30926>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.30928>; else goto <D.30929>;
        <D.30928>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.30930>; else goto <D.30931>;
        <D.30930>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.30931>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.30929>:
        D.30932 = mini_get_debug_options ();
        D.30933 = D.30932->break_on_unverified;
        if (D.30933 != 0) goto <D.30934>; else goto unverified;
        <D.30934>:
        raise (5);
        <D.30927>:
        D.30709 = ip + 1;
        D.30710 = *D.30709;
        D.30935 = (short unsigned int) D.30710;
        D.30276 = header->num_locals;
        if (D.30935 >= D.30276) goto <D.30936>; else goto <D.30937>;
        <D.30936>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.30938>; else goto <D.30939>;
        <D.30938>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.30940>; else goto <D.30941>;
        <D.30940>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.30941>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.30939>:
        D.30942 = mini_get_debug_options ();
        D.30943 = D.30942->break_on_unverified;
        if (D.30943 != 0) goto <D.30944>; else goto unverified;
        <D.30944>:
        raise (5);
        <D.30937>:
        tmp_ip = emit_optimized_ldloca_ir (cfg, ip, end, 1);
        if (tmp_ip != 0B) goto <D.30945>; else goto <D.30946>;
        <D.30945>:
        ip = tmp_ip;
        inline_costs = inline_costs + 1;
        goto <D.26808>;
        <D.30946>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 314;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        D.30645 = cfg->locals;
        D.30709 = ip + 1;
        D.30710 = *D.30709;
        D.30856 = (unsigned int) D.30710;
        D.30857 = D.30856 * 4;
        D.30947 = D.30645 + D.30857;
        D.30948 = *D.30947;
        ins->data.op[0].p = D.30948;
        D.30645 = cfg->locals;
        D.30709 = ip + 1;
        D.30710 = *D.30709;
        D.30856 = (unsigned int) D.30710;
        D.30857 = D.30856 * 4;
        D.30947 = D.30645 + D.30857;
        D.30948 = *D.30947;
        D.30645 = cfg->locals;
        D.30709 = ip + 1;
        D.30710 = *D.30709;
        D.30856 = (unsigned int) D.30710;
        D.30857 = D.30856 * 4;
        D.30947 = D.30645 + D.30857;
        D.30948 = *D.30947;
        D.30949 = D.30948->flags;
        D.30950 = D.30949 | 16;
        D.30948->flags = D.30950;
        ins->type = 5;
        D.30645 = cfg->locals;
        D.30709 = ip + 1;
        D.30710 = *D.30709;
        D.30856 = (unsigned int) D.30710;
        D.30857 = D.30856 * 4;
        D.30947 = D.30645 + D.30857;
        D.30948 = *D.30947;
        D.30951 = D.30948->klass;
        ins->klass = D.30951;
        D.30952 = alloc_dreg (cfg, 5);
        D.30953 = (int) D.30952;
        ins->dreg = D.30953;
        cfg->has_indirection = 1;
        D.29838 = cfg->gsharedvt;
        D.30765 = D.29838 != 0;
        D.30766 = (long int) D.30765;
        D.30767 = __builtin_expect (D.30766, 0);
        if (D.30767 != 0) goto <D.30954>; else goto <D.30955>;
        <D.30954>:
        D.30645 = cfg->locals;
        D.30709 = ip + 1;
        D.30710 = *D.30709;
        D.30856 = (unsigned int) D.30710;
        D.30857 = D.30856 * 4;
        D.30947 = D.30645 + D.30857;
        D.30948 = *D.30947;
        D.30956 = D.30948->data.op[1].vtype;
        D.30957 = mini_is_gsharedvt_variable_type (cfg, D.30956);
        if (D.30957 != 0) goto <D.30958>; else goto <D.30959>;
        <D.30958>:
        handle_gsharedvt_ldaddr (cfg);
        <D.30959>:
        <D.30955>:
        D.30961 = mono_arch_is_soft_float ();
        if (D.30961 != 0) goto <D.30962>; else goto <D.30963>;
        <D.30962>:
        D.30645 = cfg->locals;
        D.30709 = ip + 1;
        D.30710 = *D.30709;
        D.30856 = (unsigned int) D.30710;
        D.30857 = D.30856 * 4;
        D.30947 = D.30645 + D.30857;
        D.30948 = *D.30947;
        D.30968 = D.30948->type;
        if (D.30968 == 2) goto <D.30965>; else goto <D.30969>;
        <D.30969>:
        D.30645 = cfg->locals;
        D.30709 = ip + 1;
        D.30710 = *D.30709;
        D.30856 = (unsigned int) D.30710;
        D.30857 = D.30856 * 4;
        D.30947 = D.30645 + D.30857;
        D.30948 = *D.30947;
        D.30968 = D.30948->type;
        if (D.30968 == 4) goto <D.30965>; else goto <D.30966>;
        <D.30965>:
        iftmp.100 = 1;
        goto <D.30967>;
        <D.30966>:
        iftmp.100 = 0;
        <D.30967>:
        iftmp.99 = (_Bool) iftmp.100;
        goto <D.30970>;
        <D.30963>:
        D.30645 = cfg->locals;
        D.30709 = ip + 1;
        D.30710 = *D.30709;
        D.30856 = (unsigned int) D.30710;
        D.30857 = D.30856 * 4;
        D.30947 = D.30645 + D.30857;
        D.30948 = *D.30947;
        D.30968 = D.30948->type;
        iftmp.99 = D.30968 == 2;
        <D.30970>:
        if (iftmp.99 != 0) goto <D.30971>; else goto <D.30972>;
        <D.30971>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.30645 = cfg->locals;
          D.30709 = ip + 1;
          D.30710 = *D.30709;
          D.30856 = (unsigned int) D.30710;
          D.30857 = D.30856 * 4;
          D.30947 = D.30645 + D.30857;
          D.30948 = *D.30947;
          D.30974 = D.30948->dreg;
          D.30975 = D.30974 + 1;
          D.30976 = (unsigned int) D.30975;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.30976 < D.30791) goto <D.30977>; else goto <D.30978>;
          <D.30977>:
          D.30794 = cfg->vreg_to_inst;
          D.30645 = cfg->locals;
          D.30709 = ip + 1;
          D.30710 = *D.30709;
          D.30856 = (unsigned int) D.30710;
          D.30857 = D.30856 * 4;
          D.30947 = D.30645 + D.30857;
          D.30948 = *D.30947;
          D.30974 = D.30948->dreg;
          D.30979 = (sizetype) D.30974;
          D.30980 = D.30979 + 1;
          D.30981 = D.30980 * 4;
          D.30982 = D.30794 + D.30981;
          iftmp.101 = *D.30982;
          goto <D.30983>;
          <D.30978>:
          iftmp.101 = 0B;
          <D.30983>:
          var1 = iftmp.101;
          D.30645 = cfg->locals;
          D.30709 = ip + 1;
          D.30710 = *D.30709;
          D.30856 = (unsigned int) D.30710;
          D.30857 = D.30856 * 4;
          D.30947 = D.30645 + D.30857;
          D.30948 = *D.30947;
          D.30974 = D.30948->dreg;
          D.30985 = D.30974 + 2;
          D.30986 = (unsigned int) D.30985;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.30986 < D.30791) goto <D.30987>; else goto <D.30988>;
          <D.30987>:
          D.30794 = cfg->vreg_to_inst;
          D.30645 = cfg->locals;
          D.30709 = ip + 1;
          D.30710 = *D.30709;
          D.30856 = (unsigned int) D.30710;
          D.30857 = D.30856 * 4;
          D.30947 = D.30645 + D.30857;
          D.30948 = *D.30947;
          D.30974 = D.30948->dreg;
          D.30979 = (sizetype) D.30974;
          D.30989 = D.30979 + 2;
          D.30990 = D.30989 * 4;
          D.30991 = D.30794 + D.30990;
          iftmp.102 = *D.30991;
          goto <D.30992>;
          <D.30988>:
          iftmp.102 = 0B;
          <D.30992>:
          var2 = iftmp.102;
          D.30993 = var1 == 0B;
          D.30994 = (long int) D.30993;
          D.30995 = __builtin_expect (D.30994, 0);
          if (D.30995 != 0) goto <D.30996>; else goto <D.30997>;
          <D.30996>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7360, "var1");
          <D.30997>:
          D.30998 = var2 == 0B;
          D.30999 = (long int) D.30998;
          D.31000 = __builtin_expect (D.30999, 0);
          if (D.31000 != 0) goto <D.31001>; else goto <D.31002>;
          <D.31001>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7360, "var2");
          <D.31002>:
          D.31003 = var1->flags;
          D.31004 = D.31003 | 16;
          var1->flags = D.31004;
          D.31005 = var2->flags;
          D.31006 = D.31005 | 16;
          var2->flags = D.31006;
        }
        <D.30972>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.31007>; else goto <D.31008>;
        <D.31007>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.31009>;
        <D.31008>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.31009>:
        sp.103 = sp;
        sp = sp.103 + 4;
        *sp.103 = ins;
        ip = ip + 2;
        goto <D.26808>;
      }
      <D.26832>:
      D.30690 = ip + 2;
      if (D.30690 > end) goto <D.31011>; else goto <D.31012>;
      <D.31011>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.31013>; else goto <D.31014>;
      <D.31013>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.31015>; else goto <D.31016>;
      <D.31015>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31016>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31014>:
      D.31017 = mini_get_debug_options ();
      D.31018 = D.31017->break_on_unverified;
      if (D.31018 != 0) goto <D.31019>; else goto unverified;
      <D.31019>:
      raise (5);
      <D.31012>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.31020>; else goto <D.31021>;
      <D.31020>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.31022>; else goto <D.31023>;
      <D.31022>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.31024>; else goto <D.31025>;
      <D.31024>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31025>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31023>:
      D.31026 = mini_get_debug_options ();
      D.31027 = D.31026->break_on_unverified;
      if (D.31027 != 0) goto <D.31028>; else goto unverified;
      <D.31028>:
      raise (5);
      <D.31021>:
      sp = sp + 4294967292;
      D.30709 = ip + 1;
      D.30710 = *D.30709;
      D.30935 = (short unsigned int) D.30710;
      D.30276 = header->num_locals;
      if (D.30935 >= D.30276) goto <D.31029>; else goto <D.31030>;
      <D.31029>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.31031>; else goto <D.31032>;
      <D.31031>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.31033>; else goto <D.31034>;
      <D.31033>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31034>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31032>:
      D.31035 = mini_get_debug_options ();
      D.31036 = D.31035->break_on_unverified;
      if (D.31036 != 0) goto <D.31037>; else goto unverified;
      <D.31037>:
      raise (5);
      <D.31030>:
      if (dont_verify_stloc == 0) goto <D.31038>; else goto <D.31039>;
      <D.31038>:
      D.30709 = ip + 1;
      D.30710 = *D.30709;
      D.31040 = (int) D.30710;
      D.31041 = header->locals[D.31040];
      D.30679 = *sp;
      D.31042 = target_type_is_incompatible (cfg, D.31041, D.30679);
      if (D.31042 != 0) goto <D.31043>; else goto <D.31044>;
      <D.31043>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.31045>; else goto <D.31046>;
      <D.31045>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.31047>; else goto <D.31048>;
      <D.31047>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31048>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31046>:
      D.31049 = mini_get_debug_options ();
      D.31050 = D.31049->break_on_unverified;
      if (D.31050 != 0) goto <D.31051>; else goto unverified;
      <D.31051>:
      raise (5);
      <D.31044>:
      <D.31039>:
      D.30709 = ip + 1;
      D.30710 = *D.30709;
      D.31040 = (int) D.30710;
      emit_stloc_ir (cfg, sp, header, D.31040);
      ip = ip + 2;
      inline_costs = inline_costs + 1;
      goto <D.26808>;
      <D.26833>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      D.30371 = header->max_stack;
      D.30372 = (int) D.30371;
      if (D.30458 >= D.30372) goto <D.31052>; else goto <D.31053>;
      <D.31052>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.31054>; else goto <D.31055>;
      <D.31054>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.31056>; else goto <D.31057>;
      <D.31056>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31057>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31055>:
      D.31058 = mini_get_debug_options ();
      D.31059 = D.31058->break_on_unverified;
      if (D.31059 != 0) goto <D.31060>; else goto unverified;
      <D.31060>:
      raise (5);
      <D.31053>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      ins->data.op[0].p = 0B;
      ins->type = 3;
      D.31061 = alloc_dreg (cfg, 3);
      D.31062 = (int) D.31061;
      ins->dreg = D.31062;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.31063>; else goto <D.31064>;
      <D.31063>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.31065>;
      <D.31064>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.31065>:
      ins->type = 6;
      ip = ip + 1;
      sp.104 = sp;
      sp = sp.104 + 4;
      *sp.104 = ins;
      goto <D.26808>;
      <D.26834>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      D.30371 = header->max_stack;
      D.30372 = (int) D.30371;
      if (D.30458 >= D.30372) goto <D.31067>; else goto <D.31068>;
      <D.31067>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.31069>; else goto <D.31070>;
      <D.31069>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.31071>; else goto <D.31072>;
      <D.31071>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31072>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31070>:
      D.31073 = mini_get_debug_options ();
      D.31074 = D.31073->break_on_unverified;
      if (D.31074 != 0) goto <D.31075>; else goto unverified;
      <D.31075>:
      raise (5);
      <D.31068>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      ins->data.op[0].const_val = -1;
      ins->type = 1;
      D.31076 = alloc_dreg (cfg, 1);
      D.31077 = (int) D.31076;
      ins->dreg = D.31077;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.31078>; else goto <D.31079>;
      <D.31078>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.31080>;
      <D.31079>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.31080>:
      ip = ip + 1;
      sp.105 = sp;
      sp = sp.105 + 4;
      *sp.105 = ins;
      goto <D.26808>;
      <D.26835>:
      <D.26836>:
      <D.26837>:
      <D.26838>:
      <D.26839>:
      <D.26840>:
      <D.26841>:
      <D.26842>:
      <D.26843>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      D.30371 = header->max_stack;
      D.30372 = (int) D.30371;
      if (D.30458 >= D.30372) goto <D.31082>; else goto <D.31083>;
      <D.31082>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.31084>; else goto <D.31085>;
      <D.31084>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.31086>; else goto <D.31087>;
      <D.31086>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31087>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31085>:
      D.31088 = mini_get_debug_options ();
      D.31089 = D.31088->break_on_unverified;
      if (D.31089 != 0) goto <D.31090>; else goto unverified;
      <D.31090>:
      raise (5);
      <D.31083>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.30562 = *ip;
      D.30563 = (int) D.30562;
      D.31091 = D.30563 + -22;
      ins->data.op[0].const_val = D.31091;
      ins->type = 1;
      D.31092 = alloc_dreg (cfg, 1);
      D.31093 = (int) D.31092;
      ins->dreg = D.31093;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.31094>; else goto <D.31095>;
      <D.31094>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.31096>;
      <D.31095>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.31096>:
      ip = ip + 1;
      sp.106 = sp;
      sp = sp.106 + 4;
      *sp.106 = ins;
      goto <D.26808>;
      <D.26844>:
      D.30690 = ip + 2;
      if (D.30690 > end) goto <D.31098>; else goto <D.31099>;
      <D.31098>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.31100>; else goto <D.31101>;
      <D.31100>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.31102>; else goto <D.31103>;
      <D.31102>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31103>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31101>:
      D.31104 = mini_get_debug_options ();
      D.31105 = D.31104->break_on_unverified;
      if (D.31105 != 0) goto <D.31106>; else goto unverified;
      <D.31106>:
      raise (5);
      <D.31099>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      D.30371 = header->max_stack;
      D.30372 = (int) D.30371;
      if (D.30458 >= D.30372) goto <D.31107>; else goto <D.31108>;
      <D.31107>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.31109>; else goto <D.31110>;
      <D.31109>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.31111>; else goto <D.31112>;
      <D.31111>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31112>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31110>:
      D.31113 = mini_get_debug_options ();
      D.31114 = D.31113->break_on_unverified;
      if (D.31114 != 0) goto <D.31115>; else goto unverified;
      <D.31115>:
      raise (5);
      <D.31108>:
      ip = ip + 1;
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.31116 = MEM[(signed char *)ip];
      D.31117 = (int) D.31116;
      ins->data.op[0].const_val = D.31117;
      ins->type = 1;
      D.31118 = alloc_dreg (cfg, 1);
      D.31119 = (int) D.31118;
      ins->dreg = D.31119;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.31120>; else goto <D.31121>;
      <D.31120>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.31122>;
      <D.31121>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.31122>:
      ip = ip + 1;
      sp.107 = sp;
      sp = sp.107 + 4;
      *sp.107 = ins;
      goto <D.26808>;
      <D.26845>:
      D.31124 = ip + 5;
      if (D.31124 > end) goto <D.31125>; else goto <D.31126>;
      <D.31125>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.31127>; else goto <D.31128>;
      <D.31127>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.31129>; else goto <D.31130>;
      <D.31129>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31130>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31128>:
      D.31131 = mini_get_debug_options ();
      D.31132 = D.31131->break_on_unverified;
      if (D.31132 != 0) goto <D.31133>; else goto unverified;
      <D.31133>:
      raise (5);
      <D.31126>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      D.30371 = header->max_stack;
      D.30372 = (int) D.30371;
      if (D.30458 >= D.30372) goto <D.31134>; else goto <D.31135>;
      <D.31134>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.31136>; else goto <D.31137>;
      <D.31136>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.31138>; else goto <D.31139>;
      <D.31138>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31139>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31137>:
      D.31140 = mini_get_debug_options ();
      D.31141 = D.31140->break_on_unverified;
      if (D.31141 != 0) goto <D.31142>; else goto unverified;
      <D.31142>:
      raise (5);
      <D.31135>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.31143 = ip + 1;
      D.31144 = mono_read32 (D.31143);
      D.31145 = (int) D.31144;
      ins->data.op[0].const_val = D.31145;
      ins->type = 1;
      D.31146 = alloc_dreg (cfg, 1);
      D.31147 = (int) D.31146;
      ins->dreg = D.31147;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.31148>; else goto <D.31149>;
      <D.31148>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.31150>;
      <D.31149>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.31150>:
      ip = ip + 5;
      sp.108 = sp;
      sp = sp.108 + 4;
      *sp.108 = ins;
      goto <D.26808>;
      <D.26846>:
      D.31152 = ip + 9;
      if (D.31152 > end) goto <D.31153>; else goto <D.31154>;
      <D.31153>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.31155>; else goto <D.31156>;
      <D.31155>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.31157>; else goto <D.31158>;
      <D.31157>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31158>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31156>:
      D.31159 = mini_get_debug_options ();
      D.31160 = D.31159->break_on_unverified;
      if (D.31160 != 0) goto <D.31161>; else goto unverified;
      <D.31161>:
      raise (5);
      <D.31154>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      D.30371 = header->max_stack;
      D.30372 = (int) D.30371;
      if (D.30458 >= D.30372) goto <D.31162>; else goto <D.31163>;
      <D.31162>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.31164>; else goto <D.31165>;
      <D.31164>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.31166>; else goto <D.31167>;
      <D.31166>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31167>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31165>:
      D.31168 = mini_get_debug_options ();
      D.31169 = D.31168->break_on_unverified;
      if (D.31169 != 0) goto <D.31170>; else goto unverified;
      <D.31170>:
      raise (5);
      <D.31163>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 363;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      ins->type = 2;
      D.31171 = alloc_dreg (cfg, 2);
      D.31172 = (int) D.31171;
      ins->dreg = D.31172;
      ip = ip + 1;
      D.31173 = mono_read64 (ip);
      D.31174 = (long long int) D.31173;
      ins->data.i8const = D.31174;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      if (D.30024 != 0B) goto <D.31175>; else goto <D.31176>;
      <D.31175>:
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      D.30024->next = ins;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      ins->prev = D.30024;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      goto <D.31177>;
      <D.31176>:
      bblock.77 = bblock;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      D.30024 = bblock.77->last_ins;
      bblock.77->code = D.30024;
      <D.31177>:
      ip = ip + 8;
      sp.109 = sp;
      sp = sp.109 + 4;
      *sp.109 = ins;
      goto <D.26808>;
      <D.26847>:
      {
        float * f;
        gboolean use_aotconst;

        use_aotconst = 0;
        D.29716 = cfg->domain;
        f = mono_domain_alloc (D.29716, 4);
        D.31124 = ip + 5;
        if (D.31124 > end) goto <D.31179>; else goto <D.31180>;
        <D.31179>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.31181>; else goto <D.31182>;
        <D.31181>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.31183>; else goto <D.31184>;
        <D.31183>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.31184>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.31182>:
        D.31185 = mini_get_debug_options ();
        D.31186 = D.31185->break_on_unverified;
        if (D.31186 != 0) goto <D.31187>; else goto unverified;
        <D.31187>:
        raise (5);
        <D.31180>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        D.30458 = D.30457 /[ex] 4;
        D.30371 = header->max_stack;
        D.30372 = (int) D.30371;
        if (D.30458 >= D.30372) goto <D.31188>; else goto <D.31189>;
        <D.31188>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.31190>; else goto <D.31191>;
        <D.31190>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.31192>; else goto <D.31193>;
        <D.31192>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.31193>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.31191>:
        D.31194 = mini_get_debug_options ();
        D.31195 = D.31194->break_on_unverified;
        if (D.31195 != 0) goto <D.31196>; else goto unverified;
        <D.31196>:
        raise (5);
        <D.31189>:
        if (use_aotconst != 0) goto <D.31197>; else goto <D.31198>;
        <D.31197>:
        {
          struct MonoInst * cons;
          int dreg;

          D.29691 = cfg->mempool;
          cons = mono_mempool_alloc (D.29691, 56);
          cons->data.op[1].const_val = 0;
          D.31199 = cons->data.op[1].const_val;
          cons->data.op[0].const_val = D.31199;
          cons->prev = 0B;
          D.31200 = cons->prev;
          cons->next = D.31200;
          D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
          D.30082 = D.30081 & 64;
          if (D.30082 != 0) goto <D.31202>; else goto <D.31203>;
          <D.31202>:
          iftmp.110 = 732;
          goto <D.31204>;
          <D.31203>:
          iftmp.110 = 362;
          <D.31204>:
          cons->opcode = iftmp.110;
          cons->flags = 0;
          cons->type = 0;
          cons->dreg = -1;
          cons->sreg3 = -1;
          D.31205 = cons->sreg3;
          cons->sreg2 = D.31205;
          D.31206 = cons->sreg2;
          cons->sreg1 = D.31206;
          D.29910 = cfg->ip;
          cons->cil_code = D.29910;
          cons->data.op[0].p = f;
          cons->data.op[1].src = 20B;
          cons->type = 3;
          D.31207 = alloc_dreg (cfg, 3);
          D.31208 = (int) D.31207;
          cons->dreg = D.31208;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.31209>; else goto <D.31210>;
          <D.31209>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = cons;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          cons->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = cons;
          goto <D.31211>;
          <D.31210>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = cons;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.31211>:
          D.31212 = alloc_freg (cfg);
          dreg = (int) D.31212;
          D.29691 = cfg->mempool;
          ins = mono_mempool_alloc (D.29691, 56);
          ins->data.op[1].const_val = 0;
          D.29906 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.29906;
          ins->prev = 0B;
          D.29907 = ins->prev;
          ins->next = D.29907;
          ins->opcode = 396;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.29908 = ins->sreg3;
          ins->sreg2 = D.29908;
          D.29909 = ins->sreg2;
          ins->sreg1 = D.29909;
          D.29910 = cfg->ip;
          ins->cil_code = D.29910;
          ins->dreg = dreg;
          D.31213 = cons->dreg;
          ins->sreg1 = D.31213;
          ins->data.op[0].const_val = 0;
          ins->type = 1;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.31214>; else goto <D.31215>;
          <D.31214>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = ins;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          ins->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          goto <D.31216>;
          <D.31215>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.31216>:
          ins->type = 4;
        }
        goto <D.31217>;
        <D.31198>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 364;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        ins->type = 4;
        D.31218 = alloc_dreg (cfg, 4);
        D.31219 = (int) D.31218;
        ins->dreg = D.31219;
        ins->data.op[0].p = f;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        if (D.30024 != 0B) goto <D.31220>; else goto <D.31221>;
        <D.31220>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        D.30024->next = ins;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        ins->prev = D.30024;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        goto <D.31222>;
        <D.31221>:
        bblock.77 = bblock;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        D.30024 = bblock.77->last_ins;
        bblock.77->code = D.30024;
        <D.31222>:
        <D.31217>:
        ip = ip + 1;
        {
          union mono_rfloat mf;

          try
            {
              D.31223 = mono_read32 (ip);
              mf.ival = D.31223;
              D.31224 = mf.fval;
              *f = D.31224;
            }
          finally
            {
              mf = {CLOBBER};
            }
        }
        ip = ip + 4;
        sp.111 = sp;
        sp = sp.111 + 4;
        *sp.111 = ins;
        goto <D.26808>;
      }
      <D.26853>:
      {
        double * d;
        gboolean use_aotconst;

        use_aotconst = 0;
        D.29716 = cfg->domain;
        d = mono_domain_alloc (D.29716, 8);
        D.31152 = ip + 9;
        if (D.31152 > end) goto <D.31226>; else goto <D.31227>;
        <D.31226>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.31228>; else goto <D.31229>;
        <D.31228>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.31230>; else goto <D.31231>;
        <D.31230>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.31231>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.31229>:
        D.31232 = mini_get_debug_options ();
        D.31233 = D.31232->break_on_unverified;
        if (D.31233 != 0) goto <D.31234>; else goto unverified;
        <D.31234>:
        raise (5);
        <D.31227>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        D.30458 = D.30457 /[ex] 4;
        D.30371 = header->max_stack;
        D.30372 = (int) D.30371;
        if (D.30458 >= D.30372) goto <D.31235>; else goto <D.31236>;
        <D.31235>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.31237>; else goto <D.31238>;
        <D.31237>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.31239>; else goto <D.31240>;
        <D.31239>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.31240>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.31238>:
        D.31241 = mini_get_debug_options ();
        D.31242 = D.31241->break_on_unverified;
        if (D.31242 != 0) goto <D.31243>; else goto unverified;
        <D.31243>:
        raise (5);
        <D.31236>:
        if (use_aotconst != 0) goto <D.31244>; else goto <D.31245>;
        <D.31244>:
        {
          struct MonoInst * cons;
          int dreg;

          D.29691 = cfg->mempool;
          cons = mono_mempool_alloc (D.29691, 56);
          cons->data.op[1].const_val = 0;
          D.31246 = cons->data.op[1].const_val;
          cons->data.op[0].const_val = D.31246;
          cons->prev = 0B;
          D.31247 = cons->prev;
          cons->next = D.31247;
          D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
          D.30082 = D.30081 & 64;
          if (D.30082 != 0) goto <D.31249>; else goto <D.31250>;
          <D.31249>:
          iftmp.112 = 732;
          goto <D.31251>;
          <D.31250>:
          iftmp.112 = 362;
          <D.31251>:
          cons->opcode = iftmp.112;
          cons->flags = 0;
          cons->type = 0;
          cons->dreg = -1;
          cons->sreg3 = -1;
          D.31252 = cons->sreg3;
          cons->sreg2 = D.31252;
          D.31253 = cons->sreg2;
          cons->sreg1 = D.31253;
          D.29910 = cfg->ip;
          cons->cil_code = D.29910;
          cons->data.op[0].p = d;
          cons->data.op[1].src = 21B;
          cons->type = 3;
          D.31254 = alloc_dreg (cfg, 3);
          D.31255 = (int) D.31254;
          cons->dreg = D.31255;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.31256>; else goto <D.31257>;
          <D.31256>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = cons;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          cons->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = cons;
          goto <D.31258>;
          <D.31257>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = cons;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.31258>:
          D.31259 = alloc_freg (cfg);
          dreg = (int) D.31259;
          D.29691 = cfg->mempool;
          ins = mono_mempool_alloc (D.29691, 56);
          ins->data.op[1].const_val = 0;
          D.29906 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.29906;
          ins->prev = 0B;
          D.29907 = ins->prev;
          ins->next = D.29907;
          ins->opcode = 397;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.29908 = ins->sreg3;
          ins->sreg2 = D.29908;
          D.29909 = ins->sreg2;
          ins->sreg1 = D.29909;
          D.29910 = cfg->ip;
          ins->cil_code = D.29910;
          ins->dreg = dreg;
          D.31260 = cons->dreg;
          ins->sreg1 = D.31260;
          ins->data.op[0].const_val = 0;
          ins->type = 1;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.31261>; else goto <D.31262>;
          <D.31261>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = ins;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          ins->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          goto <D.31263>;
          <D.31262>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.31263>:
          ins->type = 4;
        }
        goto <D.31264>;
        <D.31245>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 365;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        ins->type = 4;
        D.31265 = alloc_dreg (cfg, 4);
        D.31266 = (int) D.31265;
        ins->dreg = D.31266;
        ins->data.op[0].p = d;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        if (D.30024 != 0B) goto <D.31267>; else goto <D.31268>;
        <D.31267>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        D.30024->next = ins;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        ins->prev = D.30024;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        goto <D.31269>;
        <D.31268>:
        bblock.77 = bblock;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        D.30024 = bblock.77->last_ins;
        bblock.77->code = D.30024;
        <D.31269>:
        <D.31264>:
        ip = ip + 1;
        {
          union mono_rdouble mf;

          try
            {
              D.31270 = mono_read64 (ip);
              mf.ival = D.31270;
              D.31271 = mf.fval;
              *d = D.31271;
            }
          finally
            {
              mf = {CLOBBER};
            }
        }
        ip = ip + 8;
        sp.113 = sp;
        sp = sp.113 + 4;
        *sp.113 = ins;
        goto <D.26808>;
      }
      <D.26859>:
      {
        struct MonoInst * temp;
        struct MonoInst * store;

        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        if (D.30457 <= 3) goto <D.31273>; else goto <D.31274>;
        <D.31273>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.31275>; else goto <D.31276>;
        <D.31275>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.31277>; else goto <D.31278>;
        <D.31277>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.31278>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.31276>:
        D.31279 = mini_get_debug_options ();
        D.31280 = D.31279->break_on_unverified;
        if (D.31280 != 0) goto <D.31281>; else goto unverified;
        <D.31281>:
        raise (5);
        <D.31274>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        D.30458 = D.30457 /[ex] 4;
        D.30371 = header->max_stack;
        D.30372 = (int) D.30371;
        if (D.30458 >= D.30372) goto <D.31282>; else goto <D.31283>;
        <D.31282>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.31284>; else goto <D.31285>;
        <D.31284>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.31286>; else goto <D.31287>;
        <D.31286>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.31287>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.31285>:
        D.31288 = mini_get_debug_options ();
        D.31289 = D.31288->break_on_unverified;
        if (D.31289 != 0) goto <D.31290>; else goto unverified;
        <D.31290>:
        raise (5);
        <D.31283>:
        sp = sp + 4294967292;
        ins = *sp;
        D.31291 = type_from_stack_type (ins);
        temp = mono_compile_create_var (cfg, D.31291, 329);
        D.29691 = cfg->mempool;
        store = mono_mempool_alloc (D.29691, 56);
        store->data.op[1].const_val = 0;
        D.31292 = store->data.op[1].const_val;
        store->data.op[0].const_val = D.31292;
        store->prev = 0B;
        D.31293 = store->prev;
        store->next = D.31293;
        store->opcode = 424;
        store->flags = 0;
        store->type = 0;
        store->dreg = -1;
        store->sreg3 = -1;
        D.31294 = store->sreg3;
        store->sreg2 = D.31294;
        D.31295 = store->sreg2;
        store->sreg1 = D.31295;
        D.29910 = cfg->ip;
        store->cil_code = D.29910;
        D.30422 = cfg->varinfo;
        D.31296 = temp->data.op[0].const_val;
        D.31297 = (unsigned int) D.31296;
        D.31298 = D.31297 * 4;
        D.31299 = D.30422 + D.31298;
        D.31300 = *D.31299;
        D.31301 = D.31300->data.op[1].vtype;
        D.31302 = mono_type_to_regmove (cfg, D.31301);
        D.31303 = (short unsigned int) D.31302;
        store->opcode = D.31303;
        D.30422 = cfg->varinfo;
        D.31296 = temp->data.op[0].const_val;
        D.31297 = (unsigned int) D.31296;
        D.31298 = D.31297 * 4;
        D.31299 = D.30422 + D.31298;
        D.31300 = *D.31299;
        D.31304 = D.31300->klass;
        store->klass = D.31304;
        D.30101 = ins->dreg;
        store->sreg1 = D.30101;
        D.30422 = cfg->varinfo;
        D.31296 = temp->data.op[0].const_val;
        D.31297 = (unsigned int) D.31296;
        D.31298 = D.31297 * 4;
        D.31299 = D.30422 + D.31298;
        D.31300 = *D.31299;
        D.31305 = D.31300->dreg;
        store->dreg = D.31305;
        D.31306 = store->opcode;
        if (D.31306 == 427) goto <D.31307>; else goto <D.31308>;
        <D.31307>:
        D.30422 = cfg->varinfo;
        D.31296 = temp->data.op[0].const_val;
        D.31297 = (unsigned int) D.31296;
        D.31298 = D.31297 * 4;
        D.31299 = D.30422 + D.31298;
        D.31300 = *D.31299;
        D.31301 = D.31300->data.op[1].vtype;
        D.31309 = mono_class_from_mono_type (D.31301);
        store->klass = D.31309;
        <D.31308>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.31310>; else goto <D.31311>;
        <D.31310>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = store;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        store->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = store;
        goto <D.31312>;
        <D.31311>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = store;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.31312>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 424;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        D.30422 = cfg->varinfo;
        D.31296 = temp->data.op[0].const_val;
        D.31297 = (unsigned int) D.31296;
        D.31298 = D.31297 * 4;
        D.31299 = D.30422 + D.31298;
        D.31300 = *D.31299;
        D.31301 = D.31300->data.op[1].vtype;
        D.31313 = mono_type_to_regmove (cfg, D.31301);
        D.31314 = (short unsigned int) D.31313;
        ins->opcode = D.31314;
        D.30422 = cfg->varinfo;
        D.31296 = temp->data.op[0].const_val;
        D.31297 = (unsigned int) D.31296;
        D.31298 = D.31297 * 4;
        D.31299 = D.30422 + D.31298;
        D.31300 = *D.31299;
        D.31301 = D.31300->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.31301, ins);
        D.30422 = cfg->varinfo;
        D.31296 = temp->data.op[0].const_val;
        D.31297 = (unsigned int) D.31296;
        D.31298 = D.31297 * 4;
        D.31299 = D.30422 + D.31298;
        D.31300 = *D.31299;
        D.31304 = D.31300->klass;
        ins->klass = D.31304;
        D.30422 = cfg->varinfo;
        D.31296 = temp->data.op[0].const_val;
        D.31297 = (unsigned int) D.31296;
        D.31298 = D.31297 * 4;
        D.31299 = D.30422 + D.31298;
        D.31300 = *D.31299;
        D.31305 = D.31300->dreg;
        ins->sreg1 = D.31305;
        D.30432 = ins->type;
        D.30433 = (<unnamed type>) D.30432;
        D.31315 = alloc_dreg (cfg, D.30433);
        D.31316 = (int) D.31315;
        ins->dreg = D.31316;
        D.30436 = ins->opcode;
        if (D.30436 == 427) goto <D.31317>; else goto <D.31318>;
        <D.31317>:
        D.30422 = cfg->varinfo;
        D.31296 = temp->data.op[0].const_val;
        D.31297 = (unsigned int) D.31296;
        D.31298 = D.31297 * 4;
        D.31299 = D.30422 + D.31298;
        D.31300 = *D.31299;
        D.31301 = D.31300->data.op[1].vtype;
        D.31319 = mono_class_from_mono_type (D.31301);
        ins->klass = D.31319;
        <D.31318>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.31320>; else goto <D.31321>;
        <D.31320>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.31322>;
        <D.31321>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.31322>:
        sp.114 = sp;
        sp = sp.114 + 4;
        *sp.114 = ins;
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 424;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        D.30422 = cfg->varinfo;
        D.31296 = temp->data.op[0].const_val;
        D.31297 = (unsigned int) D.31296;
        D.31298 = D.31297 * 4;
        D.31299 = D.30422 + D.31298;
        D.31300 = *D.31299;
        D.31301 = D.31300->data.op[1].vtype;
        D.31324 = mono_type_to_regmove (cfg, D.31301);
        D.31325 = (short unsigned int) D.31324;
        ins->opcode = D.31325;
        D.30422 = cfg->varinfo;
        D.31296 = temp->data.op[0].const_val;
        D.31297 = (unsigned int) D.31296;
        D.31298 = D.31297 * 4;
        D.31299 = D.30422 + D.31298;
        D.31300 = *D.31299;
        D.31301 = D.31300->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.31301, ins);
        D.30422 = cfg->varinfo;
        D.31296 = temp->data.op[0].const_val;
        D.31297 = (unsigned int) D.31296;
        D.31298 = D.31297 * 4;
        D.31299 = D.30422 + D.31298;
        D.31300 = *D.31299;
        D.31304 = D.31300->klass;
        ins->klass = D.31304;
        D.30422 = cfg->varinfo;
        D.31296 = temp->data.op[0].const_val;
        D.31297 = (unsigned int) D.31296;
        D.31298 = D.31297 * 4;
        D.31299 = D.30422 + D.31298;
        D.31300 = *D.31299;
        D.31305 = D.31300->dreg;
        ins->sreg1 = D.31305;
        D.30432 = ins->type;
        D.30433 = (<unnamed type>) D.30432;
        D.31326 = alloc_dreg (cfg, D.30433);
        D.31327 = (int) D.31326;
        ins->dreg = D.31327;
        D.30436 = ins->opcode;
        if (D.30436 == 427) goto <D.31328>; else goto <D.31329>;
        <D.31328>:
        D.30422 = cfg->varinfo;
        D.31296 = temp->data.op[0].const_val;
        D.31297 = (unsigned int) D.31296;
        D.31298 = D.31297 * 4;
        D.31299 = D.30422 + D.31298;
        D.31300 = *D.31299;
        D.31301 = D.31300->data.op[1].vtype;
        D.31330 = mono_class_from_mono_type (D.31301);
        ins->klass = D.31330;
        <D.31329>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.31331>; else goto <D.31332>;
        <D.31331>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.31333>;
        <D.31332>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.31333>:
        sp.115 = sp;
        sp = sp.115 + 4;
        *sp.115 = ins;
        ip = ip + 1;
        inline_costs = inline_costs + 2;
        goto <D.26808>;
      }
      <D.26862>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.31335>; else goto <D.31336>;
      <D.31335>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.31337>; else goto <D.31338>;
      <D.31337>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.31339>; else goto <D.31340>;
      <D.31339>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31340>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31338>:
      D.31341 = mini_get_debug_options ();
      D.31342 = D.31341->break_on_unverified;
      if (D.31342 != 0) goto <D.31343>; else goto unverified;
      <D.31343>:
      raise (5);
      <D.31336>:
      ip = ip + 1;
      sp = sp + 4294967292;
      goto <D.26808>;
      <D.26863>:
      {
        struct MonoCallInst * call;

        D.29662 = cfg->method;
        if (D.29662 != method) goto <D.31344>; else goto <D.31345>;
        <D.31344>:
        D.29634 = BIT_FIELD_REF <*method, 32, 160>;
        D.29635 = D.29634 & 124;
        if (D.29635 == 0) goto <D.31346>; else goto <D.31347>;
        <D.31346>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 1) goto <D.31348>; else goto <D.31349>;
        <D.31348>:
        printf ("inline failed: %s\n", "jmp");
        <D.31349>:
        goto inline_failure;
        <D.31347>:
        <D.31345>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.31350>; else goto <D.31351>;
        <D.31350>:
        D.29629 = method->klass;
        D.31352 = D.29629->name_space;
        D.29629 = method->klass;
        D.31353 = D.29629->name;
        D.31354 = method->name;
        D.31355 = method->signature;
        D.31356 = D.31355->param_count;
        D.31357 = (int) D.31356;
        D.30562 = *ip;
        D.30563 = (int) D.30562;
        D.31358 = mono_opcode_name (D.30563);
        D.31359 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.31352, D.31353, D.31354, D.31357, D.31358, "method-to-ir.c", 7539);
        cfg->exception_message = D.31359;
        D.29771 = cfg->verbose_level;
        if (D.29771 > 1) goto <D.31360>; else goto <D.31361>;
        <D.31360>:
        D.31362 = cfg->exception_message;
        printf ("%s\n", D.31362);
        <D.31361>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.31351>:
        D.31124 = ip + 5;
        if (D.31124 > end) goto <D.31363>; else goto <D.31364>;
        <D.31363>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.31365>; else goto <D.31366>;
        <D.31365>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.31367>; else goto <D.31368>;
        <D.31367>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.31368>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.31366>:
        D.31369 = mini_get_debug_options ();
        D.31370 = D.31369->break_on_unverified;
        if (D.31370 != 0) goto <D.31371>; else goto unverified;
        <D.31371>:
        raise (5);
        <D.31364>:
        if (stack_start != sp) goto <D.31372>; else goto <D.31373>;
        <D.31372>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.31374>; else goto <D.31375>;
        <D.31374>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.31376>; else goto <D.31377>;
        <D.31376>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.31377>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.31375>:
        D.31378 = mini_get_debug_options ();
        D.31379 = D.31378->break_on_unverified;
        if (D.31379 != 0) goto <D.31380>; else goto unverified;
        <D.31380>:
        raise (5);
        <D.31373>:
        D.31143 = ip + 1;
        token = mono_read32 (D.31143);
        cmethod = mini_get_method (cfg, method, token, 0B, generic_context);
        if (cmethod == 0B) goto <D.31381>; else goto <D.31383>;
        <D.31383>:
        D.31384 = mono_loader_get_last_error ();
        if (D.31384 != 0B) goto <D.31381>; else goto <D.31382>;
        <D.31381>:
        D.31385 = mini_get_debug_options ();
        D.31386 = D.31385->break_on_unverified;
        if (D.31386 != 0) goto <D.31387>; else goto load_error;
        <D.31387>:
        raise (5);
        <D.31382>:
        D.29727 = cfg->generic_sharing_context;
        if (D.29727 != 0B) goto <D.31388>; else goto <D.31389>;
        <D.31388>:
        D.31390 = mono_method_check_context_used (cmethod);
        if (D.31390 != 0) goto <D.31391>; else goto <D.31392>;
        <D.31391>:
        D.29727 = cfg->generic_sharing_context;
        if (D.29727 != 0B) goto <D.31393>; else goto <D.31394>;
        <D.31393>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.31395>; else goto <D.31396>;
        <D.31395>:
        D.29629 = method->klass;
        D.31352 = D.29629->name_space;
        D.29629 = method->klass;
        D.31353 = D.29629->name;
        D.31354 = method->name;
        D.31355 = method->signature;
        D.31356 = D.31355->param_count;
        D.31357 = (int) D.31356;
        D.31397 = mono_opcode_name (39);
        printf ("sharing failed for method %s.%s.%s/%d opcode %s line %d\n", D.31352, D.31353, D.31354, D.31357, D.31397, 7552);
        <D.31396>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.31394>:
        <D.31392>:
        <D.31389>:
        D.31398 = mono_security_get_mode ();
        if (D.31398 == 2) goto <D.31399>; else goto <D.31400>;
        <D.31399>:
        D.30240 = cfg->exception_type;
        if (D.30240 != 0) goto exception_exit; else goto <D.31401>;
        <D.31401>:
        <D.31400>:
        if (0 != 0) goto <D.31402>; else goto <D.31403>;
        <D.31402>:
        {
          struct MonoMethodSignature * fsig;
          int i;
          int n;

          fsig = mono_method_signature (cmethod);
          D.31404 = fsig->param_count;
          D.31405 = (int) D.31404;
          D.31406 = fsig->hasthis;
          D.31407 = (int) D.31406;
          n = D.31405 + D.31407;
          D.29771 = cfg->verbose_level;
          if (D.29771 > 1) goto <D.31408>; else goto <D.31409>;
          <D.31408>:
          printf ("AOT disabled: %s:%d\n", "method-to-ir.c", 7564);
          <D.31409>:
          cfg->disable_aot = 1;
          D.29691 = cfg->mempool;
          call = mono_mempool_alloc0 (D.29691, 120);
          call->inst.opcode = 444;
          call->inst.dreg = -1;
          call->inst.sreg3 = -1;
          D.31410 = call->inst.sreg3;
          call->inst.sreg2 = D.31410;
          D.31411 = call->inst.sreg2;
          call->inst.sreg1 = D.31411;
          D.29910 = cfg->ip;
          call->inst.cil_code = D.29910;
          call->method = cmethod;
          call->tail_call = 1;
          D.31412 = mono_method_signature (cmethod);
          call->signature = D.31412;
          D.29691 = cfg->mempool;
          n.116 = (unsigned int) n;
          D.31414 = n.116 * 4;
          D.31415 = mono_mempool_alloc (D.29691, D.31414);
          call->args = D.31415;
          call->inst.data.op[0].p = cmethod;
          i = 0;
          goto <D.26871>;
          <D.26870>:
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.29691 = cfg->mempool;
          D.31420 = mono_mempool_alloc (D.29691, 56);
          *D.31419 = D.31420;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.31421->data.op[1].const_val = 0;
          D.31422 = D.31421->data.op[1].const_val;
          D.31421->data.op[0].const_val = D.31422;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.31421->prev = 0B;
          D.31423 = D.31421->prev;
          D.31421->next = D.31423;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.31421->opcode = 424;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.31421->flags = 0;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.31421->type = 0;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.31421->dreg = -1;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.31421->sreg3 = -1;
          D.31424 = D.31421->sreg3;
          D.31421->sreg2 = D.31424;
          D.31425 = D.31421->sreg2;
          D.31421->sreg1 = D.31425;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.29910 = cfg->ip;
          D.31421->cil_code = D.29910;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.30299 = cfg->arg_types;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31426 = D.30299 + D.31418;
          D.31427 = *D.31426;
          D.31428 = mono_type_to_regmove (cfg, D.31427);
          D.31429 = (short unsigned int) D.31428;
          D.31421->opcode = D.31429;
          D.30299 = cfg->arg_types;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31426 = D.30299 + D.31418;
          D.31427 = *D.31426;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          type_to_eval_stack_type (cfg, D.31427, D.31421);
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.30289 = cfg->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31430 = D.30289 + D.31418;
          D.31431 = *D.31430;
          D.31432 = D.31431->klass;
          D.31421->klass = D.31432;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.30289 = cfg->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31430 = D.30289 + D.31418;
          D.31431 = *D.31430;
          D.31433 = D.31431->dreg;
          D.31421->sreg1 = D.31433;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.31434 = D.31421->type;
          D.31435 = (<unnamed type>) D.31434;
          D.31436 = alloc_dreg (cfg, D.31435);
          D.31437 = (int) D.31436;
          D.31421->dreg = D.31437;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.31438 = D.31421->opcode;
          if (D.31438 == 427) goto <D.31439>; else goto <D.31440>;
          <D.31439>:
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.30299 = cfg->arg_types;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31426 = D.30299 + D.31418;
          D.31427 = *D.31426;
          D.31441 = mono_class_from_mono_type (D.31427);
          D.31421->klass = D.31441;
          <D.31440>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.31442>; else goto <D.31443>;
          <D.31442>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          D.29939->next = D.31421;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.31421->prev = D.29939;
          bblock.129 = cfg->cbb;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          bblock.129->last_ins = D.31421;
          goto <D.31444>;
          <D.31443>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          D.31416 = call->args;
          i.117 = (unsigned int) i;
          D.31418 = i.117 * 4;
          D.31419 = D.31416 + D.31418;
          D.31421 = *D.31419;
          bblock.129->last_ins = D.31421;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.31444>:
          i = i + 1;
          <D.26871>:
          if (i < n) goto <D.26870>; else goto <D.26872>;
          <D.26872>:
          mono_arch_emit_call (cfg, call);
          bblock.77 = bblock;
          D.30024 = bblock.77->last_ins;
          if (D.30024 != 0B) goto <D.31445>; else goto <D.31446>;
          <D.31445>:
          bblock.77 = bblock;
          D.30024 = bblock.77->last_ins;
          D.30024->next = call;
          bblock.77 = bblock;
          D.30024 = bblock.77->last_ins;
          MEM[(struct MonoInst *)call].prev = D.30024;
          bblock.77 = bblock;
          bblock.77->last_ins = call;
          goto <D.31447>;
          <D.31446>:
          bblock.77 = bblock;
          bblock.77 = bblock;
          bblock.77->last_ins = call;
          D.30024 = bblock.77->last_ins;
          bblock.77->code = D.30024;
          <D.31447>:
        }
        goto <D.31448>;
        <D.31403>:
        i = 0;
        goto <D.26874>;
        <D.26873>:
        i.75 = (unsigned int) i;
        D.30418 = i.75 * 4;
        D.31449 = arg_array + D.30418;
        D.31450 = *D.31449;
        i.75 = (unsigned int) i;
        D.30418 = i.75 * 4;
        D.31449 = arg_array + D.30418;
        D.31450 = *D.31449;
        D.31451 = D.31450->flags;
        D.31452 = D.31451 | 4;
        D.31450->flags = D.31452;
        i = i + 1;
        <D.26874>:
        i.118 = (unsigned int) i;
        if (i.118 < num_args) goto <D.26873>; else goto <D.26875>;
        <D.26875>:
        D.29691 = cfg->mempool;
        call = mono_mempool_alloc0 (D.29691, 120);
        call->inst.opcode = 443;
        call->inst.dreg = -1;
        call->inst.sreg3 = -1;
        D.31410 = call->inst.sreg3;
        call->inst.sreg2 = D.31410;
        D.31411 = call->inst.sreg2;
        call->inst.sreg1 = D.31411;
        D.29910 = cfg->ip;
        call->inst.cil_code = D.29910;
        ins = call;
        ins->data.op[0].p = cmethod;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        if (D.30024 != 0B) goto <D.31454>; else goto <D.31455>;
        <D.31454>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        D.30024->next = ins;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        ins->prev = D.30024;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        goto <D.31456>;
        <D.31455>:
        bblock.77 = bblock;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        D.30024 = bblock.77->last_ins;
        bblock.77->code = D.30024;
        <D.31456>:
        <D.31448>:
        ip = ip + 5;
        start_new_bblock = 1;
        goto <D.26808>;
      }
      <D.26876>:
      <D.26877>:
      <D.26878>:
      {
        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.30562 = *ip;
            D.31457 = D.30562 == 111;
            virtual = (int) D.31457;
            D.30562 = *ip;
            D.31458 = D.30562 == 41;
            calli = (int) D.31458;
            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.30562 = *ip;
            call_opcode = (guint32) D.30562;
            emit_widen = 1;
            push_res = 1;
            skip_ret = 0;
            delegate_invoke = 0;
            D.31124 = ip + 5;
            if (D.31124 > end) goto <D.31459>; else goto <D.31460>;
            <D.31459>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.31461>; else goto <D.31462>;
            <D.31461>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.31463>; else goto <D.31464>;
            <D.31463>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.31464>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.31462>:
            D.31465 = mini_get_debug_options ();
            D.31466 = D.31465->break_on_unverified;
            if (D.31466 != 0) goto <D.31467>; else goto unverified;
            <D.31467>:
            raise (5);
            <D.31460>:
            D.31143 = ip + 1;
            token = mono_read32 (D.31143);
            ins = 0B;
            if (calli != 0) goto <D.31468>; else goto <D.31469>;
            <D.31468>:
            cmethod = 0B;
            sp.84 = (int) sp;
            stack_start.85 = (int) stack_start;
            D.30457 = sp.84 - stack_start.85;
            if (D.30457 <= 3) goto <D.31470>; else goto <D.31471>;
            <D.31470>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.31472>; else goto <D.31473>;
            <D.31472>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.31474>; else goto <D.31475>;
            <D.31474>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.31475>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.31473>:
            D.31476 = mini_get_debug_options ();
            D.31477 = D.31476->break_on_unverified;
            if (D.31477 != 0) goto <D.31478>; else goto unverified;
            <D.31478>:
            raise (5);
            <D.31471>:
            sp = sp + 4294967292;
            addr = *sp;
            fsig = mini_get_signature (method, token, generic_context);
            D.31479 = fsig->param_count;
            D.31480 = (int) D.31479;
            D.31481 = fsig->hasthis;
            D.31482 = (int) D.31481;
            n = D.31480 + D.31482;
            D.29634 = BIT_FIELD_REF <*method, 32, 160>;
            D.31483 = D.29634 & 512;
            if (D.31483 != 0) goto <D.31484>; else goto <D.31485>;
            <D.31484>:
            D.31486 = BIT_FIELD_REF <*fsig, 32, 64>;
            D.31487 = D.31486 & 16777216;
            if (D.31487 != 0) goto <D.31488>; else goto <D.31489>;
            <D.31488>:
            {
              struct MonoInst * args[3];

              try
                {
                  D.29691 = cfg->mempool;
                  D.31490 = mono_mempool_alloc (D.29691, 56);
                  args[0] = D.31490;
                  D.31491 = args[0];
                  D.31491 = args[0];
                  D.31491->data.op[1].const_val = 0;
                  D.31492 = D.31491->data.op[1].const_val;
                  D.31491->data.op[0].const_val = D.31492;
                  D.31491 = args[0];
                  D.31491 = args[0];
                  D.31491->prev = 0B;
                  D.31493 = D.31491->prev;
                  D.31491->next = D.31493;
                  D.31491 = args[0];
                  D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
                  D.30082 = D.30081 & 64;
                  if (D.30082 != 0) goto <D.31495>; else goto <D.31496>;
                  <D.31495>:
                  iftmp.119 = 732;
                  goto <D.31497>;
                  <D.31496>:
                  iftmp.119 = 362;
                  <D.31497>:
                  D.31491->opcode = iftmp.119;
                  D.31491 = args[0];
                  D.31491->flags = 0;
                  D.31491 = args[0];
                  D.31491->type = 0;
                  D.31491 = args[0];
                  D.31491->dreg = -1;
                  D.31491 = args[0];
                  D.31491 = args[0];
                  D.31491 = args[0];
                  D.31491->sreg3 = -1;
                  D.31498 = D.31491->sreg3;
                  D.31491->sreg2 = D.31498;
                  D.31499 = D.31491->sreg2;
                  D.31491->sreg1 = D.31499;
                  D.31491 = args[0];
                  D.29910 = cfg->ip;
                  D.31491->cil_code = D.29910;
                  D.31491 = args[0];
                  D.29629 = method->klass;
                  D.29630 = D.29629->image;
                  D.31491->data.op[0].p = D.29630;
                  D.31491 = args[0];
                  D.31491->data.op[1].src = 12B;
                  D.31491 = args[0];
                  D.31491->type = 3;
                  D.31491 = args[0];
                  D.31500 = alloc_dreg (cfg, 3);
                  D.31501 = (int) D.31500;
                  D.31491->dreg = D.31501;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.31502>; else goto <D.31503>;
                  <D.31502>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.31491 = args[0];
                  D.29939->next = D.31491;
                  D.31491 = args[0];
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.31491->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  D.31491 = args[0];
                  bblock.129->last_ins = D.31491;
                  goto <D.31504>;
                  <D.31503>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  D.31491 = args[0];
                  bblock.129->last_ins = D.31491;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.31504>:
                  D.29691 = cfg->mempool;
                  D.31505 = mono_mempool_alloc (D.29691, 56);
                  args[1] = D.31505;
                  D.31506 = args[1];
                  D.31506 = args[1];
                  D.31506->data.op[1].const_val = 0;
                  D.31507 = D.31506->data.op[1].const_val;
                  D.31506->data.op[0].const_val = D.31507;
                  D.31506 = args[1];
                  D.31506 = args[1];
                  D.31506->prev = 0B;
                  D.31508 = D.31506->prev;
                  D.31506->next = D.31508;
                  D.31506 = args[1];
                  D.31506->opcode = 362;
                  D.31506 = args[1];
                  D.31506->flags = 0;
                  D.31506 = args[1];
                  D.31506->type = 0;
                  D.31506 = args[1];
                  D.31506->dreg = -1;
                  D.31506 = args[1];
                  D.31506 = args[1];
                  D.31506 = args[1];
                  D.31506->sreg3 = -1;
                  D.31509 = D.31506->sreg3;
                  D.31506->sreg2 = D.31509;
                  D.31510 = D.31506->sreg2;
                  D.31506->sreg1 = D.31510;
                  D.31506 = args[1];
                  D.29910 = cfg->ip;
                  D.31506->cil_code = D.29910;
                  D.31506 = args[1];
                  D.31506->data.op[0].p = fsig;
                  D.31506 = args[1];
                  D.31506->type = 3;
                  D.31506 = args[1];
                  D.31511 = alloc_dreg (cfg, 3);
                  D.31512 = (int) D.31511;
                  D.31506->dreg = D.31512;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.31513>; else goto <D.31514>;
                  <D.31513>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.31506 = args[1];
                  D.29939->next = D.31506;
                  D.31506 = args[1];
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.31506->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  D.31506 = args[1];
                  bblock.129->last_ins = D.31506;
                  goto <D.31515>;
                  <D.31514>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  D.31506 = args[1];
                  bblock.129->last_ins = D.31506;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.31515>:
                  args[2] = addr;
                  addr = mono_emit_jit_icall (cfg, mono_get_native_calli_wrapper, &args);
                }
              finally
                {
                  args = {CLOBBER};
                }
            }
            <D.31489>:
            <D.31485>:
            goto <D.31516>;
            <D.31469>:
            {
              struct MonoMethod * cil_method;

              try
                {
                  cmethod = mini_get_method (cfg, method, token, 0B, generic_context);
                  cil_method = cmethod;
                  if (constrained_call != 0B) goto <D.31517>; else goto <D.31518>;
                  <D.31517>:
                  D.29634 = BIT_FIELD_REF <*method, 32, 160>;
                  D.29635 = D.29634 & 124;
                  if (D.29635 != 0) goto <D.31519>; else goto <D.31520>;
                  <D.31519>:
                  D.29771 = cfg->verbose_level;
                  if (D.29771 > 2) goto <D.31521>; else goto <D.31522>;
                  <D.31521>:
                  D.31523 = mono_type_get_full_name (constrained_call);
                  printf ("DM Constrained call to %s\n", D.31523);
                  <D.31522>:
                  D.31527 = constrained_call->byval_arg.type;
                  if (D.31527 != 19) goto <D.31528>; else goto <D.31524>;
                  <D.31528>:
                  D.31527 = constrained_call->byval_arg.type;
                  if (D.31527 != 30) goto <D.31525>; else goto <D.31524>;
                  <D.31524>:
                  D.29727 = cfg->generic_sharing_context;
                  if (D.29727 == 0B) goto <D.31525>; else goto <D.31526>;
                  <D.31525>:
                  cil_method.120 = cil_method;
                  cmethod = mono_get_method_constrained_with_method (image, cil_method.120, constrained_call, generic_context);
                  <D.31526>:
                  goto <D.31530>;
                  <D.31520>:
                  D.29771 = cfg->verbose_level;
                  if (D.29771 > 2) goto <D.31531>; else goto <D.31532>;
                  <D.31531>:
                  D.31533 = mono_type_get_full_name (constrained_call);
                  printf ("Constrained call to %s\n", D.31533);
                  <D.31532>:
                  D.31527 = constrained_call->byval_arg.type;
                  if (D.31527 == 19) goto <D.31534>; else goto <D.31537>;
                  <D.31537>:
                  D.31527 = constrained_call->byval_arg.type;
                  if (D.31527 == 30) goto <D.31534>; else goto <D.31535>;
                  <D.31534>:
                  D.29727 = cfg->generic_sharing_context;
                  if (D.29727 != 0B) goto <D.31538>; else goto <D.31535>;
                  <D.31538>:
                  D.31539 = mini_is_gsharedvt_klass (cfg, constrained_call);
                  if (D.31539 == 0) goto <D.31540>; else goto <D.31541>;
                  <D.31540>:
                  D.31542 = cmethod->klass;
                  D.31543 = BIT_FIELD_REF <*D.31542, 32, 160>;
                  D.31544 = D.31543 & 8;
                  D.31545 = D.31544 != 0;
                  D.31546 = (long int) D.31545;
                  D.31547 = __builtin_expect (D.31546, 0);
                  if (D.31547 != 0) goto <D.31548>; else goto <D.31549>;
                  <D.31548>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7671, "!cmethod->klass->valuetype");
                  <D.31549>:
                  <D.31541>:
                  goto <D.31536>;
                  <D.31535>:
                  cmethod = mono_get_method_constrained (image, token, constrained_call, generic_context, &cil_method);
                  <D.31536>:
                  <D.31530>:
                  <D.31518>:
                  if (cmethod == 0B) goto <D.31550>; else goto <D.31552>;
                  <D.31552>:
                  D.31553 = mono_loader_get_last_error ();
                  if (D.31553 != 0B) goto <D.31550>; else goto <D.31551>;
                  <D.31550>:
                  D.31554 = mini_get_debug_options ();
                  D.31555 = D.31554->break_on_unverified;
                  if (D.31555 != 0) goto <D.31556>; else goto load_error;
                  <D.31556>:
                  raise (5);
                  <D.31551>:
                  if (dont_verify == 0) goto <D.31557>; else goto <D.31558>;
                  <D.31557>:
                  D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
                  D.31559 = D.30081 & 16384;
                  if (D.31559 == 0) goto <D.31560>; else goto <D.31561>;
                  <D.31560>:
                  {
                    struct MonoMethod * target_method;

                    target_method = cil_method;
                    D.29634 = BIT_FIELD_REF <*method, 32, 160>;
                    D.29741 = D.29634 & 4096;
                    if (D.29741 != 0) goto <D.31562>; else goto <D.31563>;
                    <D.31562>:
                    D.31564 = mono_method_get_generic_container (method_definition);
                    D.31565 = &D.31564->context;
                    target_method = mini_get_method_allow_open (method, token, 0B, D.31565);
                    <D.31563>:
                    D.31566 = mono_method_can_access_method (method_definition, target_method);
                    if (D.31566 == 0) goto <D.31567>; else goto <D.31568>;
                    <D.31567>:
                    cil_method.120 = cil_method;
                    D.31569 = mono_method_can_access_method (method, cil_method.120);
                    if (D.31569 == 0) goto <D.31570>; else goto <D.31571>;
                    <D.31570>:
                    {
                      char * method_fname;
                      char * cil_method_fname;

                      method_fname = mono_method_full_name (method, 1);
                      cil_method.120 = cil_method;
                      cil_method_fname = mono_method_full_name (cil_method.120, 1);
                      mono_cfg_set_exception (cfg, 9);
                      D.31572 = monoeg_g_strdup_printf ("Method `%s\' is inaccessible from method `%s\'\n", cil_method_fname, method_fname);
                      cfg->exception_message = D.31572;
                      monoeg_g_free (method_fname);
                      monoeg_g_free (cil_method_fname);
                      goto exception_exit;
                    }
                    <D.31571>:
                    <D.31568>:
                  }
                  <D.31561>:
                  <D.31558>:
                  D.31573 = mono_security_get_mode ();
                  if (D.31573 == 1) goto <D.31574>; else goto <D.31575>;
                  <D.31574>:
                  cil_method.120 = cil_method;
                  bblock.77 = bblock;
                  ensure_method_is_allowed_to_call_method (cfg, method, cil_method.120, bblock.77, ip);
                  <D.31575>:
                  if (virtual == 0) goto <D.31576>; else goto <D.31577>;
                  <D.31576>:
                  D.31578 = cmethod->flags;
                  D.31579 = (int) D.31578;
                  D.31580 = D.31579 & 1024;
                  if (D.31580 != 0) goto <D.31581>; else goto <D.31582>;
                  <D.31581>:
                  virtual = 1;
                  <D.31582>:
                  <D.31577>:
                  {
                    const int test_flags;
                    const int expected_flags;

                    test_flags = 112;
                    expected_flags = 96;
                    if (virtual == 0) goto <D.31583>; else goto <D.31584>;
                    <D.31583>:
                    D.31542 = cmethod->klass;
                    D.31543 = BIT_FIELD_REF <*D.31542, 32, 160>;
                    D.31585 = D.31543 & 4194304;
                    if (D.31585 != 0) goto <D.31586>; else goto <D.31587>;
                    <D.31586>:
                    D.31578 = cmethod->flags;
                    D.31579 = (int) D.31578;
                    D.31588 = D.31579 & 112;
                    if (D.31588 == 96) goto <D.31589>; else goto <D.31590>;
                    <D.31589>:
                    D.29662 = cfg->method;
                    D.31591 = BIT_FIELD_REF <*D.29662, 32, 160>;
                    D.31592 = D.31591 & 124;
                    if (D.31592 == 0) goto <D.31593>; else goto <D.31594>;
                    <D.31593>:
                    virtual = 1;
                    <D.31594>:
                    <D.31590>:
                    <D.31587>:
                    <D.31584>:
                  }
                  D.31542 = cmethod->klass;
                  D.31543 = BIT_FIELD_REF <*D.31542, 32, 160>;
                  D.31595 = D.31543 & 1;
                  if (D.31595 == 0) goto <D.31596>; else goto <D.31597>;
                  <D.31596>:
                  D.31542 = cmethod->klass;
                  D.31598 = mono_class_init (D.31542);
                  if (D.31598 == 0) goto <D.31599>; else goto <D.31600>;
                  <D.31599>:
                  D.31601 = mini_get_debug_options ();
                  D.31602 = D.31601->break_on_unverified;
                  if (D.31602 != 0) goto <D.31603>; else goto <D.31604>;
                  <D.31603>:
                  raise (5);
                  goto <D.31605>;
                  <D.31604>:
                  D.31542 = cmethod->klass;
                  cfg->exception_ptr = D.31542;
                  goto load_error;
                  <D.31605>:
                  <D.31600>:
                  <D.31597>:
                  D.31608 = cmethod->iflags;
                  D.31609 = (int) D.31608;
                  D.31610 = D.31609 & 4096;
                  if (D.31610 != 0) goto <D.31611>; else goto <D.31606>;
                  <D.31611>:
                  D.31542 = cmethod->klass;
                  D.31612 = mini_class_is_system_array (D.31542);
                  if (D.31612 != 0) goto <D.31613>; else goto <D.31606>;
                  <D.31613>:
                  D.31542 = cmethod->klass;
                  D.31614 = D.31542->rank;
                  array_rank = (int) D.31614;
                  fsig = mono_method_signature (cmethod);
                  goto <D.31607>;
                  <D.31606>:
                  fsig = mono_method_signature (cmethod);
                  if (fsig == 0B) goto <D.31615>; else goto <D.31616>;
                  <D.31615>:
                  D.31617 = mini_get_debug_options ();
                  D.31618 = D.31617->break_on_unverified;
                  if (D.31618 != 0) goto <D.31619>; else goto load_error;
                  <D.31619>:
                  raise (5);
                  <D.31616>:
                  D.31486 = BIT_FIELD_REF <*fsig, 32, 64>;
                  D.31487 = D.31486 & 16777216;
                  if (D.31487 != 0) goto <D.31620>; else goto <D.31621>;
                  <D.31620>:
                  {
                    struct MonoMethod * wrapper;

                    check_for_pending_exc.121 = check_for_pending_exc;
                    D.31623 = cfg->compile_aot;
                    D.31624 = (int) D.31623;
                    wrapper = mono_marshal_get_native_wrapper (cmethod, check_for_pending_exc.121, D.31624);
                    fsig = mono_method_signature (wrapper);
                  }
                  goto <D.31625>;
                  <D.31621>:
                  if (constrained_call != 0B) goto <D.31626>; else goto <D.31627>;
                  <D.31626>:
                  fsig = mono_method_signature (cmethod);
                  goto <D.31628>;
                  <D.31627>:
                  fsig = mono_method_get_signature_full (cmethod, image, token, generic_context);
                  <D.31628>:
                  <D.31625>:
                  <D.31607>:
                  cil_method.120 = cil_method;
                  mono_save_token_info (cfg, image, token, cil_method.120);
                  D.31629 = fsig->ret;
                  D.31630 = mono_type_is_void (D.31629);
                  if (D.31630 == 0) goto <D.31631>; else goto <D.31632>;
                  <D.31631>:
                  D.31124 = ip + 5;
                  if (D.31124 >= end) goto <D.31635>; else goto <D.31636>;
                  <D.31636>:
                  D.31124 = ip + 5;
                  D.31637 = *D.31124;
                  if (D.31637 != 38) goto <D.31638>; else goto <D.31634>;
                  <D.31638>:
                  D.31124 = ip + 5;
                  D.31637 = *D.31124;
                  if (D.31637 != 0) goto <D.31635>; else goto <D.31634>;
                  <D.31635>:
                  if (seq_point_locs == 0B) goto <D.31633>; else goto <D.31639>;
                  <D.31639>:
                  D.31124 = ip + 5;
                  D.31640 = (int) D.31124;
                  D.29837 = header->code;
                  D.30379 = (int) D.29837;
                  D.31641 = D.31640 - D.30379;
                  D.31642 = (unsigned int) D.31641;
                  D.31643 = D.31642 / 32;
                  D.31644 = seq_point_locs->data[D.31643];
                  D.31124 = ip + 5;
                  D.31640 = (int) D.31124;
                  D.29837 = header->code;
                  D.30379 = (int) D.29837;
                  D.31641 = D.31640 - D.30379;
                  D.31645 = D.31641 & 31;
                  D.31646 = 1 << D.31645;
                  D.31647 = D.31644 & D.31646;
                  if (D.31647 == 0) goto <D.31633>; else goto <D.31634>;
                  <D.31633>:
                  need_seq_point = 1;
                  <D.31634>:
                  <D.31632>:
                  D.31479 = fsig->param_count;
                  D.31480 = (int) D.31479;
                  D.31481 = fsig->hasthis;
                  D.31482 = (int) D.31481;
                  n = D.31480 + D.31482;
                  D.31648 = mono_security_get_mode ();
                  if (D.31648 == 2) goto <D.31649>; else goto <D.31650>;
                  <D.31649>:
                  D.31651 = check_linkdemand (cfg, method, cmethod);
                  if (D.31651 != 0) goto <D.31652>; else goto <D.31653>;
                  <D.31652>:
                  D.29662 = cfg->method;
                  if (D.29662 != method) goto <D.31654>; else goto <D.31655>;
                  <D.31654>:
                  D.29634 = BIT_FIELD_REF <*method, 32, 160>;
                  D.29635 = D.29634 & 124;
                  if (D.29635 == 0) goto <D.31656>; else goto <D.31657>;
                  <D.31656>:
                  D.29771 = cfg->verbose_level;
                  if (D.29771 > 1) goto <D.31658>; else goto <D.31659>;
                  <D.31658>:
                  printf ("inline failed: %s\n", "linkdemand");
                  <D.31659>:
                  goto inline_failure;
                  <D.31657>:
                  <D.31655>:
                  <D.31653>:
                  D.30240 = cfg->exception_type;
                  if (D.30240 != 0) goto exception_exit; else goto <D.31660>;
                  <D.31660>:
                  <D.31650>:
                  D.31661 = BIT_FIELD_REF <*cmethod, 32, 160>;
                  D.31662 = D.31661 & 128;
                  if (D.31662 != 0) goto <D.31663>; else goto <D.31664>;
                  <D.31663>:
                  D.29634 = BIT_FIELD_REF <*method, 32, 160>;
                  D.29635 = D.29634 & 124;
                  if (D.29635 != 16) goto <D.31665>; else goto <D.31666>;
                  <D.31665>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 7769);
                  <D.31666>:
                  <D.31664>:
                }
              finally
                {
                  cil_method = {CLOBBER};
                }
            }
            <D.31516>:
            D.29727 = cfg->generic_sharing_context;
            if (D.29727 == 0B) goto <D.31667>; else goto <D.31668>;
            <D.31667>:
            if (cmethod != 0B) goto <D.31669>; else goto <D.31670>;
            <D.31669>:
            D.31542 = cmethod->klass;
            D.31671 = D.31542->generic_container;
            if (D.31671 != 0B) goto <D.31672>; else goto <D.31673>;
            <D.31672>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.31674>; else goto <D.31675>;
            <D.31674>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.31676>; else goto <D.31677>;
            <D.31676>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.31677>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.31675>:
            D.31678 = mini_get_debug_options ();
            D.31679 = D.31678->break_on_unverified;
            if (D.31679 != 0) goto <D.31680>; else goto unverified;
            <D.31680>:
            raise (5);
            <D.31673>:
            <D.31670>:
            <D.31668>:
            D.29727 = cfg->generic_sharing_context;
            if (D.29727 == 0B) goto <D.31681>; else goto <D.31682>;
            <D.31681>:
            if (cmethod != 0B) goto <D.31683>; else goto <D.31684>;
            <D.31683>:
            D.31685 = mono_method_check_context_used (cmethod);
            D.31686 = D.31685 != 0;
            D.31687 = (long int) D.31686;
            D.31688 = __builtin_expect (D.31687, 0);
            if (D.31688 != 0) goto <D.31689>; else goto <D.31690>;
            <D.31689>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7776, "!mono_method_check_context_used (cmethod)");
            <D.31690>:
            <D.31684>:
            <D.31682>:
            sp.84 = (int) sp;
            stack_start.85 = (int) stack_start;
            D.30457 = sp.84 - stack_start.85;
            D.30458 = D.30457 /[ex] 4;
            if (D.30458 < n) goto <D.31691>; else goto <D.31692>;
            <D.31691>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.31693>; else goto <D.31694>;
            <D.31693>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.31695>; else goto <D.31696>;
            <D.31695>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.31696>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.31694>:
            D.31697 = mini_get_debug_options ();
            D.31698 = D.31697->break_on_unverified;
            if (D.31698 != 0) goto <D.31699>; else goto unverified;
            <D.31699>:
            raise (5);
            <D.31692>:
            n.89 = (unsigned int) n;
            D.30606 = n.89 * 4;
            D.31700 = -D.30606;
            sp = sp + D.31700;
            if (constrained_call != 0B) goto <D.31701>; else goto <D.31702>;
            <D.31701>:
            D.31703 = mini_is_gsharedvt_klass (cfg, constrained_call);
            if (D.31703 != 0) goto <D.31704>; else goto <D.31705>;
            <D.31704>:
            D.31542 = cmethod->klass;
            D.31708 = mono_defaults.object_class;
            if (D.31542 != D.31708) goto <D.31709>; else goto <D.31706>;
            <D.31709>:
            D.31710 = BIT_FIELD_REF <*constrained_call, 32, 160>;
            D.31711 = D.31710 & 8;
            if (D.31711 != 0) goto <D.31712>; else goto <D.31706>;
            <D.31712>:
            D.31542 = cmethod->klass;
            D.31543 = BIT_FIELD_REF <*D.31542, 32, 160>;
            D.31544 = D.31543 & 8;
            if (D.31544 != 0) goto <D.31713>; else goto <D.31706>;
            <D.31713>:
            goto <D.31707>;
            <D.31706>:
            D.31542 = cmethod->klass;
            D.31716 = D.31542->image;
            D.31717 = mono_defaults.corlib;
            if (D.31716 != D.31717) goto <D.31718>; else goto <D.31714>;
            <D.31718>:
            D.31542 = cmethod->klass;
            D.31719 = D.31542->flags;
            D.31720 = D.31719 & 32;
            if (D.31720 == 0) goto <D.31721>; else goto <D.31714>;
            <D.31721>:
            D.31542 = cmethod->klass;
            D.31543 = BIT_FIELD_REF <*D.31542, 32, 160>;
            D.31544 = D.31543 & 8;
            if (D.31544 == 0) goto <D.31722>; else goto <D.31714>;
            <D.31722>:
            goto <D.31715>;
            <D.31714>:
            D.31542 = cmethod->klass;
            D.31708 = mono_defaults.object_class;
            if (D.31542 == D.31708) goto <D.31723>; else goto <D.31729>;
            <D.31729>:
            D.31542 = cmethod->klass;
            D.31719 = D.31542->flags;
            D.31720 = D.31719 & 32;
            if (D.31720 != 0) goto <D.31723>; else goto <D.31730>;
            <D.31730>:
            D.31542 = cmethod->klass;
            D.31543 = BIT_FIELD_REF <*D.31542, 32, 160>;
            D.31544 = D.31543 & 8;
            if (D.31544 == 0) goto <D.31731>; else goto <D.31724>;
            <D.31731>:
            D.31542 = cmethod->klass;
            D.31716 = D.31542->image;
            D.31717 = mono_defaults.corlib;
            if (D.31716 != D.31717) goto <D.31723>; else goto <D.31724>;
            <D.31723>:
            D.31629 = fsig->ret;
            D.31732 = mono_type_is_void (D.31629);
            if (D.31732 != 0) goto <D.31725>; else goto <D.31733>;
            <D.31733>:
            D.31629 = fsig->ret;
            D.31734 = BIT_FIELD_REF <*D.31629, 32, 32>;
            D.31735 = D.31734 & 1073741824;
            if (D.31735 == 0) goto <D.31736>; else goto <D.31726>;
            <D.31736>:
            D.31629 = fsig->ret;
            D.31737 = D.31629->type;
            D.31738 = D.31737 + 254;
            if (D.31738 <= 11) goto <D.31725>; else goto <D.31739>;
            <D.31739>:
            D.31629 = fsig->ret;
            D.31737 = D.31629->type;
            D.31740 = D.31737 + 232;
            if (D.31740 <= 1) goto <D.31725>; else goto <D.31726>;
            <D.31726>:
            D.31629 = fsig->ret;
            D.31741 = mono_type_is_reference (D.31629);
            if (D.31741 != 0) goto <D.31725>; else goto <D.31742>;
            <D.31742>:
            D.31629 = fsig->ret;
            D.31743 = mini_is_gsharedvt_type (cfg, D.31629);
            if (D.31743 != 0) goto <D.31725>; else goto <D.31724>;
            <D.31725>:
            D.31479 = fsig->param_count;
            if (D.31479 == 0) goto <D.31727>; else goto <D.31744>;
            <D.31744>:
            D.31486 = BIT_FIELD_REF <*fsig, 32, 64>;
            D.31745 = D.31486 & 4194304;
            if (D.31745 == 0) goto <D.31746>; else goto <D.31728>;
            <D.31746>:
            D.31479 = fsig->param_count;
            if (D.31479 == 1) goto <D.31727>; else goto <D.31728>;
            <D.31728>:
            D.31479 = fsig->param_count;
            if (D.31479 == 1) goto <D.31747>; else goto <D.31724>;
            <D.31747>:
            D.31748 = fsig->params[0];
            D.31749 = mono_type_is_reference (D.31748);
            if (D.31749 != 0) goto <D.31727>; else goto <D.31750>;
            <D.31750>:
            D.31748 = fsig->params[0];
            D.31751 = mini_is_gsharedvt_type (cfg, D.31748);
            if (D.31751 != 0) goto <D.31727>; else goto <D.31724>;
            <D.31727>:
            {
              struct MonoInst * args[16];

              try
                {
                  D.30679 = *sp;
                  args[0] = D.30679;
                  D.31752 = mono_method_check_context_used (cmethod);
                  if (D.31752 != 0) goto <D.31753>; else goto <D.31754>;
                  <D.31753>:
                  D.31755 = mono_method_check_context_used (cmethod);
                  D.31756 = emit_get_rgctx_method (cfg, D.31755, cmethod, 5);
                  args[1] = D.31756;
                  goto <D.31757>;
                  <D.31754>:
                  D.29691 = cfg->mempool;
                  D.31758 = mono_mempool_alloc (D.29691, 56);
                  args[1] = D.31758;
                  D.31759 = args[1];
                  D.31759 = args[1];
                  D.31759->data.op[1].const_val = 0;
                  D.31760 = D.31759->data.op[1].const_val;
                  D.31759->data.op[0].const_val = D.31760;
                  D.31759 = args[1];
                  D.31759 = args[1];
                  D.31759->prev = 0B;
                  D.31761 = D.31759->prev;
                  D.31759->next = D.31761;
                  D.31759 = args[1];
                  D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
                  D.30082 = D.30081 & 64;
                  if (D.30082 != 0) goto <D.31763>; else goto <D.31764>;
                  <D.31763>:
                  iftmp.122 = 732;
                  goto <D.31765>;
                  <D.31764>:
                  iftmp.122 = 362;
                  <D.31765>:
                  D.31759->opcode = iftmp.122;
                  D.31759 = args[1];
                  D.31759->flags = 0;
                  D.31759 = args[1];
                  D.31759->type = 0;
                  D.31759 = args[1];
                  D.31759->dreg = -1;
                  D.31759 = args[1];
                  D.31759 = args[1];
                  D.31759 = args[1];
                  D.31759->sreg3 = -1;
                  D.31766 = D.31759->sreg3;
                  D.31759->sreg2 = D.31766;
                  D.31767 = D.31759->sreg2;
                  D.31759->sreg1 = D.31767;
                  D.31759 = args[1];
                  D.29910 = cfg->ip;
                  D.31759->cil_code = D.29910;
                  D.31759 = args[1];
                  D.31759->data.op[0].p = cmethod;
                  D.31759 = args[1];
                  D.31759->data.op[1].src = 6B;
                  D.31759 = args[1];
                  D.31759->type = 3;
                  D.31759 = args[1];
                  D.31768 = alloc_dreg (cfg, 3);
                  D.31769 = (int) D.31768;
                  D.31759->dreg = D.31769;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.31770>; else goto <D.31771>;
                  <D.31770>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.31759 = args[1];
                  D.29939->next = D.31759;
                  D.31759 = args[1];
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.31759->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  D.31759 = args[1];
                  bblock.129->last_ins = D.31759;
                  goto <D.31772>;
                  <D.31771>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  D.31759 = args[1];
                  bblock.129->last_ins = D.31759;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.31772>:
                  <D.31757>:
                  D.31773 = mono_class_check_context_used (constrained_call);
                  D.31774 = emit_get_rgctx_klass (cfg, D.31773, constrained_call, 1);
                  args[2] = D.31774;
                  D.31486 = BIT_FIELD_REF <*fsig, 32, 64>;
                  D.31745 = D.31486 & 4194304;
                  if (D.31745 != 0) goto <D.31777>; else goto <D.31775>;
                  <D.31777>:
                  D.31479 = fsig->param_count;
                  if (D.31479 != 0) goto <D.31778>; else goto <D.31775>;
                  <D.31778>:
                  D.29691 = cfg->mempool;
                  ins = mono_mempool_alloc (D.29691, 56);
                  ins->data.op[1].const_val = 0;
                  D.29906 = ins->data.op[1].const_val;
                  ins->data.op[0].const_val = D.29906;
                  ins->prev = 0B;
                  D.29907 = ins->prev;
                  ins->next = D.29907;
                  ins->opcode = 339;
                  ins->flags = 0;
                  ins->type = 0;
                  ins->dreg = -1;
                  ins->sreg3 = -1;
                  D.29908 = ins->sreg3;
                  ins->sreg2 = D.29908;
                  D.29909 = ins->sreg2;
                  ins->sreg1 = D.29909;
                  D.29910 = cfg->ip;
                  ins->cil_code = D.29910;
                  D.31779 = alloc_preg (cfg);
                  D.31780 = (int) D.31779;
                  ins->dreg = D.31780;
                  D.31479 = fsig->param_count;
                  D.31781 = (unsigned int) D.31479;
                  D.31782 = D.31781 * 4;
                  D.31783 = (int) D.31782;
                  ins->data.op[1].const_val = D.31783;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.31784>; else goto <D.31785>;
                  <D.31784>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.29939->next = ins;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  ins->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  bblock.129->last_ins = ins;
                  goto <D.31786>;
                  <D.31785>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  bblock.129->last_ins = ins;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.31786>:
                  args[4] = ins;
                  D.31748 = fsig->params[0];
                  D.31787 = mini_is_gsharedvt_type (cfg, D.31748);
                  if (D.31787 != 0) goto <D.31788>; else goto <D.31789>;
                  <D.31788>:
                  {
                    int addr_reg;

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

                      D.31793 = sp + 4;
                      D.31794 = *D.31793;
                      D.31795 = D.31794->dreg;
                      D.31796 = (unsigned int) D.31795;
                      D.30791 = cfg->vreg_to_inst_len;
                      if (D.31796 < D.30791) goto <D.31797>; else goto <D.31798>;
                      <D.31797>:
                      D.30794 = cfg->vreg_to_inst;
                      D.31793 = sp + 4;
                      D.31794 = *D.31793;
                      D.31795 = D.31794->dreg;
                      D.31799 = (unsigned int) D.31795;
                      D.31800 = D.31799 * 4;
                      D.31801 = D.30794 + D.31800;
                      iftmp.123 = *D.31801;
                      goto <D.31802>;
                      <D.31798>:
                      iftmp.123 = 0B;
                      <D.31802>:
                      var = iftmp.123;
                      if (var == 0B) goto <D.31803>; else goto <D.31804>;
                      <D.31803>:
                      D.31748 = fsig->params[0];
                      D.31793 = sp + 4;
                      D.31794 = *D.31793;
                      D.31795 = D.31794->dreg;
                      var = mono_compile_create_var_for_vreg (cfg, D.31748, 329, D.31795);
                      <D.31804>:
                      D.29691 = cfg->mempool;
                      ins = mono_mempool_alloc (D.29691, 56);
                      ins->data.op[1].const_val = 0;
                      D.29906 = ins->data.op[1].const_val;
                      ins->data.op[0].const_val = D.29906;
                      ins->prev = 0B;
                      D.29907 = ins->prev;
                      ins->next = D.29907;
                      ins->opcode = 314;
                      ins->flags = 0;
                      ins->type = 0;
                      ins->dreg = -1;
                      ins->sreg3 = -1;
                      D.29908 = ins->sreg3;
                      ins->sreg2 = D.29908;
                      D.29909 = ins->sreg2;
                      ins->sreg1 = D.29909;
                      D.29910 = cfg->ip;
                      ins->cil_code = D.29910;
                      ins->data.op[0].p = var;
                      D.31805 = var->flags;
                      D.31806 = D.31805 | 16;
                      var->flags = D.31806;
                      ins->type = 5;
                      D.31807 = var->klass;
                      ins->klass = D.31807;
                      D.31808 = alloc_dreg (cfg, 5);
                      D.31809 = (int) D.31808;
                      ins->dreg = D.31809;
                      cfg->has_indirection = 1;
                      D.29838 = cfg->gsharedvt;
                      D.30765 = D.29838 != 0;
                      D.30766 = (long int) D.30765;
                      D.30767 = __builtin_expect (D.30766, 0);
                      if (D.30767 != 0) goto <D.31810>; else goto <D.31811>;
                      <D.31810>:
                      D.31812 = var->data.op[1].vtype;
                      D.31813 = mini_is_gsharedvt_variable_type (cfg, D.31812);
                      if (D.31813 != 0) goto <D.31814>; else goto <D.31815>;
                      <D.31814>:
                      handle_gsharedvt_ldaddr (cfg);
                      <D.31815>:
                      <D.31811>:
                      D.31817 = mono_arch_is_soft_float ();
                      if (D.31817 != 0) goto <D.31818>; else goto <D.31819>;
                      <D.31818>:
                      D.31824 = var->type;
                      if (D.31824 == 2) goto <D.31821>; else goto <D.31825>;
                      <D.31825>:
                      D.31824 = var->type;
                      if (D.31824 == 4) goto <D.31821>; else goto <D.31822>;
                      <D.31821>:
                      iftmp.125 = 1;
                      goto <D.31823>;
                      <D.31822>:
                      iftmp.125 = 0;
                      <D.31823>:
                      iftmp.124 = (_Bool) iftmp.125;
                      goto <D.31826>;
                      <D.31819>:
                      D.31824 = var->type;
                      iftmp.124 = D.31824 == 2;
                      <D.31826>:
                      if (iftmp.124 != 0) goto <D.31827>; else goto <D.31828>;
                      <D.31827>:
                      {
                        struct MonoInst * var1;
                        struct MonoInst * var2;

                        D.31830 = var->dreg;
                        D.31831 = D.31830 + 1;
                        D.31832 = (unsigned int) D.31831;
                        D.30791 = cfg->vreg_to_inst_len;
                        if (D.31832 < D.30791) goto <D.31833>; else goto <D.31834>;
                        <D.31833>:
                        D.30794 = cfg->vreg_to_inst;
                        D.31830 = var->dreg;
                        D.31835 = (sizetype) D.31830;
                        D.31836 = D.31835 + 1;
                        D.31837 = D.31836 * 4;
                        D.31838 = D.30794 + D.31837;
                        iftmp.126 = *D.31838;
                        goto <D.31839>;
                        <D.31834>:
                        iftmp.126 = 0B;
                        <D.31839>:
                        var1 = iftmp.126;
                        D.31830 = var->dreg;
                        D.31841 = D.31830 + 2;
                        D.31842 = (unsigned int) D.31841;
                        D.30791 = cfg->vreg_to_inst_len;
                        if (D.31842 < D.30791) goto <D.31843>; else goto <D.31844>;
                        <D.31843>:
                        D.30794 = cfg->vreg_to_inst;
                        D.31830 = var->dreg;
                        D.31835 = (sizetype) D.31830;
                        D.31845 = D.31835 + 2;
                        D.31846 = D.31845 * 4;
                        D.31847 = D.30794 + D.31846;
                        iftmp.127 = *D.31847;
                        goto <D.31848>;
                        <D.31844>:
                        iftmp.127 = 0B;
                        <D.31848>:
                        var2 = iftmp.127;
                        D.31849 = var1 == 0B;
                        D.31850 = (long int) D.31849;
                        D.31851 = __builtin_expect (D.31850, 0);
                        if (D.31851 != 0) goto <D.31852>; else goto <D.31853>;
                        <D.31852>:
                        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7827, "var1");
                        <D.31853>:
                        D.31854 = var2 == 0B;
                        D.31855 = (long int) D.31854;
                        D.31856 = __builtin_expect (D.31855, 0);
                        if (D.31856 != 0) goto <D.31857>; else goto <D.31858>;
                        <D.31857>:
                        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7827, "var2");
                        <D.31858>:
                        D.31859 = var1->flags;
                        D.31860 = D.31859 | 16;
                        var1->flags = D.31860;
                        D.31861 = var2->flags;
                        D.31862 = D.31861 | 16;
                        var2->flags = D.31862;
                      }
                      <D.31828>:
                    }
                    bblock.129 = cfg->cbb;
                    D.29939 = bblock.129->last_ins;
                    if (D.29939 != 0B) goto <D.31863>; else goto <D.31864>;
                    <D.31863>:
                    bblock.129 = cfg->cbb;
                    D.29939 = bblock.129->last_ins;
                    D.29939->next = ins;
                    bblock.129 = cfg->cbb;
                    D.29939 = bblock.129->last_ins;
                    ins->prev = D.29939;
                    bblock.129 = cfg->cbb;
                    bblock.129->last_ins = ins;
                    goto <D.31865>;
                    <D.31864>:
                    bblock.129 = cfg->cbb;
                    bblock.129 = cfg->cbb;
                    bblock.129->last_ins = ins;
                    D.29939 = bblock.129->last_ins;
                    bblock.129->code = D.29939;
                    <D.31865>:
                    addr_reg = ins->dreg;
                    D.29691 = cfg->mempool;
                    ins = mono_mempool_alloc (D.29691, 56);
                    ins->data.op[1].const_val = 0;
                    D.29906 = ins->data.op[1].const_val;
                    ins->data.op[0].const_val = D.29906;
                    ins->prev = 0B;
                    D.29907 = ins->prev;
                    ins->next = D.29907;
                    ins->opcode = 374;
                    ins->flags = 0;
                    ins->type = 0;
                    ins->dreg = -1;
                    ins->sreg3 = -1;
                    D.29908 = ins->sreg3;
                    ins->sreg2 = D.29908;
                    D.29909 = ins->sreg2;
                    ins->sreg1 = D.29909;
                    D.29910 = cfg->ip;
                    ins->cil_code = D.29910;
                    ins->sreg1 = addr_reg;
                    D.31866 = args[4];
                    D.31867 = D.31866->dreg;
                    ins->dreg = D.31867;
                    ins->data.op[0].const_val = 0;
                    bblock.129 = cfg->cbb;
                    D.29939 = bblock.129->last_ins;
                    if (D.29939 != 0B) goto <D.31868>; else goto <D.31869>;
                    <D.31868>:
                    bblock.129 = cfg->cbb;
                    D.29939 = bblock.129->last_ins;
                    D.29939->next = ins;
                    bblock.129 = cfg->cbb;
                    D.29939 = bblock.129->last_ins;
                    ins->prev = D.29939;
                    bblock.129 = cfg->cbb;
                    bblock.129->last_ins = ins;
                    goto <D.31870>;
                    <D.31869>:
                    bblock.129 = cfg->cbb;
                    bblock.129 = cfg->cbb;
                    bblock.129->last_ins = ins;
                    D.29939 = bblock.129->last_ins;
                    bblock.129->code = D.29939;
                    <D.31870>:
                  }
                  goto <D.31871>;
                  <D.31789>:
                  D.29691 = cfg->mempool;
                  D.31872 = mono_mempool_alloc (D.29691, 56);
                  args[3] = D.31872;
                  D.31873 = args[3];
                  D.31873 = args[3];
                  D.31873->data.op[1].const_val = 0;
                  D.31874 = D.31873->data.op[1].const_val;
                  D.31873->data.op[0].const_val = D.31874;
                  D.31873 = args[3];
                  D.31873 = args[3];
                  D.31873->prev = 0B;
                  D.31875 = D.31873->prev;
                  D.31873->next = D.31875;
                  D.31873 = args[3];
                  D.31873->opcode = 362;
                  D.31873 = args[3];
                  D.31873->flags = 0;
                  D.31873 = args[3];
                  D.31873->type = 0;
                  D.31873 = args[3];
                  D.31873->dreg = -1;
                  D.31873 = args[3];
                  D.31873 = args[3];
                  D.31873 = args[3];
                  D.31873->sreg3 = -1;
                  D.31876 = D.31873->sreg3;
                  D.31873->sreg2 = D.31876;
                  D.31877 = D.31873->sreg2;
                  D.31873->sreg1 = D.31877;
                  D.31873 = args[3];
                  D.29910 = cfg->ip;
                  D.31873->cil_code = D.29910;
                  D.31873 = args[3];
                  D.31873->data.op[0].const_val = 0;
                  D.31873 = args[3];
                  D.31873->type = 1;
                  D.31873 = args[3];
                  D.31878 = alloc_dreg (cfg, 1);
                  D.31879 = (int) D.31878;
                  D.31873->dreg = D.31879;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.31880>; else goto <D.31881>;
                  <D.31880>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.31873 = args[3];
                  D.29939->next = D.31873;
                  D.31873 = args[3];
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.31873->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  D.31873 = args[3];
                  bblock.129->last_ins = D.31873;
                  goto <D.31882>;
                  <D.31881>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  D.31873 = args[3];
                  bblock.129->last_ins = D.31873;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.31882>:
                  D.29691 = cfg->mempool;
                  ins = mono_mempool_alloc (D.29691, 56);
                  ins->data.op[1].const_val = 0;
                  D.29906 = ins->data.op[1].const_val;
                  ins->data.op[0].const_val = D.29906;
                  ins->prev = 0B;
                  D.29907 = ins->prev;
                  ins->next = D.29907;
                  ins->opcode = 374;
                  ins->flags = 0;
                  ins->type = 0;
                  ins->dreg = -1;
                  ins->sreg3 = -1;
                  D.29908 = ins->sreg3;
                  ins->sreg2 = D.29908;
                  D.29909 = ins->sreg2;
                  ins->sreg1 = D.29909;
                  D.29910 = cfg->ip;
                  ins->cil_code = D.29910;
                  D.31793 = sp + 4;
                  D.31794 = *D.31793;
                  D.31795 = D.31794->dreg;
                  ins->sreg1 = D.31795;
                  D.31866 = args[4];
                  D.31867 = D.31866->dreg;
                  ins->dreg = D.31867;
                  ins->data.op[0].const_val = 0;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.31883>; else goto <D.31884>;
                  <D.31883>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.29939->next = ins;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  ins->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  bblock.129->last_ins = ins;
                  goto <D.31885>;
                  <D.31884>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  bblock.129->last_ins = ins;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.31885>:
                  <D.31871>:
                  goto <D.31776>;
                  <D.31775>:
                  D.29691 = cfg->mempool;
                  D.31886 = mono_mempool_alloc (D.29691, 56);
                  args[3] = D.31886;
                  D.31873 = args[3];
                  D.31873 = args[3];
                  D.31873->data.op[1].const_val = 0;
                  D.31874 = D.31873->data.op[1].const_val;
                  D.31873->data.op[0].const_val = D.31874;
                  D.31873 = args[3];
                  D.31873 = args[3];
                  D.31873->prev = 0B;
                  D.31875 = D.31873->prev;
                  D.31873->next = D.31875;
                  D.31873 = args[3];
                  D.31873->opcode = 362;
                  D.31873 = args[3];
                  D.31873->flags = 0;
                  D.31873 = args[3];
                  D.31873->type = 0;
                  D.31873 = args[3];
                  D.31873->dreg = -1;
                  D.31873 = args[3];
                  D.31873 = args[3];
                  D.31873 = args[3];
                  D.31873->sreg3 = -1;
                  D.31876 = D.31873->sreg3;
                  D.31873->sreg2 = D.31876;
                  D.31877 = D.31873->sreg2;
                  D.31873->sreg1 = D.31877;
                  D.31873 = args[3];
                  D.29910 = cfg->ip;
                  D.31873->cil_code = D.29910;
                  D.31873 = args[3];
                  D.31873->data.op[0].const_val = 0;
                  D.31873 = args[3];
                  D.31873->type = 1;
                  D.31873 = args[3];
                  D.31887 = alloc_dreg (cfg, 1);
                  D.31888 = (int) D.31887;
                  D.31873->dreg = D.31888;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.31889>; else goto <D.31890>;
                  <D.31889>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.31873 = args[3];
                  D.29939->next = D.31873;
                  D.31873 = args[3];
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.31873->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  D.31873 = args[3];
                  bblock.129->last_ins = D.31873;
                  goto <D.31891>;
                  <D.31890>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  D.31873 = args[3];
                  bblock.129->last_ins = D.31873;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.31891>:
                  D.29691 = cfg->mempool;
                  D.31892 = mono_mempool_alloc (D.29691, 56);
                  args[4] = D.31892;
                  D.31866 = args[4];
                  D.31866 = args[4];
                  D.31866->data.op[1].const_val = 0;
                  D.31893 = D.31866->data.op[1].const_val;
                  D.31866->data.op[0].const_val = D.31893;
                  D.31866 = args[4];
                  D.31866 = args[4];
                  D.31866->prev = 0B;
                  D.31894 = D.31866->prev;
                  D.31866->next = D.31894;
                  D.31866 = args[4];
                  D.31866->opcode = 362;
                  D.31866 = args[4];
                  D.31866->flags = 0;
                  D.31866 = args[4];
                  D.31866->type = 0;
                  D.31866 = args[4];
                  D.31866->dreg = -1;
                  D.31866 = args[4];
                  D.31866 = args[4];
                  D.31866 = args[4];
                  D.31866->sreg3 = -1;
                  D.31895 = D.31866->sreg3;
                  D.31866->sreg2 = D.31895;
                  D.31896 = D.31866->sreg2;
                  D.31866->sreg1 = D.31896;
                  D.31866 = args[4];
                  D.29910 = cfg->ip;
                  D.31866->cil_code = D.29910;
                  D.31866 = args[4];
                  D.31866->data.op[0].const_val = 0;
                  D.31866 = args[4];
                  D.31866->type = 1;
                  D.31866 = args[4];
                  D.31897 = alloc_dreg (cfg, 1);
                  D.31898 = (int) D.31897;
                  D.31866->dreg = D.31898;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.31899>; else goto <D.31900>;
                  <D.31899>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.31866 = args[4];
                  D.29939->next = D.31866;
                  D.31866 = args[4];
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.31866->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  D.31866 = args[4];
                  bblock.129->last_ins = D.31866;
                  goto <D.31901>;
                  <D.31900>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  D.31866 = args[4];
                  bblock.129->last_ins = D.31866;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.31901>:
                  <D.31776>:
                  ins = mono_emit_jit_icall (cfg, mono_gsharedvt_constrained_call, &args);
                  emit_widen = 0;
                  D.31629 = fsig->ret;
                  D.31902 = mini_is_gsharedvt_type (cfg, D.31629);
                  if (D.31902 != 0) goto <D.31903>; else goto <D.31904>;
                  <D.31903>:
                  D.31629 = fsig->ret;
                  D.31905 = mono_class_from_mono_type (D.31629);
                  ins = handle_unbox_gsharedvt (cfg, D.31905, ins, &bblock);
                  goto <D.31906>;
                  <D.31904>:
                  D.31629 = fsig->ret;
                  D.31734 = BIT_FIELD_REF <*D.31629, 32, 32>;
                  D.31735 = D.31734 & 1073741824;
                  if (D.31735 == 0) goto <D.31909>; else goto <D.31910>;
                  <D.31909>:
                  D.31629 = fsig->ret;
                  D.31737 = D.31629->type;
                  D.31738 = D.31737 + 254;
                  if (D.31738 <= 11) goto <D.31907>; else goto <D.31911>;
                  <D.31911>:
                  D.31629 = fsig->ret;
                  D.31737 = D.31629->type;
                  D.31740 = D.31737 + 232;
                  if (D.31740 <= 1) goto <D.31907>; else goto <D.31908>;
                  <D.31907>:
                  {
                    struct MonoInst * add;

                    D.29691 = cfg->mempool;
                    add = mono_mempool_alloc (D.29691, 56);
                    add->data.op[1].const_val = 0;
                    D.31912 = add->data.op[1].const_val;
                    add->data.op[0].const_val = D.31912;
                    add->prev = 0B;
                    D.31913 = add->prev;
                    add->next = D.31913;
                    add->opcode = 429;
                    add->flags = 0;
                    add->type = 0;
                    add->dreg = -1;
                    add->sreg3 = -1;
                    D.31914 = add->sreg3;
                    add->sreg2 = D.31914;
                    D.31915 = add->sreg2;
                    add->sreg1 = D.31915;
                    D.29910 = cfg->ip;
                    add->cil_code = D.29910;
                    D.31916 = alloc_dreg (cfg, 5);
                    D.31917 = (int) D.31916;
                    add->dreg = D.31917;
                    D.30101 = ins->dreg;
                    add->sreg1 = D.30101;
                    add->data.op[1].const_val = 8;
                    bblock.129 = cfg->cbb;
                    D.29939 = bblock.129->last_ins;
                    if (D.29939 != 0B) goto <D.31918>; else goto <D.31919>;
                    <D.31918>:
                    bblock.129 = cfg->cbb;
                    D.29939 = bblock.129->last_ins;
                    D.29939->next = add;
                    bblock.129 = cfg->cbb;
                    D.29939 = bblock.129->last_ins;
                    add->prev = D.29939;
                    bblock.129 = cfg->cbb;
                    bblock.129->last_ins = add;
                    goto <D.31920>;
                    <D.31919>:
                    bblock.129 = cfg->cbb;
                    bblock.129 = cfg->cbb;
                    bblock.129->last_ins = add;
                    D.29939 = bblock.129->last_ins;
                    bblock.129->code = D.29939;
                    <D.31920>:
                    D.29691 = cfg->mempool;
                    ins = mono_mempool_alloc (D.29691, 56);
                    ins->data.op[1].const_val = 0;
                    D.29906 = ins->data.op[1].const_val;
                    ins->data.op[0].const_val = D.29906;
                    ins->prev = 0B;
                    D.29907 = ins->prev;
                    ins->next = D.29907;
                    D.31629 = fsig->ret;
                    D.31921 = mono_type_to_load_membase (cfg, D.31629);
                    D.31922 = (short unsigned int) D.31921;
                    ins->opcode = D.31922;
                    ins->flags = 0;
                    ins->type = 0;
                    ins->dreg = -1;
                    ins->sreg3 = -1;
                    D.29908 = ins->sreg3;
                    ins->sreg2 = D.29908;
                    D.29909 = ins->sreg2;
                    ins->sreg1 = D.29909;
                    D.29910 = cfg->ip;
                    ins->cil_code = D.29910;
                    ins->dreg = 0;
                    D.31923 = add->dreg;
                    ins->sreg1 = D.31923;
                    ins->data.op[0].const_val = 0;
                    ins->type = 1;
                    D.31629 = fsig->ret;
                    type_to_eval_stack_type (cfg, D.31629, ins);
                    D.30432 = ins->type;
                    D.30433 = (<unnamed type>) D.30432;
                    D.31924 = alloc_dreg (cfg, D.30433);
                    D.31925 = (int) D.31924;
                    ins->dreg = D.31925;
                    bblock.129 = cfg->cbb;
                    D.29939 = bblock.129->last_ins;
                    if (D.29939 != 0B) goto <D.31926>; else goto <D.31927>;
                    <D.31926>:
                    bblock.129 = cfg->cbb;
                    D.29939 = bblock.129->last_ins;
                    D.29939->next = ins;
                    bblock.129 = cfg->cbb;
                    D.29939 = bblock.129->last_ins;
                    ins->prev = D.29939;
                    bblock.129 = cfg->cbb;
                    bblock.129->last_ins = ins;
                    goto <D.31928>;
                    <D.31927>:
                    bblock.129 = cfg->cbb;
                    bblock.129 = cfg->cbb;
                    bblock.129->last_ins = ins;
                    D.29939 = bblock.129->last_ins;
                    bblock.129->code = D.29939;
                    <D.31928>:
                  }
                  <D.31908>:
                  <D.31910>:
                  <D.31906>:
                  goto call_end;
                }
              finally
                {
                  args = {CLOBBER};
                }
            }
            <D.31724>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.31929>; else goto <D.31930>;
            <D.31929>:
            D.29629 = method->klass;
            D.31352 = D.29629->name_space;
            D.29629 = method->klass;
            D.31353 = D.29629->name;
            D.31354 = method->name;
            D.31355 = method->signature;
            D.31356 = D.31355->param_count;
            D.31357 = (int) D.31356;
            D.30562 = *ip;
            D.30563 = (int) D.30562;
            D.31931 = mono_opcode_name (D.30563);
            D.31932 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.31352, D.31353, D.31354, D.31357, D.31931, "method-to-ir.c", 7857);
            cfg->exception_message = D.31932;
            D.29771 = cfg->verbose_level;
            if (D.29771 > 1) goto <D.31933>; else goto <D.31934>;
            <D.31933>:
            D.31362 = cfg->exception_message;
            printf ("%s\n", D.31362);
            <D.31934>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.31930>:
            <D.31715>:
            <D.31707>:
            <D.31705>:
            D.31710 = BIT_FIELD_REF <*constrained_call, 32, 160>;
            D.31711 = D.31710 & 8;
            if (D.31711 != 0) goto <D.31938>; else goto <D.31935>;
            <D.31938>:
            D.31542 = cmethod->klass;
            D.31708 = mono_defaults.object_class;
            if (D.31542 == D.31708) goto <D.31936>; else goto <D.31939>;
            <D.31939>:
            D.31542 = cmethod->klass;
            D.31940 = mono_defaults.enum_class;
            D.31941 = D.31940->parent;
            if (D.31542 == D.31941) goto <D.31936>; else goto <D.31942>;
            <D.31942>:
            D.31542 = cmethod->klass;
            D.31940 = mono_defaults.enum_class;
            if (D.31542 == D.31940) goto <D.31936>; else goto <D.31935>;
            <D.31936>:
            D.29691 = cfg->mempool;
            ins = mono_mempool_alloc (D.29691, 56);
            ins->data.op[1].const_val = 0;
            D.29906 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.29906;
            ins->prev = 0B;
            D.29907 = ins->prev;
            ins->next = D.29907;
            D.31943 = &constrained_call->byval_arg;
            D.31944 = mono_type_to_load_membase (cfg, D.31943);
            D.31945 = (short unsigned int) D.31944;
            ins->opcode = D.31945;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.29908 = ins->sreg3;
            ins->sreg2 = D.29908;
            D.29909 = ins->sreg2;
            ins->sreg1 = D.29909;
            D.29910 = cfg->ip;
            ins->cil_code = D.29910;
            ins->dreg = 0;
            D.30679 = *sp;
            D.30872 = D.30679->dreg;
            ins->sreg1 = D.30872;
            ins->data.op[0].const_val = 0;
            ins->type = 1;
            D.31943 = &constrained_call->byval_arg;
            type_to_eval_stack_type (cfg, D.31943, ins);
            D.30432 = ins->type;
            D.30433 = (<unnamed type>) D.30432;
            D.31946 = alloc_dreg (cfg, D.30433);
            D.31947 = (int) D.31946;
            ins->dreg = D.31947;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.31948>; else goto <D.31949>;
            <D.31948>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = ins;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            ins->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            goto <D.31950>;
            <D.31949>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.31950>:
            ins->klass = constrained_call;
            D.31951 = mono_class_check_context_used (constrained_call);
            D.31952 = handle_box (cfg, ins, constrained_call, D.31951, &bblock);
            *sp = D.31952;
            D.30240 = cfg->exception_type;
            if (D.30240 != 0) goto exception_exit; else goto <D.31953>;
            <D.31953>:
            goto <D.31937>;
            <D.31935>:
            D.31710 = BIT_FIELD_REF <*constrained_call, 32, 160>;
            D.31711 = D.31710 & 8;
            if (D.31711 == 0) goto <D.31954>; else goto <D.31955>;
            <D.31954>:
            {
              int dreg;

              D.31956 = alloc_ireg_ref (cfg);
              dreg = (int) D.31956;
              D.29691 = cfg->mempool;
              ins = mono_mempool_alloc (D.29691, 56);
              ins->data.op[1].const_val = 0;
              D.29906 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.29906;
              ins->prev = 0B;
              D.29907 = ins->prev;
              ins->next = D.29907;
              ins->opcode = 388;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.29908 = ins->sreg3;
              ins->sreg2 = D.29908;
              D.29909 = ins->sreg2;
              ins->sreg1 = D.29909;
              D.29910 = cfg->ip;
              ins->cil_code = D.29910;
              ins->dreg = dreg;
              D.30679 = *sp;
              D.30872 = D.30679->dreg;
              ins->sreg1 = D.30872;
              ins->data.op[0].const_val = 0;
              ins->type = 1;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.31957>; else goto <D.31958>;
              <D.31957>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = ins;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              ins->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              goto <D.31959>;
              <D.31958>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.31959>:
              ins->type = 6;
              *sp = ins;
            }
            goto <D.31960>;
            <D.31955>:
            D.31542 = cmethod->klass;
            D.31543 = BIT_FIELD_REF <*D.31542, 32, 160>;
            D.31544 = D.31543 & 8;
            if (D.31544 != 0) goto <D.31961>; else goto <D.31962>;
            <D.31961>:
            goto <D.31963>;
            <D.31962>:
            {
              int ioffset;
              int slot;

              mono_class_setup_vtable (constrained_call);
              if (constrained_call == 0B) goto <D.31964>; else goto <D.31966>;
              <D.31966>:
              D.31967 = constrained_call->exception_type;
              if (D.31967 != 0) goto <D.31964>; else goto <D.31965>;
              <D.31964>:
              cfg->exception_ptr = constrained_call;
              D.31968 = mini_get_debug_options ();
              D.31969 = D.31968->break_on_unverified;
              if (D.31969 != 0) goto <D.31970>; else goto load_error;
              <D.31970>:
              raise (5);
              <D.31965>:
              D.31542 = cmethod->klass;
              ioffset = mono_class_interface_offset (constrained_call, D.31542);
              if (ioffset == -1) goto <D.31971>; else goto <D.31972>;
              <D.31971>:
              D.31973 = mini_get_debug_options ();
              D.31974 = D.31973->break_on_unverified;
              if (D.31974 != 0) goto <D.31975>; else goto <D.31976>;
              <D.31975>:
              raise (5);
              goto <D.31977>;
              <D.31976>:
              cfg->exception_ptr = constrained_call;
              goto load_error;
              <D.31977>:
              <D.31972>:
              slot = mono_method_get_vtable_slot (cmethod);
              if (slot == -1) goto <D.31978>; else goto <D.31979>;
              <D.31978>:
              D.31980 = mini_get_debug_options ();
              D.31981 = D.31980->break_on_unverified;
              if (D.31981 != 0) goto <D.31982>; else goto <D.31983>;
              <D.31982>:
              raise (5);
              goto <D.31984>;
              <D.31983>:
              D.31542 = cmethod->klass;
              cfg->exception_ptr = D.31542;
              goto load_error;
              <D.31984>:
              <D.31979>:
              D.31985 = constrained_call->vtable;
              D.31986 = ioffset + slot;
              D.31987 = (unsigned int) D.31986;
              D.31988 = D.31987 * 4;
              D.31989 = D.31985 + D.31988;
              cmethod = *D.31989;
              D.31542 = cmethod->klass;
              D.31940 = mono_defaults.enum_class;
              if (D.31542 == D.31940) goto <D.31990>; else goto <D.31991>;
              <D.31990>:
              D.29691 = cfg->mempool;
              ins = mono_mempool_alloc (D.29691, 56);
              ins->data.op[1].const_val = 0;
              D.29906 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.29906;
              ins->prev = 0B;
              D.29907 = ins->prev;
              ins->next = D.29907;
              D.31943 = &constrained_call->byval_arg;
              D.31992 = mono_type_to_load_membase (cfg, D.31943);
              D.31993 = (short unsigned int) D.31992;
              ins->opcode = D.31993;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.29908 = ins->sreg3;
              ins->sreg2 = D.29908;
              D.29909 = ins->sreg2;
              ins->sreg1 = D.29909;
              D.29910 = cfg->ip;
              ins->cil_code = D.29910;
              ins->dreg = 0;
              D.30679 = *sp;
              D.30872 = D.30679->dreg;
              ins->sreg1 = D.30872;
              ins->data.op[0].const_val = 0;
              ins->type = 1;
              D.31943 = &constrained_call->byval_arg;
              type_to_eval_stack_type (cfg, D.31943, ins);
              D.30432 = ins->type;
              D.30433 = (<unnamed type>) D.30432;
              D.31994 = alloc_dreg (cfg, D.30433);
              D.31995 = (int) D.31994;
              ins->dreg = D.31995;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.31996>; else goto <D.31997>;
              <D.31996>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = ins;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              ins->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              goto <D.31998>;
              <D.31997>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.31998>:
              ins->klass = constrained_call;
              D.31999 = mono_class_check_context_used (constrained_call);
              D.32000 = handle_box (cfg, ins, constrained_call, D.31999, &bblock);
              *sp = D.32000;
              D.30240 = cfg->exception_type;
              if (D.30240 != 0) goto exception_exit; else goto <D.32001>;
              <D.32001>:
              <D.31991>:
            }
            <D.31963>:
            virtual = 0;
            <D.31960>:
            <D.31937>:
            constrained_call = 0B;
            <D.31702>:
            if (calli == 0) goto <D.32002>; else goto <D.32003>;
            <D.32002>:
            D.32004 = check_call_signature (cfg, fsig, sp);
            if (D.32004 != 0) goto <D.32005>; else goto <D.32006>;
            <D.32005>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.32007>; else goto <D.32008>;
            <D.32007>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.32009>; else goto <D.32010>;
            <D.32009>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.32010>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.32008>:
            D.32011 = mini_get_debug_options ();
            D.32012 = D.32011->break_on_unverified;
            if (D.32012 != 0) goto <D.32013>; else goto unverified;
            <D.32013>:
            raise (5);
            <D.32006>:
            <D.32003>:
            if (cmethod != 0B) goto <D.32014>; else goto <D.32015>;
            <D.32014>:
            D.31542 = cmethod->klass;
            D.32016 = D.31542->parent;
            D.32017 = mono_defaults.multicastdelegate_class;
            if (D.32016 == D.32017) goto <D.32018>; else goto <D.32019>;
            <D.32018>:
            {
              size_t __s1_len;
              size_t __s2_len;

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

                __s2 = cmethod->name;
                D.32023 = "Invoke";
                D.32024 = MEM[(const unsigned char *)D.32023];
                D.32025 = (int) D.32024;
                D.32026 = *__s2;
                D.32027 = (int) D.32026;
                __result = D.32025 - D.32027;
                {
                  if (__s2_len != 0) goto <D.32028>; else goto <D.32029>;
                  <D.32028>:
                  if (__result == 0) goto <D.32030>; else goto <D.32031>;
                  <D.32030>:
                  D.32032 = &MEM[(void *)"Invoke" + 1B];
                  D.32033 = *D.32032;
                  D.32034 = (int) D.32033;
                  D.32035 = __s2 + 1;
                  D.32036 = *D.32035;
                  D.32037 = (int) D.32036;
                  __result = D.32034 - D.32037;
                  if (__s2_len > 1) goto <D.32038>; else goto <D.32039>;
                  <D.32038>:
                  if (__result == 0) goto <D.32040>; else goto <D.32041>;
                  <D.32040>:
                  D.32042 = &MEM[(void *)"Invoke" + 2B];
                  D.32043 = *D.32042;
                  D.32044 = (int) D.32043;
                  D.32045 = __s2 + 2;
                  D.32046 = *D.32045;
                  D.32047 = (int) D.32046;
                  __result = D.32044 - D.32047;
                  if (__s2_len > 2) goto <D.32048>; else goto <D.32049>;
                  <D.32048>:
                  if (__result == 0) goto <D.32050>; else goto <D.32051>;
                  <D.32050>:
                  D.32052 = &MEM[(void *)"Invoke" + 3B];
                  D.32053 = *D.32052;
                  D.32054 = (int) D.32053;
                  D.32055 = __s2 + 3;
                  D.32056 = *D.32055;
                  D.32057 = (int) D.32056;
                  __result = D.32054 - D.32057;
                  <D.32051>:
                  <D.32049>:
                  <D.32041>:
                  <D.32039>:
                  <D.32031>:
                  <D.32029>:
                }
                D.26924 = __result;
              }
              iftmp.128 = -D.26924;
              goto <D.32058>;
              <D.32022>:
              D.32059 = cmethod->name;
              iftmp.128 = __builtin_strcmp (D.32059, "Invoke");
              <D.32058>:
              D.26925 = iftmp.128;
            }
            if (D.26925 == 0) goto <D.32060>; else goto <D.32061>;
            <D.32060>:
            delegate_invoke = 1;
            <D.32061>:
            <D.32019>:
            <D.32015>:
            if (cmethod != 0B) goto <D.32062>; else goto <D.32063>;
            <D.32062>:
            D.30079 = cfg->opt;
            D.32064 = D.30079 & 2048;
            if (D.32064 != 0) goto <D.32065>; else goto <D.32066>;
            <D.32065>:
            ins = mini_emit_inst_for_sharable_method (cfg, cmethod, fsig, sp);
            if (ins != 0B) goto <D.32067>; else goto <D.32068>;
            <D.32067>:
            bblock.129 = cfg->cbb;
            bblock = bblock.129;
            D.31629 = fsig->ret;
            D.32069 = mono_type_is_void (D.31629);
            if (D.32069 == 0) goto <D.32070>; else goto <D.32071>;
            <D.32070>:
            D.31629 = fsig->ret;
            type_to_eval_stack_type (cfg, D.31629, ins);
            emit_widen = 0;
            <D.32071>:
            goto call_end;
            <D.32068>:
            <D.32066>:
            <D.32063>:
            D.29727 = cfg->generic_sharing_context;
            if (D.29727 != 0B) goto <D.32072>; else goto <D.32073>;
            <D.32072>:
            if (cmethod != 0B) goto <D.32074>; else goto <D.32075>;
            <D.32074>:
            D.31542 = cmethod->klass;
            D.29629 = method->klass;
            if (D.31542 != D.29629) goto <D.32076>; else goto <D.32077>;
            <D.32076>:
            D.31542 = cmethod->klass;
            D.32078 = D.31542->generic_class;
            if (D.32078 != 0B) goto <D.32079>; else goto <D.32080>;
            <D.32079>:
            D.32081 = mono_method_is_generic_sharable (cmethod, 1);
            if (D.32081 != 0) goto <D.32082>; else goto <D.32083>;
            <D.32082>:
            D.31542 = cmethod->klass;
            D.32084 = mono_class_needs_cctor_run (D.31542, method);
            if (D.32084 != 0) goto <D.32085>; else goto <D.32086>;
            <D.32085>:
            D.31542 = cmethod->klass;
            emit_generic_class_init (cfg, D.31542);
            D.31542 = cmethod->klass;
            if (D.31542 == 0B) goto <D.32087>; else goto <D.32089>;
            <D.32089>:
            D.31542 = cmethod->klass;
            D.32090 = D.31542->exception_type;
            if (D.32090 != 0) goto <D.32087>; else goto <D.32088>;
            <D.32087>:
            D.31542 = cmethod->klass;
            cfg->exception_ptr = D.31542;
            D.32091 = mini_get_debug_options ();
            D.32092 = D.32091->break_on_unverified;
            if (D.32092 != 0) goto <D.32093>; else goto load_error;
            <D.32093>:
            raise (5);
            <D.32088>:
            <D.32086>:
            <D.32083>:
            <D.32080>:
            <D.32077>:
            <D.32075>:
            <D.32073>:
            if (cmethod != 0B) goto <D.32094>; else goto <D.32095>;
            <D.32094>:
            check_method_sharing (cfg, cmethod, &pass_vtable, &pass_mrgctx);
            <D.32095>:
            D.29727 = cfg->generic_sharing_context;
            if (D.29727 != 0B) goto <D.32096>; else goto <D.32097>;
            <D.32096>:
            if (cmethod != 0B) goto <D.32098>; else goto <D.32099>;
            <D.32098>:
            {
              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.32100>; else goto <D.32101>;
              <D.32100>:
              D.31542 = cmethod->klass;
              D.31719 = D.31542->flags;
              D.31720 = D.31719 & 32;
              if (D.31720 != 0) goto <D.32102>; else goto <D.32103>;
              <D.32102>:
              if (cmethod_context == 0B) goto <D.32104>; else goto <D.32106>;
              <D.32106>:
              D.32107 = cmethod_context->method_inst;
              if (D.32107 == 0B) goto <D.32104>; else goto <D.32105>;
              <D.32104>:
              pass_imt_from_rgctx = 1;
              <D.32105>:
              <D.32103>:
              <D.32101>:
              if (context_used != 0) goto <D.32110>; else goto <D.32111>;
              <D.32110>:
              D.29988 = method->flags;
              D.29989 = (int) D.29988;
              D.29990 = D.29989 & 16;
              if (D.29990 != 0) goto <D.32108>; else goto <D.32112>;
              <D.32112>:
              D.29629 = method->klass;
              D.29780 = BIT_FIELD_REF <*D.29629, 32, 160>;
              D.29781 = D.29780 & 8;
              if (D.29781 != 0) goto <D.32108>; else goto <D.32109>;
              <D.32108>:
              mono_get_vtable_var (cfg);
              <D.32109>:
              <D.32111>:
            }
            <D.32099>:
            <D.32097>:
            pass_vtable.130 = pass_vtable;
            if (pass_vtable.130 != 0) goto <D.32114>; else goto <D.32115>;
            <D.32114>:
            if (context_used != 0) goto <D.32116>; else goto <D.32117>;
            <D.32116>:
            D.31542 = cmethod->klass;
            vtable_arg = emit_get_rgctx_klass (cfg, context_used, D.31542, 2);
            goto <D.32118>;
            <D.32117>:
            {
              struct MonoVTable * vtable;

              D.29716 = cfg->domain;
              D.31542 = cmethod->klass;
              vtable = mono_class_vtable (D.29716, D.31542);
              D.31542 = cmethod->klass;
              if (D.31542 == 0B) goto <D.32119>; else goto <D.32121>;
              <D.32121>:
              D.31542 = cmethod->klass;
              D.32090 = D.31542->exception_type;
              if (D.32090 != 0) goto <D.32119>; else goto <D.32120>;
              <D.32119>:
              D.31542 = cmethod->klass;
              cfg->exception_ptr = D.31542;
              D.32122 = mini_get_debug_options ();
              D.32123 = D.32122->break_on_unverified;
              if (D.32123 != 0) goto <D.32124>; else goto load_error;
              <D.32124>:
              raise (5);
              <D.32120>:
              D.29691 = cfg->mempool;
              vtable_arg = mono_mempool_alloc (D.29691, 56);
              vtable_arg->data.op[1].const_val = 0;
              D.32125 = vtable_arg->data.op[1].const_val;
              vtable_arg->data.op[0].const_val = D.32125;
              vtable_arg->prev = 0B;
              D.32126 = vtable_arg->prev;
              vtable_arg->next = D.32126;
              D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.30082 = D.30081 & 64;
              if (D.30082 != 0) goto <D.32128>; else goto <D.32129>;
              <D.32128>:
              iftmp.131 = 732;
              goto <D.32130>;
              <D.32129>:
              iftmp.131 = 362;
              <D.32130>:
              vtable_arg->opcode = iftmp.131;
              vtable_arg->flags = 0;
              vtable_arg->type = 0;
              vtable_arg->dreg = -1;
              vtable_arg->sreg3 = -1;
              D.32131 = vtable_arg->sreg3;
              vtable_arg->sreg2 = D.32131;
              D.32132 = vtable_arg->sreg2;
              vtable_arg->sreg1 = D.32132;
              D.29910 = cfg->ip;
              vtable_arg->cil_code = D.29910;
              D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.30082 = D.30081 & 64;
              if (D.30082 != 0) goto <D.32134>; else goto <D.32135>;
              <D.32134>:
              iftmp.132 = vtable->klass;
              goto <D.32136>;
              <D.32135>:
              iftmp.132 = vtable;
              <D.32136>:
              vtable_arg->data.op[0].p = iftmp.132;
              vtable_arg->data.op[1].src = 14B;
              vtable_arg->type = 3;
              D.32137 = alloc_dreg (cfg, 3);
              D.32138 = (int) D.32137;
              vtable_arg->dreg = D.32138;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.32139>; else goto <D.32140>;
              <D.32139>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = vtable_arg;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              vtable_arg->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = vtable_arg;
              goto <D.32141>;
              <D.32140>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = vtable_arg;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.32141>:
            }
            <D.32118>:
            <D.32115>:
            pass_mrgctx.133 = pass_mrgctx;
            if (pass_mrgctx.133 != 0) goto <D.32143>; else goto <D.32144>;
            <D.32143>:
            D.32145 = vtable_arg != 0B;
            D.32146 = (long int) D.32145;
            D.32147 = __builtin_expect (D.32146, 0);
            if (D.32147 != 0) goto <D.32148>; else goto <D.32149>;
            <D.32148>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7986, "!vtable_arg");
            <D.32149>:
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 == 0) goto <D.32150>; else goto <D.32151>;
            <D.32150>:
            D.31542 = cmethod->klass;
            mono_class_setup_vtable (D.31542);
            D.31542 = cmethod->klass;
            if (D.31542 == 0B) goto <D.32152>; else goto <D.32154>;
            <D.32154>:
            D.31542 = cmethod->klass;
            D.32090 = D.31542->exception_type;
            if (D.32090 != 0) goto <D.32152>; else goto <D.32153>;
            <D.32152>:
            D.31542 = cmethod->klass;
            cfg->exception_ptr = D.31542;
            D.32155 = mini_get_debug_options ();
            D.32156 = D.32155->break_on_unverified;
            if (D.32156 != 0) goto <D.32157>; else goto load_error;
            <D.32157>:
            raise (5);
            <D.32153>:
            <D.32151>:
            vtable_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 8);
            D.31578 = cmethod->flags;
            D.31579 = (int) D.31578;
            D.32160 = D.31579 & 64;
            if (D.32160 == 0) goto <D.32158>; else goto <D.32161>;
            <D.32161>:
            D.31578 = cmethod->flags;
            D.31579 = (int) D.31578;
            D.32162 = D.31579 & 32;
            if (D.32162 != 0) goto <D.32158>; else goto <D.32163>;
            <D.32163>:
            D.31542 = cmethod->klass;
            if (D.31542 != 0B) goto <D.32164>; else goto <D.32159>;
            <D.32164>:
            D.31542 = cmethod->klass;
            D.31719 = D.31542->flags;
            D.32165 = D.31719 & 256;
            if (D.32165 != 0) goto <D.32158>; else goto <D.32159>;
            <D.32158>:
            D.31542 = cmethod->klass;
            D.31543 = BIT_FIELD_REF <*D.31542, 32, 160>;
            D.31585 = D.31543 & 4194304;
            if (D.31585 == 0) goto <D.32166>; else goto <D.32167>;
            <D.32166>:
            if (virtual != 0) goto <D.32168>; else goto <D.32169>;
            <D.32168>:
            check_this = 1;
            <D.32169>:
            virtual = 0;
            <D.32167>:
            <D.32159>:
            <D.32144>:
            if (pass_imt_from_rgctx != 0) goto <D.32170>; else goto <D.32171>;
            <D.32170>:
            pass_vtable.130 = pass_vtable;
            D.32172 = pass_vtable.130 != 0;
            D.32173 = (long int) D.32172;
            D.32174 = __builtin_expect (D.32173, 0);
            if (D.32174 != 0) goto <D.32175>; else goto <D.32176>;
            <D.32175>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8010, "!pass_vtable");
            <D.32176>:
            D.32177 = cmethod == 0B;
            D.32178 = (long int) D.32177;
            D.32179 = __builtin_expect (D.32178, 0);
            if (D.32179 != 0) goto <D.32180>; else goto <D.32181>;
            <D.32180>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8011, "cmethod");
            <D.32181>:
            imt_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
            <D.32171>:
            if (check_this != 0) goto <D.32182>; else goto <D.32183>;
            <D.32182>:
            D.30117 = cfg->flags;
            D.30316 = D.30117 | 128;
            cfg->flags = D.30316;
            D.29679 = BIT_FIELD_REF <*cfg, 32, 3424>;
            D.30317 = D.29679 & 64;
            if (D.30317 != 0) goto <D.32184>; else goto <D.32185>;
            <D.32184>:
            D.29679 = BIT_FIELD_REF <*cfg, 32, 3424>;
            D.30317 = D.29679 & 64;
            if (D.30317 != 0) goto <D.32186>; else goto <D.32187>;
            <D.32186>:
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.32188 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.32188;
              inst->prev = 0B;
              D.32189 = inst->prev;
              inst->next = D.32189;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.32190 = inst->sreg3;
              inst->sreg2 = D.32190;
              D.32191 = inst->sreg2;
              inst->sreg1 = D.32191;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = -1;
              D.30679 = *sp;
              D.30872 = D.30679->dreg;
              inst->sreg1 = D.30872;
              inst->data.op[1].const_val = 0;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.32192>; else goto <D.32193>;
              <D.32192>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.32194>;
              <D.32193>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.32194>:
            }
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.32195 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.32195;
              inst->prev = 0B;
              D.32196 = inst->prev;
              inst->next = D.32196;
              inst->opcode = 451;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.32197 = inst->sreg3;
              inst->sreg2 = D.32197;
              D.32198 = inst->sreg2;
              inst->sreg1 = D.32198;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->data.op[1].p = "NullReferenceException";
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.32199>; else goto <D.32200>;
              <D.32199>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.32201>;
              <D.32200>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.32201>:
            }
            goto <D.32202>;
            <D.32187>:
            <D.32202>:
            goto <D.32203>;
            <D.32185>:
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.32204 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.32204;
              inst->prev = 0B;
              D.32205 = inst->prev;
              inst->next = D.32205;
              inst->opcode = 340;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.32206 = inst->sreg3;
              inst->sreg2 = D.32206;
              D.32207 = inst->sreg2;
              inst->sreg1 = D.32207;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = -1;
              D.30679 = *sp;
              D.30872 = D.30679->dreg;
              inst->sreg1 = D.30872;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.32208>; else goto <D.32209>;
              <D.32208>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.32210>;
              <D.32209>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.32210>:
            }
            <D.32203>:
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.32211 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.32211;
              inst->prev = 0B;
              D.32212 = inst->prev;
              inst->next = D.32212;
              inst->opcode = 799;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.32213 = inst->sreg3;
              inst->sreg2 = D.32213;
              D.32214 = inst->sreg2;
              inst->sreg1 = D.32214;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = -1;
              D.30679 = *sp;
              D.30872 = D.30679->dreg;
              inst->sreg1 = D.30872;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.32215>; else goto <D.32216>;
              <D.32215>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.32217>;
              <D.32216>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.32217>:
            }
            <D.32183>:
            if (cmethod != 0B) goto <D.32223>; else goto <D.32224>;
            <D.32223>:
            if (virtual != 0) goto <D.32225>; else goto <D.32226>;
            <D.32225>:
            D.31578 = cmethod->flags;
            D.31579 = (int) D.31578;
            D.32160 = D.31579 & 64;
            if (D.32160 != 0) goto <D.32227>; else goto <D.32228>;
            <D.32227>:
            D.31578 = cmethod->flags;
            D.31579 = (int) D.31578;
            D.32162 = D.31579 & 32;
            if (D.32162 == 0) goto <D.32229>; else goto <D.32220>;
            <D.32229>:
            D.31542 = cmethod->klass;
            if (D.31542 == 0B) goto <D.32221>; else goto <D.32230>;
            <D.32230>:
            D.31542 = cmethod->klass;
            D.31719 = D.31542->flags;
            D.32165 = D.31719 & 256;
            if (D.32165 == 0) goto <D.32221>; else goto <D.32220>;
            <D.32220>:
            D.31661 = BIT_FIELD_REF <*cmethod, 32, 160>;
            D.32231 = D.31661 & 124;
            if (D.32231 == 36) goto <D.32221>; else goto <D.32222>;
            <D.32221>:
            D.32232 = fsig->generic_param_count;
            if (D.32232 != 0) goto <D.32233>; else goto <D.32234>;
            <D.32233>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 == 0) goto <D.32218>; else goto <D.32235>;
            <D.32235>:
            D.32236 = mini_is_gsharedvt_signature (cfg, fsig);
            if (D.32236 == 0) goto <D.32218>; else goto <D.32219>;
            <D.32218>:
            {
              struct MonoInst * this_temp;
              struct MonoInst * this_arg_temp;
              struct MonoInst * store;
              struct MonoInst * iargs[4];
              gboolean use_imt;

              try
                {
                  use_imt = 0;
                  D.31486 = BIT_FIELD_REF <*fsig, 32, 64>;
                  D.32237 = D.31486 & 33554432;
                  D.32238 = D.32237 == 0;
                  D.32239 = (long int) D.32238;
                  D.32240 = __builtin_expect (D.32239, 0);
                  if (D.32240 != 0) goto <D.32241>; else goto <D.32242>;
                  <D.32241>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8031, "fsig->is_inflated");
                  <D.32242>:
                  D.29662 = cfg->method;
                  if (D.29662 != method) goto <D.32243>; else goto <D.32244>;
                  <D.32243>:
                  D.29634 = BIT_FIELD_REF <*method, 32, 160>;
                  D.29635 = D.29634 & 124;
                  if (D.29635 == 0) goto <D.32245>; else goto <D.32246>;
                  <D.32245>:
                  D.29771 = cfg->verbose_level;
                  if (D.29771 > 1) goto <D.32247>; else goto <D.32248>;
                  <D.32247>:
                  printf ("inline failed: %s\n", "virtual generic call");
                  <D.32248>:
                  goto inline_failure;
                  <D.32246>:
                  <D.32244>:
                  D.29838 = cfg->gsharedvt;
                  if (D.29838 != 0) goto <D.32249>; else goto <D.32250>;
                  <D.32249>:
                  D.32251 = mini_is_gsharedvt_signature (cfg, fsig);
                  if (D.32251 != 0) goto <D.32252>; else goto <D.32253>;
                  <D.32252>:
                  D.29838 = cfg->gsharedvt;
                  if (D.29838 != 0) goto <D.32254>; else goto <D.32255>;
                  <D.32254>:
                  D.29629 = method->klass;
                  D.31352 = D.29629->name_space;
                  D.29629 = method->klass;
                  D.31353 = D.29629->name;
                  D.31354 = method->name;
                  D.31355 = method->signature;
                  D.31356 = D.31355->param_count;
                  D.31357 = (int) D.31356;
                  D.30562 = *ip;
                  D.30563 = (int) D.30562;
                  D.32256 = mono_opcode_name (D.30563);
                  D.32257 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.31352, D.31353, D.31354, D.31357, D.32256, "method-to-ir.c", 8037);
                  cfg->exception_message = D.32257;
                  D.29771 = cfg->verbose_level;
                  if (D.29771 > 1) goto <D.32258>; else goto <D.32259>;
                  <D.32258>:
                  D.31362 = cfg->exception_message;
                  printf ("%s\n", D.31362);
                  <D.32259>:
                  mono_cfg_set_exception (cfg, 11);
                  goto exception_exit;
                  <D.32255>:
                  <D.32253>:
                  <D.32250>:
                  D.31661 = BIT_FIELD_REF <*cmethod, 32, 160>;
                  D.32231 = D.31661 & 124;
                  if (D.32231 == 0) goto <D.32260>; else goto <D.32261>;
                  <D.32260>:
                  mono_use_imt.134 = mono_use_imt;
                  if (mono_use_imt.134 != 0) goto <D.32263>; else goto <D.32264>;
                  <D.32263>:
                  use_imt = 1;
                  <D.32264>:
                  <D.32261>:
                  if (use_imt != 0) goto <D.32265>; else goto <D.32266>;
                  <D.32265>:
                  D.32267 = imt_arg != 0B;
                  D.32268 = (long int) D.32267;
                  D.32269 = __builtin_expect (D.32268, 0);
                  if (D.32269 != 0) goto <D.32270>; else goto <D.32271>;
                  <D.32270>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8045, "!imt_arg");
                  <D.32271>:
                  if (context_used == 0) goto <D.32272>; else goto <D.32273>;
                  <D.32272>:
                  D.31661 = BIT_FIELD_REF <*cmethod, 32, 160>;
                  D.32274 = D.31661 & 4096;
                  D.32275 = D.32274 == 0;
                  D.32276 = (long int) D.32275;
                  D.32277 = __builtin_expect (D.32276, 0);
                  if (D.32277 != 0) goto <D.32278>; else goto <D.32279>;
                  <D.32278>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8047, "cmethod->is_inflated");
                  <D.32279>:
                  <D.32273>:
                  imt_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
                  D.30679 = *sp;
                  ins = mono_emit_method_call_full (cfg, cmethod, fsig, 0, sp, D.30679, imt_arg, 0B);
                  goto <D.32280>;
                  <D.32266>:
                  D.30679 = *sp;
                  D.32281 = type_from_stack_type (D.30679);
                  this_temp = mono_compile_create_var (cfg, D.32281, 329);
                  D.29691 = cfg->mempool;
                  store = mono_mempool_alloc (D.29691, 56);
                  store->data.op[1].const_val = 0;
                  D.32282 = store->data.op[1].const_val;
                  store->data.op[0].const_val = D.32282;
                  store->prev = 0B;
                  D.32283 = store->prev;
                  store->next = D.32283;
                  store->opcode = 424;
                  store->flags = 0;
                  store->type = 0;
                  store->dreg = -1;
                  store->sreg3 = -1;
                  D.32284 = store->sreg3;
                  store->sreg2 = D.32284;
                  D.32285 = store->sreg2;
                  store->sreg1 = D.32285;
                  D.29910 = cfg->ip;
                  store->cil_code = D.29910;
                  D.30422 = cfg->varinfo;
                  D.32286 = this_temp->data.op[0].const_val;
                  D.32287 = (unsigned int) D.32286;
                  D.32288 = D.32287 * 4;
                  D.32289 = D.30422 + D.32288;
                  D.32290 = *D.32289;
                  D.32291 = D.32290->data.op[1].vtype;
                  D.32292 = mono_type_to_regmove (cfg, D.32291);
                  D.32293 = (short unsigned int) D.32292;
                  store->opcode = D.32293;
                  D.30422 = cfg->varinfo;
                  D.32286 = this_temp->data.op[0].const_val;
                  D.32287 = (unsigned int) D.32286;
                  D.32288 = D.32287 * 4;
                  D.32289 = D.30422 + D.32288;
                  D.32290 = *D.32289;
                  D.32294 = D.32290->klass;
                  store->klass = D.32294;
                  D.30679 = *sp;
                  D.30872 = D.30679->dreg;
                  store->sreg1 = D.30872;
                  D.30422 = cfg->varinfo;
                  D.32286 = this_temp->data.op[0].const_val;
                  D.32287 = (unsigned int) D.32286;
                  D.32288 = D.32287 * 4;
                  D.32289 = D.30422 + D.32288;
                  D.32290 = *D.32289;
                  D.32295 = D.32290->dreg;
                  store->dreg = D.32295;
                  D.32296 = store->opcode;
                  if (D.32296 == 427) goto <D.32297>; else goto <D.32298>;
                  <D.32297>:
                  D.30422 = cfg->varinfo;
                  D.32286 = this_temp->data.op[0].const_val;
                  D.32287 = (unsigned int) D.32286;
                  D.32288 = D.32287 * 4;
                  D.32289 = D.30422 + D.32288;
                  D.32290 = *D.32289;
                  D.32291 = D.32290->data.op[1].vtype;
                  D.32299 = mono_class_from_mono_type (D.32291);
                  store->klass = D.32299;
                  <D.32298>:
                  bblock.77 = bblock;
                  D.30024 = bblock.77->last_ins;
                  if (D.30024 != 0B) goto <D.32300>; else goto <D.32301>;
                  <D.32300>:
                  bblock.77 = bblock;
                  D.30024 = bblock.77->last_ins;
                  D.30024->next = store;
                  bblock.77 = bblock;
                  D.30024 = bblock.77->last_ins;
                  store->prev = D.30024;
                  bblock.77 = bblock;
                  bblock.77->last_ins = store;
                  goto <D.32302>;
                  <D.32301>:
                  bblock.77 = bblock;
                  bblock.77 = bblock;
                  bblock.77->last_ins = store;
                  D.30024 = bblock.77->last_ins;
                  bblock.77->code = D.30024;
                  <D.32302>:
                  D.30093 = mono_defaults.int_class;
                  D.30094 = &D.30093->byval_arg;
                  this_arg_temp = mono_compile_create_var (cfg, D.30094, 329);
                  D.29691 = cfg->mempool;
                  D.32303 = mono_mempool_alloc (D.29691, 56);
                  iargs[0] = D.32303;
                  D.32304 = iargs[0];
                  D.32304 = iargs[0];
                  D.32304->data.op[1].const_val = 0;
                  D.32305 = D.32304->data.op[1].const_val;
                  D.32304->data.op[0].const_val = D.32305;
                  D.32304 = iargs[0];
                  D.32304 = iargs[0];
                  D.32304->prev = 0B;
                  D.32306 = D.32304->prev;
                  D.32304->next = D.32306;
                  D.32304 = iargs[0];
                  D.32304->opcode = 424;
                  D.32304 = iargs[0];
                  D.32304->flags = 0;
                  D.32304 = iargs[0];
                  D.32304->type = 0;
                  D.32304 = iargs[0];
                  D.32304->dreg = -1;
                  D.32304 = iargs[0];
                  D.32304 = iargs[0];
                  D.32304 = iargs[0];
                  D.32304->sreg3 = -1;
                  D.32307 = D.32304->sreg3;
                  D.32304->sreg2 = D.32307;
                  D.32308 = D.32304->sreg2;
                  D.32304->sreg1 = D.32308;
                  D.32304 = iargs[0];
                  D.29910 = cfg->ip;
                  D.32304->cil_code = D.29910;
                  D.32304 = iargs[0];
                  D.30422 = cfg->varinfo;
                  D.32286 = this_temp->data.op[0].const_val;
                  D.32287 = (unsigned int) D.32286;
                  D.32288 = D.32287 * 4;
                  D.32289 = D.30422 + D.32288;
                  D.32290 = *D.32289;
                  D.32291 = D.32290->data.op[1].vtype;
                  D.32309 = mono_type_to_regmove (cfg, D.32291);
                  D.32310 = (short unsigned int) D.32309;
                  D.32304->opcode = D.32310;
                  D.30422 = cfg->varinfo;
                  D.32286 = this_temp->data.op[0].const_val;
                  D.32287 = (unsigned int) D.32286;
                  D.32288 = D.32287 * 4;
                  D.32289 = D.30422 + D.32288;
                  D.32290 = *D.32289;
                  D.32291 = D.32290->data.op[1].vtype;
                  D.32304 = iargs[0];
                  type_to_eval_stack_type (cfg, D.32291, D.32304);
                  D.32304 = iargs[0];
                  D.30422 = cfg->varinfo;
                  D.32286 = this_temp->data.op[0].const_val;
                  D.32287 = (unsigned int) D.32286;
                  D.32288 = D.32287 * 4;
                  D.32289 = D.30422 + D.32288;
                  D.32290 = *D.32289;
                  D.32294 = D.32290->klass;
                  D.32304->klass = D.32294;
                  D.32304 = iargs[0];
                  D.30422 = cfg->varinfo;
                  D.32286 = this_temp->data.op[0].const_val;
                  D.32287 = (unsigned int) D.32286;
                  D.32288 = D.32287 * 4;
                  D.32289 = D.30422 + D.32288;
                  D.32290 = *D.32289;
                  D.32295 = D.32290->dreg;
                  D.32304->sreg1 = D.32295;
                  D.32304 = iargs[0];
                  D.32304 = iargs[0];
                  D.32311 = D.32304->type;
                  D.32312 = (<unnamed type>) D.32311;
                  D.32313 = alloc_dreg (cfg, D.32312);
                  D.32314 = (int) D.32313;
                  D.32304->dreg = D.32314;
                  D.32304 = iargs[0];
                  D.32315 = D.32304->opcode;
                  if (D.32315 == 427) goto <D.32316>; else goto <D.32317>;
                  <D.32316>:
                  D.32304 = iargs[0];
                  D.30422 = cfg->varinfo;
                  D.32286 = this_temp->data.op[0].const_val;
                  D.32287 = (unsigned int) D.32286;
                  D.32288 = D.32287 * 4;
                  D.32289 = D.30422 + D.32288;
                  D.32290 = *D.32289;
                  D.32291 = D.32290->data.op[1].vtype;
                  D.32318 = mono_class_from_mono_type (D.32291);
                  D.32304->klass = D.32318;
                  <D.32317>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.32319>; else goto <D.32320>;
                  <D.32319>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.32304 = iargs[0];
                  D.29939->next = D.32304;
                  D.32304 = iargs[0];
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.32304->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  D.32304 = iargs[0];
                  bblock.129->last_ins = D.32304;
                  goto <D.32321>;
                  <D.32320>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  D.32304 = iargs[0];
                  bblock.129->last_ins = D.32304;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.32321>:
                  D.32322 = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
                  iargs[1] = D.32322;
                  D.29691 = cfg->mempool;
                  D.32323 = mono_mempool_alloc (D.29691, 56);
                  iargs[2] = D.32323;
                  D.32324 = iargs[2];
                  D.32324 = iargs[2];
                  D.32324->data.op[1].const_val = 0;
                  D.32325 = D.32324->data.op[1].const_val;
                  D.32324->data.op[0].const_val = D.32325;
                  D.32324 = iargs[2];
                  D.32324 = iargs[2];
                  D.32324->prev = 0B;
                  D.32326 = D.32324->prev;
                  D.32324->next = D.32326;
                  D.32324 = iargs[2];
                  D.32324->opcode = 314;
                  D.32324 = iargs[2];
                  D.32324->flags = 0;
                  D.32324 = iargs[2];
                  D.32324->type = 0;
                  D.32324 = iargs[2];
                  D.32324->dreg = -1;
                  D.32324 = iargs[2];
                  D.32324 = iargs[2];
                  D.32324 = iargs[2];
                  D.32324->sreg3 = -1;
                  D.32327 = D.32324->sreg3;
                  D.32324->sreg2 = D.32327;
                  D.32328 = D.32324->sreg2;
                  D.32324->sreg1 = D.32328;
                  D.32324 = iargs[2];
                  D.29910 = cfg->ip;
                  D.32324->cil_code = D.29910;
                  D.32324 = iargs[2];
                  D.30422 = cfg->varinfo;
                  D.32329 = this_arg_temp->data.op[0].const_val;
                  D.32330 = (unsigned int) D.32329;
                  D.32331 = D.32330 * 4;
                  D.32332 = D.30422 + D.32331;
                  D.32333 = *D.32332;
                  D.32324->data.op[0].p = D.32333;
                  D.30422 = cfg->varinfo;
                  D.32329 = this_arg_temp->data.op[0].const_val;
                  D.32330 = (unsigned int) D.32329;
                  D.32331 = D.32330 * 4;
                  D.32332 = D.30422 + D.32331;
                  D.32333 = *D.32332;
                  D.30422 = cfg->varinfo;
                  D.32329 = this_arg_temp->data.op[0].const_val;
                  D.32330 = (unsigned int) D.32329;
                  D.32331 = D.32330 * 4;
                  D.32332 = D.30422 + D.32331;
                  D.32333 = *D.32332;
                  D.32334 = D.32333->flags;
                  D.32335 = D.32334 | 16;
                  D.32333->flags = D.32335;
                  D.32324 = iargs[2];
                  D.32324->type = 5;
                  D.32324 = iargs[2];
                  D.30422 = cfg->varinfo;
                  D.32329 = this_arg_temp->data.op[0].const_val;
                  D.32330 = (unsigned int) D.32329;
                  D.32331 = D.32330 * 4;
                  D.32332 = D.30422 + D.32331;
                  D.32333 = *D.32332;
                  D.32336 = D.32333->klass;
                  D.32324->klass = D.32336;
                  D.32324 = iargs[2];
                  D.32337 = alloc_dreg (cfg, 5);
                  D.32338 = (int) D.32337;
                  D.32324->dreg = D.32338;
                  cfg->has_indirection = 1;
                  D.29838 = cfg->gsharedvt;
                  D.30765 = D.29838 != 0;
                  D.30766 = (long int) D.30765;
                  D.30767 = __builtin_expect (D.30766, 0);
                  if (D.30767 != 0) goto <D.32339>; else goto <D.32340>;
                  <D.32339>:
                  D.30422 = cfg->varinfo;
                  D.32329 = this_arg_temp->data.op[0].const_val;
                  D.32330 = (unsigned int) D.32329;
                  D.32331 = D.32330 * 4;
                  D.32332 = D.30422 + D.32331;
                  D.32333 = *D.32332;
                  D.32341 = D.32333->data.op[1].vtype;
                  D.32342 = mini_is_gsharedvt_variable_type (cfg, D.32341);
                  if (D.32342 != 0) goto <D.32343>; else goto <D.32344>;
                  <D.32343>:
                  handle_gsharedvt_ldaddr (cfg);
                  <D.32344>:
                  <D.32340>:
                  D.32346 = mono_arch_is_soft_float ();
                  if (D.32346 != 0) goto <D.32347>; else goto <D.32348>;
                  <D.32347>:
                  D.30422 = cfg->varinfo;
                  D.32329 = this_arg_temp->data.op[0].const_val;
                  D.32330 = (unsigned int) D.32329;
                  D.32331 = D.32330 * 4;
                  D.32332 = D.30422 + D.32331;
                  D.32333 = *D.32332;
                  D.32353 = D.32333->type;
                  if (D.32353 == 2) goto <D.32350>; else goto <D.32354>;
                  <D.32354>:
                  D.30422 = cfg->varinfo;
                  D.32329 = this_arg_temp->data.op[0].const_val;
                  D.32330 = (unsigned int) D.32329;
                  D.32331 = D.32330 * 4;
                  D.32332 = D.30422 + D.32331;
                  D.32333 = *D.32332;
                  D.32353 = D.32333->type;
                  if (D.32353 == 4) goto <D.32350>; else goto <D.32351>;
                  <D.32350>:
                  iftmp.136 = 1;
                  goto <D.32352>;
                  <D.32351>:
                  iftmp.136 = 0;
                  <D.32352>:
                  iftmp.135 = (_Bool) iftmp.136;
                  goto <D.32355>;
                  <D.32348>:
                  D.30422 = cfg->varinfo;
                  D.32329 = this_arg_temp->data.op[0].const_val;
                  D.32330 = (unsigned int) D.32329;
                  D.32331 = D.32330 * 4;
                  D.32332 = D.30422 + D.32331;
                  D.32333 = *D.32332;
                  D.32353 = D.32333->type;
                  iftmp.135 = D.32353 == 2;
                  <D.32355>:
                  if (iftmp.135 != 0) goto <D.32356>; else goto <D.32357>;
                  <D.32356>:
                  {
                    struct MonoInst * var1;
                    struct MonoInst * var2;

                    D.30422 = cfg->varinfo;
                    D.32329 = this_arg_temp->data.op[0].const_val;
                    D.32330 = (unsigned int) D.32329;
                    D.32331 = D.32330 * 4;
                    D.32332 = D.30422 + D.32331;
                    D.32333 = *D.32332;
                    D.32359 = D.32333->dreg;
                    D.32360 = D.32359 + 1;
                    D.32361 = (unsigned int) D.32360;
                    D.30791 = cfg->vreg_to_inst_len;
                    if (D.32361 < D.30791) goto <D.32362>; else goto <D.32363>;
                    <D.32362>:
                    D.30794 = cfg->vreg_to_inst;
                    D.30422 = cfg->varinfo;
                    D.32329 = this_arg_temp->data.op[0].const_val;
                    D.32330 = (unsigned int) D.32329;
                    D.32331 = D.32330 * 4;
                    D.32332 = D.30422 + D.32331;
                    D.32333 = *D.32332;
                    D.32359 = D.32333->dreg;
                    D.32364 = (sizetype) D.32359;
                    D.32365 = D.32364 + 1;
                    D.32366 = D.32365 * 4;
                    D.32367 = D.30794 + D.32366;
                    iftmp.137 = *D.32367;
                    goto <D.32368>;
                    <D.32363>:
                    iftmp.137 = 0B;
                    <D.32368>:
                    var1 = iftmp.137;
                    D.30422 = cfg->varinfo;
                    D.32329 = this_arg_temp->data.op[0].const_val;
                    D.32330 = (unsigned int) D.32329;
                    D.32331 = D.32330 * 4;
                    D.32332 = D.30422 + D.32331;
                    D.32333 = *D.32332;
                    D.32359 = D.32333->dreg;
                    D.32370 = D.32359 + 2;
                    D.32371 = (unsigned int) D.32370;
                    D.30791 = cfg->vreg_to_inst_len;
                    if (D.32371 < D.30791) goto <D.32372>; else goto <D.32373>;
                    <D.32372>:
                    D.30794 = cfg->vreg_to_inst;
                    D.30422 = cfg->varinfo;
                    D.32329 = this_arg_temp->data.op[0].const_val;
                    D.32330 = (unsigned int) D.32329;
                    D.32331 = D.32330 * 4;
                    D.32332 = D.30422 + D.32331;
                    D.32333 = *D.32332;
                    D.32359 = D.32333->dreg;
                    D.32364 = (sizetype) D.32359;
                    D.32374 = D.32364 + 2;
                    D.32375 = D.32374 * 4;
                    D.32376 = D.30794 + D.32375;
                    iftmp.138 = *D.32376;
                    goto <D.32377>;
                    <D.32373>:
                    iftmp.138 = 0B;
                    <D.32377>:
                    var2 = iftmp.138;
                    D.32378 = var1 == 0B;
                    D.32379 = (long int) D.32378;
                    D.32380 = __builtin_expect (D.32379, 0);
                    if (D.32380 != 0) goto <D.32381>; else goto <D.32382>;
                    <D.32381>:
                    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8062, "var1");
                    <D.32382>:
                    D.32383 = var2 == 0B;
                    D.32384 = (long int) D.32383;
                    D.32385 = __builtin_expect (D.32384, 0);
                    if (D.32385 != 0) goto <D.32386>; else goto <D.32387>;
                    <D.32386>:
                    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8062, "var2");
                    <D.32387>:
                    D.32388 = var1->flags;
                    D.32389 = D.32388 | 16;
                    var1->flags = D.32389;
                    D.32390 = var2->flags;
                    D.32391 = D.32390 | 16;
                    var2->flags = D.32391;
                  }
                  <D.32357>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.32392>; else goto <D.32393>;
                  <D.32392>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.32324 = iargs[2];
                  D.29939->next = D.32324;
                  D.32324 = iargs[2];
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.32324->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  D.32324 = iargs[2];
                  bblock.129->last_ins = D.32324;
                  goto <D.32394>;
                  <D.32393>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  D.32324 = iargs[2];
                  bblock.129->last_ins = D.32324;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.32394>:
                  addr = mono_emit_jit_icall (cfg, mono_helper_compile_generic_method, &iargs);
                  D.29691 = cfg->mempool;
                  D.32395 = mono_mempool_alloc (D.29691, 56);
                  *sp = D.32395;
                  D.30679 = *sp;
                  D.30679 = *sp;
                  D.30679->data.op[1].const_val = 0;
                  D.32396 = D.30679->data.op[1].const_val;
                  D.30679->data.op[0].const_val = D.32396;
                  D.30679 = *sp;
                  D.30679 = *sp;
                  D.30679->prev = 0B;
                  D.32397 = D.30679->prev;
                  D.30679->next = D.32397;
                  D.30679 = *sp;
                  D.30679->opcode = 424;
                  D.30679 = *sp;
                  D.30679->flags = 0;
                  D.30679 = *sp;
                  D.30679->type = 0;
                  D.30679 = *sp;
                  D.30679->dreg = -1;
                  D.30679 = *sp;
                  D.30679 = *sp;
                  D.30679 = *sp;
                  D.30679->sreg3 = -1;
                  D.32398 = D.30679->sreg3;
                  D.30679->sreg2 = D.32398;
                  D.32399 = D.30679->sreg2;
                  D.30679->sreg1 = D.32399;
                  D.30679 = *sp;
                  D.29910 = cfg->ip;
                  D.30679->cil_code = D.29910;
                  D.30679 = *sp;
                  D.30422 = cfg->varinfo;
                  D.32329 = this_arg_temp->data.op[0].const_val;
                  D.32330 = (unsigned int) D.32329;
                  D.32331 = D.32330 * 4;
                  D.32332 = D.30422 + D.32331;
                  D.32333 = *D.32332;
                  D.32341 = D.32333->data.op[1].vtype;
                  D.32400 = mono_type_to_regmove (cfg, D.32341);
                  D.32401 = (short unsigned int) D.32400;
                  D.30679->opcode = D.32401;
                  D.30422 = cfg->varinfo;
                  D.32329 = this_arg_temp->data.op[0].const_val;
                  D.32330 = (unsigned int) D.32329;
                  D.32331 = D.32330 * 4;
                  D.32332 = D.30422 + D.32331;
                  D.32333 = *D.32332;
                  D.32341 = D.32333->data.op[1].vtype;
                  D.30679 = *sp;
                  type_to_eval_stack_type (cfg, D.32341, D.30679);
                  D.30679 = *sp;
                  D.30422 = cfg->varinfo;
                  D.32329 = this_arg_temp->data.op[0].const_val;
                  D.32330 = (unsigned int) D.32329;
                  D.32331 = D.32330 * 4;
                  D.32332 = D.30422 + D.32331;
                  D.32333 = *D.32332;
                  D.32336 = D.32333->klass;
                  D.30679->klass = D.32336;
                  D.30679 = *sp;
                  D.30422 = cfg->varinfo;
                  D.32329 = this_arg_temp->data.op[0].const_val;
                  D.32330 = (unsigned int) D.32329;
                  D.32331 = D.32330 * 4;
                  D.32332 = D.30422 + D.32331;
                  D.32333 = *D.32332;
                  D.32359 = D.32333->dreg;
                  D.30679->sreg1 = D.32359;
                  D.30679 = *sp;
                  D.30679 = *sp;
                  D.32402 = D.30679->type;
                  D.32403 = (<unnamed type>) D.32402;
                  D.32404 = alloc_dreg (cfg, D.32403);
                  D.32405 = (int) D.32404;
                  D.30679->dreg = D.32405;
                  D.30679 = *sp;
                  D.32406 = D.30679->opcode;
                  if (D.32406 == 427) goto <D.32407>; else goto <D.32408>;
                  <D.32407>:
                  D.30679 = *sp;
                  D.30422 = cfg->varinfo;
                  D.32329 = this_arg_temp->data.op[0].const_val;
                  D.32330 = (unsigned int) D.32329;
                  D.32331 = D.32330 * 4;
                  D.32332 = D.30422 + D.32331;
                  D.32333 = *D.32332;
                  D.32341 = D.32333->data.op[1].vtype;
                  D.32409 = mono_class_from_mono_type (D.32341);
                  D.30679->klass = D.32409;
                  <D.32408>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.32410>; else goto <D.32411>;
                  <D.32410>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.30679 = *sp;
                  D.29939->next = D.30679;
                  D.30679 = *sp;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.30679->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  D.30679 = *sp;
                  bblock.129->last_ins = D.30679;
                  goto <D.32412>;
                  <D.32411>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  D.30679 = *sp;
                  bblock.129->last_ins = D.30679;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.32412>:
                  ins = mono_emit_calli (cfg, fsig, sp, addr, 0B, 0B);
                  <D.32280>:
                  goto call_end;
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            <D.32219>:
            <D.32234>:
            <D.32222>:
            <D.32228>:
            <D.32226>:
            <D.32224>:
            if (cmethod != 0B) goto <D.32413>; else goto <D.32414>;
            <D.32413>:
            D.31542 = cmethod->klass;
            D.32415 = mono_defaults.monitor_class;
            if (D.31542 == D.32415) goto <D.32416>; else goto <D.32417>;
            <D.32416>:
            {
              size_t __s1_len;
              size_t __s2_len;

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

                __s2 = cmethod->name;
                D.32421 = "Enter";
                D.32422 = MEM[(const unsigned char *)D.32421];
                D.32423 = (int) D.32422;
                D.32424 = *__s2;
                D.32425 = (int) D.32424;
                __result = D.32423 - D.32425;
                {
                  if (__s2_len != 0) goto <D.32426>; else goto <D.32427>;
                  <D.32426>:
                  if (__result == 0) goto <D.32428>; else goto <D.32429>;
                  <D.32428>:
                  D.32430 = &MEM[(void *)"Enter" + 1B];
                  D.32431 = *D.32430;
                  D.32432 = (int) D.32431;
                  D.32433 = __s2 + 1;
                  D.32434 = *D.32433;
                  D.32435 = (int) D.32434;
                  __result = D.32432 - D.32435;
                  if (__s2_len > 1) goto <D.32436>; else goto <D.32437>;
                  <D.32436>:
                  if (__result == 0) goto <D.32438>; else goto <D.32439>;
                  <D.32438>:
                  D.32440 = &MEM[(void *)"Enter" + 2B];
                  D.32441 = *D.32440;
                  D.32442 = (int) D.32441;
                  D.32443 = __s2 + 2;
                  D.32444 = *D.32443;
                  D.32445 = (int) D.32444;
                  __result = D.32442 - D.32445;
                  if (__s2_len > 2) goto <D.32446>; else goto <D.32447>;
                  <D.32446>:
                  if (__result == 0) goto <D.32448>; else goto <D.32449>;
                  <D.32448>:
                  D.32450 = &MEM[(void *)"Enter" + 3B];
                  D.32451 = *D.32450;
                  D.32452 = (int) D.32451;
                  D.32453 = __s2 + 3;
                  D.32454 = *D.32453;
                  D.32455 = (int) D.32454;
                  __result = D.32452 - D.32455;
                  <D.32449>:
                  <D.32447>:
                  <D.32439>:
                  <D.32437>:
                  <D.32429>:
                  <D.32427>:
                }
                D.26946 = __result;
              }
              iftmp.139 = -D.26946;
              goto <D.32456>;
              <D.32420>:
              D.32059 = cmethod->name;
              iftmp.139 = __builtin_strcmp (D.32059, "Enter");
              <D.32456>:
              D.26947 = iftmp.139;
            }
            if (D.26947 == 0) goto <D.32457>; else goto <D.32458>;
            <D.32457>:
            D.32459 = mono_method_signature (cmethod);
            D.32460 = D.32459->param_count;
            if (D.32460 == 1) goto <D.32461>; else goto <D.32462>;
            <D.32461>:
            {
              struct MonoBasicBlock * tbb;

              D.29821 = cfg->cil_offset_to_bb;
              D.31124 = ip + 5;
              D.31640 = (int) D.31124;
              D.29825 = cfg->cil_start;
              D.29826 = (int) D.29825;
              D.32463 = D.31640 - D.29826;
              D.32464 = (unsigned int) D.32463;
              D.32465 = D.32464 * 4;
              D.32466 = D.29821 + D.32465;
              tbb = *D.32466;
              if (tbb == 0B) goto <D.32467>; else goto <D.32468>;
              <D.32467>:
              D.31124 = ip + 5;
              if (D.31124 >= end) goto <D.32469>; else goto <D.32471>;
              <D.32471>:
              D.32472 = ip + 5;
              D.29837 = header->code;
              if (D.32472 < D.29837) goto <D.32469>; else goto <D.32470>;
              <D.32469>:
              D.29838 = cfg->gsharedvt;
              if (D.29838 != 0) goto <D.32473>; else goto <D.32474>;
              <D.32473>:
              D.29771 = cfg->verbose_level;
              if (D.29771 > 2) goto <D.32475>; else goto <D.32476>;
              <D.32475>:
              printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
              <D.32476>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.32474>:
              D.32477 = mini_get_debug_options ();
              D.32478 = D.32477->break_on_unverified;
              if (D.32478 != 0) goto <D.32479>; else goto unverified;
              <D.32479>:
              raise (5);
              <D.32470>:
              D.29691 = cfg->mempool;
              tbb = mono_mempool_alloc0 (D.29691, 172);
              D.29798 = cfg->num_bblocks;
              D.32480 = D.29798;
              D.32481 = D.32480 + 1;
              cfg->num_bblocks = D.32481;
              D.32482 = (int) D.32480;
              tbb->block_num = D.32482;
              D.31124 = ip + 5;
              tbb->cil_code = D.31124;
              D.32483 = tbb->cil_code;
              if (D.32483 != 0B) goto <D.32484>; else goto <D.32485>;
              <D.32484>:
              D.29821 = cfg->cil_offset_to_bb;
              D.32483 = tbb->cil_code;
              D.32486 = (int) D.32483;
              D.29825 = cfg->cil_start;
              D.29826 = (int) D.29825;
              D.32487 = D.32486 - D.29826;
              D.32488 = (unsigned int) D.32487;
              D.32489 = D.32488 * 4;
              D.32490 = D.29821 + D.32489;
              *D.32490 = tbb;
              <D.32485>:
              D.29857 = cfg->real_offset;
              tbb->real_offset = D.29857;
              <D.32468>:
              D.32491 = BIT_FIELD_REF <*tbb, 32, 896>;
              D.32492 = D.32491 & 4194304;
              if (D.32492 != 0) goto <D.32493>; else goto <D.32494>;
              <D.32493>:
              D.32495 = tbb->region;
              D.32496 = D.32495 & 7;
              if (D.32496 == 2) goto <D.32497>; else goto <D.32498>;
              <D.32497>:
              tbb->extend_try_block = 1;
              <D.32498>:
              <D.32494>:
            }
            <D.32462>:
            <D.32458>:
            <D.32417>:
            <D.32414>:
            if (cmethod != 0B) goto <D.32499>; else goto <D.32500>;
            <D.32499>:
            D.30079 = cfg->opt;
            D.32064 = D.30079 & 2048;
            if (D.32064 != 0) goto <D.32501>; else goto <D.32502>;
            <D.32501>:
            ins = mini_emit_inst_for_method (cfg, cmethod, fsig, sp);
            if (ins != 0B) goto <D.32503>; else goto <D.32504>;
            <D.32503>:
            bblock.129 = cfg->cbb;
            bblock = bblock.129;
            D.31629 = fsig->ret;
            D.32505 = mono_type_is_void (D.31629);
            if (D.32505 == 0) goto <D.32506>; else goto <D.32507>;
            <D.32506>:
            D.31629 = fsig->ret;
            type_to_eval_stack_type (cfg, D.31629, ins);
            emit_widen = 0;
            <D.32507>:
            goto call_end;
            <D.32504>:
            <D.32502>:
            <D.32500>:
            if (cmethod != 0B) goto <D.32510>; else goto <D.32511>;
            <D.32510>:
            D.30079 = cfg->opt;
            D.32512 = D.30079 & 4;
            if (D.32512 != 0) goto <D.32513>; else goto <D.32514>;
            <D.32513>:
            if (virtual == 0) goto <D.32508>; else goto <D.32515>;
            <D.32515>:
            D.31578 = cmethod->flags;
            D.31579 = (int) D.31578;
            D.32160 = D.31579 & 64;
            if (D.32160 == 0) goto <D.32508>; else goto <D.32516>;
            <D.32516>:
            D.31578 = cmethod->flags;
            D.31579 = (int) D.31578;
            D.32162 = D.31579 & 32;
            if (D.32162 != 0) goto <D.32508>; else goto <D.32517>;
            <D.32517>:
            D.31542 = cmethod->klass;
            if (D.31542 != 0B) goto <D.32518>; else goto <D.32509>;
            <D.32518>:
            D.31542 = cmethod->klass;
            D.31719 = D.31542->flags;
            D.32165 = D.31719 & 256;
            if (D.32165 != 0) goto <D.32508>; else goto <D.32509>;
            <D.32508>:
            if (disable_inline == 0) goto <D.32519>; else goto <D.32520>;
            <D.32519>:
            D.32521 = mono_method_check_inlining (cfg, cmethod);
            if (D.32521 != 0) goto <D.32522>; else goto <D.32523>;
            <D.32522>:
            D.32524 = monoeg_g_list_find (dont_inline, cmethod);
            if (D.32524 == 0B) goto <D.32525>; else goto <D.32526>;
            <D.32525>:
            {
              int costs;
              gboolean always;

              always = 0;
              D.31608 = cmethod->iflags;
              D.31609 = (int) D.31608;
              D.31610 = D.31609 & 4096;
              if (D.31610 != 0) goto <D.32527>; else goto <D.32529>;
              <D.32529>:
              D.31578 = cmethod->flags;
              D.31579 = (int) D.31578;
              D.32530 = D.31579 & 8192;
              if (D.32530 != 0) goto <D.32527>; else goto <D.32528>;
              <D.32527>:
              D.29662 = cfg->method;
              if (D.29662 != method) goto <D.32531>; else goto <D.32532>;
              <D.32531>:
              D.29634 = BIT_FIELD_REF <*method, 32, 160>;
              D.29635 = D.29634 & 124;
              if (D.29635 == 0) goto <D.32533>; else goto <D.32534>;
              <D.32533>:
              D.29771 = cfg->verbose_level;
              if (D.29771 > 1) goto <D.32535>; else goto <D.32536>;
              <D.32535>:
              printf ("inline failed: %s\n", "wrapper call");
              <D.32536>:
              goto inline_failure;
              <D.32534>:
              <D.32532>:
              check_for_pending_exc.121 = check_for_pending_exc;
              cmethod = mono_marshal_get_native_wrapper (cmethod, check_for_pending_exc.121, 0);
              always = 1;
              <D.32528>:
              D.29857 = cfg->real_offset;
              costs = inline_method (cfg, cmethod, fsig, sp, ip, D.29857, dont_inline, always);
              if (costs != 0) goto <D.32537>; else goto <D.32538>;
              <D.32537>:
              D.29857 = cfg->real_offset;
              D.32539 = D.29857 + 5;
              cfg->real_offset = D.32539;
              bblock.129 = cfg->cbb;
              bblock = bblock.129;
              D.31629 = fsig->ret;
              D.32540 = mono_type_is_void (D.31629);
              if (D.32540 == 0) goto <D.32541>; else goto <D.32542>;
              <D.32541>:
              sp = sp + 4;
              push_res = 0;
              <D.32542>:
              inline_costs = inline_costs + costs;
              goto call_end;
              <D.32538>:
            }
            <D.32526>:
            <D.32523>:
            <D.32520>:
            <D.32509>:
            <D.32514>:
            <D.32511>:
            D.30079 = cfg->opt;
            D.32543 = D.30079 & 4096;
            if (D.32543 != 0) goto <D.32544>; else goto <D.32545>;
            <D.32544>:
            if (call_opcode == 40) goto <D.32546>; else goto <D.32547>;
            <D.32546>:
            if (cmethod == method) goto <D.32548>; else goto <D.32549>;
            <D.32548>:
            D.31124 = ip + 5;
            D.31637 = *D.31124;
            if (D.31637 == 42) goto <D.32550>; else goto <D.32551>;
            <D.32550>:
            if (vtable_arg == 0B) goto <D.32552>; else goto <D.32553>;
            <D.32552>:
            {
              gboolean has_vtargs;
              int i;

              has_vtargs = 0;
              D.29662 = cfg->method;
              if (D.29662 != method) goto <D.32554>; else goto <D.32555>;
              <D.32554>:
              D.29634 = BIT_FIELD_REF <*method, 32, 160>;
              D.29635 = D.29634 & 124;
              if (D.29635 == 0) goto <D.32556>; else goto <D.32557>;
              <D.32556>:
              D.29771 = cfg->verbose_level;
              if (D.29771 > 1) goto <D.32558>; else goto <D.32559>;
              <D.32558>:
              printf ("inline failed: %s\n", "tail call");
              <D.32559>:
              goto inline_failure;
              <D.32557>:
              <D.32555>:
              D.31479 = fsig->param_count;
              D.31480 = (int) D.31479;
              i = D.31480 + -1;
              goto <D.26954>;
              <D.26953>:
              D.32560 = mono_method_signature (cmethod);
              D.32561 = D.32560->params[i];
              D.32562 = mono_type_is_struct (D.32561);
              if (D.32562 != 0) goto <D.32563>; else goto <D.32564>;
              <D.32563>:
              has_vtargs = 1;
              <D.32564>:
              i = i + -1;
              <D.26954>:
              if (i >= 0) goto <D.26953>; else goto <D.26955>;
              <D.26955>:
              if (has_vtargs == 0) goto <D.32565>; else goto <D.32566>;
              <D.32565>:
              i = 0;
              goto <D.26957>;
              <D.26956>:
              D.29691 = cfg->mempool;
              ins = mono_mempool_alloc (D.29691, 56);
              ins->data.op[1].const_val = 0;
              D.29906 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.29906;
              ins->prev = 0B;
              D.29907 = ins->prev;
              ins->next = D.29907;
              ins->opcode = 424;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.29908 = ins->sreg3;
              ins->sreg2 = D.29908;
              D.29909 = ins->sreg2;
              ins->sreg1 = D.29909;
              D.29910 = cfg->ip;
              ins->cil_code = D.29910;
              D.30299 = cfg->arg_types;
              i.140 = (unsigned int) i;
              D.32568 = i.140 * 4;
              D.32569 = D.30299 + D.32568;
              D.32570 = *D.32569;
              D.32571 = mono_type_to_regmove (cfg, D.32570);
              D.32572 = (short unsigned int) D.32571;
              ins->opcode = D.32572;
              D.30289 = cfg->args;
              i.140 = (unsigned int) i;
              D.32568 = i.140 * 4;
              D.32573 = D.30289 + D.32568;
              D.32574 = *D.32573;
              D.32575 = D.32574->klass;
              ins->klass = D.32575;
              i.140 = (unsigned int) i;
              D.32568 = i.140 * 4;
              D.32576 = sp + D.32568;
              D.32577 = *D.32576;
              D.32578 = D.32577->dreg;
              ins->sreg1 = D.32578;
              D.30289 = cfg->args;
              i.140 = (unsigned int) i;
              D.32568 = i.140 * 4;
              D.32573 = D.30289 + D.32568;
              D.32574 = *D.32573;
              D.32579 = D.32574->dreg;
              ins->dreg = D.32579;
              D.30436 = ins->opcode;
              if (D.30436 == 427) goto <D.32580>; else goto <D.32581>;
              <D.32580>:
              D.30299 = cfg->arg_types;
              i.140 = (unsigned int) i;
              D.32568 = i.140 * 4;
              D.32569 = D.30299 + D.32568;
              D.32570 = *D.32569;
              D.32582 = mono_class_from_mono_type (D.32570);
              ins->klass = D.32582;
              <D.32581>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.32583>; else goto <D.32584>;
              <D.32583>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = ins;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              ins->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              goto <D.32585>;
              <D.32584>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.32585>:
              i = i + 1;
              <D.26957>:
              if (i < n) goto <D.26956>; else goto <D.26958>;
              <D.26958>:
              D.29691 = cfg->mempool;
              ins = mono_mempool_alloc (D.29691, 56);
              ins->data.op[1].const_val = 0;
              D.29906 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.29906;
              ins->prev = 0B;
              D.29907 = ins->prev;
              ins->next = D.29907;
              ins->opcode = 442;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.29908 = ins->sreg3;
              ins->sreg2 = D.29908;
              D.29909 = ins->sreg2;
              ins->sreg1 = D.29909;
              D.29910 = cfg->ip;
              ins->cil_code = D.29910;
              bblock.77 = bblock;
              D.30024 = bblock.77->last_ins;
              if (D.30024 != 0B) goto <D.32586>; else goto <D.32587>;
              <D.32586>:
              bblock.77 = bblock;
              D.30024 = bblock.77->last_ins;
              D.30024->next = ins;
              bblock.77 = bblock;
              D.30024 = bblock.77->last_ins;
              ins->prev = D.30024;
              bblock.77 = bblock;
              bblock.77->last_ins = ins;
              goto <D.32588>;
              <D.32587>:
              bblock.77 = bblock;
              bblock.77 = bblock;
              bblock.77->last_ins = ins;
              D.30024 = bblock.77->last_ins;
              bblock.77->code = D.30024;
              <D.32588>:
              D.32589 = start_bblock->out_bb;
              tblock = *D.32589;
              bblock.77 = bblock;
              link_bblock (cfg, bblock.77, tblock);
              ins->data.op[0].target_block = tblock;
              start_new_bblock = 1;
              bblock.77 = bblock;
              D.32590 = ip + 5;
              D.32591 = ip_in_bb (cfg, bblock.77, D.32590);
              if (D.32591 != 0) goto <D.32592>; else goto <D.32593>;
              <D.32592>:
              skip_ret = 1;
              <D.32593>:
              push_res = 0;
              goto call_end;
              <D.32566>:
            }
            <D.32553>:
            <D.32551>:
            <D.32549>:
            <D.32547>:
            <D.32545>:
            num_calls.141 = num_calls;
            num_calls = num_calls.141 + 1;
            D.32595 = num_calls.141 * 10;
            inline_costs = D.32595 + inline_costs;
            if (cmethod != 0B) goto <D.32597>; else goto <D.32596>;
            <D.32597>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.32598>; else goto <D.32596>;
            <D.32598>:
            D.32599 = mini_is_gsharedvt_signature (cfg, fsig);
            if (D.32599 != 0) goto <D.32600>; else goto <D.32596>;
            <D.32600>:
            {
              MonoRgctxInfoType info_type;

              if (virtual != 0) goto <D.32601>; else goto <D.32602>;
              <D.32601>:
              D.31486 = BIT_FIELD_REF <*fsig, 32, 64>;
              D.31745 = D.31486 & 4194304;
              if (D.31745 != 0) goto <D.32605>; else goto <D.32606>;
              <D.32605>:
              D.29629 = method->klass;
              D.29780 = BIT_FIELD_REF <*D.29629, 32, 160>;
              D.32607 = D.29780 & 4194304;
              if (D.32607 != 0) goto <D.32603>; else goto <D.32608>;
              <D.32608>:
              D.29629 = method->klass;
              D.31708 = mono_defaults.object_class;
              if (D.29629 == D.31708) goto <D.32603>; else goto <D.32604>;
              <D.32603>:
              D.29838 = cfg->gsharedvt;
              if (D.29838 != 0) goto <D.32609>; else goto <D.32610>;
              <D.32609>:
              D.29629 = method->klass;
              D.31352 = D.29629->name_space;
              D.29629 = method->klass;
              D.31353 = D.29629->name;
              D.31354 = method->name;
              D.31355 = method->signature;
              D.31356 = D.31355->param_count;
              D.31357 = (int) D.31356;
              D.30562 = *ip;
              D.30563 = (int) D.30562;
              D.32611 = mono_opcode_name (D.30563);
              D.32612 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.31352, D.31353, D.31354, D.31357, D.32611, "method-to-ir.c", 8189);
              cfg->exception_message = D.32612;
              D.29771 = cfg->verbose_level;
              if (D.29771 > 1) goto <D.32613>; else goto <D.32614>;
              <D.32613>:
              D.31362 = cfg->exception_message;
              printf ("%s\n", D.31362);
              <D.32614>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.32610>:
              <D.32604>:
              <D.32606>:
              D.32232 = fsig->generic_param_count;
              if (D.32232 != 0) goto <D.32615>; else goto <D.32616>;
              <D.32615>:
              mono_use_imt.134 = mono_use_imt;
              D.32617 = mono_use_imt.134 == 0;
              D.32618 = (long int) D.32617;
              D.32619 = __builtin_expect (D.32618, 0);
              if (D.32619 != 0) goto <D.32620>; else goto <D.32621>;
              <D.32620>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8192, "mono_use_imt");
              <D.32621>:
              D.32267 = imt_arg != 0B;
              D.32268 = (long int) D.32267;
              D.32269 = __builtin_expect (D.32268, 0);
              if (D.32269 != 0) goto <D.32622>; else goto <D.32623>;
              <D.32622>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8193, "!imt_arg");
              <D.32623>:
              imt_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
              vtable_arg = 0B;
              <D.32616>:
              <D.32602>:
              D.31542 = cmethod->klass;
              D.31614 = D.31542->rank;
              if (D.31614 != 0) goto <D.32624>; else goto <D.32625>;
              <D.32624>:
              D.31542 = cmethod->klass;
              D.32626 = D.31542->byval_arg.type;
              if (D.32626 != 29) goto <D.32627>; else goto <D.32628>;
              <D.32627>:
              D.29838 = cfg->gsharedvt;
              if (D.29838 != 0) goto <D.32629>; else goto <D.32630>;
              <D.32629>:
              D.29629 = method->klass;
              D.31352 = D.29629->name_space;
              D.29629 = method->klass;
              D.31353 = D.29629->name;
              D.31354 = method->name;
              D.31355 = method->signature;
              D.31356 = D.31355->param_count;
              D.31357 = (int) D.31356;
              D.30562 = *ip;
              D.30563 = (int) D.30562;
              D.32631 = mono_opcode_name (D.30563);
              D.32632 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.31352, D.31353, D.31354, D.31357, D.32631, "method-to-ir.c", 8204);
              cfg->exception_message = D.32632;
              D.29771 = cfg->verbose_level;
              if (D.29771 > 1) goto <D.32633>; else goto <D.32634>;
              <D.32633>:
              D.31362 = cfg->exception_message;
              printf ("%s\n", D.31362);
              <D.32634>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.32630>:
              <D.32628>:
              <D.32625>:
              D.31542 = cmethod->klass;
              D.32016 = D.31542->parent;
              D.32017 = mono_defaults.multicastdelegate_class;
              if (D.32016 == D.32017) goto <D.32635>; else goto <D.32636>;
              <D.32635>:
              {
                size_t __s1_len;
                size_t __s2_len;

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

                  __s2 = cmethod->name;
                  D.32023 = "Invoke";
                  D.32024 = MEM[(const unsigned char *)D.32023];
                  D.32025 = (int) D.32024;
                  D.32640 = *__s2;
                  D.32641 = (int) D.32640;
                  __result = D.32025 - D.32641;
                  {
                    if (__s2_len != 0) goto <D.32642>; else goto <D.32643>;
                    <D.32642>:
                    if (__result == 0) goto <D.32644>; else goto <D.32645>;
                    <D.32644>:
                    D.32032 = &MEM[(void *)"Invoke" + 1B];
                    D.32033 = *D.32032;
                    D.32034 = (int) D.32033;
                    D.32646 = __s2 + 1;
                    D.32647 = *D.32646;
                    D.32648 = (int) D.32647;
                    __result = D.32034 - D.32648;
                    if (__s2_len > 1) goto <D.32649>; else goto <D.32650>;
                    <D.32649>:
                    if (__result == 0) goto <D.32651>; else goto <D.32652>;
                    <D.32651>:
                    D.32042 = &MEM[(void *)"Invoke" + 2B];
                    D.32043 = *D.32042;
                    D.32044 = (int) D.32043;
                    D.32653 = __s2 + 2;
                    D.32654 = *D.32653;
                    D.32655 = (int) D.32654;
                    __result = D.32044 - D.32655;
                    if (__s2_len > 2) goto <D.32656>; else goto <D.32657>;
                    <D.32656>:
                    if (__result == 0) goto <D.32658>; else goto <D.32659>;
                    <D.32658>:
                    D.32052 = &MEM[(void *)"Invoke" + 3B];
                    D.32053 = *D.32052;
                    D.32054 = (int) D.32053;
                    D.32660 = __s2 + 3;
                    D.32661 = *D.32660;
                    D.32662 = (int) D.32661;
                    __result = D.32054 - D.32662;
                    <D.32659>:
                    <D.32657>:
                    <D.32652>:
                    <D.32650>:
                    <D.32645>:
                    <D.32643>:
                  }
                  D.26967 = __result;
                }
                iftmp.142 = -D.26967;
                goto <D.32663>;
                <D.32639>:
                D.32059 = cmethod->name;
                iftmp.142 = __builtin_strcmp (D.32059, "Invoke");
                <D.32663>:
                D.26968 = iftmp.142;
              }
              if (D.26968 == 0) goto <D.32664>; else goto <D.32665>;
              <D.32664>:
              keep_this_alive = *sp;
              <D.32665>:
              <D.32636>:
              if (virtual != 0) goto <D.32668>; else goto <D.32666>;
              <D.32668>:
              D.31578 = cmethod->flags;
              D.31579 = (int) D.31578;
              D.32160 = D.31579 & 64;
              if (D.32160 != 0) goto <D.32669>; else goto <D.32666>;
              <D.32669>:
              info_type = 17;
              goto <D.32667>;
              <D.32666>:
              info_type = 16;
              <D.32667>:
              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.32596>:
            if (calli != 0) goto <D.32670>; else goto <D.32671>;
            <D.32670>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.32672>; else goto <D.32673>;
            <D.32672>:
            D.32674 = mini_is_gsharedvt_signature (cfg, fsig);
            if (D.32674 != 0) goto <D.32675>; else goto <D.32676>;
            <D.32675>:
            {
              struct MonoInst * callee;

              callee = addr;
              D.29634 = BIT_FIELD_REF <*method, 32, 160>;
              D.29635 = D.29634 & 124;
              if (D.29635 != 4) goto <D.32677>; else goto <D.32678>;
              <D.32677>:
              D.29838 = cfg->gsharedvt;
              if (D.29838 != 0) goto <D.32679>; else goto <D.32680>;
              <D.32679>:
              D.29629 = method->klass;
              D.31352 = D.29629->name_space;
              D.29629 = method->klass;
              D.31353 = D.29629->name;
              D.31354 = method->name;
              D.31355 = method->signature;
              D.31356 = D.31355->param_count;
              D.31357 = (int) D.31356;
              D.30562 = *ip;
              D.30563 = (int) D.30562;
              D.32681 = mono_opcode_name (D.30563);
              D.32682 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.31352, D.31353, D.31354, D.31357, D.32681, "method-to-ir.c", 8225);
              cfg->exception_message = D.32682;
              D.29771 = cfg->verbose_level;
              if (D.29771 > 1) goto <D.32683>; else goto <D.32684>;
              <D.32683>:
              D.31362 = cfg->exception_message;
              printf ("%s\n", D.31362);
              <D.32684>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.32680>:
              <D.32678>:
              addr = emit_get_rgctx_sig (cfg, context_used, fsig, 18);
              ins = mono_emit_calli (cfg, fsig, sp, addr, 0B, callee);
              goto call_end;
            }
            <D.32676>:
            <D.32673>:
            <D.32671>:
            if (context_used != 0) goto <D.32689>; else goto <D.32690>;
            <D.32689>:
            if (imt_arg == 0B) goto <D.32691>; else goto <D.32692>;
            <D.32691>:
            if (array_rank == 0) goto <D.32693>; else goto <D.32694>;
            <D.32693>:
            if (delegate_invoke == 0) goto <D.32695>; else goto <D.32696>;
            <D.32695>:
            D.32697 = mono_method_is_generic_sharable (cmethod, 1);
            if (D.32697 == 0) goto <D.32688>; else goto <D.32698>;
            <D.32698>:
            D.31542 = cmethod->klass;
            D.32699 = mono_class_generic_sharing_enabled (D.31542);
            if (D.32699 == 0) goto <D.32688>; else goto <D.32687>;
            <D.32688>:
            if (virtual == 0) goto <D.32685>; else goto <D.32700>;
            <D.32700>:
            D.31578 = cmethod->flags;
            D.31579 = (int) D.31578;
            D.32162 = D.31579 & 32;
            if (D.32162 != 0) goto <D.32685>; else goto <D.32701>;
            <D.32701>:
            D.31542 = cmethod->klass;
            if (D.31542 != 0B) goto <D.32702>; else goto <D.32686>;
            <D.32702>:
            D.31542 = cmethod->klass;
            D.31719 = D.31542->flags;
            D.32165 = D.31719 & 256;
            if (D.32165 != 0) goto <D.32685>; else goto <D.32686>;
            <D.32686>:
            D.31578 = cmethod->flags;
            D.31579 = (int) D.31578;
            D.32160 = D.31579 & 64;
            if (D.32160 == 0) goto <D.32685>; else goto <D.32687>;
            <D.32685>:
            D.29662 = cfg->method;
            if (D.29662 != method) goto <D.32703>; else goto <D.32704>;
            <D.32703>:
            D.29634 = BIT_FIELD_REF <*method, 32, 160>;
            D.29635 = D.29634 & 124;
            if (D.29635 == 0) goto <D.32705>; else goto <D.32706>;
            <D.32705>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 1) goto <D.32707>; else goto <D.32708>;
            <D.32707>:
            printf ("inline failed: %s\n", "gshared");
            <D.32708>:
            goto inline_failure;
            <D.32706>:
            <D.32704>:
            D.29727 = cfg->generic_sharing_context;
            if (D.29727 == 0B) goto <D.32710>; else goto <D.32713>;
            <D.32713>:
            if (cmethod == 0B) goto <D.32710>; else goto <D.32711>;
            <D.32710>:
            iftmp.143 = 1;
            goto <D.32712>;
            <D.32711>:
            iftmp.143 = 0;
            <D.32712>:
            D.32714 = iftmp.143 != 0;
            D.32715 = (long int) D.32714;
            D.32716 = __builtin_expect (D.32715, 0);
            if (D.32716 != 0) goto <D.32717>; else goto <D.32718>;
            <D.32717>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8243, "cfg->generic_sharing_context && cmethod");
            <D.32718>:
            D.32719 = addr != 0B;
            D.32720 = (long int) D.32719;
            D.32721 = __builtin_expect (D.32720, 0);
            if (D.32721 != 0) goto <D.32722>; else goto <D.32723>;
            <D.32722>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8244, "!addr");
            <D.32723>:
            D.31486 = BIT_FIELD_REF <*fsig, 32, 64>;
            D.31745 = D.31486 & 4194304;
            if (D.31745 != 0) goto <D.32724>; else goto <D.32725>;
            <D.32724>:
            D.30117 = cfg->flags;
            D.30316 = D.30117 | 128;
            cfg->flags = D.30316;
            D.29679 = BIT_FIELD_REF <*cfg, 32, 3424>;
            D.30317 = D.29679 & 64;
            if (D.30317 != 0) goto <D.32726>; else goto <D.32727>;
            <D.32726>:
            D.29679 = BIT_FIELD_REF <*cfg, 32, 3424>;
            D.30317 = D.29679 & 64;
            if (D.30317 != 0) goto <D.32728>; else goto <D.32729>;
            <D.32728>:
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.32730 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.32730;
              inst->prev = 0B;
              D.32731 = inst->prev;
              inst->next = D.32731;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.32732 = inst->sreg3;
              inst->sreg2 = D.32732;
              D.32733 = inst->sreg2;
              inst->sreg1 = D.32733;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = -1;
              D.30679 = *sp;
              D.30872 = D.30679->dreg;
              inst->sreg1 = D.30872;
              inst->data.op[1].const_val = 0;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.32734>; else goto <D.32735>;
              <D.32734>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.32736>;
              <D.32735>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.32736>:
            }
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.32737 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.32737;
              inst->prev = 0B;
              D.32738 = inst->prev;
              inst->next = D.32738;
              inst->opcode = 451;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.32739 = inst->sreg3;
              inst->sreg2 = D.32739;
              D.32740 = inst->sreg2;
              inst->sreg1 = D.32740;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->data.op[1].p = "NullReferenceException";
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.32741>; else goto <D.32742>;
              <D.32741>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.32743>;
              <D.32742>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.32743>:
            }
            goto <D.32744>;
            <D.32729>:
            <D.32744>:
            goto <D.32745>;
            <D.32727>:
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.32746 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.32746;
              inst->prev = 0B;
              D.32747 = inst->prev;
              inst->next = D.32747;
              inst->opcode = 340;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.32748 = inst->sreg3;
              inst->sreg2 = D.32748;
              D.32749 = inst->sreg2;
              inst->sreg1 = D.32749;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = -1;
              D.30679 = *sp;
              D.30872 = D.30679->dreg;
              inst->sreg1 = D.30872;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.32750>; else goto <D.32751>;
              <D.32750>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.32752>;
              <D.32751>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.32752>:
            }
            <D.32745>:
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.32753 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.32753;
              inst->prev = 0B;
              D.32754 = inst->prev;
              inst->next = D.32754;
              inst->opcode = 799;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.32755 = inst->sreg3;
              inst->sreg2 = D.32755;
              D.32756 = inst->sreg2;
              inst->sreg1 = D.32756;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = -1;
              D.30679 = *sp;
              D.30872 = D.30679->dreg;
              inst->sreg1 = D.30872;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.32757>; else goto <D.32758>;
              <D.32757>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.32759>;
              <D.32758>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.32759>:
            }
            <D.32725>:
            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.32687>:
            <D.32696>:
            <D.32694>:
            <D.32692>:
            <D.32690>:
            if (addr != 0B) goto <D.32760>; else goto <D.32761>;
            <D.32760>:
            if (call_opcode == 40) goto <D.32762>; else goto <D.32763>;
            <D.32762>:
            D.32764 = context_used == 0;
            D.32765 = (long int) D.32764;
            D.32766 = __builtin_expect (D.32765, 0);
            if (D.32766 != 0) goto <D.32767>; else goto <D.32768>;
            <D.32767>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8264, "context_used");
            <D.32768>:
            goto <D.32769>;
            <D.32763>:
            if (call_opcode == 41) goto <D.32770>; else goto <D.32771>;
            <D.32770>:
            D.32145 = vtable_arg != 0B;
            D.32146 = (long int) D.32145;
            D.32147 = __builtin_expect (D.32146, 0);
            if (D.32147 != 0) goto <D.32772>; else goto <D.32773>;
            <D.32772>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8266, "!vtable_arg");
            <D.32773>:
            goto <D.32774>;
            <D.32771>:
            if (0 != 0) goto <D.32775>; else goto <D.32776>;
            <D.32775>:
            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.32776>:
            <D.32774>:
            <D.32769>:
            D.29662 = cfg->method;
            if (D.29662 != method) goto <D.32777>; else goto <D.32778>;
            <D.32777>:
            D.29634 = BIT_FIELD_REF <*method, 32, 160>;
            D.29635 = D.29634 & 124;
            if (D.29635 == 0) goto <D.32779>; else goto <D.32780>;
            <D.32779>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 1) goto <D.32781>; else goto <D.32782>;
            <D.32781>:
            printf ("inline failed: %s\n", "indirect call");
            <D.32782>:
            goto inline_failure;
            <D.32780>:
            <D.32778>:
            D.32785 = addr->opcode;
            if (D.32785 == 362) goto <D.32783>; else goto <D.32786>;
            <D.32786>:
            D.32785 = addr->opcode;
            if (D.32785 == 732) goto <D.32783>; else goto <D.32787>;
            <D.32787>:
            D.32785 = addr->opcode;
            if (D.32785 == 734) goto <D.32783>; else goto <D.32784>;
            <D.32783>:
            {
              int info_type;
              void * info_data;

              D.32785 = addr->opcode;
              if (D.32785 == 362) goto <D.32788>; else goto <D.32791>;
              <D.32791>:
              D.32785 = addr->opcode;
              if (D.32785 == 732) goto <D.32788>; else goto <D.32789>;
              <D.32788>:
              info_type = addr->data.op[1].const_val;
              info_data = addr->data.op[0].p;
              goto <D.32790>;
              <D.32789>:
              D.32792 = addr->data.op[1].src;
              info_type = D.32792->data.op[1].const_val;
              D.32792 = addr->data.op[1].src;
              info_data = D.32792->data.op[0].src;
              <D.32790>:
              info_type.144 = (unsigned int) info_type;
              D.32794 = info_type.144 + 4294967265;
              if (D.32794 <= 1) goto <D.32795>; else goto <D.32796>;
              <D.32795>:
              info_type.145 = (<unnamed type>) info_type;
              ins = mono_emit_abs_call (cfg, info_type.145, info_data, fsig, sp);
              addr->opcode = 316;
              addr->dreg = -1;
              addr->sreg3 = -1;
              D.32798 = addr->sreg3;
              addr->sreg2 = D.32798;
              D.32799 = addr->sreg2;
              addr->sreg1 = D.32799;
              goto call_end;
              <D.32796>:
            }
            <D.32784>:
            ins = mono_emit_calli (cfg, fsig, sp, addr, imt_arg, vtable_arg);
            goto call_end;
            <D.32761>:
            if (array_rank != 0) goto <D.32800>; else goto <D.32801>;
            <D.32800>:
            {
              struct MonoInst * addr;

              {
                size_t __s1_len;
                size_t __s2_len;

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

                  __s2 = cmethod->name;
                  D.32805 = "Set";
                  D.32806 = MEM[(const unsigned char *)D.32805];
                  D.32807 = (int) D.32806;
                  D.32808 = *__s2;
                  D.32809 = (int) D.32808;
                  __result = D.32807 - D.32809;
                  {
                    if (__s2_len != 0) goto <D.32810>; else goto <D.32811>;
                    <D.32810>:
                    if (__result == 0) goto <D.32812>; else goto <D.32813>;
                    <D.32812>:
                    D.32814 = &MEM[(void *)"Set" + 1B];
                    D.32815 = *D.32814;
                    D.32816 = (int) D.32815;
                    D.32817 = __s2 + 1;
                    D.32818 = *D.32817;
                    D.32819 = (int) D.32818;
                    __result = D.32816 - D.32819;
                    if (__s2_len > 1) goto <D.32820>; else goto <D.32821>;
                    <D.32820>:
                    if (__result == 0) goto <D.32822>; else goto <D.32823>;
                    <D.32822>:
                    D.32824 = &MEM[(void *)"Set" + 2B];
                    D.32825 = *D.32824;
                    D.32826 = (int) D.32825;
                    D.32827 = __s2 + 2;
                    D.32828 = *D.32827;
                    D.32829 = (int) D.32828;
                    __result = D.32826 - D.32829;
                    if (__s2_len > 2) goto <D.32830>; else goto <D.32831>;
                    <D.32830>:
                    if (__result == 0) goto <D.32832>; else goto <D.32833>;
                    <D.32832>:
                    D.32834 = &MEM[(void *)"Set" + 3B];
                    D.32835 = *D.32834;
                    D.32836 = (int) D.32835;
                    D.32837 = __s2 + 3;
                    D.32838 = *D.32837;
                    D.32839 = (int) D.32838;
                    __result = D.32836 - D.32839;
                    <D.32833>:
                    <D.32831>:
                    <D.32823>:
                    <D.32821>:
                    <D.32813>:
                    <D.32811>:
                  }
                  D.26984 = __result;
                }
                iftmp.146 = -D.26984;
                goto <D.32840>;
                <D.32804>:
                D.32059 = cmethod->name;
                iftmp.146 = __builtin_strcmp (D.32059, "Set");
                <D.32840>:
                D.26985 = iftmp.146;
              }
              if (D.26985 == 0) goto <D.32841>; else goto <D.32842>;
              <D.32841>:
              {
                struct MonoInst * val;

                D.31479 = fsig->param_count;
                D.31781 = (unsigned int) D.31479;
                D.31782 = D.31781 * 4;
                D.32843 = sp + D.31782;
                val = *D.32843;
                D.32844 = val->type;
                if (D.32844 == 6) goto <D.32845>; else goto <D.32846>;
                <D.32845>:
                {
                  struct MonoInst * iargs[2];

                  try
                    {
                      D.30679 = *sp;
                      iargs[0] = D.30679;
                      iargs[1] = val;
                      mono_emit_jit_icall (cfg, mono_helper_stelem_ref_check, &iargs);
                    }
                  finally
                    {
                      iargs = {CLOBBER};
                    }
                }
                <D.32846>:
                addr = mini_emit_ldelema_ins (cfg, cmethod, sp, ip, 1);
                D.29691 = cfg->mempool;
                ins = mono_mempool_alloc (D.29691, 56);
                ins->data.op[1].const_val = 0;
                D.29906 = ins->data.op[1].const_val;
                ins->data.op[0].const_val = D.29906;
                ins->prev = 0B;
                D.29907 = ins->prev;
                ins->next = D.29907;
                D.31479 = fsig->param_count;
                D.31480 = (int) D.31479;
                D.32847 = D.31480 + -1;
                D.32848 = fsig->params[D.32847];
                D.32849 = mono_type_to_store_membase (cfg, D.32848);
                D.32850 = (short unsigned int) D.32849;
                ins->opcode = D.32850;
                ins->flags = 0;
                ins->type = 0;
                ins->dreg = -1;
                ins->sreg3 = -1;
                D.29908 = ins->sreg3;
                ins->sreg2 = D.29908;
                D.29909 = ins->sreg2;
                ins->sreg1 = D.29909;
                D.29910 = cfg->ip;
                ins->cil_code = D.29910;
                D.32851 = val->dreg;
                ins->sreg1 = D.32851;
                D.32852 = addr->dreg;
                ins->dreg = D.32852;
                ins->data.op[0].const_val = 0;
                D.31479 = fsig->param_count;
                D.31480 = (int) D.31479;
                D.32847 = D.31480 + -1;
                D.32848 = fsig->params[D.32847];
                type_to_eval_stack_type (cfg, D.32848, ins);
                D.31479 = fsig->param_count;
                D.31480 = (int) D.31479;
                D.32847 = D.31480 + -1;
                D.32848 = fsig->params[D.32847];
                D.32853 = mono_class_from_mono_type (D.32848);
                ins->klass = D.32853;
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                if (D.29939 != 0B) goto <D.32854>; else goto <D.32855>;
                <D.32854>:
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                D.29939->next = ins;
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                ins->prev = D.29939;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = ins;
                goto <D.32856>;
                <D.32855>:
                bblock.129 = cfg->cbb;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = ins;
                D.29939 = bblock.129->last_ins;
                bblock.129->code = D.29939;
                <D.32856>:
                D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
                D.32859 = D.30081 & 268435456;
                if (D.32859 != 0) goto <D.32860>; else goto <D.32861>;
                <D.32860>:
                D.32844 = val->type;
                if (D.32844 == 6) goto <D.32862>; else goto <D.32863>;
                <D.32862>:
                D.32864 = val->opcode;
                if (D.32864 != 362) goto <D.32857>; else goto <D.32865>;
                <D.32865>:
                D.32866 = val->data.op[0].const_val;
                if (D.32866 != 0) goto <D.32857>; else goto <D.32858>;
                <D.32857>:
                emit_write_barrier (cfg, addr, val);
                <D.32858>:
                <D.32863>:
                <D.32861>:
              }
              goto <D.32867>;
              <D.32842>:
              {
                size_t __s1_len;
                size_t __s2_len;

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

                  __s2 = cmethod->name;
                  D.32871 = "Get";
                  D.32872 = MEM[(const unsigned char *)D.32871];
                  D.32873 = (int) D.32872;
                  D.32874 = *__s2;
                  D.32875 = (int) D.32874;
                  __result = D.32873 - D.32875;
                  {
                    if (__s2_len != 0) goto <D.32876>; else goto <D.32877>;
                    <D.32876>:
                    if (__result == 0) goto <D.32878>; else goto <D.32879>;
                    <D.32878>:
                    D.32880 = &MEM[(void *)"Get" + 1B];
                    D.32881 = *D.32880;
                    D.32882 = (int) D.32881;
                    D.32883 = __s2 + 1;
                    D.32884 = *D.32883;
                    D.32885 = (int) D.32884;
                    __result = D.32882 - D.32885;
                    if (__s2_len > 1) goto <D.32886>; else goto <D.32887>;
                    <D.32886>:
                    if (__result == 0) goto <D.32888>; else goto <D.32889>;
                    <D.32888>:
                    D.32890 = &MEM[(void *)"Get" + 2B];
                    D.32891 = *D.32890;
                    D.32892 = (int) D.32891;
                    D.32893 = __s2 + 2;
                    D.32894 = *D.32893;
                    D.32895 = (int) D.32894;
                    __result = D.32892 - D.32895;
                    if (__s2_len > 2) goto <D.32896>; else goto <D.32897>;
                    <D.32896>:
                    if (__result == 0) goto <D.32898>; else goto <D.32899>;
                    <D.32898>:
                    D.32900 = &MEM[(void *)"Get" + 3B];
                    D.32901 = *D.32900;
                    D.32902 = (int) D.32901;
                    D.32903 = __s2 + 3;
                    D.32904 = *D.32903;
                    D.32905 = (int) D.32904;
                    __result = D.32902 - D.32905;
                    <D.32899>:
                    <D.32897>:
                    <D.32889>:
                    <D.32887>:
                    <D.32879>:
                    <D.32877>:
                  }
                  D.26995 = __result;
                }
                iftmp.147 = -D.26995;
                goto <D.32906>;
                <D.32870>:
                D.32059 = cmethod->name;
                iftmp.147 = __builtin_strcmp (D.32059, "Get");
                <D.32906>:
                D.26996 = iftmp.147;
              }
              if (D.26996 == 0) goto <D.32907>; else goto <D.32908>;
              <D.32907>:
              addr = mini_emit_ldelema_ins (cfg, cmethod, sp, ip, 0);
              D.29691 = cfg->mempool;
              ins = mono_mempool_alloc (D.29691, 56);
              ins->data.op[1].const_val = 0;
              D.29906 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.29906;
              ins->prev = 0B;
              D.29907 = ins->prev;
              ins->next = D.29907;
              D.31629 = fsig->ret;
              D.32909 = mono_type_to_load_membase (cfg, D.31629);
              D.32910 = (short unsigned int) D.32909;
              ins->opcode = D.32910;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.29908 = ins->sreg3;
              ins->sreg2 = D.29908;
              D.29909 = ins->sreg2;
              ins->sreg1 = D.29909;
              D.29910 = cfg->ip;
              ins->cil_code = D.29910;
              ins->dreg = 0;
              D.32852 = addr->dreg;
              ins->sreg1 = D.32852;
              ins->data.op[0].const_val = 0;
              ins->type = 1;
              D.31629 = fsig->ret;
              type_to_eval_stack_type (cfg, D.31629, ins);
              D.30432 = ins->type;
              D.30433 = (<unnamed type>) D.30432;
              D.32911 = alloc_dreg (cfg, D.30433);
              D.32912 = (int) D.32911;
              ins->dreg = D.32912;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.32913>; else goto <D.32914>;
              <D.32913>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = ins;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              ins->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              goto <D.32915>;
              <D.32914>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.32915>:
              goto <D.32916>;
              <D.32908>:
              {
                size_t __s1_len;
                size_t __s2_len;

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

                  __s2 = cmethod->name;
                  D.32920 = "Address";
                  D.32921 = MEM[(const unsigned char *)D.32920];
                  D.32922 = (int) D.32921;
                  D.32923 = *__s2;
                  D.32924 = (int) D.32923;
                  __result = D.32922 - D.32924;
                  {
                    if (__s2_len != 0) goto <D.32925>; else goto <D.32926>;
                    <D.32925>:
                    if (__result == 0) goto <D.32927>; else goto <D.32928>;
                    <D.32927>:
                    D.32929 = &MEM[(void *)"Address" + 1B];
                    D.32930 = *D.32929;
                    D.32931 = (int) D.32930;
                    D.32932 = __s2 + 1;
                    D.32933 = *D.32932;
                    D.32934 = (int) D.32933;
                    __result = D.32931 - D.32934;
                    if (__s2_len > 1) goto <D.32935>; else goto <D.32936>;
                    <D.32935>:
                    if (__result == 0) goto <D.32937>; else goto <D.32938>;
                    <D.32937>:
                    D.32939 = &MEM[(void *)"Address" + 2B];
                    D.32940 = *D.32939;
                    D.32941 = (int) D.32940;
                    D.32942 = __s2 + 2;
                    D.32943 = *D.32942;
                    D.32944 = (int) D.32943;
                    __result = D.32941 - D.32944;
                    if (__s2_len > 2) goto <D.32945>; else goto <D.32946>;
                    <D.32945>:
                    if (__result == 0) goto <D.32947>; else goto <D.32948>;
                    <D.32947>:
                    D.32949 = &MEM[(void *)"Address" + 3B];
                    D.32950 = *D.32949;
                    D.32951 = (int) D.32950;
                    D.32952 = __s2 + 3;
                    D.32953 = *D.32952;
                    D.32954 = (int) D.32953;
                    __result = D.32951 - D.32954;
                    <D.32948>:
                    <D.32946>:
                    <D.32938>:
                    <D.32936>:
                    <D.32928>:
                    <D.32926>:
                  }
                  D.27004 = __result;
                }
                iftmp.148 = -D.27004;
                goto <D.32955>;
                <D.32919>:
                D.32059 = cmethod->name;
                iftmp.148 = __builtin_strcmp (D.32059, "Address");
                <D.32955>:
                D.27005 = iftmp.148;
              }
              if (D.27005 == 0) goto <D.32956>; else goto <D.32957>;
              <D.32956>:
              D.31542 = cmethod->klass;
              D.32958 = D.31542->element_class;
              D.32959 = BIT_FIELD_REF <*D.32958, 32, 160>;
              D.32960 = D.32959 & 8;
              if (D.32960 == 0) goto <D.32961>; else goto <D.32962>;
              <D.32961>:
              if (readonly == 0) goto <D.32963>; else goto <D.32964>;
              <D.32963>:
              D.30679 = *sp;
              D.31542 = cmethod->klass;
              mini_emit_check_array_type (cfg, D.30679, D.31542);
              <D.32964>:
              <D.32962>:
              D.31542 = cmethod->klass;
              if (D.31542 == 0B) goto <D.32965>; else goto <D.32967>;
              <D.32967>:
              D.31542 = cmethod->klass;
              D.32090 = D.31542->exception_type;
              if (D.32090 != 0) goto <D.32965>; else goto <D.32966>;
              <D.32965>:
              D.31542 = cmethod->klass;
              cfg->exception_ptr = D.31542;
              D.32968 = mini_get_debug_options ();
              D.32969 = D.32968->break_on_unverified;
              if (D.32969 != 0) goto <D.32970>; else goto load_error;
              <D.32970>:
              raise (5);
              <D.32966>:
              readonly = 0;
              addr = mini_emit_ldelema_ins (cfg, cmethod, sp, ip, 0);
              ins = addr;
              goto <D.32971>;
              <D.32957>:
              monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 8334);
              <D.32971>:
              <D.32916>:
              <D.32867>:
              emit_widen = 0;
              goto call_end;
            }
            <D.32801>:
            if (virtual != 0) goto <D.32973>; else goto <D.32974>;
            <D.32973>:
            iftmp.149 = *sp;
            goto <D.32975>;
            <D.32974>:
            iftmp.149 = 0B;
            <D.32975>:
            ins = mini_redirect_call (cfg, cmethod, fsig, sp, iftmp.149);
            if (ins != 0B) goto call_end; else goto <D.32976>;
            <D.32976>:
            if (cmethod != 0B) goto <D.32977>; else goto <D.32978>;
            <D.32977>:
            D.32979 = ins_flag & 4;
            if (D.32979 != 0) goto <D.32980>; else goto <D.32981>;
            <D.32980>:
            if (vtable_arg == 0B) goto <D.32982>; else goto <D.32983>;
            <D.32982>:
            D.29727 = cfg->generic_sharing_context;
            if (D.29727 == 0B) goto <D.32984>; else goto <D.32985>;
            <D.32984>:
            call_opcode.150 = (int) call_opcode;
            D.32987 = is_supported_tail_call (cfg, method, cmethod, fsig, call_opcode.150);
            if (D.32987 != 0) goto <D.32988>; else goto <D.32989>;
            <D.32988>:
            supported_tail_call = 1;
            <D.32989>:
            <D.32985>:
            <D.32983>:
            <D.32981>:
            <D.32978>:
            if (supported_tail_call != 0) goto <D.32990>; else goto <D.32991>;
            <D.32990>:
            {
              struct MonoCallInst * call;

              D.29662 = cfg->method;
              if (D.29662 != method) goto <D.32992>; else goto <D.32993>;
              <D.32992>:
              D.29634 = BIT_FIELD_REF <*method, 32, 160>;
              D.29635 = D.29634 & 124;
              if (D.29635 == 0) goto <D.32994>; else goto <D.32995>;
              <D.32994>:
              D.29771 = cfg->verbose_level;
              if (D.29771 > 1) goto <D.32996>; else goto <D.32997>;
              <D.32996>:
              printf ("inline failed: %s\n", "tail call");
              <D.32997>:
              goto inline_failure;
              <D.32995>:
              <D.32993>:
              if (0 != 0) goto <D.32998>; else goto <D.32999>;
              <D.32998>:
              tail_call = 1;
              goto <D.33000>;
              <D.32999>:
              D.29691 = cfg->mempool;
              call = mono_mempool_alloc0 (D.29691, 120);
              call->inst.opcode = 443;
              call->inst.dreg = -1;
              call->inst.sreg3 = -1;
              D.33001 = call->inst.sreg3;
              call->inst.sreg2 = D.33001;
              D.33002 = call->inst.sreg2;
              call->inst.sreg1 = D.33002;
              D.29910 = cfg->ip;
              call->inst.cil_code = D.29910;
              call->tail_call = 1;
              call->method = cmethod;
              D.33003 = mono_method_signature (cmethod);
              call->signature = D.33003;
              i = 0;
              goto <D.27008>;
              <D.27007>:
              i.75 = (unsigned int) i;
              D.30418 = i.75 * 4;
              D.31449 = arg_array + D.30418;
              D.31450 = *D.31449;
              i.75 = (unsigned int) i;
              D.30418 = i.75 * 4;
              D.31449 = arg_array + D.30418;
              D.31450 = *D.31449;
              D.31451 = D.31450->flags;
              D.31452 = D.31451 | 4;
              D.31450->flags = D.31452;
              D.29691 = cfg->mempool;
              ins = mono_mempool_alloc (D.29691, 56);
              ins->data.op[1].const_val = 0;
              D.29906 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.29906;
              ins->prev = 0B;
              D.29907 = ins->prev;
              ins->next = D.29907;
              ins->opcode = 424;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.29908 = ins->sreg3;
              ins->sreg2 = D.29908;
              D.29909 = ins->sreg2;
              ins->sreg1 = D.29909;
              D.29910 = cfg->ip;
              ins->cil_code = D.29910;
              D.30299 = cfg->arg_types;
              i.75 = (unsigned int) i;
              D.30418 = i.75 * 4;
              D.33004 = D.30299 + D.30418;
              D.33005 = *D.33004;
              D.33006 = mono_type_to_regmove (cfg, D.33005);
              D.33007 = (short unsigned int) D.33006;
              ins->opcode = D.33007;
              D.30289 = cfg->args;
              i.75 = (unsigned int) i;
              D.30418 = i.75 * 4;
              D.33008 = D.30289 + D.30418;
              D.33009 = *D.33008;
              D.33010 = D.33009->klass;
              ins->klass = D.33010;
              i.75 = (unsigned int) i;
              D.30418 = i.75 * 4;
              D.33011 = sp + D.30418;
              D.33012 = *D.33011;
              D.33013 = D.33012->dreg;
              ins->sreg1 = D.33013;
              D.30289 = cfg->args;
              i.75 = (unsigned int) i;
              D.30418 = i.75 * 4;
              D.33008 = D.30289 + D.30418;
              D.33009 = *D.33008;
              D.33014 = D.33009->dreg;
              ins->dreg = D.33014;
              D.30436 = ins->opcode;
              if (D.30436 == 427) goto <D.33015>; else goto <D.33016>;
              <D.33015>:
              D.30299 = cfg->arg_types;
              i.75 = (unsigned int) i;
              D.30418 = i.75 * 4;
              D.33004 = D.30299 + D.30418;
              D.33005 = *D.33004;
              D.33017 = mono_class_from_mono_type (D.33005);
              ins->klass = D.33017;
              <D.33016>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.33018>; else goto <D.33019>;
              <D.33018>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = ins;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              ins->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              goto <D.33020>;
              <D.33019>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.33020>:
              i = i + 1;
              <D.27008>:
              if (i < n) goto <D.27007>; else goto <D.27009>;
              <D.27009>:
              ins = call;
              ins->data.op[0].p = cmethod;
              D.29999 = *arg_array;
              ins->data.op[1].p = D.29999;
              bblock.77 = bblock;
              D.30024 = bblock.77->last_ins;
              if (D.30024 != 0B) goto <D.33021>; else goto <D.33022>;
              <D.33021>:
              bblock.77 = bblock;
              D.30024 = bblock.77->last_ins;
              D.30024->next = ins;
              bblock.77 = bblock;
              D.30024 = bblock.77->last_ins;
              ins->prev = D.30024;
              bblock.77 = bblock;
              bblock.77->last_ins = ins;
              goto <D.33023>;
              <D.33022>:
              bblock.77 = bblock;
              bblock.77 = bblock;
              bblock.77->last_ins = ins;
              D.30024 = bblock.77->last_ins;
              bblock.77->code = D.30024;
              <D.33023>:
              bblock.77 = bblock;
              link_bblock (cfg, bblock.77, end_bblock);
              start_new_bblock = 1;
              D.29821 = cfg->cil_offset_to_bb;
              D.31124 = ip + 5;
              D.31640 = (int) D.31124;
              D.29825 = cfg->cil_start;
              D.29826 = (int) D.29825;
              D.32463 = D.31640 - D.29826;
              D.32464 = (unsigned int) D.32463;
              D.32465 = D.32464 * 4;
              D.32466 = D.29821 + D.32465;
              tblock = *D.32466;
              if (tblock == 0B) goto <D.33024>; else goto <D.33025>;
              <D.33024>:
              D.31124 = ip + 5;
              if (D.31124 >= end) goto <D.33026>; else goto <D.33028>;
              <D.33028>:
              D.32472 = ip + 5;
              D.29837 = header->code;
              if (D.32472 < D.29837) goto <D.33026>; else goto <D.33027>;
              <D.33026>:
              D.29838 = cfg->gsharedvt;
              if (D.29838 != 0) goto <D.33029>; else goto <D.33030>;
              <D.33029>:
              D.29771 = cfg->verbose_level;
              if (D.29771 > 2) goto <D.33031>; else goto <D.33032>;
              <D.33031>:
              printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
              <D.33032>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.33030>:
              D.33033 = mini_get_debug_options ();
              D.33034 = D.33033->break_on_unverified;
              if (D.33034 != 0) goto <D.33035>; else goto unverified;
              <D.33035>:
              raise (5);
              <D.33027>:
              D.29691 = cfg->mempool;
              tblock = mono_mempool_alloc0 (D.29691, 172);
              D.29798 = cfg->num_bblocks;
              D.33036 = D.29798;
              D.33037 = D.33036 + 1;
              cfg->num_bblocks = D.33037;
              D.33038 = (int) D.33036;
              tblock->block_num = D.33038;
              D.31124 = ip + 5;
              tblock->cil_code = D.31124;
              D.29886 = tblock->cil_code;
              if (D.29886 != 0B) goto <D.33039>; else goto <D.33040>;
              <D.33039>:
              D.29821 = cfg->cil_offset_to_bb;
              D.29886 = tblock->cil_code;
              D.29889 = (int) D.29886;
              D.29825 = cfg->cil_start;
              D.29826 = (int) D.29825;
              D.29890 = D.29889 - D.29826;
              D.29891 = (unsigned int) D.29890;
              D.29892 = D.29891 * 4;
              D.29893 = D.29821 + D.29892;
              *D.29893 = tblock;
              <D.33040>:
              D.29857 = cfg->real_offset;
              tblock->real_offset = D.29857;
              <D.33025>:
              bblock.77 = bblock;
              if (tblock == bblock.77) goto <D.33041>; else goto <D.33043>;
              <D.33043>:
              D.33044 = tblock->in_count;
              if (D.33044 == 0) goto <D.33041>; else goto <D.33042>;
              <D.33041>:
              skip_ret = 1;
              <D.33042>:
              push_res = 0;
              goto call_end;
              <D.33000>:
            }
            <D.32991>:
            D.29662 = cfg->method;
            D.31591 = BIT_FIELD_REF <*D.29662, 32, 160>;
            D.31592 = D.31591 & 124;
            if (D.31592 == 64) goto <D.33045>; else goto <D.33046>;
            <D.33045>:
            {
              struct MonoMethod * orig;

              D.29662 = cfg->method;
              orig = mono_marshal_method_from_wrapper (D.29662);
              if (cmethod == orig) goto <D.33047>; else goto <D.33049>;
              <D.33049>:
              D.31661 = BIT_FIELD_REF <*cmethod, 32, 160>;
              D.32274 = D.31661 & 4096;
              if (D.32274 != 0) goto <D.33050>; else goto <D.33048>;
              <D.33050>:
              D.33051 = mono_method_get_declaring_generic_method (cmethod);
              if (D.33051 == orig) goto <D.33047>; else goto <D.33048>;
              <D.33047>:
              cmethod = mono_marshal_get_synchronized_inner_wrapper (cmethod);
              <D.33048>:
            }
            <D.33046>:
            D.29662 = cfg->method;
            if (D.29662 != method) goto <D.33052>; else goto <D.33053>;
            <D.33052>:
            D.29634 = BIT_FIELD_REF <*method, 32, 160>;
            D.29635 = D.29634 & 124;
            if (D.29635 == 0) goto <D.33054>; else goto <D.33055>;
            <D.33054>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 1) goto <D.33056>; else goto <D.33057>;
            <D.33056>:
            printf ("inline failed: %s\n", "call");
            <D.33057>:
            goto inline_failure;
            <D.33055>:
            <D.33053>:
            if (virtual != 0) goto <D.33059>; else goto <D.33060>;
            <D.33059>:
            iftmp.151 = *sp;
            goto <D.33061>;
            <D.33060>:
            iftmp.151 = 0B;
            <D.33061>:
            ins = mono_emit_method_call_full (cfg, cmethod, fsig, tail_call, sp, iftmp.151, imt_arg, vtable_arg);
            if (tail_call != 0) goto <D.33062>; else goto <D.33063>;
            <D.33062>:
            bblock.77 = bblock;
            link_bblock (cfg, bblock.77, end_bblock);
            start_new_bblock = 1;
            D.29821 = cfg->cil_offset_to_bb;
            D.31124 = ip + 5;
            D.31640 = (int) D.31124;
            D.29825 = cfg->cil_start;
            D.29826 = (int) D.29825;
            D.32463 = D.31640 - D.29826;
            D.32464 = (unsigned int) D.32463;
            D.32465 = D.32464 * 4;
            D.32466 = D.29821 + D.32465;
            tblock = *D.32466;
            if (tblock == 0B) goto <D.33064>; else goto <D.33065>;
            <D.33064>:
            D.31124 = ip + 5;
            if (D.31124 >= end) goto <D.33066>; else goto <D.33068>;
            <D.33068>:
            D.32472 = ip + 5;
            D.29837 = header->code;
            if (D.32472 < D.29837) goto <D.33066>; else goto <D.33067>;
            <D.33066>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.33069>; else goto <D.33070>;
            <D.33069>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.33071>; else goto <D.33072>;
            <D.33071>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.33072>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.33070>:
            D.33073 = mini_get_debug_options ();
            D.33074 = D.33073->break_on_unverified;
            if (D.33074 != 0) goto <D.33075>; else goto unverified;
            <D.33075>:
            raise (5);
            <D.33067>:
            D.29691 = cfg->mempool;
            tblock = mono_mempool_alloc0 (D.29691, 172);
            D.29798 = cfg->num_bblocks;
            D.33076 = D.29798;
            D.33077 = D.33076 + 1;
            cfg->num_bblocks = D.33077;
            D.33078 = (int) D.33076;
            tblock->block_num = D.33078;
            D.31124 = ip + 5;
            tblock->cil_code = D.31124;
            D.29886 = tblock->cil_code;
            if (D.29886 != 0B) goto <D.33079>; else goto <D.33080>;
            <D.33079>:
            D.29821 = cfg->cil_offset_to_bb;
            D.29886 = tblock->cil_code;
            D.29889 = (int) D.29886;
            D.29825 = cfg->cil_start;
            D.29826 = (int) D.29825;
            D.29890 = D.29889 - D.29826;
            D.29891 = (unsigned int) D.29890;
            D.29892 = D.29891 * 4;
            D.29893 = D.29821 + D.29892;
            *D.29893 = tblock;
            <D.33080>:
            D.29857 = cfg->real_offset;
            tblock->real_offset = D.29857;
            <D.33065>:
            bblock.77 = bblock;
            if (tblock == bblock.77) goto <D.33081>; else goto <D.33083>;
            <D.33083>:
            D.33044 = tblock->in_count;
            if (D.33044 == 0) goto <D.33081>; else goto <D.33082>;
            <D.33081>:
            skip_ret = 1;
            <D.33082>:
            push_res = 0;
            <D.33063>:
            call_end:
            if (push_res != 0) goto <D.33084>; else goto <D.33085>;
            <D.33084>:
            D.31629 = fsig->ret;
            D.33086 = mono_type_is_void (D.31629);
            if (D.33086 == 0) goto <D.33087>; else goto <D.33088>;
            <D.33087>:
            D.33089 = ins == 0B;
            D.33090 = (long int) D.33089;
            D.33091 = __builtin_expect (D.33090, 0);
            if (D.33091 != 0) goto <D.33092>; else goto <D.33093>;
            <D.33092>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8442, "ins");
            <D.33093>:
            if (emit_widen != 0) goto <D.33094>; else goto <D.33095>;
            <D.33094>:
            sp.152 = sp;
            sp = sp.152 + 4;
            D.33097 = mono_emit_widen_call_res (cfg, ins, fsig);
            *sp.152 = D.33097;
            goto <D.33098>;
            <D.33095>:
            sp.153 = sp;
            sp = sp.153 + 4;
            *sp.153 = ins;
            <D.33098>:
            <D.33088>:
            <D.33085>:
            if (keep_this_alive != 0B) goto <D.33100>; else goto <D.33101>;
            <D.33100>:
            {
              struct MonoInst * dummy_use;

              D.29691 = cfg->mempool;
              dummy_use = mono_mempool_alloc (D.29691, 56);
              dummy_use->data.op[1].const_val = 0;
              D.33102 = dummy_use->data.op[1].const_val;
              dummy_use->data.op[0].const_val = D.33102;
              dummy_use->prev = 0B;
              D.33103 = dummy_use->prev;
              dummy_use->next = D.33103;
              dummy_use->opcode = 796;
              dummy_use->flags = 0;
              dummy_use->type = 0;
              dummy_use->dreg = -1;
              dummy_use->sreg3 = -1;
              D.33104 = dummy_use->sreg3;
              dummy_use->sreg2 = D.33104;
              D.33105 = dummy_use->sreg2;
              dummy_use->sreg1 = D.33105;
              D.29910 = cfg->ip;
              dummy_use->cil_code = D.29910;
              D.33106 = keep_this_alive->dreg;
              dummy_use->sreg1 = D.33106;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.33107>; else goto <D.33108>;
              <D.33107>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = dummy_use;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              dummy_use->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = dummy_use;
              goto <D.33109>;
              <D.33108>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = dummy_use;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.33109>:
            }
            <D.33101>:
            D.30240 = cfg->exception_type;
            if (D.30240 != 0) goto exception_exit; else goto <D.33110>;
            <D.33110>:
            ip = ip + 5;
            if (skip_ret != 0) goto <D.33111>; else goto <D.33112>;
            <D.33111>:
            D.30562 = *ip;
            D.33113 = D.30562 != 42;
            D.33114 = (long int) D.33113;
            D.33115 = __builtin_expect (D.33114, 0);
            if (D.33115 != 0) goto <D.33116>; else goto <D.33117>;
            <D.33116>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8460, "*ip == CEE_RET");
            <D.33117>:
            ip = ip + 1;
            <D.33112>:
            ins_flag = 0;
            constrained_call = 0B;
            if (need_seq_point != 0) goto <D.33118>; else goto <D.33119>;
            <D.33118>:
            emit_seq_point (cfg, method, ip, 0, 1);
            <D.33119>:
            goto <D.26808>;
          }
        finally
          {
            pass_vtable = {CLOBBER};
            pass_mrgctx = {CLOBBER};
          }
      }
      <D.27012>:
      D.29662 = cfg->method;
      if (D.29662 != method) goto <D.33120>; else goto <D.33121>;
      <D.33120>:
      if (return_var != 0B) goto <D.33122>; else goto <D.33123>;
      <D.33122>:
      bblock.129 = cfg->cbb;
      D.33124 = bblock.129->in_count;
      if (D.33124 != 0) goto <D.33125>; else goto <D.33126>;
      <D.33125>:
      {
        struct MonoType * ret_type;
        struct MonoInst * store;

        D.33127 = mono_method_signature (method);
        ret_type = D.33127->ret;
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        if (D.30457 <= 3) goto <D.33128>; else goto <D.33129>;
        <D.33128>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33130>; else goto <D.33131>;
        <D.33130>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33132>; else goto <D.33133>;
        <D.33132>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33133>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33131>:
        D.33134 = mini_get_debug_options ();
        D.33135 = D.33134->break_on_unverified;
        if (D.33135 != 0) goto <D.33136>; else goto unverified;
        <D.33136>:
        raise (5);
        <D.33129>:
        sp = sp + 4294967292;
        D.29634 = BIT_FIELD_REF <*method, 32, 160>;
        D.29635 = D.29634 & 124;
        if (D.29635 == 68) goto <D.33137>; else goto <D.33139>;
        <D.33139>:
        D.29634 = BIT_FIELD_REF <*method, 32, 160>;
        D.29635 = D.29634 & 124;
        if (D.29635 == 0) goto <D.33137>; else goto <D.33138>;
        <D.33137>:
        D.30679 = *sp;
        D.33140 = target_type_is_incompatible (cfg, ret_type, D.30679);
        if (D.33140 != 0) goto <D.33141>; else goto <D.33142>;
        <D.33141>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33143>; else goto <D.33144>;
        <D.33143>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33145>; else goto <D.33146>;
        <D.33145>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33146>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33144>:
        D.33147 = mini_get_debug_options ();
        D.33148 = D.33147->break_on_unverified;
        if (D.33148 != 0) goto <D.33149>; else goto unverified;
        <D.33149>:
        raise (5);
        <D.33142>:
        <D.33138>:
        D.29691 = cfg->mempool;
        store = mono_mempool_alloc (D.29691, 56);
        store->data.op[1].const_val = 0;
        D.33150 = store->data.op[1].const_val;
        store->data.op[0].const_val = D.33150;
        store->prev = 0B;
        D.33151 = store->prev;
        store->next = D.33151;
        store->opcode = 424;
        store->flags = 0;
        store->type = 0;
        store->dreg = -1;
        store->sreg3 = -1;
        D.33152 = store->sreg3;
        store->sreg2 = D.33152;
        D.33153 = store->sreg2;
        store->sreg1 = D.33153;
        D.29910 = cfg->ip;
        store->cil_code = D.29910;
        D.30422 = cfg->varinfo;
        D.33154 = return_var->data.op[0].const_val;
        D.33155 = (unsigned int) D.33154;
        D.33156 = D.33155 * 4;
        D.33157 = D.30422 + D.33156;
        D.33158 = *D.33157;
        D.33159 = D.33158->data.op[1].vtype;
        D.33160 = mono_type_to_regmove (cfg, D.33159);
        D.33161 = (short unsigned int) D.33160;
        store->opcode = D.33161;
        D.30422 = cfg->varinfo;
        D.33154 = return_var->data.op[0].const_val;
        D.33155 = (unsigned int) D.33154;
        D.33156 = D.33155 * 4;
        D.33157 = D.30422 + D.33156;
        D.33158 = *D.33157;
        D.33162 = D.33158->klass;
        store->klass = D.33162;
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        store->sreg1 = D.30872;
        D.30422 = cfg->varinfo;
        D.33154 = return_var->data.op[0].const_val;
        D.33155 = (unsigned int) D.33154;
        D.33156 = D.33155 * 4;
        D.33157 = D.30422 + D.33156;
        D.33158 = *D.33157;
        D.33163 = D.33158->dreg;
        store->dreg = D.33163;
        D.33164 = store->opcode;
        if (D.33164 == 427) goto <D.33165>; else goto <D.33166>;
        <D.33165>:
        D.30422 = cfg->varinfo;
        D.33154 = return_var->data.op[0].const_val;
        D.33155 = (unsigned int) D.33154;
        D.33156 = D.33155 * 4;
        D.33157 = D.30422 + D.33156;
        D.33158 = *D.33157;
        D.33159 = D.33158->data.op[1].vtype;
        D.33167 = mono_class_from_mono_type (D.33159);
        store->klass = D.33167;
        <D.33166>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.33168>; else goto <D.33169>;
        <D.33168>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = store;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        store->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = store;
        goto <D.33170>;
        <D.33169>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = store;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.33170>:
        cfg->ret_var_set = 1;
      }
      <D.33126>:
      <D.33123>:
      goto <D.33171>;
      <D.33121>:
      D.33172 = cfg->lmf_var;
      if (D.33172 != 0B) goto <D.33173>; else goto <D.33174>;
      <D.33173>:
      bblock.129 = cfg->cbb;
      D.33124 = bblock.129->in_count;
      if (D.33124 != 0) goto <D.33175>; else goto <D.33176>;
      <D.33175>:
      emit_pop_lmf (cfg);
      <D.33176>:
      <D.33174>:
      D.33177 = cfg->ret;
      if (D.33177 != 0B) goto <D.33178>; else goto <D.33179>;
      <D.33178>:
      {
        struct MonoType * ret_type;

        D.33180 = mono_method_signature (method);
        D.33181 = D.33180->ret;
        ret_type = mini_replace_type (D.33181);
        if (seq_points != 0) goto <D.33182>; else goto <D.33183>;
        <D.33182>:
        if (sym_seq_points == 0) goto <D.33184>; else goto <D.33185>;
        <D.33184>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 341;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        ip.82 = (int) ip;
        D.29837 = header->code;
        D.30379 = (int) D.29837;
        D.30380 = ip.82 - D.30379;
        ins->data.op[1].const_val = D.30380;
        ins->flags = 1;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.33186>; else goto <D.33187>;
        <D.33186>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.33188>;
        <D.33187>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.33188>:
        <D.33185>:
        <D.33183>:
        D.33189 = return_var != 0B;
        D.33190 = (long int) D.33189;
        D.33191 = __builtin_expect (D.33190, 0);
        if (D.33191 != 0) goto <D.33192>; else goto <D.33193>;
        <D.33192>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8511, "!return_var");
        <D.33193>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        if (D.30457 <= 3) goto <D.33194>; else goto <D.33195>;
        <D.33194>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33196>; else goto <D.33197>;
        <D.33196>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33198>; else goto <D.33199>;
        <D.33198>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33199>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33197>:
        D.33200 = mini_get_debug_options ();
        D.33201 = D.33200->break_on_unverified;
        if (D.33201 != 0) goto <D.33202>; else goto unverified;
        <D.33202>:
        raise (5);
        <D.33195>:
        sp = sp + 4294967292;
        D.29634 = BIT_FIELD_REF <*method, 32, 160>;
        D.29635 = D.29634 & 124;
        if (D.29635 == 68) goto <D.33203>; else goto <D.33205>;
        <D.33205>:
        D.29634 = BIT_FIELD_REF <*method, 32, 160>;
        D.29635 = D.29634 & 124;
        if (D.29635 == 0) goto <D.33203>; else goto <D.33204>;
        <D.33203>:
        D.30679 = *sp;
        D.33206 = target_type_is_incompatible (cfg, ret_type, D.30679);
        if (D.33206 != 0) goto <D.33207>; else goto <D.33208>;
        <D.33207>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33209>; else goto <D.33210>;
        <D.33209>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33211>; else goto <D.33212>;
        <D.33211>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33212>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33210>:
        D.33213 = mini_get_debug_options ();
        D.33214 = D.33213->break_on_unverified;
        if (D.33214 != 0) goto <D.33215>; else goto unverified;
        <D.33215>:
        raise (5);
        <D.33208>:
        <D.33204>:
        D.33216 = mini_type_to_stind (cfg, ret_type);
        if (D.33216 == 129) goto <D.33217>; else goto <D.33218>;
        <D.33217>:
        {
          struct MonoInst * ret_addr;

          D.33219 = cfg->vret_addr;
          if (D.33219 == 0B) goto <D.33220>; else goto <D.33221>;
          <D.33220>:
          {
            struct MonoInst * ins;

            D.29691 = cfg->mempool;
            ins = mono_mempool_alloc (D.29691, 56);
            ins->data.op[1].const_val = 0;
            D.33222 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.33222;
            ins->prev = 0B;
            D.33223 = ins->prev;
            ins->next = D.33223;
            ins->opcode = 424;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.33224 = ins->sreg3;
            ins->sreg2 = D.33224;
            D.33225 = ins->sreg2;
            ins->sreg1 = D.33225;
            D.29910 = cfg->ip;
            ins->cil_code = D.29910;
            D.33226 = mono_type_to_regmove (cfg, ret_type);
            D.33227 = (short unsigned int) D.33226;
            ins->opcode = D.33227;
            D.33177 = cfg->ret;
            D.33228 = D.33177->klass;
            ins->klass = D.33228;
            D.30679 = *sp;
            D.30872 = D.30679->dreg;
            ins->sreg1 = D.30872;
            D.33177 = cfg->ret;
            D.33229 = D.33177->dreg;
            ins->dreg = D.33229;
            D.33230 = ins->opcode;
            if (D.33230 == 427) goto <D.33231>; else goto <D.33232>;
            <D.33231>:
            D.33233 = mono_class_from_mono_type (ret_type);
            ins->klass = D.33233;
            <D.33232>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.33234>; else goto <D.33235>;
            <D.33234>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = ins;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            ins->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            goto <D.33236>;
            <D.33235>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.33236>:
          }
          goto <D.33237>;
          <D.33221>:
          D.29691 = cfg->mempool;
          ret_addr = mono_mempool_alloc (D.29691, 56);
          ret_addr->data.op[1].const_val = 0;
          D.33238 = ret_addr->data.op[1].const_val;
          ret_addr->data.op[0].const_val = D.33238;
          ret_addr->prev = 0B;
          D.33239 = ret_addr->prev;
          ret_addr->next = D.33239;
          ret_addr->opcode = 424;
          ret_addr->flags = 0;
          ret_addr->type = 0;
          ret_addr->dreg = -1;
          ret_addr->sreg3 = -1;
          D.33240 = ret_addr->sreg3;
          ret_addr->sreg2 = D.33240;
          D.33241 = ret_addr->sreg2;
          ret_addr->sreg1 = D.33241;
          D.29910 = cfg->ip;
          ret_addr->cil_code = D.29910;
          ret_addr->type = 5;
          D.33177 = cfg->ret;
          D.33228 = D.33177->klass;
          ret_addr->klass = D.33228;
          D.33219 = cfg->vret_addr;
          D.33242 = D.33219->dreg;
          ret_addr->sreg1 = D.33242;
          D.33243 = ret_addr->type;
          D.33244 = (<unnamed type>) D.33243;
          D.33245 = alloc_dreg (cfg, D.33244);
          D.33246 = (int) D.33245;
          ret_addr->dreg = D.33246;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.33247>; else goto <D.33248>;
          <D.33247>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = ret_addr;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          ret_addr->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ret_addr;
          goto <D.33249>;
          <D.33248>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ret_addr;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.33249>:
          D.29691 = cfg->mempool;
          ins = mono_mempool_alloc (D.29691, 56);
          ins->data.op[1].const_val = 0;
          D.29906 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.29906;
          ins->prev = 0B;
          D.29907 = ins->prev;
          ins->next = D.29907;
          ins->opcode = 387;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.29908 = ins->sreg3;
          ins->sreg2 = D.29908;
          D.29909 = ins->sreg2;
          ins->sreg1 = D.29909;
          D.29910 = cfg->ip;
          ins->cil_code = D.29910;
          D.30679 = *sp;
          D.30872 = D.30679->dreg;
          ins->sreg1 = D.30872;
          D.33250 = ret_addr->dreg;
          ins->dreg = D.33250;
          ins->data.op[0].const_val = 0;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.33251>; else goto <D.33252>;
          <D.33251>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = ins;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          ins->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          goto <D.33253>;
          <D.33252>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.33253>:
          D.33254 = mono_class_from_mono_type (ret_type);
          ins->klass = D.33254;
          <D.33237>:
        }
        goto <D.33255>;
        <D.33218>:
        D.30679 = *sp;
        mono_arch_emit_setret (cfg, method, D.30679);
        <D.33255>:
      }
      <D.33179>:
      <D.33171>:
      if (sp != stack_start) goto <D.33256>; else goto <D.33257>;
      <D.33256>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.33258>; else goto <D.33259>;
      <D.33258>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.33260>; else goto <D.33261>;
      <D.33260>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33261>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33259>:
      D.33262 = mini_get_debug_options ();
      D.33263 = D.33262->break_on_unverified;
      if (D.33263 != 0) goto <D.33264>; else goto unverified;
      <D.33264>:
      raise (5);
      <D.33257>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 442;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      ip = ip + 1;
      ins->data.op[0].target_block = end_bblock;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      if (D.30024 != 0B) goto <D.33265>; else goto <D.33266>;
      <D.33265>:
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      D.30024->next = ins;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      ins->prev = D.30024;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      goto <D.33267>;
      <D.33266>:
      bblock.77 = bblock;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      D.30024 = bblock.77->last_ins;
      bblock.77->code = D.30024;
      <D.33267>:
      bblock.77 = bblock;
      link_bblock (cfg, bblock.77, end_bblock);
      start_new_bblock = 1;
      goto <D.26808>;
      <D.27018>:
      D.30690 = ip + 2;
      if (D.30690 > end) goto <D.33268>; else goto <D.33269>;
      <D.33268>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.33270>; else goto <D.33271>;
      <D.33270>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.33272>; else goto <D.33273>;
      <D.33272>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33273>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33271>:
      D.33274 = mini_get_debug_options ();
      D.33275 = D.33274->break_on_unverified;
      if (D.33275 != 0) goto <D.33276>; else goto unverified;
      <D.33276>:
      raise (5);
      <D.33269>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 442;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      ip = ip + 1;
      D.30562 = *ip;
      D.33277 = (signed char) D.30562;
      D.33278 = (sizetype) D.33277;
      D.33279 = D.33278 + 1;
      target = ip + D.33279;
      ip = ip + 1;
      D.29821 = cfg->cil_offset_to_bb;
      target.154 = (int) target;
      D.29825 = cfg->cil_start;
      D.29826 = (int) D.29825;
      D.33281 = target.154 - D.29826;
      D.33282 = (unsigned int) D.33281;
      D.33283 = D.33282 * 4;
      D.33284 = D.29821 + D.33283;
      tblock = *D.33284;
      if (tblock == 0B) goto <D.33285>; else goto <D.33286>;
      <D.33285>:
      if (target >= end) goto <D.33287>; else goto <D.33289>;
      <D.33289>:
      D.29837 = header->code;
      if (D.29837 > target) goto <D.33287>; else goto <D.33288>;
      <D.33287>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.33290>; else goto <D.33291>;
      <D.33290>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.33292>; else goto <D.33293>;
      <D.33292>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33293>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33291>:
      D.33294 = mini_get_debug_options ();
      D.33295 = D.33294->break_on_unverified;
      if (D.33295 != 0) goto <D.33296>; else goto unverified;
      <D.33296>:
      raise (5);
      <D.33288>:
      D.29691 = cfg->mempool;
      tblock = mono_mempool_alloc0 (D.29691, 172);
      D.29798 = cfg->num_bblocks;
      D.33297 = D.29798;
      D.33298 = D.33297 + 1;
      cfg->num_bblocks = D.33298;
      D.33299 = (int) D.33297;
      tblock->block_num = D.33299;
      tblock->cil_code = target;
      D.29886 = tblock->cil_code;
      if (D.29886 != 0B) goto <D.33300>; else goto <D.33301>;
      <D.33300>:
      D.29821 = cfg->cil_offset_to_bb;
      D.29886 = tblock->cil_code;
      D.29889 = (int) D.29886;
      D.29825 = cfg->cil_start;
      D.29826 = (int) D.29825;
      D.29890 = D.29889 - D.29826;
      D.29891 = (unsigned int) D.29890;
      D.29892 = D.29891 * 4;
      D.29893 = D.29821 + D.29892;
      *D.29893 = tblock;
      <D.33301>:
      D.29857 = cfg->real_offset;
      tblock->real_offset = D.29857;
      <D.33286>:
      bblock.77 = bblock;
      link_bblock (cfg, bblock.77, tblock);
      ins->data.op[0].target_block = tblock;
      if (sp != stack_start) goto <D.33302>; else goto <D.33303>;
      <D.33302>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      handle_stack_args (cfg, stack_start, D.30458);
      sp = stack_start;
      D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.30459 = D.30081 & 8192;
      if (D.30459 != 0) goto <D.33304>; else goto <D.33305>;
      <D.33304>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.33306>; else goto <D.33307>;
      <D.33306>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.33308>; else goto <D.33309>;
      <D.33308>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33309>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33307>:
      D.33310 = mini_get_debug_options ();
      D.33311 = D.33310->break_on_unverified;
      if (D.33311 != 0) goto <D.33312>; else goto unverified;
      <D.33312>:
      raise (5);
      <D.33305>:
      <D.33303>:
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      if (D.30024 != 0B) goto <D.33313>; else goto <D.33314>;
      <D.33313>:
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      D.30024->next = ins;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      ins->prev = D.30024;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      goto <D.33315>;
      <D.33314>:
      bblock.77 = bblock;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      D.30024 = bblock.77->last_ins;
      bblock.77->code = D.30024;
      <D.33315>:
      start_new_bblock = 1;
      inline_costs = inline_costs + 10;
      goto <D.26808>;
      <D.27019>:
      <D.27020>:
      <D.27021>:
      <D.27022>:
      <D.27023>:
      <D.27024>:
      <D.27025>:
      <D.27026>:
      <D.27027>:
      <D.27028>:
      D.30690 = ip + 2;
      if (D.30690 > end) goto <D.33316>; else goto <D.33317>;
      <D.33316>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.33318>; else goto <D.33319>;
      <D.33318>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.33320>; else goto <D.33321>;
      <D.33320>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33321>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33319>:
      D.33322 = mini_get_debug_options ();
      D.33323 = D.33322->break_on_unverified;
      if (D.33323 != 0) goto <D.33324>; else goto unverified;
      <D.33324>:
      raise (5);
      <D.33317>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 7) goto <D.33325>; else goto <D.33326>;
      <D.33325>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.33327>; else goto <D.33328>;
      <D.33327>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.33329>; else goto <D.33330>;
      <D.33329>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33330>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33328>:
      D.33331 = mini_get_debug_options ();
      D.33332 = D.33331->break_on_unverified;
      if (D.33332 != 0) goto <D.33333>; else goto unverified;
      <D.33333>:
      raise (5);
      <D.33326>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      D.30562 = *ip;
      D.33334 = (short unsigned int) D.30562;
      D.33335 = D.33334 + 13;
      ins->opcode = D.33335;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      ip = ip + 1;
      D.31116 = MEM[(signed char *)ip];
      D.33336 = (sizetype) D.31116;
      D.33337 = D.33336 + 1;
      target = ip + D.33337;
      ip = ip + 1;
      {
        struct MonoInst * cmp;

        sp = sp + 4294967288;
        D.29691 = cfg->mempool;
        cmp = mono_mempool_alloc (D.29691, 56);
        cmp->data.op[1].const_val = 0;
        D.33338 = cmp->data.op[1].const_val;
        cmp->data.op[0].const_val = D.33338;
        cmp->prev = 0B;
        D.33339 = cmp->prev;
        cmp->next = D.33339;
        cmp->opcode = 322;
        cmp->flags = 0;
        cmp->type = 0;
        cmp->dreg = -1;
        cmp->sreg3 = -1;
        D.33340 = cmp->sreg3;
        cmp->sreg2 = D.33340;
        D.33341 = cmp->sreg2;
        cmp->sreg1 = D.33341;
        D.29910 = cfg->ip;
        cmp->cil_code = D.29910;
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        cmp->sreg1 = D.30872;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        D.31795 = D.31794->dreg;
        cmp->sreg2 = D.31795;
        D.30679 = *sp;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        type_from_op (cmp, D.30679, D.31794);
        D.33342 = cmp->type;
        if (D.33342 == 0) goto <D.33343>; else goto <D.33344>;
        <D.33343>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33345>; else goto <D.33346>;
        <D.33345>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33347>; else goto <D.33348>;
        <D.33347>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33348>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33346>:
        D.33349 = mini_get_debug_options ();
        D.33350 = D.33349->break_on_unverified;
        if (D.33350 != 0) goto <D.33351>; else goto unverified;
        <D.33351>:
        raise (5);
        <D.33344>:
        D.30679 = *sp;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        type_from_op (ins, D.30679, D.31794);
        D.29691 = cfg->mempool;
        D.33352 = mono_mempool_alloc (D.29691, 8);
        ins->data.op[1].many_blocks = D.33352;
        D.29821 = cfg->cil_offset_to_bb;
        target.154 = (int) target;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.33281 = target.154 - D.29826;
        D.33282 = (unsigned int) D.33281;
        D.33283 = D.33282 * 4;
        D.33284 = D.29821 + D.33283;
        tblock = *D.33284;
        if (tblock == 0B) goto <D.33353>; else goto <D.33354>;
        <D.33353>:
        if (target >= end) goto <D.33355>; else goto <D.33357>;
        <D.33357>:
        D.29837 = header->code;
        if (D.29837 > target) goto <D.33355>; else goto <D.33356>;
        <D.33355>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33358>; else goto <D.33359>;
        <D.33358>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33360>; else goto <D.33361>;
        <D.33360>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33361>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33359>:
        D.33362 = mini_get_debug_options ();
        D.33363 = D.33362->break_on_unverified;
        if (D.33363 != 0) goto <D.33364>; else goto unverified;
        <D.33364>:
        raise (5);
        <D.33356>:
        D.29691 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.29691, 172);
        D.29798 = cfg->num_bblocks;
        D.33365 = D.29798;
        D.33366 = D.33365 + 1;
        cfg->num_bblocks = D.33366;
        D.33367 = (int) D.33365;
        tblock->block_num = D.33367;
        tblock->cil_code = target;
        D.29886 = tblock->cil_code;
        if (D.29886 != 0B) goto <D.33368>; else goto <D.33369>;
        <D.33368>:
        D.29821 = cfg->cil_offset_to_bb;
        D.29886 = tblock->cil_code;
        D.29889 = (int) D.29886;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.29890 = D.29889 - D.29826;
        D.29891 = (unsigned int) D.29890;
        D.29892 = D.29891 * 4;
        D.29893 = D.29821 + D.29892;
        *D.29893 = tblock;
        <D.33369>:
        D.29857 = cfg->real_offset;
        tblock->real_offset = D.29857;
        <D.33354>:
        bblock.77 = bblock;
        link_bblock (cfg, bblock.77, tblock);
        D.33370 = ins->data.op[1].many_blocks;
        *D.33370 = tblock;
        if (0 != 0) goto <D.33371>; else goto <D.33372>;
        <D.33371>:
        bblock.77 = bblock;
        link_bblock (cfg, bblock.77, 0B);
        D.33370 = ins->data.op[1].many_blocks;
        D.33373 = D.33370 + 4;
        *D.33373 = 0B;
        start_new_bblock = 1;
        goto <D.33374>;
        <D.33372>:
        D.29821 = cfg->cil_offset_to_bb;
        ip.82 = (int) ip;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.30394 = ip.82 - D.29826;
        D.30395 = (unsigned int) D.30394;
        D.30396 = D.30395 * 4;
        D.30397 = D.29821 + D.30396;
        tblock = *D.30397;
        if (tblock == 0B) goto <D.33375>; else goto <D.33376>;
        <D.33375>:
        if (ip >= end) goto <D.33377>; else goto <D.33379>;
        <D.33379>:
        D.29837 = header->code;
        if (D.29837 > ip) goto <D.33377>; else goto <D.33378>;
        <D.33377>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33380>; else goto <D.33381>;
        <D.33380>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33382>; else goto <D.33383>;
        <D.33382>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33383>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33381>:
        D.33384 = mini_get_debug_options ();
        D.33385 = D.33384->break_on_unverified;
        if (D.33385 != 0) goto <D.33386>; else goto unverified;
        <D.33386>:
        raise (5);
        <D.33378>:
        D.29691 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.29691, 172);
        D.29798 = cfg->num_bblocks;
        D.33387 = D.29798;
        D.33388 = D.33387 + 1;
        cfg->num_bblocks = D.33388;
        D.33389 = (int) D.33387;
        tblock->block_num = D.33389;
        tblock->cil_code = ip;
        D.29886 = tblock->cil_code;
        if (D.29886 != 0B) goto <D.33390>; else goto <D.33391>;
        <D.33390>:
        D.29821 = cfg->cil_offset_to_bb;
        D.29886 = tblock->cil_code;
        D.29889 = (int) D.29886;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.29890 = D.29889 - D.29826;
        D.29891 = (unsigned int) D.29890;
        D.29892 = D.29891 * 4;
        D.29893 = D.29821 + D.29892;
        *D.29893 = tblock;
        <D.33391>:
        D.29857 = cfg->real_offset;
        tblock->real_offset = D.29857;
        <D.33376>:
        bblock.77 = bblock;
        link_bblock (cfg, bblock.77, tblock);
        D.33370 = ins->data.op[1].many_blocks;
        D.33373 = D.33370 + 4;
        *D.33373 = tblock;
        start_new_bblock = 2;
        <D.33374>:
        if (sp != stack_start) goto <D.33392>; else goto <D.33393>;
        <D.33392>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        D.30458 = D.30457 /[ex] 4;
        handle_stack_args (cfg, stack_start, D.30458);
        D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.30459 = D.30081 & 8192;
        if (D.30459 != 0) goto <D.33394>; else goto <D.33395>;
        <D.33394>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33396>; else goto <D.33397>;
        <D.33396>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33398>; else goto <D.33399>;
        <D.33398>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33399>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33397>:
        D.33400 = mini_get_debug_options ();
        D.33401 = D.33400->break_on_unverified;
        if (D.33401 != 0) goto <D.33402>; else goto unverified;
        <D.33402>:
        raise (5);
        <D.33395>:
        <D.33393>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        if (D.30024 != 0B) goto <D.33403>; else goto <D.33404>;
        <D.33403>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        D.30024->next = cmp;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        cmp->prev = D.30024;
        bblock.77 = bblock;
        bblock.77->last_ins = cmp;
        goto <D.33405>;
        <D.33404>:
        bblock.77 = bblock;
        bblock.77 = bblock;
        bblock.77->last_ins = cmp;
        D.30024 = bblock.77->last_ins;
        bblock.77->code = D.30024;
        <D.33405>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        if (D.30024 != 0B) goto <D.33406>; else goto <D.33407>;
        <D.33406>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        D.30024->next = ins;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        ins->prev = D.30024;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        goto <D.33408>;
        <D.33407>:
        bblock.77 = bblock;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        D.30024 = bblock.77->last_ins;
        bblock.77->code = D.30024;
        <D.33408>:
      }
      sp = stack_start;
      inline_costs = inline_costs + 10;
      goto <D.26808>;
      <D.27030>:
      D.31124 = ip + 5;
      if (D.31124 > end) goto <D.33409>; else goto <D.33410>;
      <D.33409>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.33411>; else goto <D.33412>;
      <D.33411>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.33413>; else goto <D.33414>;
      <D.33413>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33414>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33412>:
      D.33415 = mini_get_debug_options ();
      D.33416 = D.33415->break_on_unverified;
      if (D.33416 != 0) goto <D.33417>; else goto unverified;
      <D.33417>:
      raise (5);
      <D.33410>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 442;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      ip = ip + 1;
      D.33418 = mono_read32 (ip);
      D.33419 = D.33418 + 4;
      target = ip + D.33419;
      ip = ip + 4;
      D.29821 = cfg->cil_offset_to_bb;
      target.154 = (int) target;
      D.29825 = cfg->cil_start;
      D.29826 = (int) D.29825;
      D.33281 = target.154 - D.29826;
      D.33282 = (unsigned int) D.33281;
      D.33283 = D.33282 * 4;
      D.33284 = D.29821 + D.33283;
      tblock = *D.33284;
      if (tblock == 0B) goto <D.33420>; else goto <D.33421>;
      <D.33420>:
      if (target >= end) goto <D.33422>; else goto <D.33424>;
      <D.33424>:
      D.29837 = header->code;
      if (D.29837 > target) goto <D.33422>; else goto <D.33423>;
      <D.33422>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.33425>; else goto <D.33426>;
      <D.33425>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.33427>; else goto <D.33428>;
      <D.33427>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33428>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33426>:
      D.33429 = mini_get_debug_options ();
      D.33430 = D.33429->break_on_unverified;
      if (D.33430 != 0) goto <D.33431>; else goto unverified;
      <D.33431>:
      raise (5);
      <D.33423>:
      D.29691 = cfg->mempool;
      tblock = mono_mempool_alloc0 (D.29691, 172);
      D.29798 = cfg->num_bblocks;
      D.33432 = D.29798;
      D.33433 = D.33432 + 1;
      cfg->num_bblocks = D.33433;
      D.33434 = (int) D.33432;
      tblock->block_num = D.33434;
      tblock->cil_code = target;
      D.29886 = tblock->cil_code;
      if (D.29886 != 0B) goto <D.33435>; else goto <D.33436>;
      <D.33435>:
      D.29821 = cfg->cil_offset_to_bb;
      D.29886 = tblock->cil_code;
      D.29889 = (int) D.29886;
      D.29825 = cfg->cil_start;
      D.29826 = (int) D.29825;
      D.29890 = D.29889 - D.29826;
      D.29891 = (unsigned int) D.29890;
      D.29892 = D.29891 * 4;
      D.29893 = D.29821 + D.29892;
      *D.29893 = tblock;
      <D.33436>:
      D.29857 = cfg->real_offset;
      tblock->real_offset = D.29857;
      <D.33421>:
      bblock.77 = bblock;
      link_bblock (cfg, bblock.77, tblock);
      ins->data.op[0].target_block = tblock;
      if (sp != stack_start) goto <D.33437>; else goto <D.33438>;
      <D.33437>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      handle_stack_args (cfg, stack_start, D.30458);
      sp = stack_start;
      D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.30459 = D.30081 & 8192;
      if (D.30459 != 0) goto <D.33439>; else goto <D.33440>;
      <D.33439>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.33441>; else goto <D.33442>;
      <D.33441>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.33443>; else goto <D.33444>;
      <D.33443>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33444>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33442>:
      D.33445 = mini_get_debug_options ();
      D.33446 = D.33445->break_on_unverified;
      if (D.33446 != 0) goto <D.33447>; else goto unverified;
      <D.33447>:
      raise (5);
      <D.33440>:
      <D.33438>:
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      if (D.30024 != 0B) goto <D.33448>; else goto <D.33449>;
      <D.33448>:
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      D.30024->next = ins;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      ins->prev = D.30024;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      goto <D.33450>;
      <D.33449>:
      bblock.77 = bblock;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      D.30024 = bblock.77->last_ins;
      bblock.77->code = D.30024;
      <D.33450>:
      start_new_bblock = 1;
      inline_costs = inline_costs + 10;
      goto <D.26808>;
      <D.27031>:
      <D.27032>:
      <D.27033>:
      <D.27034>:
      {
        struct MonoInst * cmp;
        gboolean is_short;
        gboolean is_true;
        guint32 opsize;

        D.30562 = *ip;
        D.33451 = D.30562 + 212;
        D.33452 = D.33451 <= 1;
        is_short = (gboolean) D.33452;
        D.30562 = *ip;
        if (D.30562 == 45) goto <D.33454>; else goto <D.33457>;
        <D.33457>:
        D.30562 = *ip;
        if (D.30562 == 58) goto <D.33454>; else goto <D.33455>;
        <D.33454>:
        iftmp.155 = 1;
        goto <D.33456>;
        <D.33455>:
        iftmp.155 = 0;
        <D.33456>:
        is_true = iftmp.155;
        if (is_short != 0) goto <D.33459>; else goto <D.33460>;
        <D.33459>:
        iftmp.156 = 1;
        goto <D.33461>;
        <D.33460>:
        iftmp.156 = 4;
        <D.33461>:
        opsize = iftmp.156;
        D.33462 = ip + opsize;
        if (D.33462 > end) goto <D.33463>; else goto <D.33464>;
        <D.33463>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33465>; else goto <D.33466>;
        <D.33465>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33467>; else goto <D.33468>;
        <D.33467>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33468>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33466>:
        D.33469 = mini_get_debug_options ();
        D.33470 = D.33469->break_on_unverified;
        if (D.33470 != 0) goto <D.33471>; else goto unverified;
        <D.33471>:
        raise (5);
        <D.33464>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        if (D.30457 <= 3) goto <D.33472>; else goto <D.33473>;
        <D.33472>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33474>; else goto <D.33475>;
        <D.33474>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33476>; else goto <D.33477>;
        <D.33476>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33477>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33475>:
        D.33478 = mini_get_debug_options ();
        D.33479 = D.33478->break_on_unverified;
        if (D.33479 != 0) goto <D.33480>; else goto unverified;
        <D.33480>:
        raise (5);
        <D.33473>:
        D.33483 = sp + 4294967292;
        D.33484 = *D.33483;
        D.33485 = D.33484->type;
        if (D.33485 == 7) goto <D.33481>; else goto <D.33486>;
        <D.33486>:
        D.33483 = sp + 4294967292;
        D.33484 = *D.33483;
        D.33485 = D.33484->type;
        if (D.33485 == 4) goto <D.33481>; else goto <D.33482>;
        <D.33481>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33487>; else goto <D.33488>;
        <D.33487>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33489>; else goto <D.33490>;
        <D.33489>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33490>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33488>:
        D.33491 = mini_get_debug_options ();
        D.33492 = D.33491->break_on_unverified;
        if (D.33492 != 0) goto <D.33493>; else goto unverified;
        <D.33493>:
        raise (5);
        <D.33482>:
        ip = ip + 1;
        if (is_short != 0) goto <D.33495>; else goto <D.33496>;
        <D.33495>:
        D.31116 = MEM[(signed char *)ip];
        iftmp.157 = (sizetype) D.31116;
        goto <D.33497>;
        <D.33496>:
        iftmp.157 = mono_read32 (ip);
        <D.33497>:
        D.33498 = iftmp.157 + opsize;
        target = ip + D.33498;
        ip = ip + opsize;
        sp = sp + 4294967292;
        D.29821 = cfg->cil_offset_to_bb;
        target.154 = (int) target;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.33281 = target.154 - D.29826;
        D.33282 = (unsigned int) D.33281;
        D.33283 = D.33282 * 4;
        D.33284 = D.29821 + D.33283;
        tblock = *D.33284;
        if (tblock == 0B) goto <D.33499>; else goto <D.33500>;
        <D.33499>:
        if (target >= end) goto <D.33501>; else goto <D.33503>;
        <D.33503>:
        D.29837 = header->code;
        if (D.29837 > target) goto <D.33501>; else goto <D.33502>;
        <D.33501>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33504>; else goto <D.33505>;
        <D.33504>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33506>; else goto <D.33507>;
        <D.33506>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33507>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33505>:
        D.33508 = mini_get_debug_options ();
        D.33509 = D.33508->break_on_unverified;
        if (D.33509 != 0) goto <D.33510>; else goto unverified;
        <D.33510>:
        raise (5);
        <D.33502>:
        D.29691 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.29691, 172);
        D.29798 = cfg->num_bblocks;
        D.33511 = D.29798;
        D.33512 = D.33511 + 1;
        cfg->num_bblocks = D.33512;
        D.33513 = (int) D.33511;
        tblock->block_num = D.33513;
        tblock->cil_code = target;
        D.29886 = tblock->cil_code;
        if (D.29886 != 0B) goto <D.33514>; else goto <D.33515>;
        <D.33514>:
        D.29821 = cfg->cil_offset_to_bb;
        D.29886 = tblock->cil_code;
        D.29889 = (int) D.29886;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.29890 = D.29889 - D.29826;
        D.29891 = (unsigned int) D.29890;
        D.29892 = D.29891 * 4;
        D.29893 = D.29821 + D.29892;
        *D.29893 = tblock;
        <D.33515>:
        D.29857 = cfg->real_offset;
        tblock->real_offset = D.29857;
        <D.33500>:
        bblock.77 = bblock;
        link_bblock (cfg, bblock.77, tblock);
        D.29821 = cfg->cil_offset_to_bb;
        ip.82 = (int) ip;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.30394 = ip.82 - D.29826;
        D.30395 = (unsigned int) D.30394;
        D.30396 = D.30395 * 4;
        D.30397 = D.29821 + D.30396;
        tblock = *D.30397;
        if (tblock == 0B) goto <D.33516>; else goto <D.33517>;
        <D.33516>:
        if (ip >= end) goto <D.33518>; else goto <D.33520>;
        <D.33520>:
        D.29837 = header->code;
        if (D.29837 > ip) goto <D.33518>; else goto <D.33519>;
        <D.33518>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33521>; else goto <D.33522>;
        <D.33521>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33523>; else goto <D.33524>;
        <D.33523>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33524>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33522>:
        D.33525 = mini_get_debug_options ();
        D.33526 = D.33525->break_on_unverified;
        if (D.33526 != 0) goto <D.33527>; else goto unverified;
        <D.33527>:
        raise (5);
        <D.33519>:
        D.29691 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.29691, 172);
        D.29798 = cfg->num_bblocks;
        D.33528 = D.29798;
        D.33529 = D.33528 + 1;
        cfg->num_bblocks = D.33529;
        D.33530 = (int) D.33528;
        tblock->block_num = D.33530;
        tblock->cil_code = ip;
        D.29886 = tblock->cil_code;
        if (D.29886 != 0B) goto <D.33531>; else goto <D.33532>;
        <D.33531>:
        D.29821 = cfg->cil_offset_to_bb;
        D.29886 = tblock->cil_code;
        D.29889 = (int) D.29886;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.29890 = D.29889 - D.29826;
        D.29891 = (unsigned int) D.29890;
        D.29892 = D.29891 * 4;
        D.29893 = D.29821 + D.29892;
        *D.29893 = tblock;
        <D.33532>:
        D.29857 = cfg->real_offset;
        tblock->real_offset = D.29857;
        <D.33517>:
        bblock.77 = bblock;
        link_bblock (cfg, bblock.77, tblock);
        if (sp != stack_start) goto <D.33533>; else goto <D.33534>;
        <D.33533>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        D.30458 = D.30457 /[ex] 4;
        handle_stack_args (cfg, stack_start, D.30458);
        D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.30459 = D.30081 & 8192;
        if (D.30459 != 0) goto <D.33535>; else goto <D.33536>;
        <D.33535>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33537>; else goto <D.33538>;
        <D.33537>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33539>; else goto <D.33540>;
        <D.33539>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33540>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33538>:
        D.33541 = mini_get_debug_options ();
        D.33542 = D.33541->break_on_unverified;
        if (D.33542 != 0) goto <D.33543>; else goto unverified;
        <D.33543>:
        raise (5);
        <D.33536>:
        <D.33534>:
        D.29691 = cfg->mempool;
        cmp = mono_mempool_alloc (D.29691, 56);
        cmp->data.op[1].const_val = 0;
        D.33544 = cmp->data.op[1].const_val;
        cmp->data.op[0].const_val = D.33544;
        cmp->prev = 0B;
        D.33545 = cmp->prev;
        cmp->next = D.33545;
        cmp->opcode = 327;
        cmp->flags = 0;
        cmp->type = 0;
        cmp->dreg = -1;
        cmp->sreg3 = -1;
        D.33546 = cmp->sreg3;
        cmp->sreg2 = D.33546;
        D.33547 = cmp->sreg2;
        cmp->sreg1 = D.33547;
        D.29910 = cfg->ip;
        cmp->cil_code = D.29910;
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        cmp->sreg1 = D.30872;
        D.30679 = *sp;
        type_from_op (cmp, D.30679, 0B);
        D.33548 = cmp->type;
        if (D.33548 == 0) goto <D.33549>; else goto <D.33550>;
        <D.33549>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33551>; else goto <D.33552>;
        <D.33551>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33553>; else goto <D.33554>;
        <D.33553>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33554>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33552>:
        D.33555 = mini_get_debug_options ();
        D.33556 = D.33555->break_on_unverified;
        if (D.33556 != 0) goto <D.33557>; else goto unverified;
        <D.33557>:
        raise (5);
        <D.33550>:
        D.33558 = cmp->opcode;
        if (D.33558 == 328) goto <D.33559>; else goto <D.33560>;
        <D.33559>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 363;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        ins->type = 2;
        D.33561 = alloc_dreg (cfg, 2);
        D.33562 = (int) D.33561;
        ins->dreg = D.33562;
        ins->data.i8const = 0;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        if (D.30024 != 0B) goto <D.33563>; else goto <D.33564>;
        <D.33563>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        D.30024->next = ins;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        ins->prev = D.30024;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        goto <D.33565>;
        <D.33564>:
        bblock.77 = bblock;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        D.30024 = bblock.77->last_ins;
        bblock.77->code = D.30024;
        <D.33565>:
        cmp->opcode = 325;
        D.30101 = ins->dreg;
        cmp->sreg2 = D.30101;
        <D.33560>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        if (D.30024 != 0B) goto <D.33566>; else goto <D.33567>;
        <D.33566>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        D.30024->next = cmp;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        cmp->prev = D.30024;
        bblock.77 = bblock;
        bblock.77->last_ins = cmp;
        goto <D.33568>;
        <D.33567>:
        bblock.77 = bblock;
        bblock.77 = bblock;
        bblock.77->last_ins = cmp;
        D.30024 = bblock.77->last_ins;
        bblock.77->code = D.30024;
        <D.33568>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        if (is_true != 0) goto <D.33570>; else goto <D.33571>;
        <D.33570>:
        iftmp.158 = 64;
        goto <D.33572>;
        <D.33571>:
        iftmp.158 = 59;
        <D.33572>:
        ins->opcode = iftmp.158;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        D.30679 = *sp;
        type_from_op (ins, D.30679, 0B);
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        if (D.30024 != 0B) goto <D.33573>; else goto <D.33574>;
        <D.33573>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        D.30024->next = ins;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        ins->prev = D.30024;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        goto <D.33575>;
        <D.33574>:
        bblock.77 = bblock;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        D.30024 = bblock.77->last_ins;
        bblock.77->code = D.30024;
        <D.33575>:
        D.29691 = cfg->mempool;
        D.33576 = mono_mempool_alloc (D.29691, 8);
        ins->data.op[1].many_blocks = D.33576;
        D.29821 = cfg->cil_offset_to_bb;
        target.154 = (int) target;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.33281 = target.154 - D.29826;
        D.33282 = (unsigned int) D.33281;
        D.33283 = D.33282 * 4;
        D.33284 = D.29821 + D.33283;
        tblock = *D.33284;
        if (tblock == 0B) goto <D.33577>; else goto <D.33578>;
        <D.33577>:
        if (target >= end) goto <D.33579>; else goto <D.33581>;
        <D.33581>:
        D.29837 = header->code;
        if (D.29837 > target) goto <D.33579>; else goto <D.33580>;
        <D.33579>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33582>; else goto <D.33583>;
        <D.33582>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33584>; else goto <D.33585>;
        <D.33584>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33585>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33583>:
        D.33586 = mini_get_debug_options ();
        D.33587 = D.33586->break_on_unverified;
        if (D.33587 != 0) goto <D.33588>; else goto unverified;
        <D.33588>:
        raise (5);
        <D.33580>:
        D.29691 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.29691, 172);
        D.29798 = cfg->num_bblocks;
        D.33589 = D.29798;
        D.33590 = D.33589 + 1;
        cfg->num_bblocks = D.33590;
        D.33591 = (int) D.33589;
        tblock->block_num = D.33591;
        tblock->cil_code = target;
        D.29886 = tblock->cil_code;
        if (D.29886 != 0B) goto <D.33592>; else goto <D.33593>;
        <D.33592>:
        D.29821 = cfg->cil_offset_to_bb;
        D.29886 = tblock->cil_code;
        D.29889 = (int) D.29886;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.29890 = D.29889 - D.29826;
        D.29891 = (unsigned int) D.29890;
        D.29892 = D.29891 * 4;
        D.29893 = D.29821 + D.29892;
        *D.29893 = tblock;
        <D.33593>:
        D.29857 = cfg->real_offset;
        tblock->real_offset = D.29857;
        <D.33578>:
        D.33370 = ins->data.op[1].many_blocks;
        *D.33370 = tblock;
        D.29821 = cfg->cil_offset_to_bb;
        ip.82 = (int) ip;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.30394 = ip.82 - D.29826;
        D.30395 = (unsigned int) D.30394;
        D.30396 = D.30395 * 4;
        D.30397 = D.29821 + D.30396;
        tblock = *D.30397;
        if (tblock == 0B) goto <D.33594>; else goto <D.33595>;
        <D.33594>:
        if (ip >= end) goto <D.33596>; else goto <D.33598>;
        <D.33598>:
        D.29837 = header->code;
        if (D.29837 > ip) goto <D.33596>; else goto <D.33597>;
        <D.33596>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33599>; else goto <D.33600>;
        <D.33599>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33601>; else goto <D.33602>;
        <D.33601>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33602>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33600>:
        D.33603 = mini_get_debug_options ();
        D.33604 = D.33603->break_on_unverified;
        if (D.33604 != 0) goto <D.33605>; else goto unverified;
        <D.33605>:
        raise (5);
        <D.33597>:
        D.29691 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.29691, 172);
        D.29798 = cfg->num_bblocks;
        D.33606 = D.29798;
        D.33607 = D.33606 + 1;
        cfg->num_bblocks = D.33607;
        D.33608 = (int) D.33606;
        tblock->block_num = D.33608;
        tblock->cil_code = ip;
        D.29886 = tblock->cil_code;
        if (D.29886 != 0B) goto <D.33609>; else goto <D.33610>;
        <D.33609>:
        D.29821 = cfg->cil_offset_to_bb;
        D.29886 = tblock->cil_code;
        D.29889 = (int) D.29886;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.29890 = D.29889 - D.29826;
        D.29891 = (unsigned int) D.29890;
        D.29892 = D.29891 * 4;
        D.29893 = D.29821 + D.29892;
        *D.29893 = tblock;
        <D.33610>:
        D.29857 = cfg->real_offset;
        tblock->real_offset = D.29857;
        <D.33595>:
        D.33370 = ins->data.op[1].many_blocks;
        D.33373 = D.33370 + 4;
        *D.33373 = tblock;
        start_new_bblock = 2;
        sp = stack_start;
        inline_costs = inline_costs + 10;
        goto <D.26808>;
      }
      <D.27039>:
      <D.27040>:
      <D.27041>:
      <D.27042>:
      <D.27043>:
      <D.27044>:
      <D.27045>:
      <D.27046>:
      <D.27047>:
      <D.27048>:
      D.31124 = ip + 5;
      if (D.31124 > end) goto <D.33611>; else goto <D.33612>;
      <D.33611>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.33613>; else goto <D.33614>;
      <D.33613>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.33615>; else goto <D.33616>;
      <D.33615>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33616>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33614>:
      D.33617 = mini_get_debug_options ();
      D.33618 = D.33617->break_on_unverified;
      if (D.33618 != 0) goto <D.33619>; else goto unverified;
      <D.33619>:
      raise (5);
      <D.33612>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 7) goto <D.33620>; else goto <D.33621>;
      <D.33620>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.33622>; else goto <D.33623>;
      <D.33622>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.33624>; else goto <D.33625>;
      <D.33624>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33625>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33623>:
      D.33626 = mini_get_debug_options ();
      D.33627 = D.33626->break_on_unverified;
      if (D.33627 != 0) goto <D.33628>; else goto unverified;
      <D.33628>:
      raise (5);
      <D.33621>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      D.30562 = *ip;
      D.33334 = (short unsigned int) D.30562;
      ins->opcode = D.33334;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      ip = ip + 1;
      D.33629 = mono_read32 (ip);
      D.33630 = D.33629 + 4;
      target = ip + D.33630;
      ip = ip + 4;
      {
        struct MonoInst * cmp;

        sp = sp + 4294967288;
        D.29691 = cfg->mempool;
        cmp = mono_mempool_alloc (D.29691, 56);
        cmp->data.op[1].const_val = 0;
        D.33631 = cmp->data.op[1].const_val;
        cmp->data.op[0].const_val = D.33631;
        cmp->prev = 0B;
        D.33632 = cmp->prev;
        cmp->next = D.33632;
        cmp->opcode = 322;
        cmp->flags = 0;
        cmp->type = 0;
        cmp->dreg = -1;
        cmp->sreg3 = -1;
        D.33633 = cmp->sreg3;
        cmp->sreg2 = D.33633;
        D.33634 = cmp->sreg2;
        cmp->sreg1 = D.33634;
        D.29910 = cfg->ip;
        cmp->cil_code = D.29910;
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        cmp->sreg1 = D.30872;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        D.31795 = D.31794->dreg;
        cmp->sreg2 = D.31795;
        D.30679 = *sp;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        type_from_op (cmp, D.30679, D.31794);
        D.33635 = cmp->type;
        if (D.33635 == 0) goto <D.33636>; else goto <D.33637>;
        <D.33636>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33638>; else goto <D.33639>;
        <D.33638>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33640>; else goto <D.33641>;
        <D.33640>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33641>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33639>:
        D.33642 = mini_get_debug_options ();
        D.33643 = D.33642->break_on_unverified;
        if (D.33643 != 0) goto <D.33644>; else goto unverified;
        <D.33644>:
        raise (5);
        <D.33637>:
        D.30679 = *sp;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        type_from_op (ins, D.30679, D.31794);
        D.29691 = cfg->mempool;
        D.33645 = mono_mempool_alloc (D.29691, 8);
        ins->data.op[1].many_blocks = D.33645;
        D.29821 = cfg->cil_offset_to_bb;
        target.154 = (int) target;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.33281 = target.154 - D.29826;
        D.33282 = (unsigned int) D.33281;
        D.33283 = D.33282 * 4;
        D.33284 = D.29821 + D.33283;
        tblock = *D.33284;
        if (tblock == 0B) goto <D.33646>; else goto <D.33647>;
        <D.33646>:
        if (target >= end) goto <D.33648>; else goto <D.33650>;
        <D.33650>:
        D.29837 = header->code;
        if (D.29837 > target) goto <D.33648>; else goto <D.33649>;
        <D.33648>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33651>; else goto <D.33652>;
        <D.33651>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33653>; else goto <D.33654>;
        <D.33653>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33654>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33652>:
        D.33655 = mini_get_debug_options ();
        D.33656 = D.33655->break_on_unverified;
        if (D.33656 != 0) goto <D.33657>; else goto unverified;
        <D.33657>:
        raise (5);
        <D.33649>:
        D.29691 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.29691, 172);
        D.29798 = cfg->num_bblocks;
        D.33658 = D.29798;
        D.33659 = D.33658 + 1;
        cfg->num_bblocks = D.33659;
        D.33660 = (int) D.33658;
        tblock->block_num = D.33660;
        tblock->cil_code = target;
        D.29886 = tblock->cil_code;
        if (D.29886 != 0B) goto <D.33661>; else goto <D.33662>;
        <D.33661>:
        D.29821 = cfg->cil_offset_to_bb;
        D.29886 = tblock->cil_code;
        D.29889 = (int) D.29886;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.29890 = D.29889 - D.29826;
        D.29891 = (unsigned int) D.29890;
        D.29892 = D.29891 * 4;
        D.29893 = D.29821 + D.29892;
        *D.29893 = tblock;
        <D.33662>:
        D.29857 = cfg->real_offset;
        tblock->real_offset = D.29857;
        <D.33647>:
        bblock.77 = bblock;
        link_bblock (cfg, bblock.77, tblock);
        D.33370 = ins->data.op[1].many_blocks;
        *D.33370 = tblock;
        if (0 != 0) goto <D.33663>; else goto <D.33664>;
        <D.33663>:
        bblock.77 = bblock;
        link_bblock (cfg, bblock.77, 0B);
        D.33370 = ins->data.op[1].many_blocks;
        D.33373 = D.33370 + 4;
        *D.33373 = 0B;
        start_new_bblock = 1;
        goto <D.33665>;
        <D.33664>:
        D.29821 = cfg->cil_offset_to_bb;
        ip.82 = (int) ip;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.30394 = ip.82 - D.29826;
        D.30395 = (unsigned int) D.30394;
        D.30396 = D.30395 * 4;
        D.30397 = D.29821 + D.30396;
        tblock = *D.30397;
        if (tblock == 0B) goto <D.33666>; else goto <D.33667>;
        <D.33666>:
        if (ip >= end) goto <D.33668>; else goto <D.33670>;
        <D.33670>:
        D.29837 = header->code;
        if (D.29837 > ip) goto <D.33668>; else goto <D.33669>;
        <D.33668>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33671>; else goto <D.33672>;
        <D.33671>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33673>; else goto <D.33674>;
        <D.33673>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33674>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33672>:
        D.33675 = mini_get_debug_options ();
        D.33676 = D.33675->break_on_unverified;
        if (D.33676 != 0) goto <D.33677>; else goto unverified;
        <D.33677>:
        raise (5);
        <D.33669>:
        D.29691 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.29691, 172);
        D.29798 = cfg->num_bblocks;
        D.33678 = D.29798;
        D.33679 = D.33678 + 1;
        cfg->num_bblocks = D.33679;
        D.33680 = (int) D.33678;
        tblock->block_num = D.33680;
        tblock->cil_code = ip;
        D.29886 = tblock->cil_code;
        if (D.29886 != 0B) goto <D.33681>; else goto <D.33682>;
        <D.33681>:
        D.29821 = cfg->cil_offset_to_bb;
        D.29886 = tblock->cil_code;
        D.29889 = (int) D.29886;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.29890 = D.29889 - D.29826;
        D.29891 = (unsigned int) D.29890;
        D.29892 = D.29891 * 4;
        D.29893 = D.29821 + D.29892;
        *D.29893 = tblock;
        <D.33682>:
        D.29857 = cfg->real_offset;
        tblock->real_offset = D.29857;
        <D.33667>:
        bblock.77 = bblock;
        link_bblock (cfg, bblock.77, tblock);
        D.33370 = ins->data.op[1].many_blocks;
        D.33373 = D.33370 + 4;
        *D.33373 = tblock;
        start_new_bblock = 2;
        <D.33665>:
        if (sp != stack_start) goto <D.33683>; else goto <D.33684>;
        <D.33683>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        D.30458 = D.30457 /[ex] 4;
        handle_stack_args (cfg, stack_start, D.30458);
        D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.30459 = D.30081 & 8192;
        if (D.30459 != 0) goto <D.33685>; else goto <D.33686>;
        <D.33685>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33687>; else goto <D.33688>;
        <D.33687>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33689>; else goto <D.33690>;
        <D.33689>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33690>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33688>:
        D.33691 = mini_get_debug_options ();
        D.33692 = D.33691->break_on_unverified;
        if (D.33692 != 0) goto <D.33693>; else goto unverified;
        <D.33693>:
        raise (5);
        <D.33686>:
        <D.33684>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        if (D.30024 != 0B) goto <D.33694>; else goto <D.33695>;
        <D.33694>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        D.30024->next = cmp;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        cmp->prev = D.30024;
        bblock.77 = bblock;
        bblock.77->last_ins = cmp;
        goto <D.33696>;
        <D.33695>:
        bblock.77 = bblock;
        bblock.77 = bblock;
        bblock.77->last_ins = cmp;
        D.30024 = bblock.77->last_ins;
        bblock.77->code = D.30024;
        <D.33696>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        if (D.30024 != 0B) goto <D.33697>; else goto <D.33698>;
        <D.33697>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        D.30024->next = ins;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        ins->prev = D.30024;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        goto <D.33699>;
        <D.33698>:
        bblock.77 = bblock;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        D.30024 = bblock.77->last_ins;
        bblock.77->code = D.30024;
        <D.33699>:
      }
      sp = stack_start;
      inline_costs = inline_costs + 10;
      goto <D.26808>;
      <D.27050>:
      {
        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.33700 = alloc_preg (cfg);
        offset_reg = (int) D.33700;
        D.33701 = alloc_preg (cfg);
        target_reg = (int) D.33701;
        D.33702 = alloc_preg (cfg);
        table_reg = (int) D.33702;
        D.33703 = alloc_preg (cfg);
        sum_reg = (int) D.33703;
        D.31124 = ip + 5;
        if (D.31124 > end) goto <D.33704>; else goto <D.33705>;
        <D.33704>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33706>; else goto <D.33707>;
        <D.33706>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33708>; else goto <D.33709>;
        <D.33708>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33709>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33707>:
        D.33710 = mini_get_debug_options ();
        D.33711 = D.33710->break_on_unverified;
        if (D.33711 != 0) goto <D.33712>; else goto unverified;
        <D.33712>:
        raise (5);
        <D.33705>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        if (D.30457 <= 3) goto <D.33713>; else goto <D.33714>;
        <D.33713>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33715>; else goto <D.33716>;
        <D.33715>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33717>; else goto <D.33718>;
        <D.33717>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33718>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33716>:
        D.33719 = mini_get_debug_options ();
        D.33720 = D.33719->break_on_unverified;
        if (D.33720 != 0) goto <D.33721>; else goto unverified;
        <D.33721>:
        raise (5);
        <D.33714>:
        D.31143 = ip + 1;
        D.33722 = mono_read32 (D.31143);
        n = (int) D.33722;
        sp = sp + 4294967292;
        src1 = *sp;
        D.33723 = src1->type;
        if (D.33723 != 1) goto <D.33724>; else goto <D.33725>;
        <D.33724>:
        D.33723 = src1->type;
        if (D.33723 != 3) goto <D.33726>; else goto <D.33727>;
        <D.33726>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33728>; else goto <D.33729>;
        <D.33728>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33730>; else goto <D.33731>;
        <D.33730>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33731>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33729>:
        D.33732 = mini_get_debug_options ();
        D.33733 = D.33732->break_on_unverified;
        if (D.33733 != 0) goto <D.33734>; else goto unverified;
        <D.33734>:
        raise (5);
        <D.33727>:
        <D.33725>:
        ip = ip + 5;
        n.89 = (unsigned int) n;
        D.30606 = n.89 * 4;
        D.33735 = ip + D.30606;
        if (D.33735 > end) goto <D.33736>; else goto <D.33737>;
        <D.33736>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33738>; else goto <D.33739>;
        <D.33738>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33740>; else goto <D.33741>;
        <D.33740>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33741>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33739>:
        D.33742 = mini_get_debug_options ();
        D.33743 = D.33742->break_on_unverified;
        if (D.33743 != 0) goto <D.33744>; else goto unverified;
        <D.33744>:
        raise (5);
        <D.33737>:
        n.89 = (unsigned int) n;
        D.30606 = n.89 * 4;
        target = ip + D.30606;
        D.29821 = cfg->cil_offset_to_bb;
        target.154 = (int) target;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.33281 = target.154 - D.29826;
        D.33282 = (unsigned int) D.33281;
        D.33283 = D.33282 * 4;
        D.33284 = D.29821 + D.33283;
        default_bblock = *D.33284;
        if (default_bblock == 0B) goto <D.33745>; else goto <D.33746>;
        <D.33745>:
        if (target >= end) goto <D.33747>; else goto <D.33749>;
        <D.33749>:
        D.29837 = header->code;
        if (D.29837 > target) goto <D.33747>; else goto <D.33748>;
        <D.33747>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33750>; else goto <D.33751>;
        <D.33750>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33752>; else goto <D.33753>;
        <D.33752>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33753>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33751>:
        D.33754 = mini_get_debug_options ();
        D.33755 = D.33754->break_on_unverified;
        if (D.33755 != 0) goto <D.33756>; else goto unverified;
        <D.33756>:
        raise (5);
        <D.33748>:
        D.29691 = cfg->mempool;
        default_bblock = mono_mempool_alloc0 (D.29691, 172);
        D.29798 = cfg->num_bblocks;
        D.33757 = D.29798;
        D.33758 = D.33757 + 1;
        cfg->num_bblocks = D.33758;
        D.33759 = (int) D.33757;
        default_bblock->block_num = D.33759;
        default_bblock->cil_code = target;
        D.33760 = default_bblock->cil_code;
        if (D.33760 != 0B) goto <D.33761>; else goto <D.33762>;
        <D.33761>:
        D.29821 = cfg->cil_offset_to_bb;
        D.33760 = default_bblock->cil_code;
        D.33763 = (int) D.33760;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.33764 = D.33763 - D.29826;
        D.33765 = (unsigned int) D.33764;
        D.33766 = D.33765 * 4;
        D.33767 = D.29821 + D.33766;
        *D.33767 = default_bblock;
        <D.33762>:
        D.29857 = cfg->real_offset;
        default_bblock->real_offset = D.29857;
        <D.33746>:
        D.33768 = default_bblock->flags;
        D.33769 = D.33768 | 32;
        default_bblock->flags = D.33769;
        D.29691 = cfg->mempool;
        n.89 = (unsigned int) n;
        D.30606 = n.89 * 4;
        targets = mono_mempool_alloc (D.29691, D.30606);
        i = 0;
        goto <D.27061>;
        <D.27060>:
        D.29821 = cfg->cil_offset_to_bb;
        D.33770 = mono_read32 (ip);
        D.33771 = target + D.33770;
        D.33772 = (int) D.33771;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.33773 = D.33772 - D.29826;
        D.33774 = (unsigned int) D.33773;
        D.33775 = D.33774 * 4;
        D.33776 = D.29821 + D.33775;
        tblock = *D.33776;
        if (tblock == 0B) goto <D.33777>; else goto <D.33778>;
        <D.33777>:
        D.33781 = mono_read32 (ip);
        D.33782 = target + D.33781;
        if (D.33782 >= end) goto <D.33779>; else goto <D.33783>;
        <D.33783>:
        D.33784 = mono_read32 (ip);
        D.33785 = target + D.33784;
        D.29837 = header->code;
        if (D.33785 < D.29837) goto <D.33779>; else goto <D.33780>;
        <D.33779>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33786>; else goto <D.33787>;
        <D.33786>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33788>; else goto <D.33789>;
        <D.33788>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33789>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33787>:
        D.33790 = mini_get_debug_options ();
        D.33791 = D.33790->break_on_unverified;
        if (D.33791 != 0) goto <D.33792>; else goto unverified;
        <D.33792>:
        raise (5);
        <D.33780>:
        D.29691 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.29691, 172);
        D.29798 = cfg->num_bblocks;
        D.33793 = D.29798;
        D.33794 = D.33793 + 1;
        cfg->num_bblocks = D.33794;
        D.33795 = (int) D.33793;
        tblock->block_num = D.33795;
        D.33796 = mono_read32 (ip);
        D.33797 = target + D.33796;
        tblock->cil_code = D.33797;
        D.29886 = tblock->cil_code;
        if (D.29886 != 0B) goto <D.33798>; else goto <D.33799>;
        <D.33798>:
        D.29821 = cfg->cil_offset_to_bb;
        D.29886 = tblock->cil_code;
        D.29889 = (int) D.29886;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.29890 = D.29889 - D.29826;
        D.29891 = (unsigned int) D.29890;
        D.29892 = D.29891 * 4;
        D.29893 = D.29821 + D.29892;
        *D.29893 = tblock;
        <D.33799>:
        D.29857 = cfg->real_offset;
        tblock->real_offset = D.29857;
        <D.33778>:
        i.75 = (unsigned int) i;
        D.30418 = i.75 * 4;
        D.33800 = targets + D.30418;
        *D.33800 = tblock;
        i.75 = (unsigned int) i;
        D.30418 = i.75 * 4;
        D.33800 = targets + D.30418;
        D.33801 = *D.33800;
        i.75 = (unsigned int) i;
        D.30418 = i.75 * 4;
        D.33800 = targets + D.30418;
        D.33801 = *D.33800;
        D.33802 = D.33801->flags;
        D.33803 = D.33802 | 32;
        D.33801->flags = D.33803;
        ip = ip + 4;
        i = i + 1;
        <D.27061>:
        if (i < n) goto <D.27060>; else goto <D.27062>;
        <D.27062>:
        if (sp != stack_start) goto <D.33804>; else goto <D.33805>;
        <D.33804>:
        bblock.77 = bblock;
        link_bblock (cfg, bblock.77, default_bblock);
        i = 0;
        goto <D.27064>;
        <D.27063>:
        bblock.77 = bblock;
        i.75 = (unsigned int) i;
        D.30418 = i.75 * 4;
        D.33800 = targets + D.30418;
        D.33801 = *D.33800;
        link_bblock (cfg, bblock.77, D.33801);
        i = i + 1;
        <D.27064>:
        if (i < n) goto <D.27063>; else goto <D.27065>;
        <D.27065>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        D.30458 = D.30457 /[ex] 4;
        handle_stack_args (cfg, stack_start, D.30458);
        sp = stack_start;
        D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.30459 = D.30081 & 8192;
        if (D.30459 != 0) goto <D.33806>; else goto <D.33807>;
        <D.33806>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.33808>; else goto <D.33809>;
        <D.33808>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.33810>; else goto <D.33811>;
        <D.33810>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.33811>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.33809>:
        D.33812 = mini_get_debug_options ();
        D.33813 = D.33812->break_on_unverified;
        if (D.33813 != 0) goto <D.33814>; else goto unverified;
        <D.33814>:
        raise (5);
        <D.33807>:
        <D.33805>:
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.33815 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.33815;
          inst->prev = 0B;
          D.33816 = inst->prev;
          inst->next = D.33816;
          inst->opcode = 327;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.33817 = inst->sreg3;
          inst->sreg2 = D.33817;
          D.33818 = inst->sreg2;
          inst->sreg1 = D.33818;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          inst->dreg = -1;
          D.33819 = src1->dreg;
          inst->sreg1 = D.33819;
          inst->data.op[1].const_val = n;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.33820>; else goto <D.33821>;
          <D.33820>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.33822>;
          <D.33821>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.33822>:
        }
        {
          struct MonoInst * ins;
          struct MonoBasicBlock * falsebb;

          D.29691 = cfg->mempool;
          ins = mono_mempool_alloc (D.29691, 56);
          ins->data.op[1].const_val = 0;
          D.33823 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.33823;
          ins->prev = 0B;
          D.33824 = ins->prev;
          ins->next = D.33824;
          ins->opcode = 654;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.33825 = ins->sreg3;
          ins->sreg2 = D.33825;
          D.33826 = ins->sreg2;
          ins->sreg1 = D.33826;
          D.29910 = cfg->ip;
          ins->cil_code = D.29910;
          if (0 != 0) goto <D.33827>; else goto <D.33828>;
          <D.33827>:
          D.29691 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.29691, 172);
          D.29798 = cfg->num_bblocks;
          D.33829 = D.29798;
          D.33830 = D.33829 + 1;
          cfg->num_bblocks = D.33830;
          D.33831 = (int) D.33829;
          falsebb->block_num = D.33831;
          ins->data.op[0].target_block = default_bblock;
          bblock.129 = cfg->cbb;
          mono_link_bblock (cfg, bblock.129, default_bblock);
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.33832>; else goto <D.33833>;
          <D.33832>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = ins;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          ins->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          goto <D.33834>;
          <D.33833>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.33834>:
          D.33835 = falsebb->cil_code;
          if (D.33835 != 0B) goto <D.33836>; else goto <D.33837>;
          <D.33836>:
          D.29821 = cfg->cil_offset_to_bb;
          D.33835 = falsebb->cil_code;
          D.33838 = (int) D.33835;
          D.29825 = cfg->cil_start;
          D.29826 = (int) D.29825;
          D.33839 = D.33838 - D.29826;
          D.33840 = (unsigned int) D.33839;
          D.33841 = D.33840 * 4;
          D.33842 = D.29821 + D.33841;
          *D.33842 = falsebb;
          <D.33837>:
          D.29857 = cfg->real_offset;
          falsebb->real_offset = D.29857;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.33846>; else goto <D.33843>;
          <D.33846>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33847 = D.29939->opcode;
          D.33848 = D.33847 + 64985;
          if (D.33848 <= 9) goto <D.33844>; else goto <D.33849>;
          <D.33849>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33847 = D.29939->opcode;
          D.33850 = D.33847 + 64878;
          if (D.33850 <= 9) goto <D.33844>; else goto <D.33851>;
          <D.33851>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33847 = D.29939->opcode;
          D.33852 = D.33847 + 64888;
          if (D.33852 <= 9) goto <D.33844>; else goto <D.33843>;
          <D.33844>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33853 = D.29939->data.op[1].many_blocks;
          D.33854 = D.33853 + 4;
          D.33855 = *D.33854;
          if (D.33855 == 0B) goto <D.33856>; else goto <D.33843>;
          <D.33856>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33853 = D.29939->data.op[1].many_blocks;
          D.33854 = D.33853 + 4;
          *D.33854 = falsebb;
          bblock.129 = cfg->cbb;
          mono_link_bblock (cfg, bblock.129, falsebb);
          goto <D.33845>;
          <D.33843>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 == 0B) goto <D.33857>; else goto <D.33859>;
          <D.33859>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33847 = D.29939->opcode;
          if (D.33847 != 442) goto <D.33860>; else goto <D.33858>;
          <D.33860>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33847 = D.29939->opcode;
          if (D.33847 != 759) goto <D.33861>; else goto <D.33858>;
          <D.33861>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33847 = D.29939->opcode;
          D.33848 = D.33847 + 64985;
          if (D.33848 > 9) goto <D.33862>; else goto <D.33858>;
          <D.33862>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33847 = D.29939->opcode;
          D.33850 = D.33847 + 64878;
          if (D.33850 > 9) goto <D.33863>; else goto <D.33858>;
          <D.33863>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33847 = D.29939->opcode;
          D.33852 = D.33847 + 64888;
          if (D.33852 > 9) goto <D.33857>; else goto <D.33858>;
          <D.33857>:
          bblock.129 = cfg->cbb;
          mono_link_bblock (cfg, bblock.129, falsebb);
          <D.33858>:
          <D.33845>:
          bblock.129 = cfg->cbb;
          bblock.129->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.33864>;
          <D.33828>:
          D.29691 = cfg->mempool;
          D.33865 = mono_mempool_alloc (D.29691, 8);
          ins->data.op[1].many_blocks = D.33865;
          D.33866 = ins->data.op[1].many_blocks;
          *D.33866 = default_bblock;
          D.33866 = ins->data.op[1].many_blocks;
          D.33867 = D.33866 + 4;
          *D.33867 = 0B;
          bblock.129 = cfg->cbb;
          mono_link_bblock (cfg, bblock.129, default_bblock);
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.33868>; else goto <D.33869>;
          <D.33868>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = ins;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          ins->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          goto <D.33870>;
          <D.33869>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.33870>:
          D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
          D.33871 = D.30081 & 8;
          if (D.33871 == 0) goto <D.33872>; else goto <D.33873>;
          <D.33872>:
          D.29691 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.29691, 172);
          D.29798 = cfg->num_bblocks;
          D.33874 = D.29798;
          D.33875 = D.33874 + 1;
          cfg->num_bblocks = D.33875;
          D.33876 = (int) D.33874;
          falsebb->block_num = D.33876;
          D.33866 = ins->data.op[1].many_blocks;
          D.33867 = D.33866 + 4;
          *D.33867 = falsebb;
          bblock.129 = cfg->cbb;
          mono_link_bblock (cfg, bblock.129, falsebb);
          D.33835 = falsebb->cil_code;
          if (D.33835 != 0B) goto <D.33877>; else goto <D.33878>;
          <D.33877>:
          D.29821 = cfg->cil_offset_to_bb;
          D.33835 = falsebb->cil_code;
          D.33838 = (int) D.33835;
          D.29825 = cfg->cil_start;
          D.29826 = (int) D.29825;
          D.33839 = D.33838 - D.29826;
          D.33840 = (unsigned int) D.33839;
          D.33841 = D.33840 * 4;
          D.33842 = D.29821 + D.33841;
          *D.33842 = falsebb;
          <D.33878>:
          D.29857 = cfg->real_offset;
          falsebb->real_offset = D.29857;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.33882>; else goto <D.33879>;
          <D.33882>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33847 = D.29939->opcode;
          D.33848 = D.33847 + 64985;
          if (D.33848 <= 9) goto <D.33880>; else goto <D.33883>;
          <D.33883>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33847 = D.29939->opcode;
          D.33850 = D.33847 + 64878;
          if (D.33850 <= 9) goto <D.33880>; else goto <D.33884>;
          <D.33884>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33847 = D.29939->opcode;
          D.33852 = D.33847 + 64888;
          if (D.33852 <= 9) goto <D.33880>; else goto <D.33879>;
          <D.33880>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33853 = D.29939->data.op[1].many_blocks;
          D.33854 = D.33853 + 4;
          D.33855 = *D.33854;
          if (D.33855 == 0B) goto <D.33885>; else goto <D.33879>;
          <D.33885>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33853 = D.29939->data.op[1].many_blocks;
          D.33854 = D.33853 + 4;
          *D.33854 = falsebb;
          bblock.129 = cfg->cbb;
          mono_link_bblock (cfg, bblock.129, falsebb);
          goto <D.33881>;
          <D.33879>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 == 0B) goto <D.33886>; else goto <D.33888>;
          <D.33888>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33847 = D.29939->opcode;
          if (D.33847 != 442) goto <D.33889>; else goto <D.33887>;
          <D.33889>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33847 = D.29939->opcode;
          if (D.33847 != 759) goto <D.33890>; else goto <D.33887>;
          <D.33890>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33847 = D.29939->opcode;
          D.33848 = D.33847 + 64985;
          if (D.33848 > 9) goto <D.33891>; else goto <D.33887>;
          <D.33891>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33847 = D.29939->opcode;
          D.33850 = D.33847 + 64878;
          if (D.33850 > 9) goto <D.33892>; else goto <D.33887>;
          <D.33892>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.33847 = D.29939->opcode;
          D.33852 = D.33847 + 64888;
          if (D.33852 > 9) goto <D.33886>; else goto <D.33887>;
          <D.33886>:
          bblock.129 = cfg->cbb;
          mono_link_bblock (cfg, bblock.129, falsebb);
          <D.33887>:
          <D.33881>:
          bblock.129 = cfg->cbb;
          bblock.129->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.33893>;
          <D.33873>:
          bblock.129 = cfg->cbb;
          bblock.129->extended = 1;
          <D.33893>:
          <D.33864>:
        }
        bblock.129 = cfg->cbb;
        bblock = bblock.129;
        i = 0;
        goto <D.27070>;
        <D.27069>:
        bblock.77 = bblock;
        i.75 = (unsigned int) i;
        D.30418 = i.75 * 4;
        D.33800 = targets + D.30418;
        D.33801 = *D.33800;
        link_bblock (cfg, bblock.77, D.33801);
        i = i + 1;
        <D.27070>:
        if (i < n) goto <D.27069>; else goto <D.27071>;
        <D.27071>:
        D.29691 = cfg->mempool;
        table = mono_mempool_alloc (D.29691, 8);
        table->table = targets;
        table->table_size = n;
        use_op_switch = 0;
        if (0 != 0) goto <D.33894>; else goto <D.33895>;
        <D.33894>:
        use_op_switch = 1;
        <D.33895>:
        bblock.129 = cfg->cbb;
        bblock.129->has_jump_table = 1;
        if (use_op_switch != 0) goto <D.33896>; else goto <D.33897>;
        <D.33896>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 370;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        D.33819 = src1->dreg;
        ins->sreg1 = D.33819;
        ins->data.op[0].p = table;
        ins->data.op[1].many_blocks = targets;
        n.159 = (struct MonoClass *) n;
        ins->klass = n.159;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.33899>; else goto <D.33900>;
        <D.33899>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.33901>;
        <D.33900>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.33901>:
        goto <D.33902>;
        <D.33897>:
        if (0 != 0) goto <D.33903>; else goto <D.33904>;
        <D.33903>:
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.33905 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.33905;
          inst->prev = 0B;
          D.33906 = inst->prev;
          inst->next = D.33906;
          inst->opcode = 439;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.33907 = inst->sreg3;
          inst->sreg2 = D.33907;
          D.33908 = inst->sreg2;
          inst->sreg1 = D.33908;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          inst->dreg = offset_reg;
          D.33819 = src1->dreg;
          inst->sreg1 = D.33819;
          inst->data.op[1].const_val = 3;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.33909>; else goto <D.33910>;
          <D.33909>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.33911>;
          <D.33910>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.33911>:
        }
        goto <D.33912>;
        <D.33904>:
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.33913 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.33913;
          inst->prev = 0B;
          D.33914 = inst->prev;
          inst->next = D.33914;
          inst->opcode = 439;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.33915 = inst->sreg3;
          inst->sreg2 = D.33915;
          D.33916 = inst->sreg2;
          inst->sreg1 = D.33916;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          inst->dreg = offset_reg;
          D.33819 = src1->dreg;
          inst->sreg1 = D.33819;
          inst->data.op[1].const_val = 2;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.33917>; else goto <D.33918>;
          <D.33917>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.33919>;
          <D.33918>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.33919>:
        }
        <D.33912>:
        D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.30082 = D.30081 & 64;
        if (D.30082 != 0) goto <D.33920>; else goto <D.33921>;
        <D.33920>:
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.33922 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.33922;
          inst->prev = 0B;
          D.33923 = inst->prev;
          inst->next = D.33923;
          D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
          D.30082 = D.30081 & 64;
          if (D.30082 != 0) goto <D.33925>; else goto <D.33926>;
          <D.33925>:
          iftmp.160 = 732;
          goto <D.33927>;
          <D.33926>:
          iftmp.160 = 362;
          <D.33927>:
          inst->opcode = iftmp.160;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.33928 = inst->sreg3;
          inst->sreg2 = D.33928;
          D.33929 = inst->sreg2;
          inst->sreg1 = D.33929;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          inst->dreg = table_reg;
          inst->data.op[0].p = table;
          inst->data.op[1].const_val = 8;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.33930>; else goto <D.33931>;
          <D.33930>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.33932>;
          <D.33931>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.33932>:
        }
        goto <D.33933>;
        <D.33921>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 731;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        ins->data.op[1].const_val = 8;
        ins->data.op[0].p = table;
        ins->dreg = table_reg;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.33934>; else goto <D.33935>;
        <D.33934>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.33936>;
        <D.33935>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.33936>:
        <D.33933>:
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.33937 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.33937;
          inst->prev = 0B;
          D.33938 = inst->prev;
          inst->next = D.33938;
          inst->opcode = 565;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.33939 = inst->sreg3;
          inst->sreg2 = D.33939;
          D.33940 = inst->sreg2;
          inst->sreg1 = D.33940;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          inst->dreg = sum_reg;
          inst->sreg1 = table_reg;
          inst->sreg2 = offset_reg;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.33941>; else goto <D.33942>;
          <D.33941>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.33943>;
          <D.33942>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.33943>:
        }
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.33944 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.33944;
          inst->prev = 0B;
          D.33945 = inst->prev;
          inst->next = D.33945;
          inst->opcode = 388;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.33946 = inst->sreg3;
          inst->sreg2 = D.33946;
          D.33947 = inst->sreg2;
          inst->sreg1 = D.33947;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          inst->dreg = target_reg;
          inst->sreg1 = sum_reg;
          inst->data.op[0].const_val = 0;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.33948>; else goto <D.33949>;
          <D.33948>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.33950>;
          <D.33949>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.33950>:
        }
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.33951 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.33951;
          inst->prev = 0B;
          D.33952 = inst->prev;
          inst->next = D.33952;
          inst->opcode = 759;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.33953 = inst->sreg3;
          inst->sreg2 = D.33953;
          D.33954 = inst->sreg2;
          inst->sreg1 = D.33954;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          inst->dreg = -1;
          inst->sreg1 = target_reg;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.33955>; else goto <D.33956>;
          <D.33955>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.33957>;
          <D.33956>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.33957>:
        }
        <D.33902>:
        start_new_bblock = 1;
        inline_costs = inline_costs + 20;
        goto <D.26808>;
      }
      <D.27078>:
      <D.27079>:
      <D.27080>:
      <D.27081>:
      <D.27082>:
      <D.27083>:
      <D.27084>:
      <D.27085>:
      <D.27086>:
      <D.27087>:
      <D.27088>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.33958>; else goto <D.33959>;
      <D.33958>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.33960>; else goto <D.33961>;
      <D.33960>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.33962>; else goto <D.33963>;
      <D.33962>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33963>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33961>:
      D.33964 = mini_get_debug_options ();
      D.33965 = D.33964->break_on_unverified;
      if (D.33965 != 0) goto <D.33966>; else goto unverified;
      <D.33966>:
      raise (5);
      <D.33959>:
      sp = sp + 4294967292;
      D.30562 = *ip;
      D.30563 = (int) D.30562;
      switch (D.30563) <default: <D.27094>, case 76: <D.27092>, case 78: <D.27089>, case 79: <D.27090>, case 80: <D.27093>>
      <D.27089>:
      <D.27090>:
      D.33967 = alloc_freg (cfg);
      dreg = (int) D.33967;
      goto <D.27091>;
      <D.27092>:
      D.33968 = alloc_lreg (cfg);
      dreg = (int) D.33968;
      goto <D.27091>;
      <D.27093>:
      D.33969 = alloc_ireg_ref (cfg);
      dreg = (int) D.33969;
      goto <D.27091>;
      <D.27094>:
      D.33970 = alloc_preg (cfg);
      dreg = (int) D.33970;
      <D.27091>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      D.30562 = *ip;
      D.30563 = (int) D.30562;
      D.33971 = ldind_to_load_membase (D.30563);
      D.33972 = (short unsigned int) D.33971;
      ins->opcode = D.33972;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      ins->dreg = dreg;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      ins->data.op[0].const_val = 0;
      ins->type = 1;
      D.30562 = *ip;
      D.30563 = (int) D.30562;
      D.33973 = D.30563 + -70;
      D.33974 = ldind_type[D.33973];
      D.33975 = (unsigned char) D.33974;
      ins->type = D.33975;
      D.30530 = ins->flags;
      D.33976 = (unsigned char) ins_flag;
      D.33977 = D.30530 | D.33976;
      ins->flags = D.33977;
      ins_flag = 0;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      if (D.30024 != 0B) goto <D.33978>; else goto <D.33979>;
      <D.33978>:
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      D.30024->next = ins;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      ins->prev = D.30024;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      goto <D.33980>;
      <D.33979>:
      bblock.77 = bblock;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      D.30024 = bblock.77->last_ins;
      bblock.77->code = D.30024;
      <D.33980>:
      sp.161 = sp;
      sp = sp.161 + 4;
      *sp.161 = ins;
      D.30530 = ins->flags;
      D.33982 = (int) D.30530;
      D.33983 = D.33982 & 4;
      if (D.33983 != 0) goto <D.33984>; else goto <D.33985>;
      <D.33984>:
      emit_memory_barrier (cfg, 4);
      <D.33985>:
      ip = ip + 1;
      goto <D.26808>;
      <D.27095>:
      <D.27096>:
      <D.27097>:
      <D.27098>:
      <D.27099>:
      <D.27100>:
      <D.27101>:
      <D.27102>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 7) goto <D.33986>; else goto <D.33987>;
      <D.33986>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.33988>; else goto <D.33989>;
      <D.33988>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.33990>; else goto <D.33991>;
      <D.33990>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.33991>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.33989>:
      D.33992 = mini_get_debug_options ();
      D.33993 = D.33992->break_on_unverified;
      if (D.33993 != 0) goto <D.33994>; else goto unverified;
      <D.33994>:
      raise (5);
      <D.33987>:
      sp = sp + 4294967288;
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      D.30562 = *ip;
      D.30563 = (int) D.30562;
      D.33995 = stind_to_store_membase (D.30563);
      D.33996 = (short unsigned int) D.33995;
      ins->opcode = D.33996;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      D.31795 = D.31794->dreg;
      ins->sreg1 = D.31795;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->dreg = D.30872;
      ins->data.op[0].const_val = 0;
      D.30530 = ins->flags;
      D.33976 = (unsigned char) ins_flag;
      D.33977 = D.30530 | D.33976;
      ins->flags = D.33977;
      ins_flag = 0;
      D.30530 = ins->flags;
      D.33982 = (int) D.30530;
      D.33983 = D.33982 & 4;
      if (D.33983 != 0) goto <D.33997>; else goto <D.33998>;
      <D.33997>:
      emit_memory_barrier (cfg, 4);
      <D.33998>:
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      if (D.30024 != 0B) goto <D.33999>; else goto <D.34000>;
      <D.33999>:
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      D.30024->next = ins;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      ins->prev = D.30024;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      goto <D.34001>;
      <D.34000>:
      bblock.77 = bblock;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      D.30024 = bblock.77->last_ins;
      bblock.77->code = D.30024;
      <D.34001>:
      D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.32859 = D.30081 & 268435456;
      if (D.32859 != 0) goto <D.34004>; else goto <D.34005>;
      <D.34004>:
      D.30562 = *ip;
      if (D.30562 == 81) goto <D.34006>; else goto <D.34007>;
      <D.34006>:
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29635 = D.29634 & 124;
      if (D.29635 != 96) goto <D.34008>; else goto <D.34009>;
      <D.34008>:
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      D.34010 = D.31794->opcode;
      if (D.34010 != 362) goto <D.34002>; else goto <D.34011>;
      <D.34011>:
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      D.34012 = D.31794->data.op[0].p;
      if (D.34012 != 0B) goto <D.34002>; else goto <D.34003>;
      <D.34002>:
      D.30679 = *sp;
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      emit_write_barrier (cfg, D.30679, D.31794);
      <D.34003>:
      <D.34009>:
      <D.34007>:
      <D.34005>:
      inline_costs = inline_costs + 1;
      ip = ip + 1;
      goto <D.26808>;
      <D.27103>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 7) goto <D.34013>; else goto <D.34014>;
      <D.34013>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34015>; else goto <D.34016>;
      <D.34015>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34017>; else goto <D.34018>;
      <D.34017>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34018>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34016>:
      D.34019 = mini_get_debug_options ();
      D.34020 = D.34019->break_on_unverified;
      if (D.34020 != 0) goto <D.34021>; else goto unverified;
      <D.34021>:
      raise (5);
      <D.34014>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      D.30562 = *ip;
      D.33334 = (short unsigned int) D.30562;
      ins->opcode = D.33334;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      sp = sp + 4294967288;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      D.31795 = D.31794->dreg;
      ins->sreg2 = D.31795;
      D.30679 = *sp;
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      type_from_op (ins, D.30679, D.31794);
      D.30432 = ins->type;
      if (D.30432 == 0) goto <D.34022>; else goto <D.34023>;
      <D.34022>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34024>; else goto <D.34025>;
      <D.34024>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34026>; else goto <D.34027>;
      <D.34026>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34027>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34025>:
      D.34028 = mini_get_debug_options ();
      D.34029 = D.34028->break_on_unverified;
      if (D.34029 != 0) goto <D.34030>; else goto unverified;
      <D.34030>:
      raise (5);
      <D.34023>:
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.34031 = alloc_dreg (cfg, D.30433);
      D.34032 = (int) D.34031;
      ins->dreg = D.34032;
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      D.34010 = D.31794->opcode;
      if (D.34010 == 362) goto <D.34033>; else goto <D.34034>;
      <D.34033>:
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      D.34035 = D.31794->data.op[0].const_val;
      D.34036 = (long long int) D.34035;
      D.34037 = mono_arch_is_inst_imm (D.34036);
      if (D.34037 != 0) goto <D.34038>; else goto <D.34039>;
      <D.34038>:
      {
        int imm_opcode;

        D.30436 = ins->opcode;
        D.34040 = (int) D.30436;
        imm_opcode = mono_op_to_op_imm_noemul (D.34040);
        if (imm_opcode != -1) goto <D.34041>; else goto <D.34042>;
        <D.34041>:
        D.34043 = (short unsigned int) imm_opcode;
        ins->opcode = D.34043;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        D.34035 = D.31794->data.op[0].const_val;
        D.34044 = (void *) D.34035;
        ins->data.op[1].p = D.34044;
        ins->sreg2 = -1;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        D.31794->opcode = 316;
        <D.34042>:
      }
      <D.34039>:
      <D.34034>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.34045>; else goto <D.34046>;
      <D.34045>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.34047>;
      <D.34046>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.34047>:
      sp.162 = sp;
      sp = sp.162 + 4;
      D.34049 = mono_decompose_opcode (cfg, ins);
      *sp.162 = D.34049;
      ip = ip + 1;
      goto <D.26808>;
      <D.27105>:
      <D.27106>:
      <D.27107>:
      <D.27108>:
      <D.27109>:
      <D.27110>:
      <D.27111>:
      <D.27112>:
      <D.27113>:
      <D.27114>:
      <D.27115>:
      <D.27116>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 7) goto <D.34050>; else goto <D.34051>;
      <D.34050>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34052>; else goto <D.34053>;
      <D.34052>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34054>; else goto <D.34055>;
      <D.34054>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34055>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34053>:
      D.34056 = mini_get_debug_options ();
      D.34057 = D.34056->break_on_unverified;
      if (D.34057 != 0) goto <D.34058>; else goto unverified;
      <D.34058>:
      raise (5);
      <D.34051>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      D.30562 = *ip;
      D.33334 = (short unsigned int) D.30562;
      ins->opcode = D.33334;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      sp = sp + 4294967288;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      D.31795 = D.31794->dreg;
      ins->sreg2 = D.31795;
      D.30679 = *sp;
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      type_from_op (ins, D.30679, D.31794);
      D.30432 = ins->type;
      if (D.30432 == 0) goto <D.34059>; else goto <D.34060>;
      <D.34059>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34061>; else goto <D.34062>;
      <D.34061>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34063>; else goto <D.34064>;
      <D.34063>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34064>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34062>:
      D.34065 = mini_get_debug_options ();
      D.34066 = D.34065->break_on_unverified;
      if (D.34066 != 0) goto <D.34067>; else goto unverified;
      <D.34067>:
      raise (5);
      <D.34060>:
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.34068 = alloc_dreg (cfg, D.30433);
      D.34069 = (int) D.34068;
      ins->dreg = D.34069;
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      D.34010 = D.31794->opcode;
      D.34070 = D.34010 + 65174;
      if (D.34070 <= 1) goto <D.34071>; else goto <D.34072>;
      <D.34071>:
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      D.34010 = D.31794->opcode;
      if (D.34010 == 362) goto <D.34074>; else goto <D.34075>;
      <D.34074>:
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      D.34035 = D.31794->data.op[0].const_val;
      iftmp.163 = (gint64) D.34035;
      goto <D.34076>;
      <D.34075>:
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      iftmp.163 = D.31794->data.i8const;
      <D.34076>:
      D.34077 = mono_arch_is_inst_imm (iftmp.163);
      if (D.34077 != 0) goto <D.34078>; else goto <D.34079>;
      <D.34078>:
      {
        int imm_opcode;

        D.30436 = ins->opcode;
        D.34040 = (int) D.30436;
        imm_opcode = mono_op_to_op_imm_noemul (D.34040);
        if (imm_opcode != -1) goto <D.34080>; else goto <D.34081>;
        <D.34080>:
        D.34082 = (short unsigned int) imm_opcode;
        ins->opcode = D.34082;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        D.34010 = D.31794->opcode;
        if (D.34010 == 363) goto <D.34083>; else goto <D.34084>;
        <D.34083>:
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        D.34035 = D.31794->data.op[0].const_val;
        ins->data.op[0].const_val = D.34035;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        D.34085 = D.31794->data.op[1].const_val;
        ins->data.op[1].const_val = D.34085;
        goto <D.34086>;
        <D.34084>:
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        D.34035 = D.31794->data.op[0].const_val;
        ins->data.op[1].const_val = D.34035;
        <D.34086>:
        ins->sreg2 = -1;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        D.34087 = D.31794->next;
        if (D.34087 == 0B) goto <D.34088>; else goto <D.34089>;
        <D.34088>:
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        D.31794->opcode = 316;
        <D.34089>:
        <D.34081>:
      }
      <D.34079>:
      <D.34072>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.34090>; else goto <D.34091>;
      <D.34090>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.34092>;
      <D.34091>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.34092>:
      sp.164 = sp;
      sp = sp.164 + 4;
      D.34094 = mono_decompose_opcode (cfg, ins);
      *sp.164 = D.34094;
      ip = ip + 1;
      goto <D.26808>;
      <D.27118>:
      <D.27119>:
      <D.27120>:
      <D.27121>:
      <D.27122>:
      <D.27123>:
      <D.27124>:
      <D.27125>:
      <D.27126>:
      <D.27127>:
      <D.27128>:
      <D.27129>:
      <D.27130>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.34095>; else goto <D.34096>;
      <D.34095>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34097>; else goto <D.34098>;
      <D.34097>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34099>; else goto <D.34100>;
      <D.34099>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34100>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34098>:
      D.34101 = mini_get_debug_options ();
      D.34102 = D.34101->break_on_unverified;
      if (D.34102 != 0) goto <D.34103>; else goto unverified;
      <D.34103>:
      raise (5);
      <D.34096>:
      D.30562 = *ip;
      if (D.30562 == 106) goto <D.34104>; else goto <D.34107>;
      <D.34107>:
      D.30562 = *ip;
      if (D.30562 == 110) goto <D.34104>; else goto <D.34105>;
      <D.34104>:
      D.33483 = sp + 4294967292;
      D.33484 = *D.33483;
      D.34108 = D.33484->opcode;
      if (D.34108 == 362) goto <D.34109>; else goto <D.34105>;
      <D.34109>:
      {
        int data;

        D.33483 = sp + 4294967292;
        D.33484 = *D.33483;
        data = D.33484->data.op[0].const_val;
        D.33483 = sp + 4294967292;
        D.33484 = *D.33483;
        D.33484->opcode = 363;
        D.33483 = sp + 4294967292;
        D.33484 = *D.33483;
        D.33484->type = 2;
        D.33483 = sp + 4294967292;
        D.33484 = *D.33483;
        D.33484->data.op[0].const_val = data;
        D.30562 = *ip;
        if (D.30562 == 110) goto <D.34110>; else goto <D.34111>;
        <D.34110>:
        D.33483 = sp + 4294967292;
        D.33484 = *D.33483;
        D.33484->data.op[1].const_val = 0;
        goto <D.34112>;
        <D.34111>:
        D.33483 = sp + 4294967292;
        D.33484 = *D.33483;
        if (data < 0) goto <D.34114>; else goto <D.34115>;
        <D.34114>:
        iftmp.165 = -1;
        goto <D.34116>;
        <D.34115>:
        iftmp.165 = 0;
        <D.34116>:
        D.33484->data.op[1].const_val = iftmp.165;
        <D.34112>:
        D.33483 = sp + 4294967292;
        D.33484 = *D.33483;
        D.34117 = alloc_dreg (cfg, 2);
        D.34118 = (int) D.34117;
        D.33484->dreg = D.34118;
      }
      goto <D.34106>;
      <D.34105>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      D.30562 = *ip;
      D.33334 = (short unsigned int) D.30562;
      ins->opcode = D.33334;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      sp = sp + 4294967292;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      D.30679 = *sp;
      type_from_op (ins, D.30679, 0B);
      D.30432 = ins->type;
      if (D.30432 == 0) goto <D.34119>; else goto <D.34120>;
      <D.34119>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34121>; else goto <D.34122>;
      <D.34121>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34123>; else goto <D.34124>;
      <D.34123>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34124>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34122>:
      D.34125 = mini_get_debug_options ();
      D.34126 = D.34125->break_on_unverified;
      if (D.34126 != 0) goto <D.34127>; else goto unverified;
      <D.34127>:
      raise (5);
      <D.34120>:
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.34128 = alloc_dreg (cfg, D.30433);
      D.34129 = (int) D.34128;
      ins->dreg = D.34129;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.34130>; else goto <D.34131>;
      <D.34130>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.34132>;
      <D.34131>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.34132>:
      sp.166 = sp;
      sp = sp.166 + 4;
      D.34134 = mono_decompose_opcode (cfg, ins);
      *sp.166 = D.34134;
      <D.34106>:
      ip = ip + 1;
      goto <D.26808>;
      <D.27132>:
      <D.27133>:
      <D.27134>:
      <D.27135>:
      <D.27136>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.34135>; else goto <D.34136>;
      <D.34135>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34137>; else goto <D.34138>;
      <D.34137>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34139>; else goto <D.34140>;
      <D.34139>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34140>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34138>:
      D.34141 = mini_get_debug_options ();
      D.34142 = D.34141->break_on_unverified;
      if (D.34142 != 0) goto <D.34143>; else goto unverified;
      <D.34143>:
      raise (5);
      <D.34136>:
      D.33483 = sp + 4294967292;
      D.33484 = *D.33483;
      D.33485 = D.33484->type;
      if (D.33485 == 4) goto <D.34144>; else goto <D.34145>;
      <D.34144>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 185;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      sp = sp + 4294967292;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      D.30679 = *sp;
      type_from_op (ins, D.30679, 0B);
      D.30432 = ins->type;
      if (D.30432 == 0) goto <D.34146>; else goto <D.34147>;
      <D.34146>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34148>; else goto <D.34149>;
      <D.34148>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34150>; else goto <D.34151>;
      <D.34150>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34151>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34149>:
      D.34152 = mini_get_debug_options ();
      D.34153 = D.34152->break_on_unverified;
      if (D.34153 != 0) goto <D.34154>; else goto unverified;
      <D.34154>:
      raise (5);
      <D.34147>:
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.34155 = alloc_dreg (cfg, D.30433);
      D.34156 = (int) D.34155;
      ins->dreg = D.34156;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.34157>; else goto <D.34158>;
      <D.34157>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.34159>;
      <D.34158>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.34159>:
      sp.167 = sp;
      sp = sp.167 + 4;
      D.34161 = mono_decompose_opcode (cfg, ins);
      *sp.167 = D.34161;
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      D.30562 = *ip;
      D.33334 = (short unsigned int) D.30562;
      ins->opcode = D.33334;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      sp = sp + 4294967292;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      D.30679 = *sp;
      type_from_op (ins, D.30679, 0B);
      D.30432 = ins->type;
      if (D.30432 == 0) goto <D.34162>; else goto <D.34163>;
      <D.34162>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34164>; else goto <D.34165>;
      <D.34164>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34166>; else goto <D.34167>;
      <D.34166>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34167>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34165>:
      D.34168 = mini_get_debug_options ();
      D.34169 = D.34168->break_on_unverified;
      if (D.34169 != 0) goto <D.34170>; else goto unverified;
      <D.34170>:
      raise (5);
      <D.34163>:
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.34171 = alloc_dreg (cfg, D.30433);
      D.34172 = (int) D.34171;
      ins->dreg = D.34172;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.34173>; else goto <D.34174>;
      <D.34173>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.34175>;
      <D.34174>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.34175>:
      sp.168 = sp;
      sp = sp.168 + 4;
      D.34177 = mono_decompose_opcode (cfg, ins);
      *sp.168 = D.34177;
      goto <D.34178>;
      <D.34145>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      D.30562 = *ip;
      D.33334 = (short unsigned int) D.30562;
      ins->opcode = D.33334;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      sp = sp + 4294967292;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      D.30679 = *sp;
      type_from_op (ins, D.30679, 0B);
      D.30432 = ins->type;
      if (D.30432 == 0) goto <D.34179>; else goto <D.34180>;
      <D.34179>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34181>; else goto <D.34182>;
      <D.34181>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34183>; else goto <D.34184>;
      <D.34183>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34184>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34182>:
      D.34185 = mini_get_debug_options ();
      D.34186 = D.34185->break_on_unverified;
      if (D.34186 != 0) goto <D.34187>; else goto unverified;
      <D.34187>:
      raise (5);
      <D.34180>:
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.34188 = alloc_dreg (cfg, D.30433);
      D.34189 = (int) D.34188;
      ins->dreg = D.34189;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.34190>; else goto <D.34191>;
      <D.34190>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.34192>;
      <D.34191>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.34192>:
      sp.169 = sp;
      sp = sp.169 + 4;
      D.34194 = mono_decompose_opcode (cfg, ins);
      *sp.169 = D.34194;
      <D.34178>:
      ip = ip + 1;
      goto <D.26808>;
      <D.27137>:
      <D.27138>:
      <D.27139>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.34195>; else goto <D.34196>;
      <D.34195>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34197>; else goto <D.34198>;
      <D.34197>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34199>; else goto <D.34200>;
      <D.34199>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34200>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34198>:
      D.34201 = mini_get_debug_options ();
      D.34202 = D.34201->break_on_unverified;
      if (D.34202 != 0) goto <D.34203>; else goto unverified;
      <D.34203>:
      raise (5);
      <D.34196>:
      D.33483 = sp + 4294967292;
      D.33484 = *D.33483;
      D.33485 = D.33484->type;
      if (D.33485 == 4) goto <D.34204>; else goto <D.34205>;
      <D.34204>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 186;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      sp = sp + 4294967292;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      D.30679 = *sp;
      type_from_op (ins, D.30679, 0B);
      D.30432 = ins->type;
      if (D.30432 == 0) goto <D.34206>; else goto <D.34207>;
      <D.34206>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34208>; else goto <D.34209>;
      <D.34208>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34210>; else goto <D.34211>;
      <D.34210>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34211>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34209>:
      D.34212 = mini_get_debug_options ();
      D.34213 = D.34212->break_on_unverified;
      if (D.34213 != 0) goto <D.34214>; else goto unverified;
      <D.34214>:
      raise (5);
      <D.34207>:
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.34215 = alloc_dreg (cfg, D.30433);
      D.34216 = (int) D.34215;
      ins->dreg = D.34216;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.34217>; else goto <D.34218>;
      <D.34217>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.34219>;
      <D.34218>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.34219>:
      sp.170 = sp;
      sp = sp.170 + 4;
      D.34221 = mono_decompose_opcode (cfg, ins);
      *sp.170 = D.34221;
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      D.30562 = *ip;
      D.33334 = (short unsigned int) D.30562;
      ins->opcode = D.33334;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      sp = sp + 4294967292;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      D.30679 = *sp;
      type_from_op (ins, D.30679, 0B);
      D.30432 = ins->type;
      if (D.30432 == 0) goto <D.34222>; else goto <D.34223>;
      <D.34222>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34224>; else goto <D.34225>;
      <D.34224>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34226>; else goto <D.34227>;
      <D.34226>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34227>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34225>:
      D.34228 = mini_get_debug_options ();
      D.34229 = D.34228->break_on_unverified;
      if (D.34229 != 0) goto <D.34230>; else goto unverified;
      <D.34230>:
      raise (5);
      <D.34223>:
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.34231 = alloc_dreg (cfg, D.30433);
      D.34232 = (int) D.34231;
      ins->dreg = D.34232;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.34233>; else goto <D.34234>;
      <D.34233>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.34235>;
      <D.34234>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.34235>:
      sp.171 = sp;
      sp = sp.171 + 4;
      D.34237 = mono_decompose_opcode (cfg, ins);
      *sp.171 = D.34237;
      goto <D.34238>;
      <D.34205>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      D.30562 = *ip;
      D.33334 = (short unsigned int) D.30562;
      ins->opcode = D.33334;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      sp = sp + 4294967292;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      D.30679 = *sp;
      type_from_op (ins, D.30679, 0B);
      D.30432 = ins->type;
      if (D.30432 == 0) goto <D.34239>; else goto <D.34240>;
      <D.34239>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34241>; else goto <D.34242>;
      <D.34241>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34243>; else goto <D.34244>;
      <D.34243>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34244>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34242>:
      D.34245 = mini_get_debug_options ();
      D.34246 = D.34245->break_on_unverified;
      if (D.34246 != 0) goto <D.34247>; else goto unverified;
      <D.34247>:
      raise (5);
      <D.34240>:
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.34248 = alloc_dreg (cfg, D.30433);
      D.34249 = (int) D.34248;
      ins->dreg = D.34249;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.34250>; else goto <D.34251>;
      <D.34250>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.34252>;
      <D.34251>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.34252>:
      sp.172 = sp;
      sp = sp.172 + 4;
      D.34254 = mono_decompose_opcode (cfg, ins);
      *sp.172 = D.34254;
      <D.34238>:
      ip = ip + 1;
      goto <D.26808>;
      <D.27140>:
      <D.27141>:
      <D.27142>:
      <D.27143>:
      <D.27144>:
      <D.27145>:
      <D.27146>:
      <D.27147>:
      <D.27148>:
      <D.27149>:
      <D.27150>:
      <D.27151>:
      <D.27152>:
      <D.27153>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.34255>; else goto <D.34256>;
      <D.34255>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34257>; else goto <D.34258>;
      <D.34257>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34259>; else goto <D.34260>;
      <D.34259>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34260>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34258>:
      D.34261 = mini_get_debug_options ();
      D.34262 = D.34261->break_on_unverified;
      if (D.34262 != 0) goto <D.34263>; else goto unverified;
      <D.34263>:
      raise (5);
      <D.34256>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      D.30562 = *ip;
      D.33334 = (short unsigned int) D.30562;
      ins->opcode = D.33334;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      sp = sp + 4294967292;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      D.30679 = *sp;
      type_from_op (ins, D.30679, 0B);
      D.30432 = ins->type;
      if (D.30432 == 0) goto <D.34264>; else goto <D.34265>;
      <D.34264>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34266>; else goto <D.34267>;
      <D.34266>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34268>; else goto <D.34269>;
      <D.34268>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34269>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34267>:
      D.34270 = mini_get_debug_options ();
      D.34271 = D.34270->break_on_unverified;
      if (D.34271 != 0) goto <D.34272>; else goto unverified;
      <D.34272>:
      raise (5);
      <D.34265>:
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.34273 = alloc_dreg (cfg, D.30433);
      D.34274 = (int) D.34273;
      ins->dreg = D.34274;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.34275>; else goto <D.34276>;
      <D.34275>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.34277>;
      <D.34276>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.34277>:
      sp.173 = sp;
      sp = sp.173 + 4;
      D.34279 = mono_decompose_opcode (cfg, ins);
      *sp.173 = D.34279;
      D.30240 = cfg->exception_type;
      if (D.30240 != 0) goto exception_exit; else goto <D.34280>;
      <D.34280>:
      ip = ip + 1;
      goto <D.26808>;
      <D.27154>:
      <D.27155>:
      <D.27156>:
      <D.27157>:
      <D.27158>:
      <D.27159>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 7) goto <D.34281>; else goto <D.34282>;
      <D.34281>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34283>; else goto <D.34284>;
      <D.34283>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34285>; else goto <D.34286>;
      <D.34285>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34286>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34284>:
      D.34287 = mini_get_debug_options ();
      D.34288 = D.34287->break_on_unverified;
      if (D.34288 != 0) goto <D.34289>; else goto unverified;
      <D.34289>:
      raise (5);
      <D.34282>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      D.30562 = *ip;
      D.33334 = (short unsigned int) D.30562;
      ins->opcode = D.33334;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      sp = sp + 4294967288;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      D.31795 = D.31794->dreg;
      ins->sreg2 = D.31795;
      D.30679 = *sp;
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      type_from_op (ins, D.30679, D.31794);
      D.30432 = ins->type;
      if (D.30432 == 0) goto <D.34290>; else goto <D.34291>;
      <D.34290>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34292>; else goto <D.34293>;
      <D.34292>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34294>; else goto <D.34295>;
      <D.34294>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34295>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34293>:
      D.34296 = mini_get_debug_options ();
      D.34297 = D.34296->break_on_unverified;
      if (D.34297 != 0) goto <D.34298>; else goto unverified;
      <D.34298>:
      raise (5);
      <D.34291>:
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.34299 = alloc_dreg (cfg, D.30433);
      D.34300 = (int) D.34299;
      ins->dreg = D.34300;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.34301>; else goto <D.34302>;
      <D.34301>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.34303>;
      <D.34302>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.34303>:
      sp.174 = sp;
      sp = sp.174 + 4;
      D.34305 = mono_decompose_opcode (cfg, ins);
      *sp.174 = D.34305;
      ip = ip + 1;
      goto <D.26808>;
      <D.27160>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34306>; else goto <D.34307>;
      <D.34306>:
      D.29629 = method->klass;
      D.31352 = D.29629->name_space;
      D.29629 = method->klass;
      D.31353 = D.29629->name;
      D.31354 = method->name;
      D.31355 = method->signature;
      D.31356 = D.31355->param_count;
      D.31357 = (int) D.31356;
      D.30562 = *ip;
      D.30563 = (int) D.30562;
      D.34308 = mono_opcode_name (D.30563);
      D.34309 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.31352, D.31353, D.31354, D.31357, D.34308, "method-to-ir.c", 9069);
      cfg->exception_message = D.34309;
      D.29771 = cfg->verbose_level;
      if (D.29771 > 1) goto <D.34310>; else goto <D.34311>;
      <D.34310>:
      D.31362 = cfg->exception_message;
      printf ("%s\n", D.31362);
      <D.34311>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34307>:
      D.31124 = ip + 5;
      if (D.31124 > end) goto <D.34312>; else goto <D.34313>;
      <D.34312>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34314>; else goto <D.34315>;
      <D.34314>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34316>; else goto <D.34317>;
      <D.34316>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34317>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34315>:
      D.34318 = mini_get_debug_options ();
      D.34319 = D.34318->break_on_unverified;
      if (D.34319 != 0) goto <D.34320>; else goto unverified;
      <D.34320>:
      raise (5);
      <D.34313>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 7) goto <D.34321>; else goto <D.34322>;
      <D.34321>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34323>; else goto <D.34324>;
      <D.34323>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34325>; else goto <D.34326>;
      <D.34325>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34326>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34324>:
      D.34327 = mini_get_debug_options ();
      D.34328 = D.34327->break_on_unverified;
      if (D.34328 != 0) goto <D.34329>; else goto unverified;
      <D.34329>:
      raise (5);
      <D.34322>:
      D.31143 = ip + 1;
      token = mono_read32 (D.31143);
      klass.175 = mini_get_class (method, token, generic_context);
      klass = klass.175;
      klass.176 = klass;
      if (klass.176 == 0B) goto <D.34331>; else goto <D.34334>;
      <D.34334>:
      klass.176 = klass;
      D.34335 = klass.176->exception_type;
      if (D.34335 != 0) goto <D.34331>; else goto <D.34332>;
      <D.34331>:
      klass.176 = klass;
      cfg->exception_ptr = klass.176;
      D.34336 = mini_get_debug_options ();
      D.34337 = D.34336->break_on_unverified;
      if (D.34337 != 0) goto <D.34338>; else goto load_error;
      <D.34338>:
      raise (5);
      <D.34332>:
      sp = sp + 4294967288;
      klass.176 = klass;
      D.34339 = generic_class_is_reference_type (cfg, klass.176);
      if (D.34339 != 0) goto <D.34340>; else goto <D.34341>;
      <D.34340>:
      {
        struct MonoInst * store;
        struct MonoInst * load;
        int dreg;

        D.34342 = alloc_ireg_ref (cfg);
        dreg = (int) D.34342;
        D.29691 = cfg->mempool;
        load = mono_mempool_alloc (D.29691, 56);
        load->data.op[1].const_val = 0;
        D.34343 = load->data.op[1].const_val;
        load->data.op[0].const_val = D.34343;
        load->prev = 0B;
        D.34344 = load->prev;
        load->next = D.34344;
        load->opcode = 388;
        load->flags = 0;
        load->type = 0;
        load->dreg = -1;
        load->sreg3 = -1;
        D.34345 = load->sreg3;
        load->sreg2 = D.34345;
        D.34346 = load->sreg2;
        load->sreg1 = D.34346;
        D.29910 = cfg->ip;
        load->cil_code = D.29910;
        load->dreg = dreg;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        D.31795 = D.31794->dreg;
        load->sreg1 = D.31795;
        load->data.op[0].const_val = 0;
        load->type = 1;
        D.34347 = load->flags;
        D.33976 = (unsigned char) ins_flag;
        D.34348 = D.34347 | D.33976;
        load->flags = D.34348;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.34349>; else goto <D.34350>;
        <D.34349>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = load;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        load->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = load;
        goto <D.34351>;
        <D.34350>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = load;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.34351>:
        D.29691 = cfg->mempool;
        store = mono_mempool_alloc (D.29691, 56);
        store->data.op[1].const_val = 0;
        D.34352 = store->data.op[1].const_val;
        store->data.op[0].const_val = D.34352;
        store->prev = 0B;
        D.34353 = store->prev;
        store->next = D.34353;
        store->opcode = 374;
        store->flags = 0;
        store->type = 0;
        store->dreg = -1;
        store->sreg3 = -1;
        D.34354 = store->sreg3;
        store->sreg2 = D.34354;
        D.34355 = store->sreg2;
        store->sreg1 = D.34355;
        D.29910 = cfg->ip;
        store->cil_code = D.29910;
        store->sreg1 = dreg;
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        store->dreg = D.30872;
        store->data.op[0].const_val = 0;
        D.34356 = store->flags;
        D.33976 = (unsigned char) ins_flag;
        D.34357 = D.34356 | D.33976;
        store->flags = D.34357;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.34358>; else goto <D.34359>;
        <D.34358>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = store;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        store->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = store;
        goto <D.34360>;
        <D.34359>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = store;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.34360>:
        D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.32859 = D.30081 & 268435456;
        if (D.32859 != 0) goto <D.34361>; else goto <D.34362>;
        <D.34361>:
        D.29662 = cfg->method;
        D.31591 = BIT_FIELD_REF <*D.29662, 32, 160>;
        D.31592 = D.31591 & 124;
        if (D.31592 != 96) goto <D.34363>; else goto <D.34364>;
        <D.34363>:
        D.30679 = *sp;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        emit_write_barrier (cfg, D.30679, D.31794);
        <D.34364>:
        <D.34362>:
      }
      goto <D.34365>;
      <D.34341>:
      D.30679 = *sp;
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      klass.176 = klass;
      mini_emit_stobj (cfg, D.30679, D.31794, klass.176, 0);
      <D.34365>:
      ins_flag = 0;
      ip = ip + 5;
      goto <D.26808>;
      <D.27164>:
      {
        int loc_index;
        int stloc_len;

        loc_index = -1;
        stloc_len = 0;
        D.31124 = ip + 5;
        if (D.31124 > end) goto <D.34366>; else goto <D.34367>;
        <D.34366>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.34368>; else goto <D.34369>;
        <D.34368>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.34370>; else goto <D.34371>;
        <D.34370>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34371>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34369>:
        D.34372 = mini_get_debug_options ();
        D.34373 = D.34372->break_on_unverified;
        if (D.34373 != 0) goto <D.34374>; else goto unverified;
        <D.34374>:
        raise (5);
        <D.34367>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        if (D.30457 <= 3) goto <D.34375>; else goto <D.34376>;
        <D.34375>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.34377>; else goto <D.34378>;
        <D.34377>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.34379>; else goto <D.34380>;
        <D.34379>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34380>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34378>:
        D.34381 = mini_get_debug_options ();
        D.34382 = D.34381->break_on_unverified;
        if (D.34382 != 0) goto <D.34383>; else goto unverified;
        <D.34383>:
        raise (5);
        <D.34376>:
        sp = sp + 4294967292;
        D.31143 = ip + 1;
        token = mono_read32 (D.31143);
        klass.177 = mini_get_class (method, token, generic_context);
        klass = klass.177;
        klass.176 = klass;
        if (klass.176 == 0B) goto <D.34385>; else goto <D.34387>;
        <D.34387>:
        klass.176 = klass;
        D.34335 = klass.176->exception_type;
        if (D.34335 != 0) goto <D.34385>; else goto <D.34386>;
        <D.34385>:
        klass.176 = klass;
        cfg->exception_ptr = klass.176;
        D.34388 = mini_get_debug_options ();
        D.34389 = D.34388->break_on_unverified;
        if (D.34389 != 0) goto <D.34390>; else goto load_error;
        <D.34390>:
        raise (5);
        <D.34386>:
        D.31124 = ip + 5;
        D.31637 = *D.31124;
        D.34391 = (int) D.31637;
        switch (D.34391) <default: <D.27173>, case 10: <D.27169>, case 11: <D.27170>, case 12: <D.27171>, case 13: <D.27172>, case 19: <D.27167>>
        <D.27167>:
        D.34392 = ip + 6;
        D.34393 = *D.34392;
        loc_index = (int) D.34393;
        stloc_len = 2;
        goto <D.27168>;
        <D.27169>:
        <D.27170>:
        <D.27171>:
        <D.27172>:
        D.31124 = ip + 5;
        D.31637 = *D.31124;
        D.34391 = (int) D.31637;
        loc_index = D.34391 + -10;
        stloc_len = 1;
        goto <D.27168>;
        <D.27173>:
        goto <D.27168>;
        <D.27168>:
        if (loc_index != -1) goto <D.34394>; else goto <D.34395>;
        <D.34394>:
        bblock.77 = bblock;
        D.32590 = ip + 5;
        D.34396 = ip_in_bb (cfg, bblock.77, D.32590);
        if (D.34396 != 0) goto <D.34397>; else goto <D.34398>;
        <D.34397>:
        loc_index.178 = (unsigned int) loc_index;
        D.30276 = header->num_locals;
        D.30633 = (unsigned int) D.30276;
        if (loc_index.178 >= D.30633) goto <D.34400>; else goto <D.34401>;
        <D.34400>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.34402>; else goto <D.34403>;
        <D.34402>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.34404>; else goto <D.34405>;
        <D.34404>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34405>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34403>:
        D.34406 = mini_get_debug_options ();
        D.34407 = D.34406->break_on_unverified;
        if (D.34407 != 0) goto <D.34408>; else goto unverified;
        <D.34408>:
        raise (5);
        <D.34401>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        klass.176 = klass;
        D.34409 = &klass.176->byval_arg;
        D.34410 = mono_type_to_load_membase (cfg, D.34409);
        D.34411 = (short unsigned int) D.34410;
        ins->opcode = D.34411;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        ins->dreg = 0;
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        ins->sreg1 = D.30872;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        klass.176 = klass;
        D.34409 = &klass.176->byval_arg;
        type_to_eval_stack_type (cfg, D.34409, ins);
        D.30432 = ins->type;
        D.30433 = (<unnamed type>) D.30432;
        D.34412 = alloc_dreg (cfg, D.30433);
        D.34413 = (int) D.34412;
        ins->dreg = D.34413;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.34414>; else goto <D.34415>;
        <D.34414>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.34416>;
        <D.34415>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.34416>:
        D.30645 = cfg->locals;
        loc_index.178 = (unsigned int) loc_index;
        D.34417 = loc_index.178 * 4;
        D.34418 = D.30645 + D.34417;
        D.34419 = *D.34418;
        D.34420 = D.34419->dreg;
        ins->dreg = D.34420;
        ip = ip + 5;
        stloc_len.179 = (sizetype) stloc_len;
        ip = ip + stloc_len.179;
        goto <D.26808>;
        <D.34398>:
        <D.34395>:
        D.31124 = ip + 5;
        D.31637 = *D.31124;
        if (D.31637 == 129) goto <D.34422>; else goto <D.34423>;
        <D.34422>:
        bblock.77 = bblock;
        D.32590 = ip + 5;
        D.34424 = ip_in_bb (cfg, bblock.77, D.32590);
        if (D.34424 != 0) goto <D.34425>; else goto <D.34426>;
        <D.34425>:
        D.34427 = ip + 6;
        D.34428 = mono_read32 (D.34427);
        if (D.34428 == token) goto <D.34429>; else goto <D.34430>;
        <D.34429>:
        klass.176 = klass;
        D.34431 = generic_class_is_reference_type (cfg, klass.176);
        if (D.34431 == 0) goto <D.34432>; else goto <D.34433>;
        <D.34432>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        if (D.30457 <= 3) goto <D.34434>; else goto <D.34435>;
        <D.34434>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.34436>; else goto <D.34437>;
        <D.34436>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 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>:
        sp = sp + 4294967292;
        D.30679 = *sp;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        klass.176 = klass;
        mini_emit_stobj (cfg, D.30679, D.31794, klass.176, 0);
        ip = ip + 10;
        ins_flag = 0;
        goto <D.26808>;
        <D.34433>:
        <D.34430>:
        <D.34426>:
        <D.34423>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        klass.176 = klass;
        D.34409 = &klass.176->byval_arg;
        D.34443 = mono_type_to_load_membase (cfg, D.34409);
        D.34444 = (short unsigned int) D.34443;
        ins->opcode = D.34444;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        ins->dreg = 0;
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        ins->sreg1 = D.30872;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        klass.176 = klass;
        D.34409 = &klass.176->byval_arg;
        type_to_eval_stack_type (cfg, D.34409, ins);
        D.30432 = ins->type;
        D.30433 = (<unnamed type>) D.30432;
        D.34445 = alloc_dreg (cfg, D.30433);
        D.34446 = (int) D.34445;
        ins->dreg = D.34446;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.34447>; else goto <D.34448>;
        <D.34447>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.34449>;
        <D.34448>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.34449>:
        sp.180 = sp;
        sp = sp.180 + 4;
        *sp.180 = ins;
        ip = ip + 5;
        ins_flag = 0;
        inline_costs = inline_costs + 1;
        goto <D.26808>;
      }
      <D.27174>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      D.30371 = header->max_stack;
      D.30372 = (int) D.30371;
      if (D.30458 >= D.30372) goto <D.34451>; else goto <D.34452>;
      <D.34451>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34453>; else goto <D.34454>;
      <D.34453>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34455>; else goto <D.34456>;
      <D.34455>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34456>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34454>:
      D.34457 = mini_get_debug_options ();
      D.34458 = D.34457->break_on_unverified;
      if (D.34458 != 0) goto <D.34459>; else goto unverified;
      <D.34459>:
      raise (5);
      <D.34452>:
      D.31124 = ip + 5;
      if (D.31124 > end) goto <D.34460>; else goto <D.34461>;
      <D.34460>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.34462>; else goto <D.34463>;
      <D.34462>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.34464>; else goto <D.34465>;
      <D.34464>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34465>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34463>:
      D.34466 = mini_get_debug_options ();
      D.34467 = D.34466->break_on_unverified;
      if (D.34467 != 0) goto <D.34468>; else goto unverified;
      <D.34468>:
      raise (5);
      <D.34461>:
      D.31143 = ip + 1;
      D.34469 = mono_read32 (D.31143);
      n = (int) D.34469;
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29635 = D.29634 & 124;
      if (D.29635 == 68) goto <D.34470>; else goto <D.34471>;
      <D.34470>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      n.181 = (unsigned int) n;
      D.34473 = mono_method_get_wrapper_data (method, n.181);
      ins->data.op[0].p = D.34473;
      ins->type = 3;
      D.34474 = alloc_dreg (cfg, 3);
      D.34475 = (int) D.34474;
      ins->dreg = D.34475;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.34476>; else goto <D.34477>;
      <D.34476>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.34478>;
      <D.34477>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.34478>:
      ins->type = 6;
      *sp = ins;
      goto <D.34479>;
      <D.34471>:
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29635 = D.29634 & 124;
      if (D.29635 != 0) goto <D.34480>; else goto <D.34481>;
      <D.34480>:
      {
        struct MonoInst * iargs[1];

        try
          {
            D.29691 = cfg->mempool;
            D.34482 = mono_mempool_alloc (D.29691, 56);
            iargs[0] = D.34482;
            D.34483 = iargs[0];
            D.34483 = iargs[0];
            D.34483->data.op[1].const_val = 0;
            D.34484 = D.34483->data.op[1].const_val;
            D.34483->data.op[0].const_val = D.34484;
            D.34483 = iargs[0];
            D.34483 = iargs[0];
            D.34483->prev = 0B;
            D.34485 = D.34483->prev;
            D.34483->next = D.34485;
            D.34483 = iargs[0];
            D.34483->opcode = 362;
            D.34483 = iargs[0];
            D.34483->flags = 0;
            D.34483 = iargs[0];
            D.34483->type = 0;
            D.34483 = iargs[0];
            D.34483->dreg = -1;
            D.34483 = iargs[0];
            D.34483 = iargs[0];
            D.34483 = iargs[0];
            D.34483->sreg3 = -1;
            D.34486 = D.34483->sreg3;
            D.34483->sreg2 = D.34486;
            D.34487 = D.34483->sreg2;
            D.34483->sreg1 = D.34487;
            D.34483 = iargs[0];
            D.29910 = cfg->ip;
            D.34483->cil_code = D.29910;
            D.34483 = iargs[0];
            n.181 = (unsigned int) n;
            D.34488 = mono_method_get_wrapper_data (method, n.181);
            D.34483->data.op[0].p = D.34488;
            D.34483 = iargs[0];
            D.34483->type = 3;
            D.34483 = iargs[0];
            D.34489 = alloc_dreg (cfg, 3);
            D.34490 = (int) D.34489;
            D.34483->dreg = D.34490;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.34491>; else goto <D.34492>;
            <D.34491>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.34483 = iargs[0];
            D.29939->next = D.34483;
            D.34483 = iargs[0];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.34483->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.34483 = iargs[0];
            bblock.129->last_ins = D.34483;
            goto <D.34493>;
            <D.34492>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.34483 = iargs[0];
            bblock.129->last_ins = D.34483;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.34493>:
            D.34494 = mono_emit_jit_icall (cfg, mono_string_new_wrapper, &iargs);
            *sp = D.34494;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.34495>;
      <D.34481>:
      D.30079 = cfg->opt;
      D.30080 = D.30079 & 512;
      if (D.30080 != 0) goto <D.34496>; else goto <D.34497>;
      <D.34496>:
      {
        struct MonoInst * iargs[3];

        try
          {
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.34498>; else goto <D.34499>;
            <D.34498>:
            D.34500 = cfg->ldstr_list;
            n.182 = (void *) n;
            D.34502 = monoeg_g_list_prepend (D.34500, n.182);
            cfg->ldstr_list = D.34502;
            <D.34499>:
            D.30079 = cfg->opt;
            D.30080 = D.30079 & 512;
            if (D.30080 != 0) goto <D.34503>; else goto <D.34506>;
            <D.34506>:
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.34503>; else goto <D.34504>;
            <D.34503>:
            {
              struct MonoInst * __domain_var;

              __domain_var = mono_get_domainvar (cfg);
              D.29691 = cfg->mempool;
              D.34507 = mono_mempool_alloc (D.29691, 56);
              iargs[0] = D.34507;
              D.34508 = iargs[0];
              D.34508 = iargs[0];
              D.34508->data.op[1].const_val = 0;
              D.34509 = D.34508->data.op[1].const_val;
              D.34508->data.op[0].const_val = D.34509;
              D.34508 = iargs[0];
              D.34508 = iargs[0];
              D.34508->prev = 0B;
              D.34510 = D.34508->prev;
              D.34508->next = D.34510;
              D.34508 = iargs[0];
              D.34508->opcode = 424;
              D.34508 = iargs[0];
              D.34508->flags = 0;
              D.34508 = iargs[0];
              D.34508->type = 0;
              D.34508 = iargs[0];
              D.34508->dreg = -1;
              D.34508 = iargs[0];
              D.34508 = iargs[0];
              D.34508 = iargs[0];
              D.34508->sreg3 = -1;
              D.34511 = D.34508->sreg3;
              D.34508->sreg2 = D.34511;
              D.34512 = D.34508->sreg2;
              D.34508->sreg1 = D.34512;
              D.34508 = iargs[0];
              D.29910 = cfg->ip;
              D.34508->cil_code = D.29910;
              D.34508 = iargs[0];
              D.30422 = cfg->varinfo;
              D.34513 = __domain_var->data.op[0].const_val;
              D.34514 = (unsigned int) D.34513;
              D.34515 = D.34514 * 4;
              D.34516 = D.30422 + D.34515;
              D.34517 = *D.34516;
              D.34518 = D.34517->data.op[1].vtype;
              D.34519 = mono_type_to_regmove (cfg, D.34518);
              D.34520 = (short unsigned int) D.34519;
              D.34508->opcode = D.34520;
              D.30422 = cfg->varinfo;
              D.34513 = __domain_var->data.op[0].const_val;
              D.34514 = (unsigned int) D.34513;
              D.34515 = D.34514 * 4;
              D.34516 = D.30422 + D.34515;
              D.34517 = *D.34516;
              D.34518 = D.34517->data.op[1].vtype;
              D.34508 = iargs[0];
              type_to_eval_stack_type (cfg, D.34518, D.34508);
              D.34508 = iargs[0];
              D.30422 = cfg->varinfo;
              D.34513 = __domain_var->data.op[0].const_val;
              D.34514 = (unsigned int) D.34513;
              D.34515 = D.34514 * 4;
              D.34516 = D.30422 + D.34515;
              D.34517 = *D.34516;
              D.34521 = D.34517->klass;
              D.34508->klass = D.34521;
              D.34508 = iargs[0];
              D.30422 = cfg->varinfo;
              D.34513 = __domain_var->data.op[0].const_val;
              D.34514 = (unsigned int) D.34513;
              D.34515 = D.34514 * 4;
              D.34516 = D.30422 + D.34515;
              D.34517 = *D.34516;
              D.34522 = D.34517->dreg;
              D.34508->sreg1 = D.34522;
              D.34508 = iargs[0];
              D.34508 = iargs[0];
              D.34523 = D.34508->type;
              D.34524 = (<unnamed type>) D.34523;
              D.34525 = alloc_dreg (cfg, D.34524);
              D.34526 = (int) D.34525;
              D.34508->dreg = D.34526;
              D.34508 = iargs[0];
              D.34527 = D.34508->opcode;
              if (D.34527 == 427) goto <D.34528>; else goto <D.34529>;
              <D.34528>:
              D.34508 = iargs[0];
              D.30422 = cfg->varinfo;
              D.34513 = __domain_var->data.op[0].const_val;
              D.34514 = (unsigned int) D.34513;
              D.34515 = D.34514 * 4;
              D.34516 = D.30422 + D.34515;
              D.34517 = *D.34516;
              D.34518 = D.34517->data.op[1].vtype;
              D.34530 = mono_class_from_mono_type (D.34518);
              D.34508->klass = D.34530;
              <D.34529>:
            }
            goto <D.34505>;
            <D.34504>:
            D.29691 = cfg->mempool;
            D.34531 = mono_mempool_alloc (D.29691, 56);
            iargs[0] = D.34531;
            D.34508 = iargs[0];
            D.34508 = iargs[0];
            D.34508->data.op[1].const_val = 0;
            D.34509 = D.34508->data.op[1].const_val;
            D.34508->data.op[0].const_val = D.34509;
            D.34508 = iargs[0];
            D.34508 = iargs[0];
            D.34508->prev = 0B;
            D.34510 = D.34508->prev;
            D.34508->next = D.34510;
            D.34508 = iargs[0];
            D.34508->opcode = 362;
            D.34508 = iargs[0];
            D.34508->flags = 0;
            D.34508 = iargs[0];
            D.34508->type = 0;
            D.34508 = iargs[0];
            D.34508->dreg = -1;
            D.34508 = iargs[0];
            D.34508 = iargs[0];
            D.34508 = iargs[0];
            D.34508->sreg3 = -1;
            D.34511 = D.34508->sreg3;
            D.34508->sreg2 = D.34511;
            D.34512 = D.34508->sreg2;
            D.34508->sreg1 = D.34512;
            D.34508 = iargs[0];
            D.29910 = cfg->ip;
            D.34508->cil_code = D.29910;
            D.34508 = iargs[0];
            D.29716 = cfg->domain;
            D.34508->data.op[0].p = D.29716;
            D.34508 = iargs[0];
            D.34508->type = 3;
            D.34508 = iargs[0];
            D.34532 = alloc_dreg (cfg, 3);
            D.34533 = (int) D.34532;
            D.34508->dreg = D.34533;
            <D.34505>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.34534>; else goto <D.34535>;
            <D.34534>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.34508 = iargs[0];
            D.29939->next = D.34508;
            D.34508 = iargs[0];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.34508->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.34508 = iargs[0];
            bblock.129->last_ins = D.34508;
            goto <D.34536>;
            <D.34535>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.34508 = iargs[0];
            bblock.129->last_ins = D.34508;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.34536>:
            D.29691 = cfg->mempool;
            D.34537 = mono_mempool_alloc (D.29691, 56);
            iargs[1] = D.34537;
            D.34538 = iargs[1];
            D.34538 = iargs[1];
            D.34538->data.op[1].const_val = 0;
            D.34539 = D.34538->data.op[1].const_val;
            D.34538->data.op[0].const_val = D.34539;
            D.34538 = iargs[1];
            D.34538 = iargs[1];
            D.34538->prev = 0B;
            D.34540 = D.34538->prev;
            D.34538->next = D.34540;
            D.34538 = iargs[1];
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.34542>; else goto <D.34543>;
            <D.34542>:
            iftmp.183 = 732;
            goto <D.34544>;
            <D.34543>:
            iftmp.183 = 362;
            <D.34544>:
            D.34538->opcode = iftmp.183;
            D.34538 = iargs[1];
            D.34538->flags = 0;
            D.34538 = iargs[1];
            D.34538->type = 0;
            D.34538 = iargs[1];
            D.34538->dreg = -1;
            D.34538 = iargs[1];
            D.34538 = iargs[1];
            D.34538 = iargs[1];
            D.34538->sreg3 = -1;
            D.34545 = D.34538->sreg3;
            D.34538->sreg2 = D.34545;
            D.34546 = D.34538->sreg2;
            D.34538->sreg1 = D.34546;
            D.34538 = iargs[1];
            D.29910 = cfg->ip;
            D.34538->cil_code = D.29910;
            D.34538 = iargs[1];
            D.34538->data.op[0].p = image;
            D.34538 = iargs[1];
            D.34538->data.op[1].src = 12B;
            D.34538 = iargs[1];
            D.34538->type = 3;
            D.34538 = iargs[1];
            D.34547 = alloc_dreg (cfg, 3);
            D.34548 = (int) D.34547;
            D.34538->dreg = D.34548;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.34549>; else goto <D.34550>;
            <D.34549>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.34538 = iargs[1];
            D.29939->next = D.34538;
            D.34538 = iargs[1];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.34538->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.34538 = iargs[1];
            bblock.129->last_ins = D.34538;
            goto <D.34551>;
            <D.34550>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.34538 = iargs[1];
            bblock.129->last_ins = D.34538;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.34551>:
            D.29691 = cfg->mempool;
            D.34552 = mono_mempool_alloc (D.29691, 56);
            iargs[2] = D.34552;
            D.34553 = iargs[2];
            D.34553 = iargs[2];
            D.34553->data.op[1].const_val = 0;
            D.34554 = D.34553->data.op[1].const_val;
            D.34553->data.op[0].const_val = D.34554;
            D.34553 = iargs[2];
            D.34553 = iargs[2];
            D.34553->prev = 0B;
            D.34555 = D.34553->prev;
            D.34553->next = D.34555;
            D.34553 = iargs[2];
            D.34553->opcode = 362;
            D.34553 = iargs[2];
            D.34553->flags = 0;
            D.34553 = iargs[2];
            D.34553->type = 0;
            D.34553 = iargs[2];
            D.34553->dreg = -1;
            D.34553 = iargs[2];
            D.34553 = iargs[2];
            D.34553 = iargs[2];
            D.34553->sreg3 = -1;
            D.34556 = D.34553->sreg3;
            D.34553->sreg2 = D.34556;
            D.34557 = D.34553->sreg2;
            D.34553->sreg1 = D.34557;
            D.34553 = iargs[2];
            D.29910 = cfg->ip;
            D.34553->cil_code = D.29910;
            D.34553 = iargs[2];
            D.34558 = n & 16777215;
            D.34553->data.op[0].const_val = D.34558;
            D.34553 = iargs[2];
            D.34553->type = 1;
            D.34553 = iargs[2];
            D.34559 = alloc_dreg (cfg, 1);
            D.34560 = (int) D.34559;
            D.34553->dreg = D.34560;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.34561>; else goto <D.34562>;
            <D.34561>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.34553 = iargs[2];
            D.29939->next = D.34553;
            D.34553 = iargs[2];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.34553->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.34553 = iargs[2];
            bblock.129->last_ins = D.34553;
            goto <D.34563>;
            <D.34562>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.34553 = iargs[2];
            bblock.129->last_ins = D.34553;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.34563>:
            D.34564 = mono_emit_jit_icall (cfg, mono_ldstr, &iargs);
            *sp = D.34564;
            D.29716 = cfg->domain;
            n.184 = (unsigned int) n;
            D.34566 = n.184 & 16777215;
            mono_ldstr (D.29716, image, D.34566);
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.34567>;
      <D.34497>:
      bblock.77 = bblock;
      D.34568 = BIT_FIELD_REF <*bblock.77, 32, 896>;
      D.34569 = D.34568 & 65536;
      if (D.34569 != 0) goto <D.34570>; else goto <D.34571>;
      <D.34570>:
      {
        struct MonoInst * iargs[2];

        try
          {
            D.31717 = mono_defaults.corlib;
            if (D.31717 == image) goto <D.34572>; else goto <D.34573>;
            <D.34572>:
            D.29691 = cfg->mempool;
            D.34574 = mono_mempool_alloc (D.29691, 56);
            iargs[0] = D.34574;
            D.34575 = iargs[0];
            D.34575 = iargs[0];
            D.34575->data.op[1].const_val = 0;
            D.34576 = D.34575->data.op[1].const_val;
            D.34575->data.op[0].const_val = D.34576;
            D.34575 = iargs[0];
            D.34575 = iargs[0];
            D.34575->prev = 0B;
            D.34577 = D.34575->prev;
            D.34575->next = D.34577;
            D.34575 = iargs[0];
            D.34575->opcode = 362;
            D.34575 = iargs[0];
            D.34575->flags = 0;
            D.34575 = iargs[0];
            D.34575->type = 0;
            D.34575 = iargs[0];
            D.34575->dreg = -1;
            D.34575 = iargs[0];
            D.34575 = iargs[0];
            D.34575 = iargs[0];
            D.34575->sreg3 = -1;
            D.34578 = D.34575->sreg3;
            D.34575->sreg2 = D.34578;
            D.34579 = D.34575->sreg2;
            D.34575->sreg1 = D.34579;
            D.34575 = iargs[0];
            D.29910 = cfg->ip;
            D.34575->cil_code = D.29910;
            D.34575 = iargs[0];
            D.34558 = n & 16777215;
            D.34575->data.op[0].const_val = D.34558;
            D.34575 = iargs[0];
            D.34575->type = 1;
            D.34575 = iargs[0];
            D.34580 = alloc_dreg (cfg, 1);
            D.34581 = (int) D.34580;
            D.34575->dreg = D.34581;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.34582>; else goto <D.34583>;
            <D.34582>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.34575 = iargs[0];
            D.29939->next = D.34575;
            D.34575 = iargs[0];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.34575->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.34575 = iargs[0];
            bblock.129->last_ins = D.34575;
            goto <D.34584>;
            <D.34583>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.34575 = iargs[0];
            bblock.129->last_ins = D.34575;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.34584>:
            D.34585 = mono_emit_jit_icall (cfg, mono_helper_ldstr_mscorlib, &iargs);
            *sp = D.34585;
            goto <D.34586>;
            <D.34573>:
            D.29691 = cfg->mempool;
            D.34587 = mono_mempool_alloc (D.29691, 56);
            iargs[0] = D.34587;
            D.34575 = iargs[0];
            D.34575 = iargs[0];
            D.34575->data.op[1].const_val = 0;
            D.34576 = D.34575->data.op[1].const_val;
            D.34575->data.op[0].const_val = D.34576;
            D.34575 = iargs[0];
            D.34575 = iargs[0];
            D.34575->prev = 0B;
            D.34577 = D.34575->prev;
            D.34575->next = D.34577;
            D.34575 = iargs[0];
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.34589>; else goto <D.34590>;
            <D.34589>:
            iftmp.185 = 732;
            goto <D.34591>;
            <D.34590>:
            iftmp.185 = 362;
            <D.34591>:
            D.34575->opcode = iftmp.185;
            D.34575 = iargs[0];
            D.34575->flags = 0;
            D.34575 = iargs[0];
            D.34575->type = 0;
            D.34575 = iargs[0];
            D.34575->dreg = -1;
            D.34575 = iargs[0];
            D.34575 = iargs[0];
            D.34575 = iargs[0];
            D.34575->sreg3 = -1;
            D.34578 = D.34575->sreg3;
            D.34575->sreg2 = D.34578;
            D.34579 = D.34575->sreg2;
            D.34575->sreg1 = D.34579;
            D.34575 = iargs[0];
            D.29910 = cfg->ip;
            D.34575->cil_code = D.29910;
            D.34575 = iargs[0];
            D.34575->data.op[0].p = image;
            D.34575 = iargs[0];
            D.34575->data.op[1].src = 12B;
            D.34575 = iargs[0];
            D.34575->type = 3;
            D.34575 = iargs[0];
            D.34592 = alloc_dreg (cfg, 3);
            D.34593 = (int) D.34592;
            D.34575->dreg = D.34593;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.34594>; else goto <D.34595>;
            <D.34594>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.34575 = iargs[0];
            D.29939->next = D.34575;
            D.34575 = iargs[0];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.34575->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.34575 = iargs[0];
            bblock.129->last_ins = D.34575;
            goto <D.34596>;
            <D.34595>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.34575 = iargs[0];
            bblock.129->last_ins = D.34575;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.34596>:
            D.29691 = cfg->mempool;
            D.34597 = mono_mempool_alloc (D.29691, 56);
            iargs[1] = D.34597;
            D.34598 = iargs[1];
            D.34598 = iargs[1];
            D.34598->data.op[1].const_val = 0;
            D.34599 = D.34598->data.op[1].const_val;
            D.34598->data.op[0].const_val = D.34599;
            D.34598 = iargs[1];
            D.34598 = iargs[1];
            D.34598->prev = 0B;
            D.34600 = D.34598->prev;
            D.34598->next = D.34600;
            D.34598 = iargs[1];
            D.34598->opcode = 362;
            D.34598 = iargs[1];
            D.34598->flags = 0;
            D.34598 = iargs[1];
            D.34598->type = 0;
            D.34598 = iargs[1];
            D.34598->dreg = -1;
            D.34598 = iargs[1];
            D.34598 = iargs[1];
            D.34598 = iargs[1];
            D.34598->sreg3 = -1;
            D.34601 = D.34598->sreg3;
            D.34598->sreg2 = D.34601;
            D.34602 = D.34598->sreg2;
            D.34598->sreg1 = D.34602;
            D.34598 = iargs[1];
            D.29910 = cfg->ip;
            D.34598->cil_code = D.29910;
            D.34598 = iargs[1];
            D.34558 = n & 16777215;
            D.34598->data.op[0].const_val = D.34558;
            D.34598 = iargs[1];
            D.34598->type = 1;
            D.34598 = iargs[1];
            D.34603 = alloc_dreg (cfg, 1);
            D.34604 = (int) D.34603;
            D.34598->dreg = D.34604;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.34605>; else goto <D.34606>;
            <D.34605>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.34598 = iargs[1];
            D.29939->next = D.34598;
            D.34598 = iargs[1];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.34598->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.34598 = iargs[1];
            bblock.129->last_ins = D.34598;
            goto <D.34607>;
            <D.34606>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.34598 = iargs[1];
            bblock.129->last_ins = D.34598;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.34607>:
            D.34608 = mono_emit_jit_icall (cfg, mono_helper_ldstr, &iargs);
            *sp = D.34608;
            <D.34586>:
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.34609>;
      <D.34571>:
      D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.30082 = D.30081 & 64;
      if (D.30082 != 0) goto <D.34610>; else goto <D.34611>;
      <D.34610>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 732;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.29691 = cfg->mempool;
      n.181 = (unsigned int) n;
      D.34612 = mono_jump_info_token_new2 (D.29691, image, n.181, 0B);
      ins->data.op[0].p = D.34612;
      ins->data.op[1].p = 17B;
      ins->type = 6;
      D.34613 = mono_defaults.string_class;
      ins->klass = D.34613;
      D.34614 = alloc_dreg (cfg, 6);
      D.34615 = (int) D.34614;
      ins->dreg = D.34615;
      *sp = ins;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      if (D.30024 != 0B) goto <D.34616>; else goto <D.34617>;
      <D.34616>:
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      D.30024->next = ins;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      ins->prev = D.30024;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      goto <D.34618>;
      <D.34617>:
      bblock.77 = bblock;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      D.30024 = bblock.77->last_ins;
      bblock.77->code = D.30024;
      <D.34618>:
      goto <D.34619>;
      <D.34611>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      ins->data.op[0].p = 0B;
      ins->type = 3;
      D.34620 = alloc_dreg (cfg, 3);
      D.34621 = (int) D.34620;
      ins->dreg = D.34621;
      ins->type = 6;
      D.29716 = cfg->domain;
      n.184 = (unsigned int) n;
      D.34566 = n.184 & 16777215;
      D.34622 = mono_ldstr (D.29716, image, D.34566);
      ins->data.op[0].p = D.34622;
      D.34623 = ins->data.op[0].p;
      if (D.34623 == 0B) goto <D.34624>; else goto <D.34625>;
      <D.34624>:
      mono_cfg_set_exception (cfg, 14);
      goto exception_exit;
      <D.34625>:
      *sp = ins;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      if (D.30024 != 0B) goto <D.34626>; else goto <D.34627>;
      <D.34626>:
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      D.30024->next = ins;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      ins->prev = D.30024;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      goto <D.34628>;
      <D.34627>:
      bblock.77 = bblock;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      D.30024 = bblock.77->last_ins;
      bblock.77->code = D.30024;
      <D.34628>:
      <D.34619>:
      <D.34609>:
      <D.34567>:
      <D.34495>:
      <D.34479>:
      sp = sp + 4;
      ip = ip + 5;
      goto <D.26808>;
      <D.27179>:
      {
        struct MonoInst * iargs[2];
        struct MonoMethodSignature * fsig;
        struct MonoInst this_ins;
        struct MonoInst * alloc;
        struct MonoInst * vtable_arg;

        try
          {
            vtable_arg = 0B;
            D.31124 = ip + 5;
            if (D.31124 > end) goto <D.34629>; else goto <D.34630>;
            <D.34629>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.34631>; else goto <D.34632>;
            <D.34631>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.34633>; else goto <D.34634>;
            <D.34633>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.34634>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.34632>:
            D.34635 = mini_get_debug_options ();
            D.34636 = D.34635->break_on_unverified;
            if (D.34636 != 0) goto <D.34637>; else goto unverified;
            <D.34637>:
            raise (5);
            <D.34630>:
            D.31143 = ip + 1;
            token = mono_read32 (D.31143);
            cmethod = mini_get_method (cfg, method, token, 0B, generic_context);
            if (cmethod == 0B) goto <D.34638>; else goto <D.34640>;
            <D.34640>:
            D.34641 = mono_loader_get_last_error ();
            if (D.34641 != 0B) goto <D.34638>; else goto <D.34639>;
            <D.34638>:
            D.34642 = mini_get_debug_options ();
            D.34643 = D.34642->break_on_unverified;
            if (D.34643 != 0) goto <D.34644>; else goto load_error;
            <D.34644>:
            raise (5);
            <D.34639>:
            fsig = mono_method_get_signature (cmethod, image, token);
            if (fsig == 0B) goto <D.34645>; else goto <D.34646>;
            <D.34645>:
            D.34647 = mini_get_debug_options ();
            D.34648 = D.34647->break_on_unverified;
            if (D.34648 != 0) goto <D.34649>; else goto load_error;
            <D.34649>:
            raise (5);
            <D.34646>:
            mono_save_token_info (cfg, image, token, cmethod);
            D.31542 = cmethod->klass;
            D.34650 = mono_class_init (D.31542);
            if (D.34650 == 0) goto <D.34651>; else goto <D.34652>;
            <D.34651>:
            D.34653 = mini_get_debug_options ();
            D.34654 = D.34653->break_on_unverified;
            if (D.34654 != 0) goto <D.34655>; else goto <D.34656>;
            <D.34655>:
            raise (5);
            goto <D.34657>;
            <D.34656>:
            D.31542 = cmethod->klass;
            cfg->exception_ptr = D.31542;
            goto load_error;
            <D.34657>:
            <D.34652>:
            context_used = mini_method_check_context_used (cfg, cmethod);
            D.34658 = mono_security_get_mode ();
            if (D.34658 == 2) goto <D.34659>; else goto <D.34660>;
            <D.34659>:
            D.34661 = check_linkdemand (cfg, method, cmethod);
            if (D.34661 != 0) goto <D.34662>; else goto <D.34663>;
            <D.34662>:
            D.29662 = cfg->method;
            if (D.29662 != method) goto <D.34664>; else goto <D.34665>;
            <D.34664>:
            D.29634 = BIT_FIELD_REF <*method, 32, 160>;
            D.29635 = D.29634 & 124;
            if (D.29635 == 0) goto <D.34666>; else goto <D.34667>;
            <D.34666>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 1) goto <D.34668>; else goto <D.34669>;
            <D.34668>:
            printf ("inline failed: %s\n", "linkdemand");
            <D.34669>:
            goto inline_failure;
            <D.34667>:
            <D.34665>:
            <D.34663>:
            D.30240 = cfg->exception_type;
            if (D.30240 != 0) goto exception_exit; else goto <D.34670>;
            <D.34670>:
            goto <D.34671>;
            <D.34660>:
            D.34672 = mono_security_get_mode ();
            if (D.34672 == 1) goto <D.34673>; else goto <D.34674>;
            <D.34673>:
            bblock.77 = bblock;
            ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock.77, ip);
            <D.34674>:
            <D.34671>:
            D.29727 = cfg->generic_sharing_context;
            if (D.29727 != 0B) goto <D.34675>; else goto <D.34676>;
            <D.34675>:
            if (cmethod != 0B) goto <D.34677>; else goto <D.34678>;
            <D.34677>:
            D.31542 = cmethod->klass;
            D.29629 = method->klass;
            if (D.31542 != D.29629) goto <D.34679>; else goto <D.34680>;
            <D.34679>:
            D.31542 = cmethod->klass;
            D.32078 = D.31542->generic_class;
            if (D.32078 != 0B) goto <D.34681>; else goto <D.34682>;
            <D.34681>:
            D.34683 = mono_method_is_generic_sharable (cmethod, 1);
            if (D.34683 != 0) goto <D.34684>; else goto <D.34685>;
            <D.34684>:
            D.31542 = cmethod->klass;
            D.34686 = mono_class_needs_cctor_run (D.31542, method);
            if (D.34686 != 0) goto <D.34687>; else goto <D.34688>;
            <D.34687>:
            D.31542 = cmethod->klass;
            emit_generic_class_init (cfg, D.31542);
            D.31542 = cmethod->klass;
            if (D.31542 == 0B) goto <D.34689>; else goto <D.34691>;
            <D.34691>:
            D.31542 = cmethod->klass;
            D.32090 = D.31542->exception_type;
            if (D.32090 != 0) goto <D.34689>; else goto <D.34690>;
            <D.34689>:
            D.31542 = cmethod->klass;
            cfg->exception_ptr = D.31542;
            D.34692 = mini_get_debug_options ();
            D.34693 = D.34692->break_on_unverified;
            if (D.34693 != 0) goto <D.34694>; else goto load_error;
            <D.34694>:
            raise (5);
            <D.34690>:
            <D.34688>:
            <D.34685>:
            <D.34682>:
            <D.34680>:
            <D.34678>:
            <D.34676>:
            D.31542 = cmethod->klass;
            D.31543 = BIT_FIELD_REF <*D.31542, 32, 160>;
            D.31544 = D.31543 & 8;
            if (D.31544 != 0) goto <D.34695>; else goto <D.34696>;
            <D.34695>:
            D.31542 = cmethod->klass;
            D.34697 = mono_class_generic_sharing_enabled (D.31542);
            if (D.34697 != 0) goto <D.34698>; else goto <D.34699>;
            <D.34698>:
            D.34700 = mono_method_is_generic_sharable (cmethod, 1);
            if (D.34700 != 0) goto <D.34701>; else goto <D.34702>;
            <D.34701>:
            D.31661 = BIT_FIELD_REF <*cmethod, 32, 160>;
            D.32274 = D.31661 & 4096;
            if (D.32274 != 0) goto <D.34705>; else goto <D.34703>;
            <D.34705>:
            D.34706 = mono_method_get_context (cmethod);
            D.34707 = D.34706->method_inst;
            if (D.34707 != 0B) goto <D.34708>; else goto <D.34703>;
            <D.34708>:
            D.29716 = cfg->domain;
            D.31542 = cmethod->klass;
            mono_class_vtable (D.29716, D.31542);
            D.31542 = cmethod->klass;
            if (D.31542 == 0B) goto <D.34709>; else goto <D.34711>;
            <D.34711>:
            D.31542 = cmethod->klass;
            D.32090 = D.31542->exception_type;
            if (D.32090 != 0) goto <D.34709>; else goto <D.34710>;
            <D.34709>:
            D.31542 = cmethod->klass;
            cfg->exception_ptr = D.31542;
            D.34712 = mini_get_debug_options ();
            D.34713 = D.34712->break_on_unverified;
            if (D.34713 != 0) goto <D.34714>; else goto load_error;
            <D.34714>:
            raise (5);
            <D.34710>:
            vtable_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 8);
            goto <D.34704>;
            <D.34703>:
            if (context_used != 0) goto <D.34715>; else goto <D.34716>;
            <D.34715>:
            D.31542 = cmethod->klass;
            vtable_arg = emit_get_rgctx_klass (cfg, context_used, D.31542, 2);
            goto <D.34717>;
            <D.34716>:
            {
              struct MonoVTable * vtable;

              D.29716 = cfg->domain;
              D.31542 = cmethod->klass;
              vtable = mono_class_vtable (D.29716, D.31542);
              D.31542 = cmethod->klass;
              if (D.31542 == 0B) goto <D.34718>; else goto <D.34720>;
              <D.34720>:
              D.31542 = cmethod->klass;
              D.32090 = D.31542->exception_type;
              if (D.32090 != 0) goto <D.34718>; else goto <D.34719>;
              <D.34718>:
              D.31542 = cmethod->klass;
              cfg->exception_ptr = D.31542;
              D.34721 = mini_get_debug_options ();
              D.34722 = D.34721->break_on_unverified;
              if (D.34722 != 0) goto <D.34723>; else goto load_error;
              <D.34723>:
              raise (5);
              <D.34719>:
              D.29691 = cfg->mempool;
              vtable_arg = mono_mempool_alloc (D.29691, 56);
              vtable_arg->data.op[1].const_val = 0;
              D.34724 = vtable_arg->data.op[1].const_val;
              vtable_arg->data.op[0].const_val = D.34724;
              vtable_arg->prev = 0B;
              D.34725 = vtable_arg->prev;
              vtable_arg->next = D.34725;
              D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.30082 = D.30081 & 64;
              if (D.30082 != 0) goto <D.34727>; else goto <D.34728>;
              <D.34727>:
              iftmp.186 = 732;
              goto <D.34729>;
              <D.34728>:
              iftmp.186 = 362;
              <D.34729>:
              vtable_arg->opcode = iftmp.186;
              vtable_arg->flags = 0;
              vtable_arg->type = 0;
              vtable_arg->dreg = -1;
              vtable_arg->sreg3 = -1;
              D.34730 = vtable_arg->sreg3;
              vtable_arg->sreg2 = D.34730;
              D.34731 = vtable_arg->sreg2;
              vtable_arg->sreg1 = D.34731;
              D.29910 = cfg->ip;
              vtable_arg->cil_code = D.29910;
              D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.30082 = D.30081 & 64;
              if (D.30082 != 0) goto <D.34733>; else goto <D.34734>;
              <D.34733>:
              iftmp.187 = vtable->klass;
              goto <D.34735>;
              <D.34734>:
              iftmp.187 = vtable;
              <D.34735>:
              vtable_arg->data.op[0].p = iftmp.187;
              vtable_arg->data.op[1].src = 14B;
              vtable_arg->type = 3;
              D.34736 = alloc_dreg (cfg, 3);
              D.34737 = (int) D.34736;
              vtable_arg->dreg = D.34737;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.34738>; else goto <D.34739>;
              <D.34738>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = vtable_arg;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              vtable_arg->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = vtable_arg;
              goto <D.34740>;
              <D.34739>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = vtable_arg;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.34740>:
            }
            <D.34717>:
            <D.34704>:
            <D.34702>:
            <D.34699>:
            <D.34696>:
            D.34741 = fsig->param_count;
            n = (int) D.34741;
            sp.84 = (int) sp;
            stack_start.85 = (int) stack_start;
            D.30457 = sp.84 - stack_start.85;
            D.30458 = D.30457 /[ex] 4;
            if (D.30458 < n) goto <D.34742>; else goto <D.34743>;
            <D.34742>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.34744>; else goto <D.34745>;
            <D.34744>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.34746>; else goto <D.34747>;
            <D.34746>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.34747>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.34745>:
            D.34748 = mini_get_debug_options ();
            D.34749 = D.34748->break_on_unverified;
            if (D.34749 != 0) goto <D.34750>; else goto unverified;
            <D.34750>:
            raise (5);
            <D.34743>:
            bblock.77 = bblock;
            D.34568 = BIT_FIELD_REF <*bblock.77, 32, 896>;
            D.34569 = D.34568 & 65536;
            if (D.34569 != 0) goto <D.34754>; else goto <D.34755>;
            <D.34754>:
            D.31542 = cmethod->klass;
            D.31716 = D.31542->image;
            D.31717 = mono_defaults.corlib;
            if (D.31716 == D.31717) goto <D.34756>; else goto <D.34757>;
            <D.34756>:
            D.31542 = cmethod->klass;
            D.34758 = is_exception_class (D.31542);
            if (D.34758 != 0) goto <D.34759>; else goto <D.34760>;
            <D.34759>:
            if (n <= 2) goto <D.34761>; else goto <D.34762>;
            <D.34761>:
            if (n <= 0) goto <D.34753>; else goto <D.34763>;
            <D.34763>:
            D.34764 = fsig->params[0];
            D.34765 = BIT_FIELD_REF <*D.34764, 32, 32>;
            D.34766 = D.34765 & 1090453504;
            if (D.34766 == 917504) goto <D.34753>; else goto <D.34752>;
            <D.34753>:
            if (n <= 1) goto <D.34751>; else goto <D.34767>;
            <D.34767>:
            D.34768 = fsig->params[1];
            D.34769 = BIT_FIELD_REF <*D.34768, 32, 32>;
            D.34770 = D.34769 & 1090453504;
            if (D.34770 == 917504) goto <D.34751>; else goto <D.34752>;
            <D.34751>:
            {
              struct MonoInst * iargs[3];

              try
                {
                  D.34771 = vtable_arg != 0B;
                  D.34772 = (long int) D.34771;
                  D.34773 = __builtin_expect (D.34772, 0);
                  if (D.34773 != 0) goto <D.34774>; else goto <D.34775>;
                  <D.34774>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9300, "!vtable_arg");
                  <D.34775>:
                  n.89 = (unsigned int) n;
                  D.30606 = n.89 * 4;
                  D.31700 = -D.30606;
                  sp = sp + D.31700;
                  D.29691 = cfg->mempool;
                  D.34776 = mono_mempool_alloc (D.29691, 56);
                  iargs[0] = D.34776;
                  D.34777 = iargs[0];
                  D.34777 = iargs[0];
                  D.34777->data.op[1].const_val = 0;
                  D.34778 = D.34777->data.op[1].const_val;
                  D.34777->data.op[0].const_val = D.34778;
                  D.34777 = iargs[0];
                  D.34777 = iargs[0];
                  D.34777->prev = 0B;
                  D.34779 = D.34777->prev;
                  D.34777->next = D.34779;
                  D.34777 = iargs[0];
                  D.34777->opcode = 362;
                  D.34777 = iargs[0];
                  D.34777->flags = 0;
                  D.34777 = iargs[0];
                  D.34777->type = 0;
                  D.34777 = iargs[0];
                  D.34777->dreg = -1;
                  D.34777 = iargs[0];
                  D.34777 = iargs[0];
                  D.34777 = iargs[0];
                  D.34777->sreg3 = -1;
                  D.34780 = D.34777->sreg3;
                  D.34777->sreg2 = D.34780;
                  D.34781 = D.34777->sreg2;
                  D.34777->sreg1 = D.34781;
                  D.34777 = iargs[0];
                  D.29910 = cfg->ip;
                  D.34777->cil_code = D.29910;
                  D.34777 = iargs[0];
                  D.31542 = cmethod->klass;
                  D.34782 = D.31542->type_token;
                  D.34783 = (int) D.34782;
                  D.34777->data.op[0].const_val = D.34783;
                  D.34777 = iargs[0];
                  D.34777->type = 1;
                  D.34777 = iargs[0];
                  D.34784 = alloc_dreg (cfg, 1);
                  D.34785 = (int) D.34784;
                  D.34777->dreg = D.34785;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.34786>; else goto <D.34787>;
                  <D.34786>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.34777 = iargs[0];
                  D.29939->next = D.34777;
                  D.34777 = iargs[0];
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.34777->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  D.34777 = iargs[0];
                  bblock.129->last_ins = D.34777;
                  goto <D.34788>;
                  <D.34787>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  D.34777 = iargs[0];
                  bblock.129->last_ins = D.34777;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.34788>:
                  switch (n) <default: <D.27191>, case 0: <D.27187>, case 1: <D.27189>, case 2: <D.27190>>
                  <D.27187>:
                  sp.188 = sp;
                  sp = sp.188 + 4;
                  D.34790 = mono_emit_jit_icall (cfg, mono_create_corlib_exception_0, &iargs);
                  *sp.188 = D.34790;
                  goto <D.27188>;
                  <D.27189>:
                  D.30679 = *sp;
                  iargs[1] = D.30679;
                  sp.189 = sp;
                  sp = sp.189 + 4;
                  D.34792 = mono_emit_jit_icall (cfg, mono_create_corlib_exception_1, &iargs);
                  *sp.189 = D.34792;
                  goto <D.27188>;
                  <D.27190>:
                  D.30679 = *sp;
                  iargs[1] = D.30679;
                  D.34793 = MEM[(struct MonoInst * *)sp + 4B];
                  iargs[2] = D.34793;
                  sp.190 = sp;
                  sp = sp.190 + 4;
                  D.34795 = mono_emit_jit_icall (cfg, mono_create_corlib_exception_2, &iargs);
                  *sp.190 = D.34795;
                  goto <D.27188>;
                  <D.27191>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 9319);
                  <D.27188>:
                  ip = ip + 5;
                  inline_costs = inline_costs + 5;
                  goto <D.26808>;
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            <D.34752>:
            <D.34762>:
            <D.34760>:
            <D.34757>:
            <D.34755>:
            goto <D.27193>;
            <D.27192>:
            sp = sp + 4294967292;
            D.31793 = sp + 4;
            D.30679 = *sp;
            *D.31793 = D.30679;
            <D.27193>:
            n.191 = n;
            n = n.191 + -1;
            if (n.191 != 0) goto <D.27192>; else goto <D.27194>;
            <D.27194>:
            this_ins.type = 6;
            *sp = &this_ins;
            D.34797 = check_call_signature (cfg, fsig, sp);
            if (D.34797 != 0) goto <D.34798>; else goto <D.34799>;
            <D.34798>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.34800>; else goto <D.34801>;
            <D.34800>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.34802>; else goto <D.34803>;
            <D.34802>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.34803>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.34801>:
            D.34804 = mini_get_debug_options ();
            D.34805 = D.34804->break_on_unverified;
            if (D.34805 != 0) goto <D.34806>; else goto unverified;
            <D.34806>:
            raise (5);
            <D.34799>:
            iargs[0] = 0B;
            D.31542 = cmethod->klass;
            D.34807 = mini_class_is_system_array (D.31542);
            if (D.34807 != 0) goto <D.34808>; else goto <D.34809>;
            <D.34808>:
            D.34771 = vtable_arg != 0B;
            D.34772 = (long int) D.34771;
            D.34773 = __builtin_expect (D.34772, 0);
            if (D.34773 != 0) goto <D.34810>; else goto <D.34811>;
            <D.34810>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9342, "!vtable_arg");
            <D.34811>:
            D.34812 = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
            *sp = D.34812;
            D.34741 = fsig->param_count;
            if (D.34741 == 1) goto <D.34813>; else goto <D.34814>;
            <D.34813>:
            alloc = mono_emit_jit_icall (cfg, mono_array_new_1, sp);
            goto <D.34815>;
            <D.34814>:
            D.34741 = fsig->param_count;
            if (D.34741 == 2) goto <D.34816>; else goto <D.34817>;
            <D.34816>:
            alloc = mono_emit_jit_icall (cfg, mono_array_new_2, sp);
            goto <D.34818>;
            <D.34817>:
            D.34741 = fsig->param_count;
            if (D.34741 == 3) goto <D.34819>; else goto <D.34820>;
            <D.34819>:
            alloc = mono_emit_jit_icall (cfg, mono_array_new_3, sp);
            goto <D.34821>;
            <D.34820>:
            D.34741 = fsig->param_count;
            if (D.34741 == 4) goto <D.34822>; else goto <D.34823>;
            <D.34822>:
            alloc = mono_emit_jit_icall (cfg, mono_array_new_4, sp);
            goto <D.34824>;
            <D.34823>:
            D.34741 = fsig->param_count;
            D.34825 = (int) D.34741;
            alloc = handle_array_new (cfg, D.34825, sp, ip);
            <D.34824>:
            <D.34821>:
            <D.34818>:
            <D.34815>:
            goto <D.34826>;
            <D.34809>:
            D.31661 = BIT_FIELD_REF <*cmethod, 32, 160>;
            D.31662 = D.31661 & 128;
            if (D.31662 != 0) goto <D.34827>; else goto <D.34828>;
            <D.34827>:
            D.34829 = context_used != 0;
            D.34830 = (long int) D.34829;
            D.34831 = __builtin_expect (D.34830, 0);
            if (D.34831 != 0) goto <D.34832>; else goto <D.34833>;
            <D.34832>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9359, "!context_used");
            <D.34833>:
            D.34771 = vtable_arg != 0B;
            D.34772 = (long int) D.34771;
            D.34773 = __builtin_expect (D.34772, 0);
            if (D.34773 != 0) goto <D.34834>; else goto <D.34835>;
            <D.34834>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9360, "!vtable_arg");
            <D.34835>:
            D.29691 = cfg->mempool;
            D.34836 = mono_mempool_alloc (D.29691, 56);
            *sp = D.34836;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->data.op[1].const_val = 0;
            D.32396 = D.30679->data.op[1].const_val;
            D.30679->data.op[0].const_val = D.32396;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->prev = 0B;
            D.32397 = D.30679->prev;
            D.30679->next = D.32397;
            D.30679 = *sp;
            D.30679->opcode = 362;
            D.30679 = *sp;
            D.30679->flags = 0;
            D.30679 = *sp;
            D.30679->type = 0;
            D.30679 = *sp;
            D.30679->dreg = -1;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->sreg3 = -1;
            D.32398 = D.30679->sreg3;
            D.30679->sreg2 = D.32398;
            D.32399 = D.30679->sreg2;
            D.30679->sreg1 = D.32399;
            D.30679 = *sp;
            D.29910 = cfg->ip;
            D.30679->cil_code = D.29910;
            D.30679 = *sp;
            D.30679->data.op[0].p = 0B;
            D.30679 = *sp;
            D.30679->type = 3;
            D.30679 = *sp;
            D.34837 = alloc_dreg (cfg, 3);
            D.34838 = (int) D.34837;
            D.30679->dreg = D.34838;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.34839>; else goto <D.34840>;
            <D.34839>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679 = *sp;
            D.29939->next = D.30679;
            D.30679 = *sp;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            goto <D.34841>;
            <D.34840>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.34841>:
            alloc = mono_emit_method_call_full (cfg, cmethod, fsig, 0, sp, 0B, 0B, 0B);
            goto <D.34842>;
            <D.34828>:
            {
              struct MonoInst * callvirt_this_arg;

              callvirt_this_arg = 0B;
              D.31542 = cmethod->klass;
              D.31543 = BIT_FIELD_REF <*D.31542, 32, 160>;
              D.31544 = D.31543 & 8;
              if (D.31544 != 0) goto <D.34843>; else goto <D.34844>;
              <D.34843>:
              D.31542 = cmethod->klass;
              D.34845 = &D.31542->byval_arg;
              D.34846 = mono_compile_create_var (cfg, D.34845, 329);
              iargs[0] = D.34846;
              D.34847 = iargs[0];
              D.34848 = D.34847->dreg;
              D.31542 = cmethod->klass;
              D.34845 = &D.31542->byval_arg;
              emit_init_rvar (cfg, D.34848, D.34845);
              D.29691 = cfg->mempool;
              D.34849 = mono_mempool_alloc (D.29691, 56);
              *sp = D.34849;
              D.30679 = *sp;
              D.30679 = *sp;
              D.30679->data.op[1].const_val = 0;
              D.32396 = D.30679->data.op[1].const_val;
              D.30679->data.op[0].const_val = D.32396;
              D.30679 = *sp;
              D.30679 = *sp;
              D.30679->prev = 0B;
              D.32397 = D.30679->prev;
              D.30679->next = D.32397;
              D.30679 = *sp;
              D.30679->opcode = 314;
              D.30679 = *sp;
              D.30679->flags = 0;
              D.30679 = *sp;
              D.30679->type = 0;
              D.30679 = *sp;
              D.30679->dreg = -1;
              D.30679 = *sp;
              D.30679 = *sp;
              D.30679 = *sp;
              D.30679->sreg3 = -1;
              D.32398 = D.30679->sreg3;
              D.30679->sreg2 = D.32398;
              D.32399 = D.30679->sreg2;
              D.30679->sreg1 = D.32399;
              D.30679 = *sp;
              D.29910 = cfg->ip;
              D.30679->cil_code = D.29910;
              D.30679 = *sp;
              D.30422 = cfg->varinfo;
              D.34847 = iargs[0];
              D.34850 = D.34847->data.op[0].const_val;
              D.34851 = (unsigned int) D.34850;
              D.34852 = D.34851 * 4;
              D.34853 = D.30422 + D.34852;
              D.34854 = *D.34853;
              D.30679->data.op[0].p = D.34854;
              D.30422 = cfg->varinfo;
              D.34847 = iargs[0];
              D.34850 = D.34847->data.op[0].const_val;
              D.34851 = (unsigned int) D.34850;
              D.34852 = D.34851 * 4;
              D.34853 = D.30422 + D.34852;
              D.34854 = *D.34853;
              D.30422 = cfg->varinfo;
              D.34847 = iargs[0];
              D.34850 = D.34847->data.op[0].const_val;
              D.34851 = (unsigned int) D.34850;
              D.34852 = D.34851 * 4;
              D.34853 = D.30422 + D.34852;
              D.34854 = *D.34853;
              D.34855 = D.34854->flags;
              D.34856 = D.34855 | 16;
              D.34854->flags = D.34856;
              D.30679 = *sp;
              D.30679->type = 5;
              D.30679 = *sp;
              D.30422 = cfg->varinfo;
              D.34847 = iargs[0];
              D.34850 = D.34847->data.op[0].const_val;
              D.34851 = (unsigned int) D.34850;
              D.34852 = D.34851 * 4;
              D.34853 = D.30422 + D.34852;
              D.34854 = *D.34853;
              D.34857 = D.34854->klass;
              D.30679->klass = D.34857;
              D.30679 = *sp;
              D.34858 = alloc_dreg (cfg, 5);
              D.34859 = (int) D.34858;
              D.30679->dreg = D.34859;
              cfg->has_indirection = 1;
              D.29838 = cfg->gsharedvt;
              D.30765 = D.29838 != 0;
              D.30766 = (long int) D.30765;
              D.30767 = __builtin_expect (D.30766, 0);
              if (D.30767 != 0) goto <D.34860>; else goto <D.34861>;
              <D.34860>:
              D.30422 = cfg->varinfo;
              D.34847 = iargs[0];
              D.34850 = D.34847->data.op[0].const_val;
              D.34851 = (unsigned int) D.34850;
              D.34852 = D.34851 * 4;
              D.34853 = D.30422 + D.34852;
              D.34854 = *D.34853;
              D.34862 = D.34854->data.op[1].vtype;
              D.34863 = mini_is_gsharedvt_variable_type (cfg, D.34862);
              if (D.34863 != 0) goto <D.34864>; else goto <D.34865>;
              <D.34864>:
              handle_gsharedvt_ldaddr (cfg);
              <D.34865>:
              <D.34861>:
              D.34867 = mono_arch_is_soft_float ();
              if (D.34867 != 0) goto <D.34868>; else goto <D.34869>;
              <D.34868>:
              D.30422 = cfg->varinfo;
              D.34847 = iargs[0];
              D.34850 = D.34847->data.op[0].const_val;
              D.34851 = (unsigned int) D.34850;
              D.34852 = D.34851 * 4;
              D.34853 = D.30422 + D.34852;
              D.34854 = *D.34853;
              D.34874 = D.34854->type;
              if (D.34874 == 2) goto <D.34871>; else goto <D.34875>;
              <D.34875>:
              D.30422 = cfg->varinfo;
              D.34847 = iargs[0];
              D.34850 = D.34847->data.op[0].const_val;
              D.34851 = (unsigned int) D.34850;
              D.34852 = D.34851 * 4;
              D.34853 = D.30422 + D.34852;
              D.34854 = *D.34853;
              D.34874 = D.34854->type;
              if (D.34874 == 4) goto <D.34871>; else goto <D.34872>;
              <D.34871>:
              iftmp.193 = 1;
              goto <D.34873>;
              <D.34872>:
              iftmp.193 = 0;
              <D.34873>:
              iftmp.192 = (_Bool) iftmp.193;
              goto <D.34876>;
              <D.34869>:
              D.30422 = cfg->varinfo;
              D.34847 = iargs[0];
              D.34850 = D.34847->data.op[0].const_val;
              D.34851 = (unsigned int) D.34850;
              D.34852 = D.34851 * 4;
              D.34853 = D.30422 + D.34852;
              D.34854 = *D.34853;
              D.34874 = D.34854->type;
              iftmp.192 = D.34874 == 2;
              <D.34876>:
              if (iftmp.192 != 0) goto <D.34877>; else goto <D.34878>;
              <D.34877>:
              {
                struct MonoInst * var1;
                struct MonoInst * var2;

                D.30422 = cfg->varinfo;
                D.34847 = iargs[0];
                D.34850 = D.34847->data.op[0].const_val;
                D.34851 = (unsigned int) D.34850;
                D.34852 = D.34851 * 4;
                D.34853 = D.30422 + D.34852;
                D.34854 = *D.34853;
                D.34880 = D.34854->dreg;
                D.34881 = D.34880 + 1;
                D.34882 = (unsigned int) D.34881;
                D.30791 = cfg->vreg_to_inst_len;
                if (D.34882 < D.30791) goto <D.34883>; else goto <D.34884>;
                <D.34883>:
                D.30794 = cfg->vreg_to_inst;
                D.30422 = cfg->varinfo;
                D.34847 = iargs[0];
                D.34850 = D.34847->data.op[0].const_val;
                D.34851 = (unsigned int) D.34850;
                D.34852 = D.34851 * 4;
                D.34853 = D.30422 + D.34852;
                D.34854 = *D.34853;
                D.34880 = D.34854->dreg;
                D.34885 = (sizetype) D.34880;
                D.34886 = D.34885 + 1;
                D.34887 = D.34886 * 4;
                D.34888 = D.30794 + D.34887;
                iftmp.194 = *D.34888;
                goto <D.34889>;
                <D.34884>:
                iftmp.194 = 0B;
                <D.34889>:
                var1 = iftmp.194;
                D.30422 = cfg->varinfo;
                D.34847 = iargs[0];
                D.34850 = D.34847->data.op[0].const_val;
                D.34851 = (unsigned int) D.34850;
                D.34852 = D.34851 * 4;
                D.34853 = D.30422 + D.34852;
                D.34854 = *D.34853;
                D.34880 = D.34854->dreg;
                D.34891 = D.34880 + 2;
                D.34892 = (unsigned int) D.34891;
                D.30791 = cfg->vreg_to_inst_len;
                if (D.34892 < D.30791) goto <D.34893>; else goto <D.34894>;
                <D.34893>:
                D.30794 = cfg->vreg_to_inst;
                D.30422 = cfg->varinfo;
                D.34847 = iargs[0];
                D.34850 = D.34847->data.op[0].const_val;
                D.34851 = (unsigned int) D.34850;
                D.34852 = D.34851 * 4;
                D.34853 = D.30422 + D.34852;
                D.34854 = *D.34853;
                D.34880 = D.34854->dreg;
                D.34885 = (sizetype) D.34880;
                D.34895 = D.34885 + 2;
                D.34896 = D.34895 * 4;
                D.34897 = D.30794 + D.34896;
                iftmp.195 = *D.34897;
                goto <D.34898>;
                <D.34894>:
                iftmp.195 = 0B;
                <D.34898>:
                var2 = iftmp.195;
                D.34899 = var1 == 0B;
                D.34900 = (long int) D.34899;
                D.34901 = __builtin_expect (D.34900, 0);
                if (D.34901 != 0) goto <D.34902>; else goto <D.34903>;
                <D.34902>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9371, "var1");
                <D.34903>:
                D.34904 = var2 == 0B;
                D.34905 = (long int) D.34904;
                D.34906 = __builtin_expect (D.34905, 0);
                if (D.34906 != 0) goto <D.34907>; else goto <D.34908>;
                <D.34907>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9371, "var2");
                <D.34908>:
                D.34909 = var1->flags;
                D.34910 = D.34909 | 16;
                var1->flags = D.34910;
                D.34911 = var2->flags;
                D.34912 = D.34911 | 16;
                var2->flags = D.34912;
              }
              <D.34878>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.34913>; else goto <D.34914>;
              <D.34913>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.30679 = *sp;
              D.29939->next = D.30679;
              D.30679 = *sp;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.30679->prev = D.29939;
              bblock.129 = cfg->cbb;
              D.30679 = *sp;
              bblock.129->last_ins = D.30679;
              goto <D.34915>;
              <D.34914>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              D.30679 = *sp;
              bblock.129->last_ins = D.30679;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.34915>:
              alloc = 0B;
              goto <D.34916>;
              <D.34844>:
              if (context_used != 0) goto <D.34917>; else goto <D.34918>;
              <D.34917>:
              D.31542 = cmethod->klass;
              alloc = handle_alloc (cfg, D.31542, 0, context_used);
              *sp = alloc;
              goto <D.34919>;
              <D.34918>:
              {
                struct MonoVTable * vtable;

                vtable = 0B;
                D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
                D.30082 = D.30081 & 64;
                if (D.30082 == 0) goto <D.34920>; else goto <D.34921>;
                <D.34920>:
                D.29716 = cfg->domain;
                D.31542 = cmethod->klass;
                vtable = mono_class_vtable (D.29716, D.31542);
                <D.34921>:
                D.31542 = cmethod->klass;
                if (D.31542 == 0B) goto <D.34922>; else goto <D.34924>;
                <D.34924>:
                D.31542 = cmethod->klass;
                D.32090 = D.31542->exception_type;
                if (D.32090 != 0) goto <D.34922>; else goto <D.34923>;
                <D.34922>:
                D.31542 = cmethod->klass;
                cfg->exception_ptr = D.31542;
                D.34925 = mini_get_debug_options ();
                D.34926 = D.34925->break_on_unverified;
                if (D.34926 != 0) goto <D.34927>; else goto load_error;
                <D.34927>:
                raise (5);
                <D.34923>:
                D.31542 = cmethod->klass;
                D.34928 = mini_field_access_needs_cctor_run (cfg, method, D.31542, vtable);
                if (D.34928 != 0) goto <D.34929>; else goto <D.34930>;
                <D.34929>:
                D.31542 = cmethod->klass;
                D.34931 = monoeg_g_slist_find (class_inits, D.31542);
                if (D.34931 == 0B) goto <D.34932>; else goto <D.34933>;
                <D.34932>:
                D.31542 = cmethod->klass;
                helper_sig_class_init_trampoline.196 = helper_sig_class_init_trampoline;
                mono_emit_abs_call (cfg, 15, D.31542, helper_sig_class_init_trampoline.196, 0B);
                D.29771 = cfg->verbose_level;
                if (D.29771 > 2) goto <D.34935>; else goto <D.34936>;
                <D.34935>:
                D.31542 = cmethod->klass;
                D.34937 = D.31542->name_space;
                D.31542 = cmethod->klass;
                D.34938 = D.31542->name;
                printf ("class %s.%s needs init call for ctor\n", D.34937, D.34938);
                <D.34936>:
                D.31542 = cmethod->klass;
                class_inits = monoeg_g_slist_prepend (class_inits, D.31542);
                <D.34933>:
                <D.34930>:
                D.31542 = cmethod->klass;
                alloc = handle_alloc (cfg, D.31542, 0, 0);
                *sp = alloc;
              }
              <D.34919>:
              <D.34916>:
              D.30240 = cfg->exception_type;
              if (D.30240 != 0) goto exception_exit; else goto <D.34939>;
              <D.34939>:
              if (alloc != 0B) goto <D.34940>; else goto <D.34941>;
              <D.34940>:
              {
                struct MonoInst * inst;

                D.29691 = cfg->mempool;
                inst = mono_mempool_alloc (D.29691, 56);
                inst->data.op[1].const_val = 0;
                D.34942 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.34942;
                inst->prev = 0B;
                D.34943 = inst->prev;
                inst->next = D.34943;
                inst->opcode = 799;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.34944 = inst->sreg3;
                inst->sreg2 = D.34944;
                D.34945 = inst->sreg2;
                inst->sreg1 = D.34945;
                D.29910 = cfg->ip;
                inst->cil_code = D.29910;
                inst->dreg = -1;
                D.34946 = alloc->dreg;
                inst->sreg1 = D.34946;
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                if (D.29939 != 0B) goto <D.34947>; else goto <D.34948>;
                <D.34947>:
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                D.29939->next = inst;
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                inst->prev = D.29939;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                goto <D.34949>;
                <D.34948>:
                bblock.129 = cfg->cbb;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                D.29939 = bblock.129->last_ins;
                bblock.129->code = D.29939;
                <D.34949>:
              }
              <D.34941>:
              D.31542 = cmethod->klass;
              D.31543 = BIT_FIELD_REF <*D.31542, 32, 160>;
              D.31585 = D.31543 & 4194304;
              if (D.31585 != 0) goto <D.34950>; else goto <D.34951>;
              <D.34950>:
              callvirt_this_arg = *sp;
              <D.34951>:
              if (cmethod != 0B) goto <D.34954>; else goto <D.34952>;
              <D.34954>:
              D.30079 = cfg->opt;
              D.32064 = D.30079 & 2048;
              if (D.32064 != 0) goto <D.34955>; else goto <D.34952>;
              <D.34955>:
              ins = mini_emit_inst_for_ctor (cfg, cmethod, fsig, sp);
              if (ins != 0B) goto <D.34956>; else goto <D.34952>;
              <D.34956>:
              D.34957 = fsig->ret;
              D.34958 = mono_type_is_void (D.34957);
              if (D.34958 == 0) goto <D.34959>; else goto <D.34960>;
              <D.34959>:
              D.34957 = fsig->ret;
              type_to_eval_stack_type (cfg, D.34957, ins);
              *sp = ins;
              sp = sp + 4;
              <D.34960>:
              D.30240 = cfg->exception_type;
              if (D.30240 != 0) goto exception_exit; else goto <D.34961>;
              <D.34961>:
              goto <D.34953>;
              <D.34952>:
              D.30079 = cfg->opt;
              D.32512 = D.30079 & 4;
              if (D.32512 != 0) goto <D.34964>; else goto <D.34962>;
              <D.34964>:
              if (cmethod != 0B) goto <D.34965>; else goto <D.34962>;
              <D.34965>:
              if (context_used == 0) goto <D.34966>; else goto <D.34962>;
              <D.34966>:
              if (vtable_arg == 0B) goto <D.34967>; else goto <D.34962>;
              <D.34967>:
              if (disable_inline == 0) goto <D.34968>; else goto <D.34962>;
              <D.34968>:
              D.34969 = mono_method_check_inlining (cfg, cmethod);
              if (D.34969 != 0) goto <D.34970>; else goto <D.34962>;
              <D.34970>:
              D.31542 = cmethod->klass;
              D.34971 = mono_defaults.exception_class;
              D.34972 = mono_class_is_subclass_of (D.31542, D.34971, 0);
              if (D.34972 == 0) goto <D.34973>; else goto <D.34962>;
              <D.34973>:
              D.34974 = monoeg_g_list_find (dont_inline, cmethod);
              if (D.34974 == 0B) goto <D.34975>; else goto <D.34962>;
              <D.34975>:
              {
                int costs;

                D.29857 = cfg->real_offset;
                costs = inline_method (cfg, cmethod, fsig, sp, ip, D.29857, dont_inline, 0);
                if (costs != 0) goto <D.34976>; else goto <D.34977>;
                <D.34976>:
                D.29857 = cfg->real_offset;
                D.32539 = D.29857 + 5;
                cfg->real_offset = D.32539;
                bblock.129 = cfg->cbb;
                bblock = bblock.129;
                D.34978 = costs + -5;
                inline_costs = D.34978 + inline_costs;
                goto <D.34979>;
                <D.34977>:
                D.29662 = cfg->method;
                if (D.29662 != method) goto <D.34980>; else goto <D.34981>;
                <D.34980>:
                D.29634 = BIT_FIELD_REF <*method, 32, 160>;
                D.29635 = D.29634 & 124;
                if (D.29635 == 0) goto <D.34982>; else goto <D.34983>;
                <D.34982>:
                D.29771 = cfg->verbose_level;
                if (D.29771 > 1) goto <D.34984>; else goto <D.34985>;
                <D.34984>:
                printf ("inline failed: %s\n", "inline failure");
                <D.34985>:
                goto inline_failure;
                <D.34983>:
                <D.34981>:
                D.29838 = cfg->gsharedvt;
                if (D.29838 != 0) goto <D.34986>; else goto <D.34987>;
                <D.34986>:
                D.34988 = mini_is_gsharedvt_signature (cfg, fsig);
                if (D.34988 != 0) goto <D.34989>; else goto <D.34990>;
                <D.34989>:
                D.29838 = cfg->gsharedvt;
                if (D.29838 != 0) goto <D.34991>; else goto <D.34992>;
                <D.34991>:
                D.29629 = method->klass;
                D.31352 = D.29629->name_space;
                D.29629 = method->klass;
                D.31353 = D.29629->name;
                D.31354 = method->name;
                D.31355 = method->signature;
                D.31356 = D.31355->param_count;
                D.31357 = (int) D.31356;
                D.30562 = *ip;
                D.30563 = (int) D.30562;
                D.34993 = mono_opcode_name (D.30563);
                D.34994 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.31352, D.31353, D.31354, D.31357, D.34993, "method-to-ir.c", 9439);
                cfg->exception_message = D.34994;
                D.29771 = cfg->verbose_level;
                if (D.29771 > 1) goto <D.34995>; else goto <D.34996>;
                <D.34995>:
                D.31362 = cfg->exception_message;
                printf ("%s\n", D.31362);
                <D.34996>:
                mono_cfg_set_exception (cfg, 11);
                goto exception_exit;
                <D.34992>:
                <D.34990>:
                <D.34987>:
                mono_emit_method_call_full (cfg, cmethod, fsig, 0, sp, callvirt_this_arg, 0B, 0B);
                <D.34979>:
              }
              goto <D.34963>;
              <D.34962>:
              D.29838 = cfg->gsharedvt;
              if (D.29838 != 0) goto <D.34999>; else goto <D.34997>;
              <D.34999>:
              D.35000 = mini_is_gsharedvt_signature (cfg, fsig);
              if (D.35000 != 0) goto <D.35001>; else goto <D.34997>;
              <D.35001>:
              {
                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.34998>;
              <D.34997>:
              if (context_used != 0) goto <D.35005>; else goto <D.35002>;
              <D.35005>:
              D.35006 = mono_method_is_generic_sharable (cmethod, 1);
              if (D.35006 == 0) goto <D.35003>; else goto <D.35007>;
              <D.35007>:
              D.31542 = cmethod->klass;
              D.35008 = mono_class_generic_sharing_enabled (D.31542);
              if (D.35008 == 0) goto <D.35003>; else goto <D.35002>;
              <D.35003>:
              {
                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.35004>;
              <D.35002>:
              D.29662 = cfg->method;
              if (D.29662 != method) goto <D.35009>; else goto <D.35010>;
              <D.35009>:
              D.29634 = BIT_FIELD_REF <*method, 32, 160>;
              D.29635 = D.29634 & 124;
              if (D.29635 == 0) goto <D.35011>; else goto <D.35012>;
              <D.35011>:
              D.29771 = cfg->verbose_level;
              if (D.29771 > 1) goto <D.35013>; else goto <D.35014>;
              <D.35013>:
              printf ("inline failed: %s\n", "ctor call");
              <D.35014>:
              goto inline_failure;
              <D.35012>:
              <D.35010>:
              ins = mono_emit_method_call_full (cfg, cmethod, fsig, 0, sp, callvirt_this_arg, 0B, vtable_arg);
              <D.35004>:
              <D.34998>:
              <D.34963>:
              <D.34953>:
            }
            <D.34842>:
            <D.34826>:
            if (alloc == 0B) goto <D.35015>; else goto <D.35016>;
            <D.35015>:
            D.29691 = cfg->mempool;
            ins = mono_mempool_alloc (D.29691, 56);
            ins->data.op[1].const_val = 0;
            D.29906 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.29906;
            ins->prev = 0B;
            D.29907 = ins->prev;
            ins->next = D.29907;
            ins->opcode = 424;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.29908 = ins->sreg3;
            ins->sreg2 = D.29908;
            D.29909 = ins->sreg2;
            ins->sreg1 = D.29909;
            D.29910 = cfg->ip;
            ins->cil_code = D.29910;
            D.30422 = cfg->varinfo;
            D.34847 = iargs[0];
            D.34850 = D.34847->data.op[0].const_val;
            D.34851 = (unsigned int) D.34850;
            D.34852 = D.34851 * 4;
            D.34853 = D.30422 + D.34852;
            D.34854 = *D.34853;
            D.34862 = D.34854->data.op[1].vtype;
            D.35017 = mono_type_to_regmove (cfg, D.34862);
            D.35018 = (short unsigned int) D.35017;
            ins->opcode = D.35018;
            D.30422 = cfg->varinfo;
            D.34847 = iargs[0];
            D.34850 = D.34847->data.op[0].const_val;
            D.34851 = (unsigned int) D.34850;
            D.34852 = D.34851 * 4;
            D.34853 = D.30422 + D.34852;
            D.34854 = *D.34853;
            D.34862 = D.34854->data.op[1].vtype;
            type_to_eval_stack_type (cfg, D.34862, ins);
            D.30422 = cfg->varinfo;
            D.34847 = iargs[0];
            D.34850 = D.34847->data.op[0].const_val;
            D.34851 = (unsigned int) D.34850;
            D.34852 = D.34851 * 4;
            D.34853 = D.30422 + D.34852;
            D.34854 = *D.34853;
            D.34857 = D.34854->klass;
            ins->klass = D.34857;
            D.30422 = cfg->varinfo;
            D.34847 = iargs[0];
            D.34850 = D.34847->data.op[0].const_val;
            D.34851 = (unsigned int) D.34850;
            D.34852 = D.34851 * 4;
            D.34853 = D.30422 + D.34852;
            D.34854 = *D.34853;
            D.34880 = D.34854->dreg;
            ins->sreg1 = D.34880;
            D.30432 = ins->type;
            D.30433 = (<unnamed type>) D.30432;
            D.35019 = alloc_dreg (cfg, D.30433);
            D.35020 = (int) D.35019;
            ins->dreg = D.35020;
            D.30436 = ins->opcode;
            if (D.30436 == 427) goto <D.35021>; else goto <D.35022>;
            <D.35021>:
            D.30422 = cfg->varinfo;
            D.34847 = iargs[0];
            D.34850 = D.34847->data.op[0].const_val;
            D.34851 = (unsigned int) D.34850;
            D.34852 = D.34851 * 4;
            D.34853 = D.30422 + D.34852;
            D.34854 = *D.34853;
            D.34862 = D.34854->data.op[1].vtype;
            D.35023 = mono_class_from_mono_type (D.34862);
            ins->klass = D.35023;
            <D.35022>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.35024>; else goto <D.35025>;
            <D.35024>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = ins;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            ins->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            goto <D.35026>;
            <D.35025>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.35026>:
            D.35027 = ins->klass;
            D.35028 = &D.35027->byval_arg;
            type_to_eval_stack_type (cfg, D.35028, ins);
            sp.197 = sp;
            sp = sp.197 + 4;
            *sp.197 = ins;
            goto <D.35030>;
            <D.35016>:
            sp.198 = sp;
            sp = sp.198 + 4;
            *sp.198 = alloc;
            <D.35030>:
            ip = ip + 5;
            inline_costs = inline_costs + 5;
            goto <D.26808>;
          }
        finally
          {
            iargs = {CLOBBER};
            this_ins = {CLOBBER};
          }
      }
      <D.27203>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.35032>; else goto <D.35033>;
      <D.35032>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.35034>; else goto <D.35035>;
      <D.35034>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.35036>; else goto <D.35037>;
      <D.35036>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35037>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35035>:
      D.35038 = mini_get_debug_options ();
      D.35039 = D.35038->break_on_unverified;
      if (D.35039 != 0) goto <D.35040>; else goto unverified;
      <D.35040>:
      raise (5);
      <D.35033>:
      sp = sp + 4294967292;
      D.31124 = ip + 5;
      if (D.31124 > end) goto <D.35041>; else goto <D.35042>;
      <D.35041>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.35043>; else goto <D.35044>;
      <D.35043>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.35045>; else goto <D.35046>;
      <D.35045>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35046>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35044>:
      D.35047 = mini_get_debug_options ();
      D.35048 = D.35047->break_on_unverified;
      if (D.35048 != 0) goto <D.35049>; else goto unverified;
      <D.35049>:
      raise (5);
      <D.35042>:
      D.31143 = ip + 1;
      token = mono_read32 (D.31143);
      klass.199 = mini_get_class (method, token, generic_context);
      klass = klass.199;
      klass.176 = klass;
      if (klass.176 == 0B) goto <D.35051>; else goto <D.35053>;
      <D.35053>:
      klass.176 = klass;
      D.34335 = klass.176->exception_type;
      if (D.34335 != 0) goto <D.35051>; else goto <D.35052>;
      <D.35051>:
      klass.176 = klass;
      cfg->exception_ptr = klass.176;
      D.35054 = mini_get_debug_options ();
      D.35055 = D.35054->break_on_unverified;
      if (D.35055 != 0) goto <D.35056>; else goto load_error;
      <D.35056>:
      raise (5);
      <D.35052>:
      D.30679 = *sp;
      D.32402 = D.30679->type;
      if (D.32402 != 6) goto <D.35057>; else goto <D.35058>;
      <D.35057>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.35059>; else goto <D.35060>;
      <D.35059>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.35061>; else goto <D.35062>;
      <D.35061>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35062>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35060>:
      D.35063 = mini_get_debug_options ();
      D.35064 = D.35063->break_on_unverified;
      if (D.35064 != 0) goto <D.35065>; else goto unverified;
      <D.35065>:
      raise (5);
      <D.35058>:
      klass.176 = klass;
      context_used = mini_class_check_context_used (cfg, klass.176);
      if (context_used == 0) goto <D.35068>; else goto <D.35066>;
      <D.35068>:
      klass.176 = klass;
      D.35069 = mini_class_has_reference_variant_generic_argument (cfg, klass.176, context_used);
      if (D.35069 != 0) goto <D.35070>; else goto <D.35066>;
      <D.35070>:
      {
        struct MonoMethod * mono_castclass;
        struct MonoInst * args[3];

        try
          {
            mono_castclass = mono_marshal_get_castclass_with_cache ();
            D.30679 = *sp;
            args[0] = D.30679;
            D.29691 = cfg->mempool;
            D.35071 = mono_mempool_alloc (D.29691, 56);
            args[1] = D.35071;
            D.35072 = args[1];
            D.35072 = args[1];
            D.35072->data.op[1].const_val = 0;
            D.35073 = D.35072->data.op[1].const_val;
            D.35072->data.op[0].const_val = D.35073;
            D.35072 = args[1];
            D.35072 = args[1];
            D.35072->prev = 0B;
            D.35074 = D.35072->prev;
            D.35072->next = D.35074;
            D.35072 = args[1];
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.35076>; else goto <D.35077>;
            <D.35076>:
            iftmp.200 = 732;
            goto <D.35078>;
            <D.35077>:
            iftmp.200 = 362;
            <D.35078>:
            D.35072->opcode = iftmp.200;
            D.35072 = args[1];
            D.35072->flags = 0;
            D.35072 = args[1];
            D.35072->type = 0;
            D.35072 = args[1];
            D.35072->dreg = -1;
            D.35072 = args[1];
            D.35072 = args[1];
            D.35072 = args[1];
            D.35072->sreg3 = -1;
            D.35079 = D.35072->sreg3;
            D.35072->sreg2 = D.35079;
            D.35080 = D.35072->sreg2;
            D.35072->sreg1 = D.35080;
            D.35072 = args[1];
            D.29910 = cfg->ip;
            D.35072->cil_code = D.29910;
            D.35072 = args[1];
            klass.176 = klass;
            D.35072->data.op[0].p = klass.176;
            D.35072 = args[1];
            D.35072->data.op[1].src = 11B;
            D.35072 = args[1];
            D.35072->type = 3;
            D.35072 = args[1];
            D.35081 = alloc_dreg (cfg, 3);
            D.35082 = (int) D.35081;
            D.35072->dreg = D.35082;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.35083>; else goto <D.35084>;
            <D.35083>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.35072 = args[1];
            D.29939->next = D.35072;
            D.35072 = args[1];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.35072->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.35072 = args[1];
            bblock.129->last_ins = D.35072;
            goto <D.35085>;
            <D.35084>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.35072 = args[1];
            bblock.129->last_ins = D.35072;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.35085>:
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.35086>; else goto <D.35087>;
            <D.35086>:
            D.29691 = cfg->mempool;
            D.35088 = mono_mempool_alloc (D.29691, 56);
            args[2] = D.35088;
            D.35089 = args[2];
            D.35089 = args[2];
            D.35089->data.op[1].const_val = 0;
            D.35090 = D.35089->data.op[1].const_val;
            D.35089->data.op[0].const_val = D.35090;
            D.35089 = args[2];
            D.35089 = args[2];
            D.35089->prev = 0B;
            D.35091 = D.35089->prev;
            D.35089->next = D.35091;
            D.35089 = args[2];
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.35093>; else goto <D.35094>;
            <D.35093>:
            iftmp.201 = 732;
            goto <D.35095>;
            <D.35094>:
            iftmp.201 = 362;
            <D.35095>:
            D.35089->opcode = iftmp.201;
            D.35089 = args[2];
            D.35089->flags = 0;
            D.35089 = args[2];
            D.35089->type = 0;
            D.35089 = args[2];
            D.35089->dreg = -1;
            D.35089 = args[2];
            D.35089 = args[2];
            D.35089 = args[2];
            D.35089->sreg3 = -1;
            D.35096 = D.35089->sreg3;
            D.35089->sreg2 = D.35096;
            D.35097 = D.35089->sreg2;
            D.35089->sreg1 = D.35097;
            D.35089 = args[2];
            D.29910 = cfg->ip;
            D.35089->cil_code = D.29910;
            D.35089 = args[2];
            D.35089->data.op[0].p = 0B;
            D.35089 = args[2];
            D.35089->data.op[1].src = 43B;
            D.35089 = args[2];
            D.35089->type = 3;
            D.35089 = args[2];
            D.35098 = alloc_dreg (cfg, 3);
            D.35099 = (int) D.35098;
            D.35089->dreg = D.35099;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.35100>; else goto <D.35101>;
            <D.35100>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.35089 = args[2];
            D.29939->next = D.35089;
            D.35089 = args[2];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.35089->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.35089 = args[2];
            bblock.129->last_ins = D.35089;
            goto <D.35102>;
            <D.35101>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.35089 = args[2];
            bblock.129->last_ins = D.35089;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.35102>:
            goto <D.35103>;
            <D.35087>:
            D.29691 = cfg->mempool;
            D.35104 = mono_mempool_alloc (D.29691, 56);
            args[2] = D.35104;
            D.35089 = args[2];
            D.35089 = args[2];
            D.35089->data.op[1].const_val = 0;
            D.35090 = D.35089->data.op[1].const_val;
            D.35089->data.op[0].const_val = D.35090;
            D.35089 = args[2];
            D.35089 = args[2];
            D.35089->prev = 0B;
            D.35091 = D.35089->prev;
            D.35089->next = D.35091;
            D.35089 = args[2];
            D.35089->opcode = 362;
            D.35089 = args[2];
            D.35089->flags = 0;
            D.35089 = args[2];
            D.35089->type = 0;
            D.35089 = args[2];
            D.35089->dreg = -1;
            D.35089 = args[2];
            D.35089 = args[2];
            D.35089 = args[2];
            D.35089->sreg3 = -1;
            D.35096 = D.35089->sreg3;
            D.35089->sreg2 = D.35096;
            D.35097 = D.35089->sreg2;
            D.35089->sreg1 = D.35097;
            D.35089 = args[2];
            D.29910 = cfg->ip;
            D.35089->cil_code = D.29910;
            D.35089 = args[2];
            D.29716 = cfg->domain;
            D.35105 = mono_domain_alloc0 (D.29716, 4);
            D.35089->data.op[0].p = D.35105;
            D.35089 = args[2];
            D.35089->type = 3;
            D.35089 = args[2];
            D.35106 = alloc_dreg (cfg, 3);
            D.35107 = (int) D.35106;
            D.35089->dreg = D.35107;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.35108>; else goto <D.35109>;
            <D.35108>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.35089 = args[2];
            D.29939->next = D.35089;
            D.35089 = args[2];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.35089->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.35089 = args[2];
            bblock.129->last_ins = D.35089;
            goto <D.35110>;
            <D.35109>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.35089 = args[2];
            bblock.129->last_ins = D.35089;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.35110>:
            <D.35103>:
            klass.176 = klass;
            D.30679 = *sp;
            D.30872 = D.30679->dreg;
            save_cast_details (cfg, klass.176, D.30872, 1, &bblock);
            sp.202 = sp;
            sp = sp.202 + 4;
            D.35112 = mono_emit_method_call (cfg, mono_castclass, &args, 0B);
            *sp.202 = D.35112;
            reset_cast_details (cfg);
            ip = ip + 5;
            inline_costs = inline_costs + 2;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      goto <D.35067>;
      <D.35066>:
      if (context_used == 0) goto <D.35116>; else goto <D.35113>;
      <D.35116>:
      klass.176 = klass;
      D.35117 = BIT_FIELD_REF <*klass.176, 32, 160>;
      D.35118 = D.35117 & 4194304;
      if (D.35118 != 0) goto <D.35114>; else goto <D.35119>;
      <D.35119>:
      klass.176 = klass;
      D.35120 = klass.176->flags;
      D.35121 = D.35120 & 32;
      if (D.35121 != 0) goto <D.35114>; else goto <D.35113>;
      <D.35114>:
      {
        struct MonoMethod * mono_castclass;
        struct MonoInst * iargs[1];
        int costs;

        try
          {
            klass.176 = klass;
            mono_castclass = mono_marshal_get_castclass (klass.176);
            D.30679 = *sp;
            iargs[0] = D.30679;
            klass.176 = klass;
            D.30679 = *sp;
            D.30872 = D.30679->dreg;
            save_cast_details (cfg, klass.176, D.30872, 1, &bblock);
            D.35122 = mono_method_signature (mono_castclass);
            D.29857 = cfg->real_offset;
            costs = inline_method (cfg, mono_castclass, D.35122, &iargs, ip, D.29857, dont_inline, 1);
            reset_cast_details (cfg);
            D.30240 = cfg->exception_type;
            if (D.30240 != 0) goto exception_exit; else goto <D.35123>;
            <D.35123>:
            D.35124 = costs <= 0;
            D.35125 = (long int) D.35124;
            D.35126 = __builtin_expect (D.35125, 0);
            if (D.35126 != 0) goto <D.35127>; else goto <D.35128>;
            <D.35127>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9524, "costs > 0");
            <D.35128>:
            ip = ip + 5;
            D.29857 = cfg->real_offset;
            D.32539 = D.29857 + 5;
            cfg->real_offset = D.32539;
            bblock.129 = cfg->cbb;
            bblock = bblock.129;
            sp.203 = sp;
            sp = sp.203 + 4;
            D.35130 = iargs[0];
            *sp.203 = D.35130;
            inline_costs = inline_costs + costs;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.35115>;
      <D.35113>:
      klass.176 = klass;
      D.30679 = *sp;
      ins = handle_castclass (cfg, klass.176, D.30679, context_used);
      D.30240 = cfg->exception_type;
      if (D.30240 != 0) goto exception_exit; else goto <D.35131>;
      <D.35131>:
      bblock.129 = cfg->cbb;
      bblock = bblock.129;
      sp.204 = sp;
      sp = sp.204 + 4;
      *sp.204 = ins;
      ip = ip + 5;
      <D.35115>:
      <D.35067>:
      goto <D.26808>;
      <D.27209>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.35133>; else goto <D.35134>;
      <D.35133>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.35135>; else goto <D.35136>;
      <D.35135>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.35137>; else goto <D.35138>;
      <D.35137>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35138>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35136>:
      D.35139 = mini_get_debug_options ();
      D.35140 = D.35139->break_on_unverified;
      if (D.35140 != 0) goto <D.35141>; else goto unverified;
      <D.35141>:
      raise (5);
      <D.35134>:
      sp = sp + 4294967292;
      D.31124 = ip + 5;
      if (D.31124 > end) goto <D.35142>; else goto <D.35143>;
      <D.35142>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.35144>; else goto <D.35145>;
      <D.35144>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.35146>; else goto <D.35147>;
      <D.35146>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35147>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35145>:
      D.35148 = mini_get_debug_options ();
      D.35149 = D.35148->break_on_unverified;
      if (D.35149 != 0) goto <D.35150>; else goto unverified;
      <D.35150>:
      raise (5);
      <D.35143>:
      D.31143 = ip + 1;
      token = mono_read32 (D.31143);
      klass.205 = mini_get_class (method, token, generic_context);
      klass = klass.205;
      klass.176 = klass;
      if (klass.176 == 0B) goto <D.35152>; else goto <D.35154>;
      <D.35154>:
      klass.176 = klass;
      D.34335 = klass.176->exception_type;
      if (D.34335 != 0) goto <D.35152>; else goto <D.35153>;
      <D.35152>:
      klass.176 = klass;
      cfg->exception_ptr = klass.176;
      D.35155 = mini_get_debug_options ();
      D.35156 = D.35155->break_on_unverified;
      if (D.35156 != 0) goto <D.35157>; else goto load_error;
      <D.35157>:
      raise (5);
      <D.35153>:
      D.30679 = *sp;
      D.32402 = D.30679->type;
      if (D.32402 != 6) goto <D.35158>; else goto <D.35159>;
      <D.35158>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.35160>; else goto <D.35161>;
      <D.35160>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.35162>; else goto <D.35163>;
      <D.35162>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35163>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35161>:
      D.35164 = mini_get_debug_options ();
      D.35165 = D.35164->break_on_unverified;
      if (D.35165 != 0) goto <D.35166>; else goto unverified;
      <D.35166>:
      raise (5);
      <D.35159>:
      klass.176 = klass;
      context_used = mini_class_check_context_used (cfg, klass.176);
      if (context_used == 0) goto <D.35169>; else goto <D.35167>;
      <D.35169>:
      klass.176 = klass;
      D.35170 = mini_class_has_reference_variant_generic_argument (cfg, klass.176, context_used);
      if (D.35170 != 0) goto <D.35171>; else goto <D.35167>;
      <D.35171>:
      {
        struct MonoMethod * mono_isinst;
        struct MonoInst * args[3];

        try
          {
            mono_isinst = mono_marshal_get_isinst_with_cache ();
            D.30679 = *sp;
            args[0] = D.30679;
            D.29691 = cfg->mempool;
            D.35172 = mono_mempool_alloc (D.29691, 56);
            args[1] = D.35172;
            D.35173 = args[1];
            D.35173 = args[1];
            D.35173->data.op[1].const_val = 0;
            D.35174 = D.35173->data.op[1].const_val;
            D.35173->data.op[0].const_val = D.35174;
            D.35173 = args[1];
            D.35173 = args[1];
            D.35173->prev = 0B;
            D.35175 = D.35173->prev;
            D.35173->next = D.35175;
            D.35173 = args[1];
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.35177>; else goto <D.35178>;
            <D.35177>:
            iftmp.206 = 732;
            goto <D.35179>;
            <D.35178>:
            iftmp.206 = 362;
            <D.35179>:
            D.35173->opcode = iftmp.206;
            D.35173 = args[1];
            D.35173->flags = 0;
            D.35173 = args[1];
            D.35173->type = 0;
            D.35173 = args[1];
            D.35173->dreg = -1;
            D.35173 = args[1];
            D.35173 = args[1];
            D.35173 = args[1];
            D.35173->sreg3 = -1;
            D.35180 = D.35173->sreg3;
            D.35173->sreg2 = D.35180;
            D.35181 = D.35173->sreg2;
            D.35173->sreg1 = D.35181;
            D.35173 = args[1];
            D.29910 = cfg->ip;
            D.35173->cil_code = D.29910;
            D.35173 = args[1];
            klass.176 = klass;
            D.35173->data.op[0].p = klass.176;
            D.35173 = args[1];
            D.35173->data.op[1].src = 11B;
            D.35173 = args[1];
            D.35173->type = 3;
            D.35173 = args[1];
            D.35182 = alloc_dreg (cfg, 3);
            D.35183 = (int) D.35182;
            D.35173->dreg = D.35183;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.35184>; else goto <D.35185>;
            <D.35184>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.35173 = args[1];
            D.29939->next = D.35173;
            D.35173 = args[1];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.35173->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.35173 = args[1];
            bblock.129->last_ins = D.35173;
            goto <D.35186>;
            <D.35185>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.35173 = args[1];
            bblock.129->last_ins = D.35173;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.35186>:
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.35187>; else goto <D.35188>;
            <D.35187>:
            D.29691 = cfg->mempool;
            D.35189 = mono_mempool_alloc (D.29691, 56);
            args[2] = D.35189;
            D.35190 = args[2];
            D.35190 = args[2];
            D.35190->data.op[1].const_val = 0;
            D.35191 = D.35190->data.op[1].const_val;
            D.35190->data.op[0].const_val = D.35191;
            D.35190 = args[2];
            D.35190 = args[2];
            D.35190->prev = 0B;
            D.35192 = D.35190->prev;
            D.35190->next = D.35192;
            D.35190 = args[2];
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.35194>; else goto <D.35195>;
            <D.35194>:
            iftmp.207 = 732;
            goto <D.35196>;
            <D.35195>:
            iftmp.207 = 362;
            <D.35196>:
            D.35190->opcode = iftmp.207;
            D.35190 = args[2];
            D.35190->flags = 0;
            D.35190 = args[2];
            D.35190->type = 0;
            D.35190 = args[2];
            D.35190->dreg = -1;
            D.35190 = args[2];
            D.35190 = args[2];
            D.35190 = args[2];
            D.35190->sreg3 = -1;
            D.35197 = D.35190->sreg3;
            D.35190->sreg2 = D.35197;
            D.35198 = D.35190->sreg2;
            D.35190->sreg1 = D.35198;
            D.35190 = args[2];
            D.29910 = cfg->ip;
            D.35190->cil_code = D.29910;
            D.35190 = args[2];
            D.35190->data.op[0].p = 0B;
            D.35190 = args[2];
            D.35190->data.op[1].src = 43B;
            D.35190 = args[2];
            D.35190->type = 3;
            D.35190 = args[2];
            D.35199 = alloc_dreg (cfg, 3);
            D.35200 = (int) D.35199;
            D.35190->dreg = D.35200;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.35201>; else goto <D.35202>;
            <D.35201>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.35190 = args[2];
            D.29939->next = D.35190;
            D.35190 = args[2];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.35190->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.35190 = args[2];
            bblock.129->last_ins = D.35190;
            goto <D.35203>;
            <D.35202>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.35190 = args[2];
            bblock.129->last_ins = D.35190;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.35203>:
            goto <D.35204>;
            <D.35188>:
            D.29691 = cfg->mempool;
            D.35205 = mono_mempool_alloc (D.29691, 56);
            args[2] = D.35205;
            D.35190 = args[2];
            D.35190 = args[2];
            D.35190->data.op[1].const_val = 0;
            D.35191 = D.35190->data.op[1].const_val;
            D.35190->data.op[0].const_val = D.35191;
            D.35190 = args[2];
            D.35190 = args[2];
            D.35190->prev = 0B;
            D.35192 = D.35190->prev;
            D.35190->next = D.35192;
            D.35190 = args[2];
            D.35190->opcode = 362;
            D.35190 = args[2];
            D.35190->flags = 0;
            D.35190 = args[2];
            D.35190->type = 0;
            D.35190 = args[2];
            D.35190->dreg = -1;
            D.35190 = args[2];
            D.35190 = args[2];
            D.35190 = args[2];
            D.35190->sreg3 = -1;
            D.35197 = D.35190->sreg3;
            D.35190->sreg2 = D.35197;
            D.35198 = D.35190->sreg2;
            D.35190->sreg1 = D.35198;
            D.35190 = args[2];
            D.29910 = cfg->ip;
            D.35190->cil_code = D.29910;
            D.35190 = args[2];
            D.29716 = cfg->domain;
            D.35206 = mono_domain_alloc0 (D.29716, 4);
            D.35190->data.op[0].p = D.35206;
            D.35190 = args[2];
            D.35190->type = 3;
            D.35190 = args[2];
            D.35207 = alloc_dreg (cfg, 3);
            D.35208 = (int) D.35207;
            D.35190->dreg = D.35208;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.35209>; else goto <D.35210>;
            <D.35209>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.35190 = args[2];
            D.29939->next = D.35190;
            D.35190 = args[2];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.35190->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.35190 = args[2];
            bblock.129->last_ins = D.35190;
            goto <D.35211>;
            <D.35210>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.35190 = args[2];
            bblock.129->last_ins = D.35190;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.35211>:
            <D.35204>:
            sp.208 = sp;
            sp = sp.208 + 4;
            D.35213 = mono_emit_method_call (cfg, mono_isinst, &args, 0B);
            *sp.208 = D.35213;
            ip = ip + 5;
            inline_costs = inline_costs + 2;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      goto <D.35168>;
      <D.35167>:
      if (context_used == 0) goto <D.35217>; else goto <D.35214>;
      <D.35217>:
      klass.176 = klass;
      D.35117 = BIT_FIELD_REF <*klass.176, 32, 160>;
      D.35118 = D.35117 & 4194304;
      if (D.35118 != 0) goto <D.35215>; else goto <D.35218>;
      <D.35218>:
      klass.176 = klass;
      D.35120 = klass.176->flags;
      D.35121 = D.35120 & 32;
      if (D.35121 != 0) goto <D.35215>; else goto <D.35214>;
      <D.35215>:
      {
        struct MonoMethod * mono_isinst;
        struct MonoInst * iargs[1];
        int costs;

        try
          {
            klass.176 = klass;
            mono_isinst = mono_marshal_get_isinst (klass.176);
            D.30679 = *sp;
            iargs[0] = D.30679;
            D.35219 = mono_method_signature (mono_isinst);
            D.29857 = cfg->real_offset;
            costs = inline_method (cfg, mono_isinst, D.35219, &iargs, ip, D.29857, dont_inline, 1);
            D.30240 = cfg->exception_type;
            if (D.30240 != 0) goto exception_exit; else goto <D.35220>;
            <D.35220>:
            D.35221 = costs <= 0;
            D.35222 = (long int) D.35221;
            D.35223 = __builtin_expect (D.35222, 0);
            if (D.35223 != 0) goto <D.35224>; else goto <D.35225>;
            <D.35224>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9584, "costs > 0");
            <D.35225>:
            ip = ip + 5;
            D.29857 = cfg->real_offset;
            D.32539 = D.29857 + 5;
            cfg->real_offset = D.32539;
            bblock.129 = cfg->cbb;
            bblock = bblock.129;
            sp.209 = sp;
            sp = sp.209 + 4;
            D.35227 = iargs[0];
            *sp.209 = D.35227;
            inline_costs = inline_costs + costs;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.35216>;
      <D.35214>:
      klass.176 = klass;
      D.30679 = *sp;
      ins = handle_isinst (cfg, klass.176, D.30679, context_used);
      D.30240 = cfg->exception_type;
      if (D.30240 != 0) goto exception_exit; else goto <D.35228>;
      <D.35228>:
      bblock.129 = cfg->cbb;
      bblock = bblock.129;
      sp.210 = sp;
      sp = sp.210 + 4;
      *sp.210 = ins;
      ip = ip + 5;
      <D.35216>:
      <D.35168>:
      goto <D.26808>;
      <D.27215>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.35230>; else goto <D.35231>;
      <D.35230>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.35232>; else goto <D.35233>;
      <D.35232>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.35234>; else goto <D.35235>;
      <D.35234>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35235>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35233>:
      D.35236 = mini_get_debug_options ();
      D.35237 = D.35236->break_on_unverified;
      if (D.35237 != 0) goto <D.35238>; else goto unverified;
      <D.35238>:
      raise (5);
      <D.35231>:
      sp = sp + 4294967292;
      D.31124 = ip + 5;
      if (D.31124 > end) goto <D.35239>; else goto <D.35240>;
      <D.35239>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.35241>; else goto <D.35242>;
      <D.35241>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.35243>; else goto <D.35244>;
      <D.35243>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35244>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35242>:
      D.35245 = mini_get_debug_options ();
      D.35246 = D.35245->break_on_unverified;
      if (D.35246 != 0) goto <D.35247>; else goto unverified;
      <D.35247>:
      raise (5);
      <D.35240>:
      D.31143 = ip + 1;
      token = mono_read32 (D.31143);
      klass.211 = mini_get_class (method, token, generic_context);
      klass = klass.211;
      klass.176 = klass;
      if (klass.176 == 0B) goto <D.35249>; else goto <D.35251>;
      <D.35251>:
      klass.176 = klass;
      D.34335 = klass.176->exception_type;
      if (D.34335 != 0) goto <D.35249>; else goto <D.35250>;
      <D.35249>:
      klass.176 = klass;
      cfg->exception_ptr = klass.176;
      D.35252 = mini_get_debug_options ();
      D.35253 = D.35252->break_on_unverified;
      if (D.35253 != 0) goto <D.35254>; else goto load_error;
      <D.35254>:
      raise (5);
      <D.35250>:
      klass.176 = klass;
      mono_save_token_info (cfg, image, token, klass.176);
      klass.176 = klass;
      context_used = mini_class_check_context_used (cfg, klass.176);
      klass.176 = klass;
      D.35255 = mini_is_gsharedvt_klass (cfg, klass.176);
      if (D.35255 != 0) goto <D.35256>; else goto <D.35257>;
      <D.35256>:
      klass.176 = klass;
      D.30679 = *sp;
      D.35258 = handle_unbox_gsharedvt (cfg, klass.176, D.30679, &bblock);
      *sp = D.35258;
      sp = sp + 4;
      ip = ip + 5;
      inline_costs = inline_costs + 2;
      goto <D.26808>;
      <D.35257>:
      klass.176 = klass;
      D.35259 = generic_class_is_reference_type (cfg, klass.176);
      if (D.35259 != 0) goto <D.35260>; else goto <D.35261>;
      <D.35260>:
      if (context_used == 0) goto <D.35264>; else goto <D.35262>;
      <D.35264>:
      klass.176 = klass;
      D.35265 = mini_class_has_reference_variant_generic_argument (cfg, klass.176, context_used);
      if (D.35265 != 0) goto <D.35266>; else goto <D.35262>;
      <D.35266>:
      {
        struct MonoMethod * mono_castclass;
        struct MonoInst * args[3];

        try
          {
            mono_castclass = mono_marshal_get_castclass_with_cache ();
            D.30679 = *sp;
            args[0] = D.30679;
            D.29691 = cfg->mempool;
            D.35267 = mono_mempool_alloc (D.29691, 56);
            args[1] = D.35267;
            D.35268 = args[1];
            D.35268 = args[1];
            D.35268->data.op[1].const_val = 0;
            D.35269 = D.35268->data.op[1].const_val;
            D.35268->data.op[0].const_val = D.35269;
            D.35268 = args[1];
            D.35268 = args[1];
            D.35268->prev = 0B;
            D.35270 = D.35268->prev;
            D.35268->next = D.35270;
            D.35268 = args[1];
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.35272>; else goto <D.35273>;
            <D.35272>:
            iftmp.212 = 732;
            goto <D.35274>;
            <D.35273>:
            iftmp.212 = 362;
            <D.35274>:
            D.35268->opcode = iftmp.212;
            D.35268 = args[1];
            D.35268->flags = 0;
            D.35268 = args[1];
            D.35268->type = 0;
            D.35268 = args[1];
            D.35268->dreg = -1;
            D.35268 = args[1];
            D.35268 = args[1];
            D.35268 = args[1];
            D.35268->sreg3 = -1;
            D.35275 = D.35268->sreg3;
            D.35268->sreg2 = D.35275;
            D.35276 = D.35268->sreg2;
            D.35268->sreg1 = D.35276;
            D.35268 = args[1];
            D.29910 = cfg->ip;
            D.35268->cil_code = D.29910;
            D.35268 = args[1];
            klass.176 = klass;
            D.35268->data.op[0].p = klass.176;
            D.35268 = args[1];
            D.35268->data.op[1].src = 11B;
            D.35268 = args[1];
            D.35268->type = 3;
            D.35268 = args[1];
            D.35277 = alloc_dreg (cfg, 3);
            D.35278 = (int) D.35277;
            D.35268->dreg = D.35278;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.35279>; else goto <D.35280>;
            <D.35279>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.35268 = args[1];
            D.29939->next = D.35268;
            D.35268 = args[1];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.35268->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.35268 = args[1];
            bblock.129->last_ins = D.35268;
            goto <D.35281>;
            <D.35280>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.35268 = args[1];
            bblock.129->last_ins = D.35268;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.35281>:
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.35282>; else goto <D.35283>;
            <D.35282>:
            D.29691 = cfg->mempool;
            D.35284 = mono_mempool_alloc (D.29691, 56);
            args[2] = D.35284;
            D.35285 = args[2];
            D.35285 = args[2];
            D.35285->data.op[1].const_val = 0;
            D.35286 = D.35285->data.op[1].const_val;
            D.35285->data.op[0].const_val = D.35286;
            D.35285 = args[2];
            D.35285 = args[2];
            D.35285->prev = 0B;
            D.35287 = D.35285->prev;
            D.35285->next = D.35287;
            D.35285 = args[2];
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.35289>; else goto <D.35290>;
            <D.35289>:
            iftmp.213 = 732;
            goto <D.35291>;
            <D.35290>:
            iftmp.213 = 362;
            <D.35291>:
            D.35285->opcode = iftmp.213;
            D.35285 = args[2];
            D.35285->flags = 0;
            D.35285 = args[2];
            D.35285->type = 0;
            D.35285 = args[2];
            D.35285->dreg = -1;
            D.35285 = args[2];
            D.35285 = args[2];
            D.35285 = args[2];
            D.35285->sreg3 = -1;
            D.35292 = D.35285->sreg3;
            D.35285->sreg2 = D.35292;
            D.35293 = D.35285->sreg2;
            D.35285->sreg1 = D.35293;
            D.35285 = args[2];
            D.29910 = cfg->ip;
            D.35285->cil_code = D.29910;
            D.35285 = args[2];
            D.35285->data.op[0].p = 0B;
            D.35285 = args[2];
            D.35285->data.op[1].src = 43B;
            D.35285 = args[2];
            D.35285->type = 3;
            D.35285 = args[2];
            D.35294 = alloc_dreg (cfg, 3);
            D.35295 = (int) D.35294;
            D.35285->dreg = D.35295;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.35296>; else goto <D.35297>;
            <D.35296>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.35285 = args[2];
            D.29939->next = D.35285;
            D.35285 = args[2];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.35285->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.35285 = args[2];
            bblock.129->last_ins = D.35285;
            goto <D.35298>;
            <D.35297>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.35285 = args[2];
            bblock.129->last_ins = D.35285;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.35298>:
            goto <D.35299>;
            <D.35283>:
            D.29691 = cfg->mempool;
            D.35300 = mono_mempool_alloc (D.29691, 56);
            args[2] = D.35300;
            D.35285 = args[2];
            D.35285 = args[2];
            D.35285->data.op[1].const_val = 0;
            D.35286 = D.35285->data.op[1].const_val;
            D.35285->data.op[0].const_val = D.35286;
            D.35285 = args[2];
            D.35285 = args[2];
            D.35285->prev = 0B;
            D.35287 = D.35285->prev;
            D.35285->next = D.35287;
            D.35285 = args[2];
            D.35285->opcode = 362;
            D.35285 = args[2];
            D.35285->flags = 0;
            D.35285 = args[2];
            D.35285->type = 0;
            D.35285 = args[2];
            D.35285->dreg = -1;
            D.35285 = args[2];
            D.35285 = args[2];
            D.35285 = args[2];
            D.35285->sreg3 = -1;
            D.35292 = D.35285->sreg3;
            D.35285->sreg2 = D.35292;
            D.35293 = D.35285->sreg2;
            D.35285->sreg1 = D.35293;
            D.35285 = args[2];
            D.29910 = cfg->ip;
            D.35285->cil_code = D.29910;
            D.35285 = args[2];
            D.29716 = cfg->domain;
            D.35301 = mono_domain_alloc0 (D.29716, 4);
            D.35285->data.op[0].p = D.35301;
            D.35285 = args[2];
            D.35285->type = 3;
            D.35285 = args[2];
            D.35302 = alloc_dreg (cfg, 3);
            D.35303 = (int) D.35302;
            D.35285->dreg = D.35303;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.35304>; else goto <D.35305>;
            <D.35304>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.35285 = args[2];
            D.29939->next = D.35285;
            D.35285 = args[2];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.35285->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.35285 = args[2];
            bblock.129->last_ins = D.35285;
            goto <D.35306>;
            <D.35305>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.35285 = args[2];
            bblock.129->last_ins = D.35285;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.35306>:
            <D.35299>:
            sp.214 = sp;
            sp = sp.214 + 4;
            D.35308 = mono_emit_method_call (cfg, mono_castclass, &args, 0B);
            *sp.214 = D.35308;
            ip = ip + 5;
            inline_costs = inline_costs + 2;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      goto <D.35263>;
      <D.35262>:
      if (context_used == 0) goto <D.35312>; else goto <D.35309>;
      <D.35312>:
      klass.176 = klass;
      D.35117 = BIT_FIELD_REF <*klass.176, 32, 160>;
      D.35118 = D.35117 & 4194304;
      if (D.35118 != 0) goto <D.35310>; else goto <D.35313>;
      <D.35313>:
      klass.176 = klass;
      D.35120 = klass.176->flags;
      D.35121 = D.35120 & 32;
      if (D.35121 != 0) goto <D.35310>; else goto <D.35309>;
      <D.35310>:
      {
        struct MonoMethod * mono_castclass;
        struct MonoInst * iargs[1];
        int costs;

        try
          {
            klass.176 = klass;
            mono_castclass = mono_marshal_get_castclass (klass.176);
            D.30679 = *sp;
            iargs[0] = D.30679;
            D.35314 = mono_method_signature (mono_castclass);
            D.29857 = cfg->real_offset;
            costs = inline_method (cfg, mono_castclass, D.35314, &iargs, ip, D.29857, dont_inline, 1);
            D.30240 = cfg->exception_type;
            if (D.30240 != 0) goto exception_exit; else goto <D.35315>;
            <D.35315>:
            D.35316 = costs <= 0;
            D.35317 = (long int) D.35316;
            D.35318 = __builtin_expect (D.35317, 0);
            if (D.35318 != 0) goto <D.35319>; else goto <D.35320>;
            <D.35319>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9658, "costs > 0");
            <D.35320>:
            ip = ip + 5;
            D.29857 = cfg->real_offset;
            D.32539 = D.29857 + 5;
            cfg->real_offset = D.32539;
            bblock.129 = cfg->cbb;
            bblock = bblock.129;
            sp.215 = sp;
            sp = sp.215 + 4;
            D.35322 = iargs[0];
            *sp.215 = D.35322;
            inline_costs = inline_costs + costs;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.35311>;
      <D.35309>:
      klass.176 = klass;
      D.30679 = *sp;
      ins = handle_castclass (cfg, klass.176, D.30679, context_used);
      D.30240 = cfg->exception_type;
      if (D.30240 != 0) goto exception_exit; else goto <D.35323>;
      <D.35323>:
      bblock.129 = cfg->cbb;
      bblock = bblock.129;
      sp.216 = sp;
      sp = sp.216 + 4;
      *sp.216 = ins;
      ip = ip + 5;
      <D.35311>:
      <D.35263>:
      goto <D.26808>;
      <D.35261>:
      klass.176 = klass;
      D.35325 = mono_class_is_nullable (klass.176);
      if (D.35325 != 0) goto <D.35326>; else goto <D.35327>;
      <D.35326>:
      D.30679 = *sp;
      klass.176 = klass;
      ins = handle_unbox_nullable (cfg, D.30679, klass.176, context_used);
      sp.217 = sp;
      sp = sp.217 + 4;
      *sp.217 = ins;
      ip = ip + 5;
      goto <D.26808>;
      <D.35327>:
      klass.176 = klass;
      ins = handle_unbox (cfg, klass.176, sp, context_used);
      *sp = ins;
      ip = ip + 5;
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      klass.176 = klass;
      D.34409 = &klass.176->byval_arg;
      D.35329 = mono_type_to_load_membase (cfg, D.34409);
      D.35330 = (short unsigned int) D.35329;
      ins->opcode = D.35330;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      ins->dreg = 0;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      ins->data.op[0].const_val = 0;
      ins->type = 1;
      klass.176 = klass;
      D.34409 = &klass.176->byval_arg;
      type_to_eval_stack_type (cfg, D.34409, ins);
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.35331 = alloc_dreg (cfg, D.30433);
      D.35332 = (int) D.35331;
      ins->dreg = D.35332;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.35333>; else goto <D.35334>;
      <D.35333>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.35335>;
      <D.35334>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.35335>:
      sp.218 = sp;
      sp = sp.218 + 4;
      *sp.218 = ins;
      inline_costs = inline_costs + 2;
      goto <D.26808>;
      <D.27221>:
      {
        struct MonoInst * val;

        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        if (D.30457 <= 3) goto <D.35337>; else goto <D.35338>;
        <D.35337>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.35339>; else goto <D.35340>;
        <D.35339>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.35341>; else goto <D.35342>;
        <D.35341>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.35342>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.35340>:
        D.35343 = mini_get_debug_options ();
        D.35344 = D.35343->break_on_unverified;
        if (D.35344 != 0) goto <D.35345>; else goto unverified;
        <D.35345>:
        raise (5);
        <D.35338>:
        sp = sp + 4294967292;
        val = *sp;
        D.31124 = ip + 5;
        if (D.31124 > end) goto <D.35346>; else goto <D.35347>;
        <D.35346>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.35348>; else goto <D.35349>;
        <D.35348>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.35350>; else goto <D.35351>;
        <D.35350>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.35351>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.35349>:
        D.35352 = mini_get_debug_options ();
        D.35353 = D.35352->break_on_unverified;
        if (D.35353 != 0) goto <D.35354>; else goto unverified;
        <D.35354>:
        raise (5);
        <D.35347>:
        D.31143 = ip + 1;
        token = mono_read32 (D.31143);
        klass.219 = mini_get_class (method, token, generic_context);
        klass = klass.219;
        klass.176 = klass;
        if (klass.176 == 0B) goto <D.35356>; else goto <D.35358>;
        <D.35358>:
        klass.176 = klass;
        D.34335 = klass.176->exception_type;
        if (D.34335 != 0) goto <D.35356>; else goto <D.35357>;
        <D.35356>:
        klass.176 = klass;
        cfg->exception_ptr = klass.176;
        D.35359 = mini_get_debug_options ();
        D.35360 = D.35359->break_on_unverified;
        if (D.35360 != 0) goto <D.35361>; else goto load_error;
        <D.35361>:
        raise (5);
        <D.35357>:
        klass.176 = klass;
        mono_save_token_info (cfg, image, token, klass.176);
        klass.176 = klass;
        context_used = mini_class_check_context_used (cfg, klass.176);
        klass.176 = klass;
        D.35362 = generic_class_is_reference_type (cfg, klass.176);
        if (D.35362 != 0) goto <D.35363>; else goto <D.35364>;
        <D.35363>:
        sp.220 = sp;
        sp = sp.220 + 4;
        *sp.220 = val;
        ip = ip + 5;
        goto <D.26808>;
        <D.35364>:
        D.35366 = mono_defaults.void_class;
        klass.176 = klass;
        if (D.35366 == klass.176) goto <D.35367>; else goto <D.35368>;
        <D.35367>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.35369>; else goto <D.35370>;
        <D.35369>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.35371>; else goto <D.35372>;
        <D.35371>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.35372>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.35370>:
        D.35373 = mini_get_debug_options ();
        D.35374 = D.35373->break_on_unverified;
        if (D.35374 != 0) goto <D.35375>; else goto unverified;
        <D.35375>:
        raise (5);
        <D.35368>:
        klass.176 = klass;
        D.34409 = &klass.176->byval_arg;
        D.30679 = *sp;
        D.35376 = target_type_is_incompatible (cfg, D.34409, D.30679);
        if (D.35376 != 0) goto <D.35377>; else goto <D.35378>;
        <D.35377>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.35379>; else goto <D.35380>;
        <D.35379>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.35381>; else goto <D.35382>;
        <D.35381>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.35382>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.35380>:
        D.35383 = mini_get_debug_options ();
        D.35384 = D.35383->break_on_unverified;
        if (D.35384 != 0) goto <D.35385>; else goto unverified;
        <D.35385>:
        raise (5);
        <D.35378>:
        klass.176 = klass;
        D.35388 = mono_class_is_nullable (klass.176);
        if (D.35388 == 0) goto <D.35389>; else goto <D.35390>;
        <D.35389>:
        D.31124 = ip + 5;
        if (D.31124 < end) goto <D.35391>; else goto <D.35392>;
        <D.35391>:
        bblock.77 = bblock;
        D.32590 = ip + 5;
        D.35393 = ip_in_bb (cfg, bblock.77, D.32590);
        if (D.35393 != 0) goto <D.35394>; else goto <D.35395>;
        <D.35394>:
        D.31124 = ip + 5;
        D.31637 = *D.31124;
        if (D.31637 == 58) goto <D.35386>; else goto <D.35396>;
        <D.35396>:
        D.31124 = ip + 5;
        D.31637 = *D.31124;
        if (D.31637 == 45) goto <D.35386>; else goto <D.35397>;
        <D.35397>:
        D.31124 = ip + 5;
        D.31637 = *D.31124;
        if (D.31637 == 57) goto <D.35386>; else goto <D.35398>;
        <D.35398>:
        D.31124 = ip + 5;
        D.31637 = *D.31124;
        if (D.31637 == 44) goto <D.35386>; else goto <D.35387>;
        <D.35386>:
        {
          gboolean is_true;
          int dreg;
          struct MonoBasicBlock * true_bb;
          struct MonoBasicBlock * false_bb;

          D.31124 = ip + 5;
          D.31637 = *D.31124;
          if (D.31637 == 58) goto <D.35400>; else goto <D.35403>;
          <D.35403>:
          D.31124 = ip + 5;
          D.31637 = *D.31124;
          if (D.31637 == 45) goto <D.35400>; else goto <D.35401>;
          <D.35400>:
          iftmp.221 = 1;
          goto <D.35402>;
          <D.35401>:
          iftmp.221 = 0;
          <D.35402>:
          is_true = iftmp.221;
          ip = ip + 5;
          D.29771 = cfg->verbose_level;
          if (D.29771 > 3) goto <D.35404>; else goto <D.35405>;
          <D.35404>:
          bblock.77 = bblock;
          D.30560 = bblock.77->block_num;
          sp.84 = (int) sp;
          stack_start.85 = (int) stack_start;
          D.30457 = sp.84 - stack_start.85;
          D.30458 = D.30457 /[ex] 4;
          D.35406 = mono_disasm_code_one (0B, method, ip, 0B);
          printf ("converting (in B%d: stack: %d) %s", D.30560, D.30458, D.35406);
          printf ("<box+brtrue opt>\n");
          <D.35405>:
          D.30562 = *ip;
          D.30563 = (int) D.30562;
          switch (D.30563) <default: <D.27232>, case 44: <D.27228>, case 45: <D.27227>, case 57: <D.27231>, case 58: <D.27230>>
          <D.27227>:
          <D.27228>:
          D.30690 = ip + 2;
          if (D.30690 > end) goto <D.35407>; else goto <D.35408>;
          <D.35407>:
          D.29838 = cfg->gsharedvt;
          if (D.29838 != 0) goto <D.35409>; else goto <D.35410>;
          <D.35409>:
          D.29771 = cfg->verbose_level;
          if (D.29771 > 2) goto <D.35411>; else goto <D.35412>;
          <D.35411>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.35412>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.35410>:
          D.35413 = mini_get_debug_options ();
          D.35414 = D.35413->break_on_unverified;
          if (D.35414 != 0) goto <D.35415>; else goto unverified;
          <D.35415>:
          raise (5);
          <D.35408>:
          ip = ip + 1;
          D.30562 = *ip;
          D.33277 = (signed char) D.30562;
          D.33278 = (sizetype) D.33277;
          D.33279 = D.33278 + 1;
          target = ip + D.33279;
          ip = ip + 1;
          goto <D.27229>;
          <D.27230>:
          <D.27231>:
          D.31124 = ip + 5;
          if (D.31124 > end) goto <D.35416>; else goto <D.35417>;
          <D.35416>:
          D.29838 = cfg->gsharedvt;
          if (D.29838 != 0) goto <D.35418>; else goto <D.35419>;
          <D.35418>:
          D.29771 = cfg->verbose_level;
          if (D.29771 > 2) goto <D.35420>; else goto <D.35421>;
          <D.35420>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.35421>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.35419>:
          D.35422 = mini_get_debug_options ();
          D.35423 = D.35422->break_on_unverified;
          if (D.35423 != 0) goto <D.35424>; else goto unverified;
          <D.35424>:
          raise (5);
          <D.35417>:
          ip = ip + 1;
          D.35425 = mono_read32 (ip);
          D.35426 = D.35425 + 4;
          target = ip + D.35426;
          ip = ip + 4;
          goto <D.27229>;
          <D.27232>:
          monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 9757);
          <D.27229>:
          D.29821 = cfg->cil_offset_to_bb;
          target.154 = (int) target;
          D.29825 = cfg->cil_start;
          D.29826 = (int) D.29825;
          D.33281 = target.154 - D.29826;
          D.33282 = (unsigned int) D.33281;
          D.33283 = D.33282 * 4;
          D.33284 = D.29821 + D.33283;
          true_bb = *D.33284;
          if (true_bb == 0B) goto <D.35427>; else goto <D.35428>;
          <D.35427>:
          if (target >= end) goto <D.35429>; else goto <D.35431>;
          <D.35431>:
          D.29837 = header->code;
          if (D.29837 > target) goto <D.35429>; else goto <D.35430>;
          <D.35429>:
          D.29838 = cfg->gsharedvt;
          if (D.29838 != 0) goto <D.35432>; else goto <D.35433>;
          <D.35432>:
          D.29771 = cfg->verbose_level;
          if (D.29771 > 2) goto <D.35434>; else goto <D.35435>;
          <D.35434>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.35435>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.35433>:
          D.35436 = mini_get_debug_options ();
          D.35437 = D.35436->break_on_unverified;
          if (D.35437 != 0) goto <D.35438>; else goto unverified;
          <D.35438>:
          raise (5);
          <D.35430>:
          D.29691 = cfg->mempool;
          true_bb = mono_mempool_alloc0 (D.29691, 172);
          D.29798 = cfg->num_bblocks;
          D.35439 = D.29798;
          D.35440 = D.35439 + 1;
          cfg->num_bblocks = D.35440;
          D.35441 = (int) D.35439;
          true_bb->block_num = D.35441;
          true_bb->cil_code = target;
          D.35442 = true_bb->cil_code;
          if (D.35442 != 0B) goto <D.35443>; else goto <D.35444>;
          <D.35443>:
          D.29821 = cfg->cil_offset_to_bb;
          D.35442 = true_bb->cil_code;
          D.35445 = (int) D.35442;
          D.29825 = cfg->cil_start;
          D.29826 = (int) D.29825;
          D.35446 = D.35445 - D.29826;
          D.35447 = (unsigned int) D.35446;
          D.35448 = D.35447 * 4;
          D.35449 = D.29821 + D.35448;
          *D.35449 = true_bb;
          <D.35444>:
          D.29857 = cfg->real_offset;
          true_bb->real_offset = D.29857;
          <D.35428>:
          D.29821 = cfg->cil_offset_to_bb;
          ip.82 = (int) ip;
          D.29825 = cfg->cil_start;
          D.29826 = (int) D.29825;
          D.30394 = ip.82 - D.29826;
          D.30395 = (unsigned int) D.30394;
          D.30396 = D.30395 * 4;
          D.30397 = D.29821 + D.30396;
          false_bb = *D.30397;
          if (false_bb == 0B) goto <D.35450>; else goto <D.35451>;
          <D.35450>:
          if (ip >= end) goto <D.35452>; else goto <D.35454>;
          <D.35454>:
          D.29837 = header->code;
          if (D.29837 > ip) goto <D.35452>; else goto <D.35453>;
          <D.35452>:
          D.29838 = cfg->gsharedvt;
          if (D.29838 != 0) goto <D.35455>; else goto <D.35456>;
          <D.35455>:
          D.29771 = cfg->verbose_level;
          if (D.29771 > 2) goto <D.35457>; else goto <D.35458>;
          <D.35457>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.35458>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.35456>:
          D.35459 = mini_get_debug_options ();
          D.35460 = D.35459->break_on_unverified;
          if (D.35460 != 0) goto <D.35461>; else goto unverified;
          <D.35461>:
          raise (5);
          <D.35453>:
          D.29691 = cfg->mempool;
          false_bb = mono_mempool_alloc0 (D.29691, 172);
          D.29798 = cfg->num_bblocks;
          D.35462 = D.29798;
          D.35463 = D.35462 + 1;
          cfg->num_bblocks = D.35463;
          D.35464 = (int) D.35462;
          false_bb->block_num = D.35464;
          false_bb->cil_code = ip;
          D.35465 = false_bb->cil_code;
          if (D.35465 != 0B) goto <D.35466>; else goto <D.35467>;
          <D.35466>:
          D.29821 = cfg->cil_offset_to_bb;
          D.35465 = false_bb->cil_code;
          D.35468 = (int) D.35465;
          D.29825 = cfg->cil_start;
          D.29826 = (int) D.29825;
          D.35469 = D.35468 - D.29826;
          D.35470 = (unsigned int) D.35469;
          D.35471 = D.35470 * 4;
          D.35472 = D.29821 + D.35471;
          *D.35472 = false_bb;
          <D.35467>:
          D.29857 = cfg->real_offset;
          false_bb->real_offset = D.29857;
          <D.35451>:
          bblock.129 = cfg->cbb;
          mono_link_bblock (cfg, bblock.129, true_bb);
          bblock.129 = cfg->cbb;
          mono_link_bblock (cfg, bblock.129, false_bb);
          if (sp != stack_start) goto <D.35473>; else goto <D.35474>;
          <D.35473>:
          sp.84 = (int) sp;
          stack_start.85 = (int) stack_start;
          D.30457 = sp.84 - stack_start.85;
          D.30458 = D.30457 /[ex] 4;
          handle_stack_args (cfg, stack_start, D.30458);
          sp = stack_start;
          D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
          D.30459 = D.30081 & 8192;
          if (D.30459 != 0) goto <D.35475>; else goto <D.35476>;
          <D.35475>:
          D.29838 = cfg->gsharedvt;
          if (D.29838 != 0) goto <D.35477>; else goto <D.35478>;
          <D.35477>:
          D.29771 = cfg->verbose_level;
          if (D.29771 > 2) goto <D.35479>; else goto <D.35480>;
          <D.35479>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.35480>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.35478>:
          D.35481 = mini_get_debug_options ();
          D.35482 = D.35481->break_on_unverified;
          if (D.35482 != 0) goto <D.35483>; else goto unverified;
          <D.35483>:
          raise (5);
          <D.35476>:
          <D.35474>:
          if (0 != 0) goto <D.35484>; else goto <D.35485>;
          <D.35484>:
          D.35486 = alloc_ireg (cfg);
          dreg = (int) D.35486;
          {
            struct MonoInst * inst;

            D.29691 = cfg->mempool;
            inst = mono_mempool_alloc (D.29691, 56);
            inst->data.op[1].const_val = 0;
            D.35487 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.35487;
            inst->prev = 0B;
            D.35488 = inst->prev;
            inst->next = D.35488;
            inst->opcode = 362;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.35489 = inst->sreg3;
            inst->sreg2 = D.35489;
            D.35490 = inst->sreg2;
            inst->sreg1 = D.35490;
            D.29910 = cfg->ip;
            inst->cil_code = D.29910;
            inst->dreg = dreg;
            inst->data.op[0].const_val = 0;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.35491>; else goto <D.35492>;
            <D.35491>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = inst;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            inst->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            goto <D.35493>;
            <D.35492>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.35493>:
          }
          {
            struct MonoInst * inst;

            D.29691 = cfg->mempool;
            inst = mono_mempool_alloc (D.29691, 56);
            inst->data.op[1].const_val = 0;
            D.35494 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.35494;
            inst->prev = 0B;
            D.35495 = inst->prev;
            inst->next = D.35495;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.35496 = inst->sreg3;
            inst->sreg2 = D.35496;
            D.35497 = inst->sreg2;
            inst->sreg1 = D.35497;
            D.29910 = cfg->ip;
            inst->cil_code = D.29910;
            inst->dreg = -1;
            inst->sreg1 = dreg;
            D.35498 = is_true == 0;
            D.35499 = (int) D.35498;
            inst->data.op[1].const_val = D.35499;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.35500>; else goto <D.35501>;
            <D.35500>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = inst;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            inst->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            goto <D.35502>;
            <D.35501>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.35502>:
          }
          {
            struct MonoInst * ins;

            D.29691 = cfg->mempool;
            ins = mono_mempool_alloc (D.29691, 56);
            ins->data.op[1].const_val = 0;
            D.35503 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.35503;
            ins->prev = 0B;
            D.35504 = ins->prev;
            ins->next = D.35504;
            ins->opcode = 648;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.35505 = ins->sreg3;
            ins->sreg2 = D.35505;
            D.35506 = ins->sreg2;
            ins->sreg1 = D.35506;
            D.29910 = cfg->ip;
            ins->cil_code = D.29910;
            D.29691 = cfg->mempool;
            D.35507 = mono_mempool_alloc (D.29691, 8);
            ins->data.op[1].many_blocks = D.35507;
            D.35508 = ins->data.op[1].many_blocks;
            *D.35508 = true_bb;
            D.35508 = ins->data.op[1].many_blocks;
            D.35509 = D.35508 + 4;
            *D.35509 = false_bb;
            bblock.129 = cfg->cbb;
            mono_link_bblock (cfg, bblock.129, true_bb);
            bblock.129 = cfg->cbb;
            mono_link_bblock (cfg, bblock.129, false_bb);
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.35510>; else goto <D.35511>;
            <D.35510>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = ins;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            ins->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            goto <D.35512>;
            <D.35511>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.35512>:
          }
          goto <D.35513>;
          <D.35485>:
          D.29691 = cfg->mempool;
          ins = mono_mempool_alloc (D.29691, 56);
          ins->data.op[1].const_val = 0;
          D.29906 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.29906;
          ins->prev = 0B;
          D.29907 = ins->prev;
          ins->next = D.29907;
          ins->opcode = 442;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.29908 = ins->sreg3;
          ins->sreg2 = D.29908;
          D.29909 = ins->sreg2;
          ins->sreg1 = D.29909;
          D.29910 = cfg->ip;
          ins->cil_code = D.29910;
          if (is_true != 0) goto <D.35515>; else goto <D.35516>;
          <D.35515>:
          iftmp.222 = true_bb;
          goto <D.35517>;
          <D.35516>:
          iftmp.222 = false_bb;
          <D.35517>:
          ins->data.op[0].target_block = iftmp.222;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.35518>; else goto <D.35519>;
          <D.35518>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = ins;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          ins->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          goto <D.35520>;
          <D.35519>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.35520>:
          <D.35513>:
          start_new_bblock = 1;
          goto <D.26808>;
        }
        <D.35387>:
        <D.35395>:
        <D.35392>:
        <D.35390>:
        sp.223 = sp;
        sp = sp.223 + 4;
        klass.176 = klass;
        D.35522 = handle_box (cfg, val, klass.176, context_used, &bblock);
        *sp.223 = D.35522;
        D.30240 = cfg->exception_type;
        if (D.30240 != 0) goto exception_exit; else goto <D.35523>;
        <D.35523>:
        ip = ip + 5;
        inline_costs = inline_costs + 1;
        goto <D.26808>;
      }
      <D.27236>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.35524>; else goto <D.35525>;
      <D.35524>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.35526>; else goto <D.35527>;
      <D.35526>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.35528>; else goto <D.35529>;
      <D.35528>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35529>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35527>:
      D.35530 = mini_get_debug_options ();
      D.35531 = D.35530->break_on_unverified;
      if (D.35531 != 0) goto <D.35532>; else goto unverified;
      <D.35532>:
      raise (5);
      <D.35525>:
      sp = sp + 4294967292;
      D.31124 = ip + 5;
      if (D.31124 > end) goto <D.35533>; else goto <D.35534>;
      <D.35533>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.35535>; else goto <D.35536>;
      <D.35535>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.35537>; else goto <D.35538>;
      <D.35537>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35538>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35536>:
      D.35539 = mini_get_debug_options ();
      D.35540 = D.35539->break_on_unverified;
      if (D.35540 != 0) goto <D.35541>; else goto unverified;
      <D.35541>:
      raise (5);
      <D.35534>:
      D.31143 = ip + 1;
      token = mono_read32 (D.31143);
      klass.224 = mini_get_class (method, token, generic_context);
      klass = klass.224;
      klass.176 = klass;
      if (klass.176 == 0B) goto <D.35543>; else goto <D.35545>;
      <D.35545>:
      klass.176 = klass;
      D.34335 = klass.176->exception_type;
      if (D.34335 != 0) goto <D.35543>; else goto <D.35544>;
      <D.35543>:
      klass.176 = klass;
      cfg->exception_ptr = klass.176;
      D.35546 = mini_get_debug_options ();
      D.35547 = D.35546->break_on_unverified;
      if (D.35547 != 0) goto <D.35548>; else goto load_error;
      <D.35548>:
      raise (5);
      <D.35544>:
      klass.176 = klass;
      mono_save_token_info (cfg, image, token, klass.176);
      klass.176 = klass;
      context_used = mini_class_check_context_used (cfg, klass.176);
      klass.176 = klass;
      D.35549 = mono_class_is_nullable (klass.176);
      if (D.35549 != 0) goto <D.35550>; else goto <D.35551>;
      <D.35550>:
      {
        struct MonoInst * val;

        D.30679 = *sp;
        klass.176 = klass;
        val = handle_unbox_nullable (cfg, D.30679, klass.176, context_used);
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 314;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        D.35553 = val->dreg;
        D.35554 = (unsigned int) D.35553;
        D.30791 = cfg->vreg_to_inst_len;
        if (D.35554 < D.30791) goto <D.35555>; else goto <D.35556>;
        <D.35555>:
        D.30794 = cfg->vreg_to_inst;
        D.35553 = val->dreg;
        D.35557 = (unsigned int) D.35553;
        D.35558 = D.35557 * 4;
        D.35559 = D.30794 + D.35558;
        iftmp.225 = *D.35559;
        goto <D.35560>;
        <D.35556>:
        iftmp.225 = 0B;
        <D.35560>:
        ins->data.op[0].p = iftmp.225;
        D.35553 = val->dreg;
        D.35554 = (unsigned int) D.35553;
        D.30791 = cfg->vreg_to_inst_len;
        if (D.35554 < D.30791) goto <D.35562>; else goto <D.35563>;
        <D.35562>:
        D.30794 = cfg->vreg_to_inst;
        D.35553 = val->dreg;
        D.35557 = (unsigned int) D.35553;
        D.35558 = D.35557 * 4;
        D.35559 = D.30794 + D.35558;
        iftmp.226 = *D.35559;
        goto <D.35564>;
        <D.35563>:
        iftmp.226 = 0B;
        <D.35564>:
        D.35553 = val->dreg;
        D.35554 = (unsigned int) D.35553;
        D.30791 = cfg->vreg_to_inst_len;
        if (D.35554 < D.30791) goto <D.35566>; else goto <D.35567>;
        <D.35566>:
        D.30794 = cfg->vreg_to_inst;
        D.35553 = val->dreg;
        D.35557 = (unsigned int) D.35553;
        D.35558 = D.35557 * 4;
        D.35559 = D.30794 + D.35558;
        iftmp.227 = *D.35559;
        goto <D.35568>;
        <D.35567>:
        iftmp.227 = 0B;
        <D.35568>:
        D.35569 = iftmp.227->flags;
        D.35570 = D.35569 | 16;
        iftmp.226->flags = D.35570;
        ins->type = 5;
        D.35553 = val->dreg;
        D.35554 = (unsigned int) D.35553;
        D.30791 = cfg->vreg_to_inst_len;
        if (D.35554 < D.30791) goto <D.35572>; else goto <D.35573>;
        <D.35572>:
        D.30794 = cfg->vreg_to_inst;
        D.35553 = val->dreg;
        D.35557 = (unsigned int) D.35553;
        D.35558 = D.35557 * 4;
        D.35559 = D.30794 + D.35558;
        iftmp.228 = *D.35559;
        goto <D.35574>;
        <D.35573>:
        iftmp.228 = 0B;
        <D.35574>:
        D.35575 = iftmp.228->klass;
        ins->klass = D.35575;
        D.35576 = alloc_dreg (cfg, 5);
        D.35577 = (int) D.35576;
        ins->dreg = D.35577;
        cfg->has_indirection = 1;
        D.29838 = cfg->gsharedvt;
        D.30765 = D.29838 != 0;
        D.30766 = (long int) D.30765;
        D.30767 = __builtin_expect (D.30766, 0);
        if (D.30767 != 0) goto <D.35578>; else goto <D.35579>;
        <D.35578>:
        D.35553 = val->dreg;
        D.35554 = (unsigned int) D.35553;
        D.30791 = cfg->vreg_to_inst_len;
        if (D.35554 < D.30791) goto <D.35581>; else goto <D.35582>;
        <D.35581>:
        D.30794 = cfg->vreg_to_inst;
        D.35553 = val->dreg;
        D.35557 = (unsigned int) D.35553;
        D.35558 = D.35557 * 4;
        D.35559 = D.30794 + D.35558;
        iftmp.229 = *D.35559;
        goto <D.35583>;
        <D.35582>:
        iftmp.229 = 0B;
        <D.35583>:
        D.35584 = iftmp.229->data.op[1].vtype;
        D.35585 = mini_is_gsharedvt_variable_type (cfg, D.35584);
        if (D.35585 != 0) goto <D.35586>; else goto <D.35587>;
        <D.35586>:
        handle_gsharedvt_ldaddr (cfg);
        <D.35587>:
        <D.35579>:
        D.35589 = mono_arch_is_soft_float ();
        if (D.35589 != 0) goto <D.35590>; else goto <D.35591>;
        <D.35590>:
        D.35553 = val->dreg;
        D.35554 = (unsigned int) D.35553;
        D.30791 = cfg->vreg_to_inst_len;
        if (D.35554 < D.30791) goto <D.35597>; else goto <D.35598>;
        <D.35597>:
        D.30794 = cfg->vreg_to_inst;
        D.35553 = val->dreg;
        D.35557 = (unsigned int) D.35553;
        D.35558 = D.35557 * 4;
        D.35559 = D.30794 + D.35558;
        iftmp.232 = *D.35559;
        goto <D.35599>;
        <D.35598>:
        iftmp.232 = 0B;
        <D.35599>:
        D.35600 = iftmp.232->type;
        if (D.35600 == 2) goto <D.35593>; else goto <D.35601>;
        <D.35601>:
        D.35553 = val->dreg;
        D.35554 = (unsigned int) D.35553;
        D.30791 = cfg->vreg_to_inst_len;
        if (D.35554 < D.30791) goto <D.35603>; else goto <D.35604>;
        <D.35603>:
        D.30794 = cfg->vreg_to_inst;
        D.35553 = val->dreg;
        D.35557 = (unsigned int) D.35553;
        D.35558 = D.35557 * 4;
        D.35559 = D.30794 + D.35558;
        iftmp.233 = *D.35559;
        goto <D.35605>;
        <D.35604>:
        iftmp.233 = 0B;
        <D.35605>:
        D.35606 = iftmp.233->type;
        if (D.35606 == 4) goto <D.35593>; else goto <D.35594>;
        <D.35593>:
        iftmp.231 = 1;
        goto <D.35595>;
        <D.35594>:
        iftmp.231 = 0;
        <D.35595>:
        iftmp.230 = (_Bool) iftmp.231;
        goto <D.35607>;
        <D.35591>:
        D.35553 = val->dreg;
        D.35554 = (unsigned int) D.35553;
        D.30791 = cfg->vreg_to_inst_len;
        if (D.35554 < D.30791) goto <D.35609>; else goto <D.35610>;
        <D.35609>:
        D.30794 = cfg->vreg_to_inst;
        D.35553 = val->dreg;
        D.35557 = (unsigned int) D.35553;
        D.35558 = D.35557 * 4;
        D.35559 = D.30794 + D.35558;
        iftmp.234 = *D.35559;
        goto <D.35611>;
        <D.35610>:
        iftmp.234 = 0B;
        <D.35611>:
        D.35612 = iftmp.234->type;
        iftmp.230 = D.35612 == 2;
        <D.35607>:
        if (iftmp.230 != 0) goto <D.35613>; else goto <D.35614>;
        <D.35613>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.35553 = val->dreg;
          D.35554 = (unsigned int) D.35553;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.35554 < D.30791) goto <D.35617>; else goto <D.35618>;
          <D.35617>:
          D.30794 = cfg->vreg_to_inst;
          D.35553 = val->dreg;
          D.35557 = (unsigned int) D.35553;
          D.35558 = D.35557 * 4;
          D.35559 = D.30794 + D.35558;
          iftmp.236 = *D.35559;
          goto <D.35619>;
          <D.35618>:
          iftmp.236 = 0B;
          <D.35619>:
          D.35620 = iftmp.236->dreg;
          D.35621 = D.35620 + 1;
          D.35622 = (unsigned int) D.35621;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.35622 < D.30791) goto <D.35623>; else goto <D.35624>;
          <D.35623>:
          D.30794 = cfg->vreg_to_inst;
          D.35553 = val->dreg;
          D.35554 = (unsigned int) D.35553;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.35554 < D.30791) goto <D.35626>; else goto <D.35627>;
          <D.35626>:
          D.30794 = cfg->vreg_to_inst;
          D.35553 = val->dreg;
          D.35557 = (unsigned int) D.35553;
          D.35558 = D.35557 * 4;
          D.35559 = D.30794 + D.35558;
          iftmp.237 = *D.35559;
          goto <D.35628>;
          <D.35627>:
          iftmp.237 = 0B;
          <D.35628>:
          D.35629 = iftmp.237->dreg;
          D.35630 = (sizetype) D.35629;
          D.35631 = D.35630 + 1;
          D.35632 = D.35631 * 4;
          D.35633 = D.30794 + D.35632;
          iftmp.235 = *D.35633;
          goto <D.35634>;
          <D.35624>:
          iftmp.235 = 0B;
          <D.35634>:
          var1 = iftmp.235;
          D.35553 = val->dreg;
          D.35554 = (unsigned int) D.35553;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.35554 < D.30791) goto <D.35637>; else goto <D.35638>;
          <D.35637>:
          D.30794 = cfg->vreg_to_inst;
          D.35553 = val->dreg;
          D.35557 = (unsigned int) D.35553;
          D.35558 = D.35557 * 4;
          D.35559 = D.30794 + D.35558;
          iftmp.239 = *D.35559;
          goto <D.35639>;
          <D.35638>:
          iftmp.239 = 0B;
          <D.35639>:
          D.35640 = iftmp.239->dreg;
          D.35641 = D.35640 + 2;
          D.35642 = (unsigned int) D.35641;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.35642 < D.30791) goto <D.35643>; else goto <D.35644>;
          <D.35643>:
          D.30794 = cfg->vreg_to_inst;
          D.35553 = val->dreg;
          D.35554 = (unsigned int) D.35553;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.35554 < D.30791) goto <D.35646>; else goto <D.35647>;
          <D.35646>:
          D.30794 = cfg->vreg_to_inst;
          D.35553 = val->dreg;
          D.35557 = (unsigned int) D.35553;
          D.35558 = D.35557 * 4;
          D.35559 = D.30794 + D.35558;
          iftmp.240 = *D.35559;
          goto <D.35648>;
          <D.35647>:
          iftmp.240 = 0B;
          <D.35648>:
          D.35649 = iftmp.240->dreg;
          D.35650 = (sizetype) D.35649;
          D.35651 = D.35650 + 2;
          D.35652 = D.35651 * 4;
          D.35653 = D.30794 + D.35652;
          iftmp.238 = *D.35653;
          goto <D.35654>;
          <D.35644>:
          iftmp.238 = 0B;
          <D.35654>:
          var2 = iftmp.238;
          D.35655 = var1 == 0B;
          D.35656 = (long int) D.35655;
          D.35657 = __builtin_expect (D.35656, 0);
          if (D.35657 != 0) goto <D.35658>; else goto <D.35659>;
          <D.35658>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9818, "var1");
          <D.35659>:
          D.35660 = var2 == 0B;
          D.35661 = (long int) D.35660;
          D.35662 = __builtin_expect (D.35661, 0);
          if (D.35662 != 0) goto <D.35663>; else goto <D.35664>;
          <D.35663>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9818, "var2");
          <D.35664>:
          D.35665 = var1->flags;
          D.35666 = D.35665 | 16;
          var1->flags = D.35666;
          D.35667 = var2->flags;
          D.35668 = D.35667 | 16;
          var2->flags = D.35668;
        }
        <D.35614>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.35669>; else goto <D.35670>;
        <D.35669>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.35671>;
        <D.35670>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.35671>:
        sp.241 = sp;
        sp = sp.241 + 4;
        *sp.241 = ins;
      }
      goto <D.35673>;
      <D.35551>:
      klass.176 = klass;
      ins = handle_unbox (cfg, klass.176, sp, context_used);
      sp.242 = sp;
      sp = sp.242 + 4;
      *sp.242 = ins;
      <D.35673>:
      ip = ip + 5;
      inline_costs = inline_costs + 2;
      goto <D.26808>;
      <D.27240>:
      <D.27241>:
      <D.27242>:
      <D.27243>:
      <D.27244>:
      <D.27245>:
      {
        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.30562 = *ip;
        op = (int) D.30562;
        op.243 = (unsigned int) op;
        D.35676 = op.243 + 4294967173;
        D.35677 = D.35676 <= 2;
        is_instance = (gboolean) D.35677;
        if (is_instance != 0) goto <D.35678>; else goto <D.35679>;
        <D.35678>:
        if (op == 125) goto <D.35680>; else goto <D.35681>;
        <D.35680>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        if (D.30457 <= 7) goto <D.35682>; else goto <D.35683>;
        <D.35682>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.35684>; else goto <D.35685>;
        <D.35684>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.35686>; else goto <D.35687>;
        <D.35686>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.35687>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.35685>:
        D.35688 = mini_get_debug_options ();
        D.35689 = D.35688->break_on_unverified;
        if (D.35689 != 0) goto <D.35690>; else goto unverified;
        <D.35690>:
        raise (5);
        <D.35683>:
        sp = sp + 4294967288;
        store_val = MEM[(struct MonoInst * *)sp + 4B];
        goto <D.35691>;
        <D.35681>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        if (D.30457 <= 3) goto <D.35692>; else goto <D.35693>;
        <D.35692>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.35694>; else goto <D.35695>;
        <D.35694>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.35696>; else goto <D.35697>;
        <D.35696>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.35697>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.35695>:
        D.35698 = mini_get_debug_options ();
        D.35699 = D.35698->break_on_unverified;
        if (D.35699 != 0) goto <D.35700>; else goto unverified;
        <D.35700>:
        raise (5);
        <D.35693>:
        sp = sp + 4294967292;
        <D.35691>:
        D.30679 = *sp;
        D.32402 = D.30679->type;
        D.35703 = D.32402 + 255;
        if (D.35703 <= 1) goto <D.35701>; else goto <D.35704>;
        <D.35704>:
        D.30679 = *sp;
        D.32402 = D.30679->type;
        if (D.32402 == 4) goto <D.35701>; else goto <D.35702>;
        <D.35701>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.35705>; else goto <D.35706>;
        <D.35705>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.35707>; else goto <D.35708>;
        <D.35707>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.35708>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.35706>:
        D.35709 = mini_get_debug_options ();
        D.35710 = D.35709->break_on_unverified;
        if (D.35710 != 0) goto <D.35711>; else goto unverified;
        <D.35711>:
        raise (5);
        <D.35702>:
        D.30562 = *ip;
        if (D.30562 != 123) goto <D.35712>; else goto <D.35713>;
        <D.35712>:
        D.30679 = *sp;
        D.32402 = D.30679->type;
        if (D.32402 == 7) goto <D.35714>; else goto <D.35715>;
        <D.35714>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.35716>; else goto <D.35717>;
        <D.35716>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.35718>; else goto <D.35719>;
        <D.35718>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.35719>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.35717>:
        D.35720 = mini_get_debug_options ();
        D.35721 = D.35720->break_on_unverified;
        if (D.35721 != 0) goto <D.35722>; else goto unverified;
        <D.35722>:
        raise (5);
        <D.35715>:
        <D.35713>:
        goto <D.35723>;
        <D.35679>:
        if (op == 128) goto <D.35724>; else goto <D.35725>;
        <D.35724>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        if (D.30457 <= 3) goto <D.35726>; else goto <D.35727>;
        <D.35726>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.35728>; else goto <D.35729>;
        <D.35728>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.35730>; else goto <D.35731>;
        <D.35730>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.35731>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.35729>:
        D.35732 = mini_get_debug_options ();
        D.35733 = D.35732->break_on_unverified;
        if (D.35733 != 0) goto <D.35734>; else goto unverified;
        <D.35734>:
        raise (5);
        <D.35727>:
        sp = sp + 4294967292;
        store_val = *sp;
        <D.35725>:
        <D.35723>:
        D.31124 = ip + 5;
        if (D.31124 > end) goto <D.35735>; else goto <D.35736>;
        <D.35735>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.35737>; else goto <D.35738>;
        <D.35737>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.35739>; else goto <D.35740>;
        <D.35739>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.35740>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.35738>:
        D.35741 = mini_get_debug_options ();
        D.35742 = D.35741->break_on_unverified;
        if (D.35742 != 0) goto <D.35743>; else goto unverified;
        <D.35743>:
        raise (5);
        <D.35736>:
        D.31143 = ip + 1;
        token = mono_read32 (D.31143);
        D.29634 = BIT_FIELD_REF <*method, 32, 160>;
        D.29635 = D.29634 & 124;
        if (D.29635 != 0) goto <D.35744>; else goto <D.35745>;
        <D.35744>:
        field = mono_method_get_wrapper_data (method, token);
        klass.244 = field->parent;
        klass = klass.244;
        goto <D.35747>;
        <D.35745>:
        field = mono_field_from_token (image, token, &klass, generic_context);
        <D.35747>:
        if (field == 0B) goto <D.35748>; else goto <D.35749>;
        <D.35748>:
        D.35750 = mini_get_debug_options ();
        D.35751 = D.35750->break_on_unverified;
        if (D.35751 != 0) goto <D.35752>; else goto load_error;
        <D.35752>:
        raise (5);
        <D.35749>:
        if (dont_verify == 0) goto <D.35753>; else goto <D.35754>;
        <D.35753>:
        D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.31559 = D.30081 & 16384;
        if (D.31559 == 0) goto <D.35755>; else goto <D.35756>;
        <D.35755>:
        D.35757 = mono_method_can_access_field (method, field);
        if (D.35757 == 0) goto <D.35758>; else goto <D.35759>;
        <D.35758>:
        {
          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.35760 = monoeg_g_strdup_printf ("Field `%s\' is inaccessible from method `%s\'\n", field_fname, method_fname);
          cfg->exception_message = D.35760;
          monoeg_g_free (method_fname);
          monoeg_g_free (field_fname);
          goto exception_exit;
        }
        <D.35759>:
        <D.35756>:
        <D.35754>:
        klass.176 = klass;
        mono_class_init (klass.176);
        if (is_instance != 0) goto <D.35761>; else goto <D.35762>;
        <D.35761>:
        D.30562 = *ip;
        if (D.30562 != 124) goto <D.35763>; else goto <D.35764>;
        <D.35763>:
        D.35765 = is_magic_tls_access (field);
        if (D.35765 != 0) goto <D.35766>; else goto <D.35767>;
        <D.35766>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.35768>; else goto <D.35769>;
        <D.35768>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.35770>; else goto <D.35771>;
        <D.35770>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.35771>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.35769>:
        D.35772 = mini_get_debug_options ();
        D.35773 = D.35772->break_on_unverified;
        if (D.35773 != 0) goto <D.35774>; else goto unverified;
        <D.35774>:
        raise (5);
        <D.35767>:
        <D.35764>:
        <D.35762>:
        if (is_instance == 0) goto <D.35775>; else goto <D.35776>;
        <D.35775>:
        D.35777 = mono_security_get_mode ();
        if (D.35777 == 1) goto <D.35778>; else goto <D.35779>;
        <D.35778>:
        bblock.77 = bblock;
        ensure_method_is_allowed_to_access_field (cfg, method, field, bblock.77, ip);
        <D.35779>:
        <D.35776>:
        if (is_instance != 0) goto <D.35780>; else goto <D.35781>;
        <D.35780>:
        D.35782 = field->type;
        D.35783 = D.35782->attrs;
        D.35784 = (int) D.35783;
        D.35785 = D.35784 & 16;
        if (D.35785 != 0) goto <D.35786>; else goto <D.35787>;
        <D.35786>:
        switch (op) <default: <D.27262>, case 123: <D.27258>, case 124: <D.27261>, case 125: <D.27260>>
        <D.27258>:
        op = 126;
        goto <D.27259>;
        <D.27260>:
        op = 128;
        goto <D.27259>;
        <D.27261>:
        op = 127;
        goto <D.27259>;
        <D.27262>:
        monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 9915);
        <D.27259>:
        is_instance = 0;
        <D.35787>:
        <D.35781>:
        klass.176 = klass;
        context_used = mini_class_check_context_used (cfg, klass.176);
        klass.176 = klass;
        D.35117 = BIT_FIELD_REF <*klass.176, 32, 160>;
        D.35789 = D.35117 & 8;
        if (D.35789 != 0) goto <D.35790>; else goto <D.35791>;
        <D.35790>:
        D.35792 = field->offset;
        D.35793 = (unsigned int) D.35792;
        iftmp.245 = D.35793 + 4294967288;
        goto <D.35794>;
        <D.35791>:
        D.35792 = field->offset;
        iftmp.245 = (unsigned int) D.35792;
        <D.35794>:
        foffset = iftmp.245;
        if (op == 125) goto <D.35795>; else goto <D.35796>;
        <D.35795>:
        D.35782 = field->type;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        D.35797 = target_type_is_incompatible (cfg, D.35782, D.31794);
        if (D.35797 != 0) goto <D.35798>; else goto <D.35799>;
        <D.35798>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.35800>; else goto <D.35801>;
        <D.35800>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.35802>; else goto <D.35803>;
        <D.35802>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.35803>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.35801>:
        D.35804 = mini_get_debug_options ();
        D.35805 = D.35804->break_on_unverified;
        if (D.35805 != 0) goto <D.35806>; else goto unverified;
        <D.35806>:
        raise (5);
        <D.35799>:
        klass.176 = klass;
        D.35117 = BIT_FIELD_REF <*klass.176, 32, 160>;
        D.35118 = D.35117 & 4194304;
        if (D.35118 != 0) goto <D.35811>; else goto <D.35807>;
        <D.35811>:
        D.29662 = cfg->method;
        D.35812 = mono_method_signature (D.29662);
        D.35813 = BIT_FIELD_REF <*D.35812, 32, 64>;
        D.35814 = D.35813 & 4194304;
        if (D.35814 == 0) goto <D.35808>; else goto <D.35815>;
        <D.35815>:
        D.30679 = *sp;
        D.32406 = D.30679->opcode;
        if (D.32406 != 424) goto <D.35808>; else goto <D.35816>;
        <D.35816>:
        D.30679 = *sp;
        D.35817 = D.30679->sreg1;
        D.30289 = cfg->args;
        D.30290 = *D.30289;
        D.30304 = D.30290->dreg;
        if (D.35817 != D.30304) goto <D.35808>; else goto <D.35807>;
        <D.35807>:
        klass.176 = klass;
        D.35117 = BIT_FIELD_REF <*klass.176, 32, 160>;
        D.35818 = D.35117 & 8388608;
        if (D.35818 != 0) goto <D.35808>; else goto <D.35819>;
        <D.35819>:
        D.35820 = mono_defaults.marshalbyrefobject_class;
        klass.176 = klass;
        if (D.35820 == klass.176) goto <D.35808>; else goto <D.35809>;
        <D.35808>:
        {
          struct MonoMethod * stfld_wrapper;
          struct MonoInst * iargs[5];

          try
            {
              D.35782 = field->type;
              stfld_wrapper = mono_marshal_get_stfld_wrapper (D.35782);
              D.29838 = cfg->gsharedvt;
              if (D.29838 != 0) goto <D.35821>; else goto <D.35822>;
              <D.35821>:
              D.29629 = method->klass;
              D.31352 = D.29629->name_space;
              D.29629 = method->klass;
              D.31353 = D.29629->name;
              D.31354 = method->name;
              D.31355 = method->signature;
              D.31356 = D.31355->param_count;
              D.31357 = (int) D.31356;
              D.35823 = mono_opcode_name (op);
              D.35824 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.31352, D.31353, D.31354, D.31357, D.35823, "method-to-ir.c", 9933);
              cfg->exception_message = D.35824;
              D.29771 = cfg->verbose_level;
              if (D.29771 > 1) goto <D.35825>; else goto <D.35826>;
              <D.35825>:
              D.31362 = cfg->exception_message;
              printf ("%s\n", D.31362);
              <D.35826>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.35822>:
              D.30679 = *sp;
              iargs[0] = D.30679;
              D.29691 = cfg->mempool;
              D.35827 = mono_mempool_alloc (D.29691, 56);
              iargs[1] = D.35827;
              D.35828 = iargs[1];
              D.35828 = iargs[1];
              D.35828->data.op[1].const_val = 0;
              D.35829 = D.35828->data.op[1].const_val;
              D.35828->data.op[0].const_val = D.35829;
              D.35828 = iargs[1];
              D.35828 = iargs[1];
              D.35828->prev = 0B;
              D.35830 = D.35828->prev;
              D.35828->next = D.35830;
              D.35828 = iargs[1];
              D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.30082 = D.30081 & 64;
              if (D.30082 != 0) goto <D.35832>; else goto <D.35833>;
              <D.35832>:
              iftmp.246 = 732;
              goto <D.35834>;
              <D.35833>:
              iftmp.246 = 362;
              <D.35834>:
              D.35828->opcode = iftmp.246;
              D.35828 = iargs[1];
              D.35828->flags = 0;
              D.35828 = iargs[1];
              D.35828->type = 0;
              D.35828 = iargs[1];
              D.35828->dreg = -1;
              D.35828 = iargs[1];
              D.35828 = iargs[1];
              D.35828 = iargs[1];
              D.35828->sreg3 = -1;
              D.35835 = D.35828->sreg3;
              D.35828->sreg2 = D.35835;
              D.35836 = D.35828->sreg2;
              D.35828->sreg1 = D.35836;
              D.35828 = iargs[1];
              D.29910 = cfg->ip;
              D.35828->cil_code = D.29910;
              D.35828 = iargs[1];
              klass.176 = klass;
              D.35828->data.op[0].p = klass.176;
              D.35828 = iargs[1];
              D.35828->data.op[1].src = 11B;
              D.35828 = iargs[1];
              D.35828->type = 3;
              D.35828 = iargs[1];
              D.35837 = alloc_dreg (cfg, 3);
              D.35838 = (int) D.35837;
              D.35828->dreg = D.35838;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.35839>; else goto <D.35840>;
              <D.35839>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.35828 = iargs[1];
              D.29939->next = D.35828;
              D.35828 = iargs[1];
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.35828->prev = D.29939;
              bblock.129 = cfg->cbb;
              D.35828 = iargs[1];
              bblock.129->last_ins = D.35828;
              goto <D.35841>;
              <D.35840>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              D.35828 = iargs[1];
              bblock.129->last_ins = D.35828;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.35841>:
              D.29691 = cfg->mempool;
              D.35842 = mono_mempool_alloc (D.29691, 56);
              iargs[2] = D.35842;
              D.35843 = iargs[2];
              D.35843 = iargs[2];
              D.35843->data.op[1].const_val = 0;
              D.35844 = D.35843->data.op[1].const_val;
              D.35843->data.op[0].const_val = D.35844;
              D.35843 = iargs[2];
              D.35843 = iargs[2];
              D.35843->prev = 0B;
              D.35845 = D.35843->prev;
              D.35843->next = D.35845;
              D.35843 = iargs[2];
              D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.30082 = D.30081 & 64;
              if (D.30082 != 0) goto <D.35847>; else goto <D.35848>;
              <D.35847>:
              iftmp.247 = 732;
              goto <D.35849>;
              <D.35848>:
              iftmp.247 = 362;
              <D.35849>:
              D.35843->opcode = iftmp.247;
              D.35843 = iargs[2];
              D.35843->flags = 0;
              D.35843 = iargs[2];
              D.35843->type = 0;
              D.35843 = iargs[2];
              D.35843->dreg = -1;
              D.35843 = iargs[2];
              D.35843 = iargs[2];
              D.35843 = iargs[2];
              D.35843->sreg3 = -1;
              D.35850 = D.35843->sreg3;
              D.35843->sreg2 = D.35850;
              D.35851 = D.35843->sreg2;
              D.35843->sreg1 = D.35851;
              D.35843 = iargs[2];
              D.29910 = cfg->ip;
              D.35843->cil_code = D.29910;
              D.35843 = iargs[2];
              D.35843->data.op[0].p = field;
              D.35843 = iargs[2];
              D.35843->data.op[1].src = 13B;
              D.35843 = iargs[2];
              D.35843->type = 3;
              D.35843 = iargs[2];
              D.35852 = alloc_dreg (cfg, 3);
              D.35853 = (int) D.35852;
              D.35843->dreg = D.35853;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.35854>; else goto <D.35855>;
              <D.35854>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.35843 = iargs[2];
              D.29939->next = D.35843;
              D.35843 = iargs[2];
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.35843->prev = D.29939;
              bblock.129 = cfg->cbb;
              D.35843 = iargs[2];
              bblock.129->last_ins = D.35843;
              goto <D.35856>;
              <D.35855>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              D.35843 = iargs[2];
              bblock.129->last_ins = D.35843;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.35856>:
              D.29691 = cfg->mempool;
              D.35857 = mono_mempool_alloc (D.29691, 56);
              iargs[3] = D.35857;
              D.35858 = iargs[3];
              D.35858 = iargs[3];
              D.35858->data.op[1].const_val = 0;
              D.35859 = D.35858->data.op[1].const_val;
              D.35858->data.op[0].const_val = D.35859;
              D.35858 = iargs[3];
              D.35858 = iargs[3];
              D.35858->prev = 0B;
              D.35860 = D.35858->prev;
              D.35858->next = D.35860;
              D.35858 = iargs[3];
              D.35858->opcode = 362;
              D.35858 = iargs[3];
              D.35858->flags = 0;
              D.35858 = iargs[3];
              D.35858->type = 0;
              D.35858 = iargs[3];
              D.35858->dreg = -1;
              D.35858 = iargs[3];
              D.35858 = iargs[3];
              D.35858 = iargs[3];
              D.35858->sreg3 = -1;
              D.35861 = D.35858->sreg3;
              D.35858->sreg2 = D.35861;
              D.35862 = D.35858->sreg2;
              D.35858->sreg1 = D.35862;
              D.35858 = iargs[3];
              D.29910 = cfg->ip;
              D.35858->cil_code = D.29910;
              D.35858 = iargs[3];
              klass.176 = klass;
              D.35117 = BIT_FIELD_REF <*klass.176, 32, 160>;
              D.35789 = D.35117 & 8;
              if (D.35789 != 0) goto <D.35864>; else goto <D.35865>;
              <D.35864>:
              D.35792 = field->offset;
              D.35793 = (unsigned int) D.35792;
              D.35866 = D.35793 + 4294967288;
              iftmp.248 = (mgreg_t) D.35866;
              goto <D.35867>;
              <D.35865>:
              iftmp.248 = field->offset;
              <D.35867>:
              D.35858->data.op[0].const_val = iftmp.248;
              D.35858 = iargs[3];
              D.35858->type = 1;
              D.35858 = iargs[3];
              D.35868 = alloc_dreg (cfg, 1);
              D.35869 = (int) D.35868;
              D.35858->dreg = D.35869;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.35870>; else goto <D.35871>;
              <D.35870>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.35858 = iargs[3];
              D.29939->next = D.35858;
              D.35858 = iargs[3];
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.35858->prev = D.29939;
              bblock.129 = cfg->cbb;
              D.35858 = iargs[3];
              bblock.129->last_ins = D.35858;
              goto <D.35872>;
              <D.35871>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              D.35858 = iargs[3];
              bblock.129->last_ins = D.35858;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.35872>:
              D.34793 = MEM[(struct MonoInst * *)sp + 4B];
              iargs[4] = D.34793;
              D.30079 = cfg->opt;
              D.32512 = D.30079 & 4;
              if (D.32512 != 0) goto <D.35873>; else goto <D.35876>;
              <D.35876>:
              D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.30082 = D.30081 & 64;
              if (D.30082 != 0) goto <D.35873>; else goto <D.35874>;
              <D.35873>:
              D.35877 = mono_method_signature (stfld_wrapper);
              D.29857 = cfg->real_offset;
              costs = inline_method (cfg, stfld_wrapper, D.35877, &iargs, ip, D.29857, dont_inline, 1);
              D.30240 = cfg->exception_type;
              if (D.30240 != 0) goto exception_exit; else goto <D.35878>;
              <D.35878>:
              D.35879 = costs <= 0;
              D.35880 = (long int) D.35879;
              D.35881 = __builtin_expect (D.35880, 0);
              if (D.35881 != 0) goto <D.35882>; else goto <D.35883>;
              <D.35882>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9946, "costs > 0");
              <D.35883>:
              D.29857 = cfg->real_offset;
              D.32539 = D.29857 + 5;
              cfg->real_offset = D.32539;
              bblock.129 = cfg->cbb;
              bblock = bblock.129;
              inline_costs = inline_costs + costs;
              goto <D.35875>;
              <D.35874>:
              mono_emit_method_call (cfg, stfld_wrapper, &iargs, 0B);
              <D.35875>:
            }
          finally
            {
              iargs = {CLOBBER};
            }
        }
        goto <D.35810>;
        <D.35809>:
        {
          struct MonoInst * store;

          D.29679 = BIT_FIELD_REF <*cfg, 32, 3424>;
          D.30317 = D.29679 & 64;
          if (D.30317 != 0) goto <D.35884>; else goto <D.35885>;
          <D.35884>:
          {
            struct MonoInst * inst;

            D.29691 = cfg->mempool;
            inst = mono_mempool_alloc (D.29691, 56);
            inst->data.op[1].const_val = 0;
            D.35886 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.35886;
            inst->prev = 0B;
            D.35887 = inst->prev;
            inst->next = D.35887;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.35888 = inst->sreg3;
            inst->sreg2 = D.35888;
            D.35889 = inst->sreg2;
            inst->sreg1 = D.35889;
            D.29910 = cfg->ip;
            inst->cil_code = D.29910;
            inst->dreg = -1;
            D.30679 = *sp;
            D.30872 = D.30679->dreg;
            inst->sreg1 = D.30872;
            inst->data.op[1].const_val = 0;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.35890>; else goto <D.35891>;
            <D.35890>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = inst;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            inst->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            goto <D.35892>;
            <D.35891>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.35892>:
          }
          {
            struct MonoInst * inst;

            D.29691 = cfg->mempool;
            inst = mono_mempool_alloc (D.29691, 56);
            inst->data.op[1].const_val = 0;
            D.35893 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.35893;
            inst->prev = 0B;
            D.35894 = inst->prev;
            inst->next = D.35894;
            inst->opcode = 451;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.35895 = inst->sreg3;
            inst->sreg2 = D.35895;
            D.35896 = inst->sreg2;
            inst->sreg1 = D.35896;
            D.29910 = cfg->ip;
            inst->cil_code = D.29910;
            inst->data.op[1].p = "NullReferenceException";
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.35897>; else goto <D.35898>;
            <D.35897>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = inst;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            inst->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            goto <D.35899>;
            <D.35898>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.35899>:
          }
          goto <D.35900>;
          <D.35885>:
          <D.35900>:
          klass.176 = klass;
          D.35901 = mini_is_gsharedvt_klass (cfg, klass.176);
          if (D.35901 != 0) goto <D.35902>; else goto <D.35903>;
          <D.35902>:
          {
            struct MonoInst * offset_ins;

            klass.176 = klass;
            context_used = mini_class_check_context_used (cfg, klass.176);
            offset_ins = emit_get_gsharedvt_info (cfg, field, 15);
            D.35904 = alloc_ireg_mp (cfg);
            dreg = (int) D.35904;
            D.29691 = cfg->mempool;
            ins = mono_mempool_alloc (D.29691, 56);
            ins->data.op[1].const_val = 0;
            D.29906 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.29906;
            ins->prev = 0B;
            D.29907 = ins->prev;
            ins->next = D.29907;
            ins->opcode = 565;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.29908 = ins->sreg3;
            ins->sreg2 = D.29908;
            D.29909 = ins->sreg2;
            ins->sreg1 = D.29909;
            D.29910 = cfg->ip;
            ins->cil_code = D.29910;
            ins->dreg = dreg;
            D.30679 = *sp;
            D.30872 = D.30679->dreg;
            ins->sreg1 = D.30872;
            D.35905 = offset_ins->dreg;
            ins->sreg2 = D.35905;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.35906>; else goto <D.35907>;
            <D.35906>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = ins;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            ins->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            goto <D.35908>;
            <D.35907>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.35908>:
            D.29691 = cfg->mempool;
            store = mono_mempool_alloc (D.29691, 56);
            store->data.op[1].const_val = 0;
            D.35909 = store->data.op[1].const_val;
            store->data.op[0].const_val = D.35909;
            store->prev = 0B;
            D.35910 = store->prev;
            store->next = D.35910;
            D.35782 = field->type;
            D.35911 = mono_type_to_store_membase (cfg, D.35782);
            D.35912 = (short unsigned int) D.35911;
            store->opcode = D.35912;
            store->flags = 0;
            store->type = 0;
            store->dreg = -1;
            store->sreg3 = -1;
            D.35913 = store->sreg3;
            store->sreg2 = D.35913;
            D.35914 = store->sreg2;
            store->sreg1 = D.35914;
            D.29910 = cfg->ip;
            store->cil_code = D.29910;
            D.31793 = sp + 4;
            D.31794 = *D.31793;
            D.31795 = D.31794->dreg;
            store->sreg1 = D.31795;
            store->dreg = dreg;
            store->data.op[0].const_val = 0;
            D.35782 = field->type;
            type_to_eval_stack_type (cfg, D.35782, store);
            D.35782 = field->type;
            D.35915 = mono_class_from_mono_type (D.35782);
            store->klass = D.35915;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.35916>; else goto <D.35917>;
            <D.35916>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = store;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            store->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = store;
            goto <D.35918>;
            <D.35917>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = store;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.35918>:
          }
          goto <D.35919>;
          <D.35903>:
          D.29691 = cfg->mempool;
          store = mono_mempool_alloc (D.29691, 56);
          store->data.op[1].const_val = 0;
          D.35909 = store->data.op[1].const_val;
          store->data.op[0].const_val = D.35909;
          store->prev = 0B;
          D.35910 = store->prev;
          store->next = D.35910;
          D.35782 = field->type;
          D.35920 = mono_type_to_store_membase (cfg, D.35782);
          D.35921 = (short unsigned int) D.35920;
          store->opcode = D.35921;
          store->flags = 0;
          store->type = 0;
          store->dreg = -1;
          store->sreg3 = -1;
          D.35913 = store->sreg3;
          store->sreg2 = D.35913;
          D.35914 = store->sreg2;
          store->sreg1 = D.35914;
          D.29910 = cfg->ip;
          store->cil_code = D.29910;
          D.31793 = sp + 4;
          D.31794 = *D.31793;
          D.31795 = D.31794->dreg;
          store->sreg1 = D.31795;
          D.30679 = *sp;
          D.30872 = D.30679->dreg;
          store->dreg = D.30872;
          foffset.249 = (int) foffset;
          store->data.op[0].const_val = foffset.249;
          D.35782 = field->type;
          type_to_eval_stack_type (cfg, D.35782, store);
          D.35782 = field->type;
          D.35923 = mono_class_from_mono_type (D.35782);
          store->klass = D.35923;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.35924>; else goto <D.35925>;
          <D.35924>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = store;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          store->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = store;
          goto <D.35926>;
          <D.35925>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = store;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.35926>:
          <D.35919>:
          D.30679 = *sp;
          D.32406 = D.30679->opcode;
          if (D.32406 != 314) goto <D.35927>; else goto <D.35928>;
          <D.35927>:
          D.35929 = store->flags;
          D.35930 = D.35929 | 32;
          store->flags = D.35930;
          <D.35928>:
          D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
          D.32859 = D.30081 & 268435456;
          if (D.32859 != 0) goto <D.35933>; else goto <D.35934>;
          <D.35933>:
          D.35782 = field->type;
          D.35935 = mini_type_to_stind (cfg, D.35782);
          if (D.35935 == 81) goto <D.35936>; else goto <D.35937>;
          <D.35936>:
          D.31793 = sp + 4;
          D.31794 = *D.31793;
          D.34010 = D.31794->opcode;
          if (D.34010 != 362) goto <D.35931>; else goto <D.35938>;
          <D.35938>:
          D.31793 = sp + 4;
          D.31794 = *D.31793;
          D.34035 = D.31794->data.op[0].const_val;
          if (D.34035 != 0) goto <D.35931>; else goto <D.35932>;
          <D.35931>:
          {
            struct MonoInst * ptr;
            int dreg;

            D.35939 = alloc_ireg_mp (cfg);
            dreg = (int) D.35939;
            D.29691 = cfg->mempool;
            ptr = mono_mempool_alloc (D.29691, 56);
            ptr->data.op[1].const_val = 0;
            D.35940 = ptr->data.op[1].const_val;
            ptr->data.op[0].const_val = D.35940;
            ptr->prev = 0B;
            D.35941 = ptr->prev;
            ptr->next = D.35941;
            ptr->opcode = 625;
            ptr->flags = 0;
            ptr->type = 0;
            ptr->dreg = -1;
            ptr->sreg3 = -1;
            D.35942 = ptr->sreg3;
            ptr->sreg2 = D.35942;
            D.35943 = ptr->sreg2;
            ptr->sreg1 = D.35943;
            D.29910 = cfg->ip;
            ptr->cil_code = D.29910;
            ptr->dreg = dreg;
            D.30679 = *sp;
            D.30872 = D.30679->dreg;
            ptr->sreg1 = D.30872;
            foffset.249 = (int) foffset;
            ptr->data.op[1].const_val = foffset.249;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.35944>; else goto <D.35945>;
            <D.35944>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = ptr;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            ptr->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ptr;
            goto <D.35946>;
            <D.35945>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ptr;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.35946>:
            D.31793 = sp + 4;
            D.31794 = *D.31793;
            emit_write_barrier (cfg, ptr, D.31794);
          }
          <D.35932>:
          <D.35937>:
          <D.35934>:
          D.35929 = store->flags;
          D.33976 = (unsigned char) ins_flag;
          D.35947 = D.35929 | D.33976;
          store->flags = D.35947;
        }
        <D.35810>:
        ins_flag = 0;
        ip = ip + 5;
        goto <D.26808>;
        <D.35796>:
        if (is_instance != 0) goto <D.35952>; else goto <D.35948>;
        <D.35952>:
        klass.176 = klass;
        D.35117 = BIT_FIELD_REF <*klass.176, 32, 160>;
        D.35118 = D.35117 & 4194304;
        if (D.35118 != 0) goto <D.35953>; else goto <D.35949>;
        <D.35953>:
        D.29662 = cfg->method;
        D.35954 = mono_method_signature (D.29662);
        D.35955 = BIT_FIELD_REF <*D.35954, 32, 64>;
        D.35956 = D.35955 & 4194304;
        if (D.35956 == 0) goto <D.35950>; else goto <D.35957>;
        <D.35957>:
        D.30679 = *sp;
        D.32406 = D.30679->opcode;
        if (D.32406 != 424) goto <D.35950>; else goto <D.35958>;
        <D.35958>:
        D.30679 = *sp;
        D.35817 = D.30679->sreg1;
        D.30289 = cfg->args;
        D.30290 = *D.30289;
        D.30304 = D.30290->dreg;
        if (D.35817 != D.30304) goto <D.35950>; else goto <D.35949>;
        <D.35949>:
        klass.176 = klass;
        D.35117 = BIT_FIELD_REF <*klass.176, 32, 160>;
        D.35818 = D.35117 & 8388608;
        if (D.35818 != 0) goto <D.35950>; else goto <D.35959>;
        <D.35959>:
        D.35820 = mono_defaults.marshalbyrefobject_class;
        klass.176 = klass;
        if (D.35820 == klass.176) goto <D.35950>; else goto <D.35948>;
        <D.35950>:
        {
          struct MonoMethod * wrapper;
          struct MonoInst * iargs[4];

          try
            {
              if (op == 124) goto <D.35961>; else goto <D.35962>;
              <D.35961>:
              D.35782 = field->type;
              iftmp.250 = mono_marshal_get_ldflda_wrapper (D.35782);
              goto <D.35963>;
              <D.35962>:
              D.35782 = field->type;
              iftmp.250 = mono_marshal_get_ldfld_wrapper (D.35782);
              <D.35963>:
              wrapper = iftmp.250;
              D.29838 = cfg->gsharedvt;
              if (D.29838 != 0) goto <D.35964>; else goto <D.35965>;
              <D.35964>:
              D.29629 = method->klass;
              D.31352 = D.29629->name_space;
              D.29629 = method->klass;
              D.31353 = D.29629->name;
              D.31354 = method->name;
              D.31355 = method->signature;
              D.31356 = D.31355->param_count;
              D.31357 = (int) D.31356;
              D.35966 = mono_opcode_name (op);
              D.35967 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.31352, D.31353, D.31354, D.31357, D.35966, "method-to-ir.c", 10000);
              cfg->exception_message = D.35967;
              D.29771 = cfg->verbose_level;
              if (D.29771 > 1) goto <D.35968>; else goto <D.35969>;
              <D.35968>:
              D.31362 = cfg->exception_message;
              printf ("%s\n", D.31362);
              <D.35969>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.35965>:
              D.30679 = *sp;
              iargs[0] = D.30679;
              D.29691 = cfg->mempool;
              D.35970 = mono_mempool_alloc (D.29691, 56);
              iargs[1] = D.35970;
              D.35971 = iargs[1];
              D.35971 = iargs[1];
              D.35971->data.op[1].const_val = 0;
              D.35972 = D.35971->data.op[1].const_val;
              D.35971->data.op[0].const_val = D.35972;
              D.35971 = iargs[1];
              D.35971 = iargs[1];
              D.35971->prev = 0B;
              D.35973 = D.35971->prev;
              D.35971->next = D.35973;
              D.35971 = iargs[1];
              D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.30082 = D.30081 & 64;
              if (D.30082 != 0) goto <D.35975>; else goto <D.35976>;
              <D.35975>:
              iftmp.251 = 732;
              goto <D.35977>;
              <D.35976>:
              iftmp.251 = 362;
              <D.35977>:
              D.35971->opcode = iftmp.251;
              D.35971 = iargs[1];
              D.35971->flags = 0;
              D.35971 = iargs[1];
              D.35971->type = 0;
              D.35971 = iargs[1];
              D.35971->dreg = -1;
              D.35971 = iargs[1];
              D.35971 = iargs[1];
              D.35971 = iargs[1];
              D.35971->sreg3 = -1;
              D.35978 = D.35971->sreg3;
              D.35971->sreg2 = D.35978;
              D.35979 = D.35971->sreg2;
              D.35971->sreg1 = D.35979;
              D.35971 = iargs[1];
              D.29910 = cfg->ip;
              D.35971->cil_code = D.29910;
              D.35971 = iargs[1];
              klass.176 = klass;
              D.35971->data.op[0].p = klass.176;
              D.35971 = iargs[1];
              D.35971->data.op[1].src = 11B;
              D.35971 = iargs[1];
              D.35971->type = 3;
              D.35971 = iargs[1];
              D.35980 = alloc_dreg (cfg, 3);
              D.35981 = (int) D.35980;
              D.35971->dreg = D.35981;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.35982>; else goto <D.35983>;
              <D.35982>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.35971 = iargs[1];
              D.29939->next = D.35971;
              D.35971 = iargs[1];
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.35971->prev = D.29939;
              bblock.129 = cfg->cbb;
              D.35971 = iargs[1];
              bblock.129->last_ins = D.35971;
              goto <D.35984>;
              <D.35983>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              D.35971 = iargs[1];
              bblock.129->last_ins = D.35971;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.35984>:
              D.29691 = cfg->mempool;
              D.35985 = mono_mempool_alloc (D.29691, 56);
              iargs[2] = D.35985;
              D.35986 = iargs[2];
              D.35986 = iargs[2];
              D.35986->data.op[1].const_val = 0;
              D.35987 = D.35986->data.op[1].const_val;
              D.35986->data.op[0].const_val = D.35987;
              D.35986 = iargs[2];
              D.35986 = iargs[2];
              D.35986->prev = 0B;
              D.35988 = D.35986->prev;
              D.35986->next = D.35988;
              D.35986 = iargs[2];
              D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.30082 = D.30081 & 64;
              if (D.30082 != 0) goto <D.35990>; else goto <D.35991>;
              <D.35990>:
              iftmp.252 = 732;
              goto <D.35992>;
              <D.35991>:
              iftmp.252 = 362;
              <D.35992>:
              D.35986->opcode = iftmp.252;
              D.35986 = iargs[2];
              D.35986->flags = 0;
              D.35986 = iargs[2];
              D.35986->type = 0;
              D.35986 = iargs[2];
              D.35986->dreg = -1;
              D.35986 = iargs[2];
              D.35986 = iargs[2];
              D.35986 = iargs[2];
              D.35986->sreg3 = -1;
              D.35993 = D.35986->sreg3;
              D.35986->sreg2 = D.35993;
              D.35994 = D.35986->sreg2;
              D.35986->sreg1 = D.35994;
              D.35986 = iargs[2];
              D.29910 = cfg->ip;
              D.35986->cil_code = D.29910;
              D.35986 = iargs[2];
              D.35986->data.op[0].p = field;
              D.35986 = iargs[2];
              D.35986->data.op[1].src = 13B;
              D.35986 = iargs[2];
              D.35986->type = 3;
              D.35986 = iargs[2];
              D.35995 = alloc_dreg (cfg, 3);
              D.35996 = (int) D.35995;
              D.35986->dreg = D.35996;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.35997>; else goto <D.35998>;
              <D.35997>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.35986 = iargs[2];
              D.29939->next = D.35986;
              D.35986 = iargs[2];
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.35986->prev = D.29939;
              bblock.129 = cfg->cbb;
              D.35986 = iargs[2];
              bblock.129->last_ins = D.35986;
              goto <D.35999>;
              <D.35998>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              D.35986 = iargs[2];
              bblock.129->last_ins = D.35986;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.35999>:
              D.29691 = cfg->mempool;
              D.36000 = mono_mempool_alloc (D.29691, 56);
              iargs[3] = D.36000;
              D.36001 = iargs[3];
              D.36001 = iargs[3];
              D.36001->data.op[1].const_val = 0;
              D.36002 = D.36001->data.op[1].const_val;
              D.36001->data.op[0].const_val = D.36002;
              D.36001 = iargs[3];
              D.36001 = iargs[3];
              D.36001->prev = 0B;
              D.36003 = D.36001->prev;
              D.36001->next = D.36003;
              D.36001 = iargs[3];
              D.36001->opcode = 362;
              D.36001 = iargs[3];
              D.36001->flags = 0;
              D.36001 = iargs[3];
              D.36001->type = 0;
              D.36001 = iargs[3];
              D.36001->dreg = -1;
              D.36001 = iargs[3];
              D.36001 = iargs[3];
              D.36001 = iargs[3];
              D.36001->sreg3 = -1;
              D.36004 = D.36001->sreg3;
              D.36001->sreg2 = D.36004;
              D.36005 = D.36001->sreg2;
              D.36001->sreg1 = D.36005;
              D.36001 = iargs[3];
              D.29910 = cfg->ip;
              D.36001->cil_code = D.29910;
              D.36001 = iargs[3];
              klass.176 = klass;
              D.35117 = BIT_FIELD_REF <*klass.176, 32, 160>;
              D.35789 = D.35117 & 8;
              if (D.35789 != 0) goto <D.36007>; else goto <D.36008>;
              <D.36007>:
              D.35792 = field->offset;
              D.35793 = (unsigned int) D.35792;
              D.35866 = D.35793 + 4294967288;
              iftmp.253 = (mgreg_t) D.35866;
              goto <D.36009>;
              <D.36008>:
              iftmp.253 = field->offset;
              <D.36009>:
              D.36001->data.op[0].const_val = iftmp.253;
              D.36001 = iargs[3];
              D.36001->type = 1;
              D.36001 = iargs[3];
              D.36010 = alloc_dreg (cfg, 1);
              D.36011 = (int) D.36010;
              D.36001->dreg = D.36011;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.36012>; else goto <D.36013>;
              <D.36012>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.36001 = iargs[3];
              D.29939->next = D.36001;
              D.36001 = iargs[3];
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.36001->prev = D.29939;
              bblock.129 = cfg->cbb;
              D.36001 = iargs[3];
              bblock.129->last_ins = D.36001;
              goto <D.36014>;
              <D.36013>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              D.36001 = iargs[3];
              bblock.129->last_ins = D.36001;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.36014>:
              D.30079 = cfg->opt;
              D.32512 = D.30079 & 4;
              if (D.32512 != 0) goto <D.36015>; else goto <D.36018>;
              <D.36018>:
              D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.30082 = D.30081 & 64;
              if (D.30082 != 0) goto <D.36015>; else goto <D.36016>;
              <D.36015>:
              D.36019 = mono_method_signature (wrapper);
              D.29857 = cfg->real_offset;
              costs = inline_method (cfg, wrapper, D.36019, &iargs, ip, D.29857, dont_inline, 1);
              D.30240 = cfg->exception_type;
              if (D.30240 != 0) goto exception_exit; else goto <D.36020>;
              <D.36020>:
              bblock.129 = cfg->cbb;
              bblock = bblock.129;
              D.35879 = costs <= 0;
              D.35880 = (long int) D.35879;
              D.35881 = __builtin_expect (D.35880, 0);
              if (D.35881 != 0) goto <D.36021>; else goto <D.36022>;
              <D.36021>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10011, "costs > 0");
              <D.36022>:
              D.29857 = cfg->real_offset;
              D.32539 = D.29857 + 5;
              cfg->real_offset = D.32539;
              sp.254 = sp;
              sp = sp.254 + 4;
              D.36024 = iargs[0];
              *sp.254 = D.36024;
              inline_costs = inline_costs + costs;
              goto <D.36017>;
              <D.36016>:
              ins = mono_emit_method_call (cfg, wrapper, &iargs, 0B);
              sp.255 = sp;
              sp = sp.255 + 4;
              *sp.255 = ins;
              <D.36017>:
            }
          finally
            {
              iargs = {CLOBBER};
            }
        }
        goto <D.35951>;
        <D.35948>:
        if (is_instance != 0) goto <D.36026>; else goto <D.36027>;
        <D.36026>:
        D.30679 = *sp;
        D.32402 = D.30679->type;
        if (D.32402 == 7) goto <D.36028>; else goto <D.36029>;
        <D.36028>:
        {
          struct MonoInst * var;

          D.30679 = *sp;
          D.30872 = D.30679->dreg;
          D.36031 = (unsigned int) D.30872;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.36031 < D.30791) goto <D.36032>; else goto <D.36033>;
          <D.36032>:
          D.30794 = cfg->vreg_to_inst;
          D.30679 = *sp;
          D.30872 = D.30679->dreg;
          D.36034 = (unsigned int) D.30872;
          D.36035 = D.36034 * 4;
          D.36036 = D.30794 + D.36035;
          iftmp.256 = *D.36036;
          goto <D.36037>;
          <D.36033>:
          iftmp.256 = 0B;
          <D.36037>:
          var = iftmp.256;
          if (var == 0B) goto <D.36038>; else goto <D.36039>;
          <D.36038>:
          klass.176 = klass;
          D.34409 = &klass.176->byval_arg;
          D.30679 = *sp;
          D.30872 = D.30679->dreg;
          var = mono_compile_create_var_for_vreg (cfg, D.34409, 329, D.30872);
          goto <D.36040>;
          <D.36039>:
          D.36041 = var->klass;
          klass.176 = klass;
          D.36042 = D.36041 != klass.176;
          D.36043 = (long int) D.36042;
          D.36044 = __builtin_expect (D.36043, 0);
          if (D.36044 != 0) goto <D.36045>; else goto <D.36046>;
          <D.36045>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10034, "var->klass == klass");
          <D.36046>:
          <D.36040>:
          D.29691 = cfg->mempool;
          ins = mono_mempool_alloc (D.29691, 56);
          ins->data.op[1].const_val = 0;
          D.29906 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.29906;
          ins->prev = 0B;
          D.29907 = ins->prev;
          ins->next = D.29907;
          ins->opcode = 314;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.29908 = ins->sreg3;
          ins->sreg2 = D.29908;
          D.29909 = ins->sreg2;
          ins->sreg1 = D.29909;
          D.29910 = cfg->ip;
          ins->cil_code = D.29910;
          ins->data.op[0].p = var;
          D.36047 = var->flags;
          D.36048 = D.36047 | 16;
          var->flags = D.36048;
          ins->type = 5;
          D.36041 = var->klass;
          ins->klass = D.36041;
          D.36049 = alloc_dreg (cfg, 5);
          D.36050 = (int) D.36049;
          ins->dreg = D.36050;
          cfg->has_indirection = 1;
          D.29838 = cfg->gsharedvt;
          D.30765 = D.29838 != 0;
          D.30766 = (long int) D.30765;
          D.30767 = __builtin_expect (D.30766, 0);
          if (D.30767 != 0) goto <D.36051>; else goto <D.36052>;
          <D.36051>:
          D.36053 = var->data.op[1].vtype;
          D.36054 = mini_is_gsharedvt_variable_type (cfg, D.36053);
          if (D.36054 != 0) goto <D.36055>; else goto <D.36056>;
          <D.36055>:
          handle_gsharedvt_ldaddr (cfg);
          <D.36056>:
          <D.36052>:
          D.36058 = mono_arch_is_soft_float ();
          if (D.36058 != 0) goto <D.36059>; else goto <D.36060>;
          <D.36059>:
          D.36065 = var->type;
          if (D.36065 == 2) goto <D.36062>; else goto <D.36066>;
          <D.36066>:
          D.36065 = var->type;
          if (D.36065 == 4) goto <D.36062>; else goto <D.36063>;
          <D.36062>:
          iftmp.258 = 1;
          goto <D.36064>;
          <D.36063>:
          iftmp.258 = 0;
          <D.36064>:
          iftmp.257 = (_Bool) iftmp.258;
          goto <D.36067>;
          <D.36060>:
          D.36065 = var->type;
          iftmp.257 = D.36065 == 2;
          <D.36067>:
          if (iftmp.257 != 0) goto <D.36068>; else goto <D.36069>;
          <D.36068>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.36071 = var->dreg;
            D.36072 = D.36071 + 1;
            D.36073 = (unsigned int) D.36072;
            D.30791 = cfg->vreg_to_inst_len;
            if (D.36073 < D.30791) goto <D.36074>; else goto <D.36075>;
            <D.36074>:
            D.30794 = cfg->vreg_to_inst;
            D.36071 = var->dreg;
            D.36076 = (sizetype) D.36071;
            D.36077 = D.36076 + 1;
            D.36078 = D.36077 * 4;
            D.36079 = D.30794 + D.36078;
            iftmp.259 = *D.36079;
            goto <D.36080>;
            <D.36075>:
            iftmp.259 = 0B;
            <D.36080>:
            var1 = iftmp.259;
            D.36071 = var->dreg;
            D.36082 = D.36071 + 2;
            D.36083 = (unsigned int) D.36082;
            D.30791 = cfg->vreg_to_inst_len;
            if (D.36083 < D.30791) goto <D.36084>; else goto <D.36085>;
            <D.36084>:
            D.30794 = cfg->vreg_to_inst;
            D.36071 = var->dreg;
            D.36076 = (sizetype) D.36071;
            D.36086 = D.36076 + 2;
            D.36087 = D.36086 * 4;
            D.36088 = D.30794 + D.36087;
            iftmp.260 = *D.36088;
            goto <D.36089>;
            <D.36085>:
            iftmp.260 = 0B;
            <D.36089>:
            var2 = iftmp.260;
            D.36090 = var1 == 0B;
            D.36091 = (long int) D.36090;
            D.36092 = __builtin_expect (D.36091, 0);
            if (D.36092 != 0) goto <D.36093>; else goto <D.36094>;
            <D.36093>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10036, "var1");
            <D.36094>:
            D.36095 = var2 == 0B;
            D.36096 = (long int) D.36095;
            D.36097 = __builtin_expect (D.36096, 0);
            if (D.36097 != 0) goto <D.36098>; else goto <D.36099>;
            <D.36098>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10036, "var2");
            <D.36099>:
            D.36100 = var1->flags;
            D.36101 = D.36100 | 16;
            var1->flags = D.36101;
            D.36102 = var2->flags;
            D.36103 = D.36102 | 16;
            var2->flags = D.36103;
          }
          <D.36069>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.36104>; else goto <D.36105>;
          <D.36104>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = ins;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          ins->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          goto <D.36106>;
          <D.36105>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.36106>:
          *sp = ins;
        }
        <D.36029>:
        if (op == 124) goto <D.36107>; else goto <D.36108>;
        <D.36107>:
        D.36109 = is_magic_tls_access (field);
        if (D.36109 != 0) goto <D.36110>; else goto <D.36111>;
        <D.36110>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.36112>; else goto <D.36113>;
        <D.36112>:
        D.29629 = method->klass;
        D.31352 = D.29629->name_space;
        D.29629 = method->klass;
        D.31353 = D.29629->name;
        D.31354 = method->name;
        D.31355 = method->signature;
        D.31356 = D.31355->param_count;
        D.31357 = (int) D.31356;
        D.30562 = *ip;
        D.30563 = (int) D.30562;
        D.36114 = mono_opcode_name (D.30563);
        D.36115 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.31352, D.31353, D.31354, D.31357, D.36114, "method-to-ir.c", 10042);
        cfg->exception_message = D.36115;
        D.29771 = cfg->verbose_level;
        if (D.29771 > 1) goto <D.36116>; else goto <D.36117>;
        <D.36116>:
        D.31362 = cfg->exception_message;
        printf ("%s\n", D.31362);
        <D.36117>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36113>:
        ins = *sp;
        sp.261 = sp;
        sp = sp.261 + 4;
        D.36119 = create_magic_tls_access (cfg, field, &cached_tls_addr, ins);
        *sp.261 = D.36119;
        goto <D.36120>;
        <D.36111>:
        D.30679 = *sp;
        D.32402 = D.30679->type;
        if (D.32402 == 6) goto <D.36121>; else goto <D.36122>;
        <D.36121>:
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.36123 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.36123;
          inst->prev = 0B;
          D.36124 = inst->prev;
          inst->next = D.36124;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.36125 = inst->sreg3;
          inst->sreg2 = D.36125;
          D.36126 = inst->sreg2;
          inst->sreg1 = D.36126;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          inst->dreg = -1;
          D.30679 = *sp;
          D.30872 = D.30679->dreg;
          inst->sreg1 = D.30872;
          inst->data.op[1].const_val = 0;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.36127>; else goto <D.36128>;
          <D.36127>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.36129>;
          <D.36128>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.36129>:
        }
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.36130 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.36130;
          inst->prev = 0B;
          D.36131 = inst->prev;
          inst->next = D.36131;
          inst->opcode = 451;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.36132 = inst->sreg3;
          inst->sreg2 = D.36132;
          D.36133 = inst->sreg2;
          inst->sreg1 = D.36133;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          inst->data.op[1].p = "NullReferenceException";
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.36134>; else goto <D.36135>;
          <D.36134>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.36136>;
          <D.36135>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.36136>:
        }
        <D.36122>:
        D.36137 = alloc_ireg_mp (cfg);
        dreg = (int) D.36137;
        klass.176 = klass;
        D.36138 = mini_is_gsharedvt_klass (cfg, klass.176);
        if (D.36138 != 0) goto <D.36139>; else goto <D.36140>;
        <D.36139>:
        {
          struct MonoInst * offset_ins;

          offset_ins = emit_get_gsharedvt_info (cfg, field, 15);
          D.29691 = cfg->mempool;
          ins = mono_mempool_alloc (D.29691, 56);
          ins->data.op[1].const_val = 0;
          D.29906 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.29906;
          ins->prev = 0B;
          D.29907 = ins->prev;
          ins->next = D.29907;
          ins->opcode = 565;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.29908 = ins->sreg3;
          ins->sreg2 = D.29908;
          D.29909 = ins->sreg2;
          ins->sreg1 = D.29909;
          D.29910 = cfg->ip;
          ins->cil_code = D.29910;
          ins->dreg = dreg;
          D.30679 = *sp;
          D.30872 = D.30679->dreg;
          ins->sreg1 = D.30872;
          D.36141 = offset_ins->dreg;
          ins->sreg2 = D.36141;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.36142>; else goto <D.36143>;
          <D.36142>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = ins;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          ins->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          goto <D.36144>;
          <D.36143>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.36144>:
        }
        goto <D.36145>;
        <D.36140>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 625;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        ins->dreg = dreg;
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        ins->sreg1 = D.30872;
        foffset.249 = (int) foffset;
        ins->data.op[1].const_val = foffset.249;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.36146>; else goto <D.36147>;
        <D.36146>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.36148>;
        <D.36147>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.36148>:
        <D.36145>:
        D.35782 = field->type;
        D.36149 = mono_class_from_mono_type (D.35782);
        ins->klass = D.36149;
        ins->type = 5;
        sp.262 = sp;
        sp = sp.262 + 4;
        *sp.262 = ins;
        <D.36120>:
        goto <D.36151>;
        <D.36108>:
        {
          struct MonoInst * load;

          D.29679 = BIT_FIELD_REF <*cfg, 32, 3424>;
          D.30317 = D.29679 & 64;
          if (D.30317 != 0) goto <D.36152>; else goto <D.36153>;
          <D.36152>:
          {
            struct MonoInst * inst;

            D.29691 = cfg->mempool;
            inst = mono_mempool_alloc (D.29691, 56);
            inst->data.op[1].const_val = 0;
            D.36154 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.36154;
            inst->prev = 0B;
            D.36155 = inst->prev;
            inst->next = D.36155;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.36156 = inst->sreg3;
            inst->sreg2 = D.36156;
            D.36157 = inst->sreg2;
            inst->sreg1 = D.36157;
            D.29910 = cfg->ip;
            inst->cil_code = D.29910;
            inst->dreg = -1;
            D.30679 = *sp;
            D.30872 = D.30679->dreg;
            inst->sreg1 = D.30872;
            inst->data.op[1].const_val = 0;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36158>; else goto <D.36159>;
            <D.36158>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = inst;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            inst->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            goto <D.36160>;
            <D.36159>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36160>:
          }
          {
            struct MonoInst * inst;

            D.29691 = cfg->mempool;
            inst = mono_mempool_alloc (D.29691, 56);
            inst->data.op[1].const_val = 0;
            D.36161 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.36161;
            inst->prev = 0B;
            D.36162 = inst->prev;
            inst->next = D.36162;
            inst->opcode = 451;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.36163 = inst->sreg3;
            inst->sreg2 = D.36163;
            D.36164 = inst->sreg2;
            inst->sreg1 = D.36164;
            D.29910 = cfg->ip;
            inst->cil_code = D.29910;
            inst->data.op[1].p = "NullReferenceException";
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36165>; else goto <D.36166>;
            <D.36165>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = inst;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            inst->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            goto <D.36167>;
            <D.36166>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36167>:
          }
          goto <D.36168>;
          <D.36153>:
          <D.36168>:
          klass.176 = klass;
          D.36169 = mini_is_gsharedvt_klass (cfg, klass.176);
          if (D.36169 != 0) goto <D.36170>; else goto <D.36171>;
          <D.36170>:
          {
            struct MonoInst * offset_ins;

            offset_ins = emit_get_gsharedvt_info (cfg, field, 15);
            D.36172 = alloc_ireg_mp (cfg);
            dreg = (int) D.36172;
            D.29691 = cfg->mempool;
            ins = mono_mempool_alloc (D.29691, 56);
            ins->data.op[1].const_val = 0;
            D.29906 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.29906;
            ins->prev = 0B;
            D.29907 = ins->prev;
            ins->next = D.29907;
            ins->opcode = 565;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.29908 = ins->sreg3;
            ins->sreg2 = D.29908;
            D.29909 = ins->sreg2;
            ins->sreg1 = D.29909;
            D.29910 = cfg->ip;
            ins->cil_code = D.29910;
            ins->dreg = dreg;
            D.30679 = *sp;
            D.30872 = D.30679->dreg;
            ins->sreg1 = D.30872;
            D.36173 = offset_ins->dreg;
            ins->sreg2 = D.36173;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36174>; else goto <D.36175>;
            <D.36174>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = ins;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            ins->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            goto <D.36176>;
            <D.36175>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36176>:
            D.29691 = cfg->mempool;
            load = mono_mempool_alloc (D.29691, 56);
            load->data.op[1].const_val = 0;
            D.36177 = load->data.op[1].const_val;
            load->data.op[0].const_val = D.36177;
            load->prev = 0B;
            D.36178 = load->prev;
            load->next = D.36178;
            D.35782 = field->type;
            D.36179 = mono_type_to_load_membase (cfg, D.35782);
            D.36180 = (short unsigned int) D.36179;
            load->opcode = D.36180;
            load->flags = 0;
            load->type = 0;
            load->dreg = -1;
            load->sreg3 = -1;
            D.36181 = load->sreg3;
            load->sreg2 = D.36181;
            D.36182 = load->sreg2;
            load->sreg1 = D.36182;
            D.29910 = cfg->ip;
            load->cil_code = D.29910;
            load->dreg = 0;
            load->sreg1 = dreg;
            load->data.op[0].const_val = 0;
            load->type = 1;
            D.35782 = field->type;
            type_to_eval_stack_type (cfg, D.35782, load);
            D.36183 = load->type;
            D.36184 = (<unnamed type>) D.36183;
            D.36185 = alloc_dreg (cfg, D.36184);
            D.36186 = (int) D.36185;
            load->dreg = D.36186;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36187>; else goto <D.36188>;
            <D.36187>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = load;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            load->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = load;
            goto <D.36189>;
            <D.36188>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = load;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36189>:
          }
          goto <D.36190>;
          <D.36171>:
          D.29691 = cfg->mempool;
          load = mono_mempool_alloc (D.29691, 56);
          load->data.op[1].const_val = 0;
          D.36177 = load->data.op[1].const_val;
          load->data.op[0].const_val = D.36177;
          load->prev = 0B;
          D.36178 = load->prev;
          load->next = D.36178;
          D.35782 = field->type;
          D.36191 = mono_type_to_load_membase (cfg, D.35782);
          D.36192 = (short unsigned int) D.36191;
          load->opcode = D.36192;
          load->flags = 0;
          load->type = 0;
          load->dreg = -1;
          load->sreg3 = -1;
          D.36181 = load->sreg3;
          load->sreg2 = D.36181;
          D.36182 = load->sreg2;
          load->sreg1 = D.36182;
          D.29910 = cfg->ip;
          load->cil_code = D.29910;
          load->dreg = 0;
          D.30679 = *sp;
          D.30872 = D.30679->dreg;
          load->sreg1 = D.30872;
          foffset.249 = (int) foffset;
          load->data.op[0].const_val = foffset.249;
          load->type = 1;
          D.35782 = field->type;
          type_to_eval_stack_type (cfg, D.35782, load);
          D.36183 = load->type;
          D.36184 = (<unnamed type>) D.36183;
          D.36193 = alloc_dreg (cfg, D.36184);
          D.36194 = (int) D.36193;
          load->dreg = D.36194;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.36195>; else goto <D.36196>;
          <D.36195>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = load;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          load->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = load;
          goto <D.36197>;
          <D.36196>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = load;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.36197>:
          <D.36190>:
          D.36198 = load->flags;
          D.33976 = (unsigned char) ins_flag;
          D.36199 = D.36198 | D.33976;
          load->flags = D.36199;
          D.30679 = *sp;
          D.32406 = D.30679->opcode;
          if (D.32406 != 314) goto <D.36200>; else goto <D.36201>;
          <D.36200>:
          D.36198 = load->flags;
          D.36202 = D.36198 | 32;
          load->flags = D.36202;
          <D.36201>:
          sp.263 = sp;
          sp = sp.263 + 4;
          *sp.263 = load;
        }
        <D.36151>:
        <D.36027>:
        <D.35951>:
        if (is_instance != 0) goto <D.36204>; else goto <D.36205>;
        <D.36204>:
        ins_flag = 0;
        ip = ip + 5;
        goto <D.26808>;
        <D.36205>:
        klass.176 = klass;
        context_used = mini_class_check_context_used (cfg, klass.176);
        ftype = mono_field_get_type (field);
        D.36206 = ftype->attrs;
        D.36207 = (int) D.36206;
        D.36208 = D.36207 & 64;
        if (D.36208 != 0) goto <D.36209>; else goto <D.36210>;
        <D.36209>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.36211>; else goto <D.36212>;
        <D.36211>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.36213>; else goto <D.36214>;
        <D.36213>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36214>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36212>:
        D.36215 = mini_get_debug_options ();
        D.36216 = D.36215->break_on_unverified;
        if (D.36216 != 0) goto <D.36217>; else goto unverified;
        <D.36217>:
        raise (5);
        <D.36210>:
        if (context_used == 0) goto <D.36218>; else goto <D.36219>;
        <D.36218>:
        D.30079 = cfg->opt;
        D.30080 = D.30079 & 512;
        if (D.30080 == 0) goto <D.36220>; else goto <D.36221>;
        <D.36220>:
        D.29716 = cfg->domain;
        klass.176 = klass;
        mono_class_vtable (D.29716, klass.176);
        klass.176 = klass;
        if (klass.176 == 0B) goto <D.36222>; else goto <D.36224>;
        <D.36224>:
        klass.176 = klass;
        D.34335 = klass.176->exception_type;
        if (D.34335 != 0) goto <D.36222>; else goto <D.36223>;
        <D.36222>:
        klass.176 = klass;
        cfg->exception_ptr = klass.176;
        D.36225 = mini_get_debug_options ();
        D.36226 = D.36225->break_on_unverified;
        if (D.36226 != 0) goto <D.36227>; else goto load_error;
        <D.36227>:
        raise (5);
        <D.36223>:
        <D.36221>:
        <D.36219>:
        {
          int ret;

          D.29716 = cfg->domain;
          D.36228 = &D.29716->lock.mutex;
          ret = pthread_mutex_lock (D.36228);
          if (ret != 0) goto <D.36229>; else goto <D.36230>;
          <D.36229>:
          monoeg_g_log (0B, 16, "Bad call to mono_mutex_lock result %d", ret);
          <D.36230>:
          D.36231 = ret != 0;
          D.36232 = (long int) D.36231;
          D.36233 = __builtin_expect (D.36232, 0);
          if (D.36233 != 0) goto <D.36234>; else goto <D.36235>;
          <D.36234>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10119, "ret == 0");
          <D.36235>:
        }
        D.29716 = cfg->domain;
        D.36236 = D.29716->special_static_fields;
        if (D.36236 != 0B) goto <D.36237>; else goto <D.36238>;
        <D.36237>:
        D.29716 = cfg->domain;
        D.36236 = D.29716->special_static_fields;
        addr = monoeg_g_hash_table_lookup (D.36236, field);
        <D.36238>:
        {
          int ret;

          D.29716 = cfg->domain;
          D.36228 = &D.29716->lock.mutex;
          ret = pthread_mutex_unlock (D.36228);
          if (ret != 0) goto <D.36239>; else goto <D.36240>;
          <D.36239>:
          monoeg_g_log (0B, 16, "Bad call to mono_mutex_unlock result %d", ret);
          <D.36240>:
          D.36241 = ret != 0;
          D.36242 = (long int) D.36241;
          D.36243 = __builtin_expect (D.36242, 0);
          if (D.36243 != 0) goto <D.36244>; else goto <D.36245>;
          <D.36244>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10122, "ret == 0");
          <D.36245>:
        }
        is_special_static = mono_class_field_is_special_static (field);
        if (is_special_static != 0) goto <D.36248>; else goto <D.36246>;
        <D.36248>:
        addr.264 = (signed int) addr;
        if (addr.264 >= 0) goto <D.36250>; else goto <D.36246>;
        <D.36250>:
        thread_ins = mono_get_thread_intrinsic (cfg);
        goto <D.36247>;
        <D.36246>:
        thread_ins = 0B;
        <D.36247>:
        if (is_special_static != 0) goto <D.36253>; else goto <D.36251>;
        <D.36253>:
        addr.264 = (signed int) addr;
        if (addr.264 >= 0) goto <D.36254>; else goto <D.36251>;
        <D.36254>:
        if (thread_ins != 0B) goto <D.36255>; else goto <D.36251>;
        <D.36255>:
        D.30079 = cfg->opt;
        D.30080 = D.30079 & 512;
        if (D.30080 == 0) goto <D.36256>; else goto <D.36251>;
        <D.36256>:
        if (context_used == 0) goto <D.36257>; else goto <D.36251>;
        <D.36257>:
        {
          guint32 offset;
          int idx;
          int static_data_reg;
          int array_reg;
          int dreg;

          D.29838 = cfg->gsharedvt;
          if (D.29838 != 0) goto <D.36258>; else goto <D.36259>;
          <D.36258>:
          D.29629 = method->klass;
          D.31352 = D.29629->name_space;
          D.29629 = method->klass;
          D.31353 = D.29629->name;
          D.31354 = method->name;
          D.31355 = method->signature;
          D.31356 = D.31355->param_count;
          D.31357 = (int) D.31356;
          D.36260 = mono_opcode_name (op);
          D.36261 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.31352, D.31353, D.31354, D.31357, D.36260, "method-to-ir.c", 10141);
          cfg->exception_message = D.36261;
          D.29771 = cfg->verbose_level;
          if (D.29771 > 1) goto <D.36262>; else goto <D.36263>;
          <D.36262>:
          D.31362 = cfg->exception_message;
          printf ("%s\n", D.31362);
          <D.36263>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.36259>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.36264>; else goto <D.36265>;
          <D.36264>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = thread_ins;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          thread_ins->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = thread_ins;
          goto <D.36266>;
          <D.36265>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = thread_ins;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.36266>:
          D.36267 = alloc_ireg (cfg);
          static_data_reg = (int) D.36267;
          {
            struct MonoInst * inst;

            D.29691 = cfg->mempool;
            inst = mono_mempool_alloc (D.29691, 56);
            inst->data.op[1].const_val = 0;
            D.36268 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.36268;
            inst->prev = 0B;
            D.36269 = inst->prev;
            inst->next = D.36269;
            inst->opcode = 388;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.36270 = inst->sreg3;
            inst->sreg2 = D.36270;
            D.36271 = inst->sreg2;
            inst->sreg1 = D.36271;
            D.29910 = cfg->ip;
            inst->cil_code = D.29910;
            inst->dreg = static_data_reg;
            D.36272 = thread_ins->dreg;
            inst->sreg1 = D.36272;
            inst->data.op[0].const_val = 56;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36273>; else goto <D.36274>;
            <D.36273>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = inst;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            inst->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            goto <D.36275>;
            <D.36274>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36275>:
          }
          D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
          D.30082 = D.30081 & 64;
          if (D.30082 != 0) goto <D.36276>; else goto <D.36277>;
          <D.36276>:
          {
            int offset_reg;
            int offset2_reg;
            int idx_reg;

            D.29691 = cfg->mempool;
            ins = mono_mempool_alloc (D.29691, 56);
            ins->data.op[1].const_val = 0;
            D.29906 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.29906;
            ins->prev = 0B;
            D.29907 = ins->prev;
            ins->next = D.29907;
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.36279>; else goto <D.36280>;
            <D.36279>:
            iftmp.265 = 732;
            goto <D.36281>;
            <D.36280>:
            iftmp.265 = 362;
            <D.36281>:
            ins->opcode = iftmp.265;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.29908 = ins->sreg3;
            ins->sreg2 = D.29908;
            D.29909 = ins->sreg2;
            ins->sreg1 = D.29909;
            D.29910 = cfg->ip;
            ins->cil_code = D.29910;
            ins->data.op[0].p = field;
            ins->data.op[1].src = 16B;
            ins->type = 3;
            D.36282 = alloc_dreg (cfg, 3);
            D.36283 = (int) D.36282;
            ins->dreg = D.36283;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36284>; else goto <D.36285>;
            <D.36284>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = ins;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            ins->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            goto <D.36286>;
            <D.36285>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36286>:
            offset_reg = ins->dreg;
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.36287 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.36287;
              inst->prev = 0B;
              D.36288 = inst->prev;
              inst->next = D.36288;
              inst->opcode = 632;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.36289 = inst->sreg3;
              inst->sreg2 = D.36289;
              D.36290 = inst->sreg2;
              inst->sreg1 = D.36290;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = offset_reg;
              inst->sreg1 = offset_reg;
              inst->data.op[1].const_val = 2147483647;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.36291>; else goto <D.36292>;
              <D.36291>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.36293>;
              <D.36292>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.36293>:
            }
            D.36294 = alloc_ireg (cfg);
            idx_reg = (int) D.36294;
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.36295 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.36295;
              inst->prev = 0B;
              D.36296 = inst->prev;
              inst->next = D.36296;
              inst->opcode = 636;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.36297 = inst->sreg3;
              inst->sreg2 = D.36297;
              D.36298 = inst->sreg2;
              inst->sreg1 = D.36298;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = idx_reg;
              inst->sreg1 = offset_reg;
              inst->data.op[1].const_val = 24;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.36299>; else goto <D.36300>;
              <D.36299>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.36301>;
              <D.36300>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.36301>:
            }
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.36302 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.36302;
              inst->prev = 0B;
              D.36303 = inst->prev;
              inst->next = D.36303;
              inst->opcode = 626;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.36304 = inst->sreg3;
              inst->sreg2 = D.36304;
              D.36305 = inst->sreg2;
              inst->sreg1 = D.36305;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = idx_reg;
              inst->sreg1 = idx_reg;
              inst->data.op[1].const_val = 1;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.36306>; else goto <D.36307>;
              <D.36306>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.36308>;
              <D.36307>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.36308>:
            }
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.36309 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.36309;
              inst->prev = 0B;
              D.36310 = inst->prev;
              inst->next = D.36310;
              inst->opcode = 635;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.36311 = inst->sreg3;
              inst->sreg2 = D.36311;
              D.36312 = inst->sreg2;
              inst->sreg1 = D.36312;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = idx_reg;
              inst->sreg1 = idx_reg;
              inst->data.op[1].const_val = 2;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.36313>; else goto <D.36314>;
              <D.36313>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.36315>;
              <D.36314>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.36315>:
            }
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.36316 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.36316;
              inst->prev = 0B;
              D.36317 = inst->prev;
              inst->next = D.36317;
              inst->opcode = 565;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.36318 = inst->sreg3;
              inst->sreg2 = D.36318;
              D.36319 = inst->sreg2;
              inst->sreg1 = D.36319;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = static_data_reg;
              inst->sreg1 = static_data_reg;
              inst->sreg2 = idx_reg;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.36320>; else goto <D.36321>;
              <D.36320>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.36322>;
              <D.36321>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.36322>:
            }
            D.36323 = alloc_ireg (cfg);
            array_reg = (int) D.36323;
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.36324 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.36324;
              inst->prev = 0B;
              D.36325 = inst->prev;
              inst->next = D.36325;
              inst->opcode = 388;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.36326 = inst->sreg3;
              inst->sreg2 = D.36326;
              D.36327 = inst->sreg2;
              inst->sreg1 = D.36327;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = array_reg;
              inst->sreg1 = static_data_reg;
              inst->data.op[0].const_val = 0;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.36328>; else goto <D.36329>;
              <D.36328>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.36330>;
              <D.36329>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.36330>:
            }
            D.36331 = alloc_ireg (cfg);
            offset2_reg = (int) D.36331;
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.36332 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.36332;
              inst->prev = 0B;
              D.36333 = inst->prev;
              inst->next = D.36333;
              inst->opcode = 632;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.36334 = inst->sreg3;
              inst->sreg2 = D.36334;
              D.36335 = inst->sreg2;
              inst->sreg1 = D.36335;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = offset2_reg;
              inst->sreg1 = offset_reg;
              inst->data.op[1].const_val = 16777215;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.36336>; else goto <D.36337>;
              <D.36336>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.36338>;
              <D.36337>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.36338>:
            }
            D.36339 = alloc_ireg (cfg);
            dreg = (int) D.36339;
            D.29691 = cfg->mempool;
            ins = mono_mempool_alloc (D.29691, 56);
            ins->data.op[1].const_val = 0;
            D.29906 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.29906;
            ins->prev = 0B;
            D.29907 = ins->prev;
            ins->next = D.29907;
            ins->opcode = 565;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.29908 = ins->sreg3;
            ins->sreg2 = D.29908;
            D.29909 = ins->sreg2;
            ins->sreg1 = D.29909;
            D.29910 = cfg->ip;
            ins->cil_code = D.29910;
            ins->dreg = dreg;
            ins->sreg1 = array_reg;
            ins->sreg2 = offset2_reg;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36340>; else goto <D.36341>;
            <D.36340>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = ins;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            ins->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            goto <D.36342>;
            <D.36341>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36342>:
          }
          goto <D.36343>;
          <D.36277>:
          addr.266 = (unsigned int) addr;
          offset = addr.266 & 2147483647;
          D.36345 = offset >> 24;
          D.36346 = D.36345 + 4294967295;
          idx = (int) D.36346;
          D.36347 = alloc_ireg (cfg);
          array_reg = (int) D.36347;
          {
            struct MonoInst * inst;

            D.29691 = cfg->mempool;
            inst = mono_mempool_alloc (D.29691, 56);
            inst->data.op[1].const_val = 0;
            D.36348 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.36348;
            inst->prev = 0B;
            D.36349 = inst->prev;
            inst->next = D.36349;
            inst->opcode = 388;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.36350 = inst->sreg3;
            inst->sreg2 = D.36350;
            D.36351 = inst->sreg2;
            inst->sreg1 = D.36351;
            D.29910 = cfg->ip;
            inst->cil_code = D.29910;
            inst->dreg = array_reg;
            inst->sreg1 = static_data_reg;
            idx.267 = (unsigned int) idx;
            D.36353 = idx.267 * 4;
            D.36354 = (int) D.36353;
            inst->data.op[0].const_val = D.36354;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36355>; else goto <D.36356>;
            <D.36355>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = inst;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            inst->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            goto <D.36357>;
            <D.36356>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36357>:
          }
          D.36358 = alloc_ireg (cfg);
          dreg = (int) D.36358;
          D.29691 = cfg->mempool;
          ins = mono_mempool_alloc (D.29691, 56);
          ins->data.op[1].const_val = 0;
          D.29906 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.29906;
          ins->prev = 0B;
          D.29907 = ins->prev;
          ins->next = D.29907;
          ins->opcode = 429;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.29908 = ins->sreg3;
          ins->sreg2 = D.29908;
          D.29909 = ins->sreg2;
          ins->sreg1 = D.29909;
          D.29910 = cfg->ip;
          ins->cil_code = D.29910;
          ins->dreg = dreg;
          ins->sreg1 = array_reg;
          offset.268 = (int) offset;
          D.36360 = offset.268 & 16777215;
          ins->data.op[1].const_val = D.36360;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.36361>; else goto <D.36362>;
          <D.36361>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = ins;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          ins->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          goto <D.36363>;
          <D.36362>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.36363>:
          <D.36343>:
        }
        goto <D.36252>;
        <D.36251>:
        D.30079 = cfg->opt;
        D.30080 = D.30079 & 512;
        if (D.30080 != 0) goto <D.36364>; else goto <D.36368>;
        <D.36368>:
        D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.30082 = D.30081 & 64;
        if (D.30082 != 0) goto <D.36369>; else goto <D.36365>;
        <D.36369>:
        if (is_special_static != 0) goto <D.36364>; else goto <D.36365>;
        <D.36365>:
        if (context_used != 0) goto <D.36370>; else goto <D.36366>;
        <D.36370>:
        if (is_special_static != 0) goto <D.36364>; else goto <D.36366>;
        <D.36364>:
        {
          struct MonoInst * iargs[2];

          try
            {
              klass.244 = field->parent;
              D.36371 = klass.244 == 0B;
              D.36372 = (long int) D.36371;
              D.36373 = __builtin_expect (D.36372, 0);
              if (D.36373 != 0) goto <D.36374>; else goto <D.36375>;
              <D.36374>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10182, "field->parent");
              <D.36375>:
              D.30079 = cfg->opt;
              D.30080 = D.30079 & 512;
              if (D.30080 != 0) goto <D.36376>; else goto <D.36379>;
              <D.36379>:
              D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.30082 = D.30081 & 64;
              if (D.30082 != 0) goto <D.36376>; else goto <D.36377>;
              <D.36376>:
              {
                struct MonoInst * __domain_var;

                __domain_var = mono_get_domainvar (cfg);
                D.29691 = cfg->mempool;
                D.36380 = mono_mempool_alloc (D.29691, 56);
                iargs[0] = D.36380;
                D.36381 = iargs[0];
                D.36381 = iargs[0];
                D.36381->data.op[1].const_val = 0;
                D.36382 = D.36381->data.op[1].const_val;
                D.36381->data.op[0].const_val = D.36382;
                D.36381 = iargs[0];
                D.36381 = iargs[0];
                D.36381->prev = 0B;
                D.36383 = D.36381->prev;
                D.36381->next = D.36383;
                D.36381 = iargs[0];
                D.36381->opcode = 424;
                D.36381 = iargs[0];
                D.36381->flags = 0;
                D.36381 = iargs[0];
                D.36381->type = 0;
                D.36381 = iargs[0];
                D.36381->dreg = -1;
                D.36381 = iargs[0];
                D.36381 = iargs[0];
                D.36381 = iargs[0];
                D.36381->sreg3 = -1;
                D.36384 = D.36381->sreg3;
                D.36381->sreg2 = D.36384;
                D.36385 = D.36381->sreg2;
                D.36381->sreg1 = D.36385;
                D.36381 = iargs[0];
                D.29910 = cfg->ip;
                D.36381->cil_code = D.29910;
                D.36381 = iargs[0];
                D.30422 = cfg->varinfo;
                D.36386 = __domain_var->data.op[0].const_val;
                D.36387 = (unsigned int) D.36386;
                D.36388 = D.36387 * 4;
                D.36389 = D.30422 + D.36388;
                D.36390 = *D.36389;
                D.36391 = D.36390->data.op[1].vtype;
                D.36392 = mono_type_to_regmove (cfg, D.36391);
                D.36393 = (short unsigned int) D.36392;
                D.36381->opcode = D.36393;
                D.30422 = cfg->varinfo;
                D.36386 = __domain_var->data.op[0].const_val;
                D.36387 = (unsigned int) D.36386;
                D.36388 = D.36387 * 4;
                D.36389 = D.30422 + D.36388;
                D.36390 = *D.36389;
                D.36391 = D.36390->data.op[1].vtype;
                D.36381 = iargs[0];
                type_to_eval_stack_type (cfg, D.36391, D.36381);
                D.36381 = iargs[0];
                D.30422 = cfg->varinfo;
                D.36386 = __domain_var->data.op[0].const_val;
                D.36387 = (unsigned int) D.36386;
                D.36388 = D.36387 * 4;
                D.36389 = D.30422 + D.36388;
                D.36390 = *D.36389;
                D.36394 = D.36390->klass;
                D.36381->klass = D.36394;
                D.36381 = iargs[0];
                D.30422 = cfg->varinfo;
                D.36386 = __domain_var->data.op[0].const_val;
                D.36387 = (unsigned int) D.36386;
                D.36388 = D.36387 * 4;
                D.36389 = D.30422 + D.36388;
                D.36390 = *D.36389;
                D.36395 = D.36390->dreg;
                D.36381->sreg1 = D.36395;
                D.36381 = iargs[0];
                D.36381 = iargs[0];
                D.36396 = D.36381->type;
                D.36397 = (<unnamed type>) D.36396;
                D.36398 = alloc_dreg (cfg, D.36397);
                D.36399 = (int) D.36398;
                D.36381->dreg = D.36399;
                D.36381 = iargs[0];
                D.36400 = D.36381->opcode;
                if (D.36400 == 427) goto <D.36401>; else goto <D.36402>;
                <D.36401>:
                D.36381 = iargs[0];
                D.30422 = cfg->varinfo;
                D.36386 = __domain_var->data.op[0].const_val;
                D.36387 = (unsigned int) D.36386;
                D.36388 = D.36387 * 4;
                D.36389 = D.30422 + D.36388;
                D.36390 = *D.36389;
                D.36391 = D.36390->data.op[1].vtype;
                D.36403 = mono_class_from_mono_type (D.36391);
                D.36381->klass = D.36403;
                <D.36402>:
              }
              goto <D.36378>;
              <D.36377>:
              D.29691 = cfg->mempool;
              D.36404 = mono_mempool_alloc (D.29691, 56);
              iargs[0] = D.36404;
              D.36381 = iargs[0];
              D.36381 = iargs[0];
              D.36381->data.op[1].const_val = 0;
              D.36382 = D.36381->data.op[1].const_val;
              D.36381->data.op[0].const_val = D.36382;
              D.36381 = iargs[0];
              D.36381 = iargs[0];
              D.36381->prev = 0B;
              D.36383 = D.36381->prev;
              D.36381->next = D.36383;
              D.36381 = iargs[0];
              D.36381->opcode = 362;
              D.36381 = iargs[0];
              D.36381->flags = 0;
              D.36381 = iargs[0];
              D.36381->type = 0;
              D.36381 = iargs[0];
              D.36381->dreg = -1;
              D.36381 = iargs[0];
              D.36381 = iargs[0];
              D.36381 = iargs[0];
              D.36381->sreg3 = -1;
              D.36384 = D.36381->sreg3;
              D.36381->sreg2 = D.36384;
              D.36385 = D.36381->sreg2;
              D.36381->sreg1 = D.36385;
              D.36381 = iargs[0];
              D.29910 = cfg->ip;
              D.36381->cil_code = D.29910;
              D.36381 = iargs[0];
              D.29716 = cfg->domain;
              D.36381->data.op[0].p = D.29716;
              D.36381 = iargs[0];
              D.36381->type = 3;
              D.36381 = iargs[0];
              D.36405 = alloc_dreg (cfg, 3);
              D.36406 = (int) D.36405;
              D.36381->dreg = D.36406;
              <D.36378>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.36407>; else goto <D.36408>;
              <D.36407>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.36381 = iargs[0];
              D.29939->next = D.36381;
              D.36381 = iargs[0];
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.36381->prev = D.29939;
              bblock.129 = cfg->cbb;
              D.36381 = iargs[0];
              bblock.129->last_ins = D.36381;
              goto <D.36409>;
              <D.36408>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              D.36381 = iargs[0];
              bblock.129->last_ins = D.36381;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.36409>:
              if (context_used != 0) goto <D.36410>; else goto <D.36411>;
              <D.36410>:
              D.36412 = emit_get_rgctx_field (cfg, context_used, field, 7);
              iargs[1] = D.36412;
              goto <D.36413>;
              <D.36411>:
              D.29691 = cfg->mempool;
              D.36414 = mono_mempool_alloc (D.29691, 56);
              iargs[1] = D.36414;
              D.36415 = iargs[1];
              D.36415 = iargs[1];
              D.36415->data.op[1].const_val = 0;
              D.36416 = D.36415->data.op[1].const_val;
              D.36415->data.op[0].const_val = D.36416;
              D.36415 = iargs[1];
              D.36415 = iargs[1];
              D.36415->prev = 0B;
              D.36417 = D.36415->prev;
              D.36415->next = D.36417;
              D.36415 = iargs[1];
              D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.30082 = D.30081 & 64;
              if (D.30082 != 0) goto <D.36419>; else goto <D.36420>;
              <D.36419>:
              iftmp.269 = 732;
              goto <D.36421>;
              <D.36420>:
              iftmp.269 = 362;
              <D.36421>:
              D.36415->opcode = iftmp.269;
              D.36415 = iargs[1];
              D.36415->flags = 0;
              D.36415 = iargs[1];
              D.36415->type = 0;
              D.36415 = iargs[1];
              D.36415->dreg = -1;
              D.36415 = iargs[1];
              D.36415 = iargs[1];
              D.36415 = iargs[1];
              D.36415->sreg3 = -1;
              D.36422 = D.36415->sreg3;
              D.36415->sreg2 = D.36422;
              D.36423 = D.36415->sreg2;
              D.36415->sreg1 = D.36423;
              D.36415 = iargs[1];
              D.29910 = cfg->ip;
              D.36415->cil_code = D.29910;
              D.36415 = iargs[1];
              D.36415->data.op[0].p = field;
              D.36415 = iargs[1];
              D.36415->data.op[1].src = 13B;
              D.36415 = iargs[1];
              D.36415->type = 3;
              D.36415 = iargs[1];
              D.36424 = alloc_dreg (cfg, 3);
              D.36425 = (int) D.36424;
              D.36415->dreg = D.36425;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.36426>; else goto <D.36427>;
              <D.36426>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.36415 = iargs[1];
              D.29939->next = D.36415;
              D.36415 = iargs[1];
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.36415->prev = D.29939;
              bblock.129 = cfg->cbb;
              D.36415 = iargs[1];
              bblock.129->last_ins = D.36415;
              goto <D.36428>;
              <D.36427>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              D.36415 = iargs[1];
              bblock.129->last_ins = D.36415;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.36428>:
              <D.36413>:
              ins = mono_emit_jit_icall (cfg, mono_class_static_field_address, &iargs);
            }
          finally
            {
              iargs = {CLOBBER};
            }
        }
        goto <D.36367>;
        <D.36366>:
        if (context_used != 0) goto <D.36429>; else goto <D.36430>;
        <D.36429>:
        {
          struct MonoInst * static_data;

          klass.176 = klass;
          D.36431 = mono_class_needs_cctor_run (klass.176, method);
          if (D.36431 != 0) goto <D.36432>; else goto <D.36433>;
          <D.36432>:
          klass.176 = klass;
          emit_generic_class_init (cfg, klass.176);
          <D.36433>:
          klass.176 = klass;
          static_data = emit_get_rgctx_klass (cfg, context_used, klass.176, 0);
          klass.176 = klass;
          D.36434 = mini_is_gsharedvt_klass (cfg, klass.176);
          if (D.36434 != 0) goto <D.36435>; else goto <D.36436>;
          <D.36435>:
          {
            struct MonoInst * offset_ins;

            offset_ins = emit_get_rgctx_field (cfg, context_used, field, 15);
            D.36437 = alloc_ireg_mp (cfg);
            dreg = (int) D.36437;
            D.29691 = cfg->mempool;
            ins = mono_mempool_alloc (D.29691, 56);
            ins->data.op[1].const_val = 0;
            D.29906 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.29906;
            ins->prev = 0B;
            D.29907 = ins->prev;
            ins->next = D.29907;
            ins->opcode = 565;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.29908 = ins->sreg3;
            ins->sreg2 = D.29908;
            D.29909 = ins->sreg2;
            ins->sreg1 = D.29909;
            D.29910 = cfg->ip;
            ins->cil_code = D.29910;
            ins->dreg = dreg;
            D.36438 = static_data->dreg;
            ins->sreg1 = D.36438;
            D.36439 = offset_ins->dreg;
            ins->sreg2 = D.36439;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36440>; else goto <D.36441>;
            <D.36440>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = ins;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            ins->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            goto <D.36442>;
            <D.36441>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36442>:
          }
          goto <D.36443>;
          <D.36436>:
          D.35792 = field->offset;
          if (D.35792 == 0) goto <D.36444>; else goto <D.36445>;
          <D.36444>:
          ins = static_data;
          goto <D.36446>;
          <D.36445>:
          {
            int addr_reg;

            D.36447 = mono_alloc_preg (cfg);
            addr_reg = (int) D.36447;
            D.29691 = cfg->mempool;
            ins = mono_mempool_alloc (D.29691, 56);
            ins->data.op[1].const_val = 0;
            D.29906 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.29906;
            ins->prev = 0B;
            D.29907 = ins->prev;
            ins->next = D.29907;
            ins->opcode = 625;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.29908 = ins->sreg3;
            ins->sreg2 = D.29908;
            D.29909 = ins->sreg2;
            ins->sreg1 = D.29909;
            D.29910 = cfg->ip;
            ins->cil_code = D.29910;
            ins->dreg = addr_reg;
            D.36438 = static_data->dreg;
            ins->sreg1 = D.36438;
            D.35792 = field->offset;
            ins->data.op[1].const_val = D.35792;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36448>; else goto <D.36449>;
            <D.36448>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = ins;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            ins->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            goto <D.36450>;
            <D.36449>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36450>:
          }
          <D.36446>:
          <D.36443>:
        }
        goto <D.36451>;
        <D.36430>:
        D.30079 = cfg->opt;
        D.30080 = D.30079 & 512;
        if (D.30080 != 0) goto <D.36452>; else goto <D.36455>;
        <D.36455>:
        D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.30082 = D.30081 & 64;
        if (D.30082 != 0) goto <D.36456>; else goto <D.36453>;
        <D.36456>:
        if (addr != 0B) goto <D.36452>; else goto <D.36453>;
        <D.36452>:
        {
          struct MonoInst * iargs[2];

          try
            {
              klass.244 = field->parent;
              D.36371 = klass.244 == 0B;
              D.36372 = (long int) D.36371;
              D.36373 = __builtin_expect (D.36372, 0);
              if (D.36373 != 0) goto <D.36457>; else goto <D.36458>;
              <D.36457>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10226, "field->parent");
              <D.36458>:
              D.30079 = cfg->opt;
              D.30080 = D.30079 & 512;
              if (D.30080 != 0) goto <D.36459>; else goto <D.36462>;
              <D.36462>:
              D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.30082 = D.30081 & 64;
              if (D.30082 != 0) goto <D.36459>; else goto <D.36460>;
              <D.36459>:
              {
                struct MonoInst * __domain_var;

                __domain_var = mono_get_domainvar (cfg);
                D.29691 = cfg->mempool;
                D.36463 = mono_mempool_alloc (D.29691, 56);
                iargs[0] = D.36463;
                D.36464 = iargs[0];
                D.36464 = iargs[0];
                D.36464->data.op[1].const_val = 0;
                D.36465 = D.36464->data.op[1].const_val;
                D.36464->data.op[0].const_val = D.36465;
                D.36464 = iargs[0];
                D.36464 = iargs[0];
                D.36464->prev = 0B;
                D.36466 = D.36464->prev;
                D.36464->next = D.36466;
                D.36464 = iargs[0];
                D.36464->opcode = 424;
                D.36464 = iargs[0];
                D.36464->flags = 0;
                D.36464 = iargs[0];
                D.36464->type = 0;
                D.36464 = iargs[0];
                D.36464->dreg = -1;
                D.36464 = iargs[0];
                D.36464 = iargs[0];
                D.36464 = iargs[0];
                D.36464->sreg3 = -1;
                D.36467 = D.36464->sreg3;
                D.36464->sreg2 = D.36467;
                D.36468 = D.36464->sreg2;
                D.36464->sreg1 = D.36468;
                D.36464 = iargs[0];
                D.29910 = cfg->ip;
                D.36464->cil_code = D.29910;
                D.36464 = iargs[0];
                D.30422 = cfg->varinfo;
                D.36469 = __domain_var->data.op[0].const_val;
                D.36470 = (unsigned int) D.36469;
                D.36471 = D.36470 * 4;
                D.36472 = D.30422 + D.36471;
                D.36473 = *D.36472;
                D.36474 = D.36473->data.op[1].vtype;
                D.36475 = mono_type_to_regmove (cfg, D.36474);
                D.36476 = (short unsigned int) D.36475;
                D.36464->opcode = D.36476;
                D.30422 = cfg->varinfo;
                D.36469 = __domain_var->data.op[0].const_val;
                D.36470 = (unsigned int) D.36469;
                D.36471 = D.36470 * 4;
                D.36472 = D.30422 + D.36471;
                D.36473 = *D.36472;
                D.36474 = D.36473->data.op[1].vtype;
                D.36464 = iargs[0];
                type_to_eval_stack_type (cfg, D.36474, D.36464);
                D.36464 = iargs[0];
                D.30422 = cfg->varinfo;
                D.36469 = __domain_var->data.op[0].const_val;
                D.36470 = (unsigned int) D.36469;
                D.36471 = D.36470 * 4;
                D.36472 = D.30422 + D.36471;
                D.36473 = *D.36472;
                D.36477 = D.36473->klass;
                D.36464->klass = D.36477;
                D.36464 = iargs[0];
                D.30422 = cfg->varinfo;
                D.36469 = __domain_var->data.op[0].const_val;
                D.36470 = (unsigned int) D.36469;
                D.36471 = D.36470 * 4;
                D.36472 = D.30422 + D.36471;
                D.36473 = *D.36472;
                D.36478 = D.36473->dreg;
                D.36464->sreg1 = D.36478;
                D.36464 = iargs[0];
                D.36464 = iargs[0];
                D.36479 = D.36464->type;
                D.36480 = (<unnamed type>) D.36479;
                D.36481 = alloc_dreg (cfg, D.36480);
                D.36482 = (int) D.36481;
                D.36464->dreg = D.36482;
                D.36464 = iargs[0];
                D.36483 = D.36464->opcode;
                if (D.36483 == 427) goto <D.36484>; else goto <D.36485>;
                <D.36484>:
                D.36464 = iargs[0];
                D.30422 = cfg->varinfo;
                D.36469 = __domain_var->data.op[0].const_val;
                D.36470 = (unsigned int) D.36469;
                D.36471 = D.36470 * 4;
                D.36472 = D.30422 + D.36471;
                D.36473 = *D.36472;
                D.36474 = D.36473->data.op[1].vtype;
                D.36486 = mono_class_from_mono_type (D.36474);
                D.36464->klass = D.36486;
                <D.36485>:
              }
              goto <D.36461>;
              <D.36460>:
              D.29691 = cfg->mempool;
              D.36487 = mono_mempool_alloc (D.29691, 56);
              iargs[0] = D.36487;
              D.36464 = iargs[0];
              D.36464 = iargs[0];
              D.36464->data.op[1].const_val = 0;
              D.36465 = D.36464->data.op[1].const_val;
              D.36464->data.op[0].const_val = D.36465;
              D.36464 = iargs[0];
              D.36464 = iargs[0];
              D.36464->prev = 0B;
              D.36466 = D.36464->prev;
              D.36464->next = D.36466;
              D.36464 = iargs[0];
              D.36464->opcode = 362;
              D.36464 = iargs[0];
              D.36464->flags = 0;
              D.36464 = iargs[0];
              D.36464->type = 0;
              D.36464 = iargs[0];
              D.36464->dreg = -1;
              D.36464 = iargs[0];
              D.36464 = iargs[0];
              D.36464 = iargs[0];
              D.36464->sreg3 = -1;
              D.36467 = D.36464->sreg3;
              D.36464->sreg2 = D.36467;
              D.36468 = D.36464->sreg2;
              D.36464->sreg1 = D.36468;
              D.36464 = iargs[0];
              D.29910 = cfg->ip;
              D.36464->cil_code = D.29910;
              D.36464 = iargs[0];
              D.29716 = cfg->domain;
              D.36464->data.op[0].p = D.29716;
              D.36464 = iargs[0];
              D.36464->type = 3;
              D.36464 = iargs[0];
              D.36488 = alloc_dreg (cfg, 3);
              D.36489 = (int) D.36488;
              D.36464->dreg = D.36489;
              <D.36461>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.36490>; else goto <D.36491>;
              <D.36490>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.36464 = iargs[0];
              D.29939->next = D.36464;
              D.36464 = iargs[0];
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.36464->prev = D.29939;
              bblock.129 = cfg->cbb;
              D.36464 = iargs[0];
              bblock.129->last_ins = D.36464;
              goto <D.36492>;
              <D.36491>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              D.36464 = iargs[0];
              bblock.129->last_ins = D.36464;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.36492>:
              D.29691 = cfg->mempool;
              D.36493 = mono_mempool_alloc (D.29691, 56);
              iargs[1] = D.36493;
              D.36494 = iargs[1];
              D.36494 = iargs[1];
              D.36494->data.op[1].const_val = 0;
              D.36495 = D.36494->data.op[1].const_val;
              D.36494->data.op[0].const_val = D.36495;
              D.36494 = iargs[1];
              D.36494 = iargs[1];
              D.36494->prev = 0B;
              D.36496 = D.36494->prev;
              D.36494->next = D.36496;
              D.36494 = iargs[1];
              D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.30082 = D.30081 & 64;
              if (D.30082 != 0) goto <D.36498>; else goto <D.36499>;
              <D.36498>:
              iftmp.270 = 732;
              goto <D.36500>;
              <D.36499>:
              iftmp.270 = 362;
              <D.36500>:
              D.36494->opcode = iftmp.270;
              D.36494 = iargs[1];
              D.36494->flags = 0;
              D.36494 = iargs[1];
              D.36494->type = 0;
              D.36494 = iargs[1];
              D.36494->dreg = -1;
              D.36494 = iargs[1];
              D.36494 = iargs[1];
              D.36494 = iargs[1];
              D.36494->sreg3 = -1;
              D.36501 = D.36494->sreg3;
              D.36494->sreg2 = D.36501;
              D.36502 = D.36494->sreg2;
              D.36494->sreg1 = D.36502;
              D.36494 = iargs[1];
              D.29910 = cfg->ip;
              D.36494->cil_code = D.29910;
              D.36494 = iargs[1];
              D.36494->data.op[0].p = field;
              D.36494 = iargs[1];
              D.36494->data.op[1].src = 13B;
              D.36494 = iargs[1];
              D.36494->type = 3;
              D.36494 = iargs[1];
              D.36503 = alloc_dreg (cfg, 3);
              D.36504 = (int) D.36503;
              D.36494->dreg = D.36504;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.36505>; else goto <D.36506>;
              <D.36505>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.36494 = iargs[1];
              D.29939->next = D.36494;
              D.36494 = iargs[1];
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.36494->prev = D.29939;
              bblock.129 = cfg->cbb;
              D.36494 = iargs[1];
              bblock.129->last_ins = D.36494;
              goto <D.36507>;
              <D.36506>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              D.36494 = iargs[1];
              bblock.129->last_ins = D.36494;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.36507>:
              ins = mono_emit_jit_icall (cfg, mono_class_static_field_address, &iargs);
            }
          finally
            {
              iargs = {CLOBBER};
            }
        }
        goto <D.36454>;
        <D.36453>:
        {
          struct MonoVTable * vtable;

          vtable = 0B;
          D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
          D.30082 = D.30081 & 64;
          if (D.30082 == 0) goto <D.36508>; else goto <D.36509>;
          <D.36508>:
          D.29716 = cfg->domain;
          klass.176 = klass;
          vtable = mono_class_vtable (D.29716, klass.176);
          <D.36509>:
          klass.176 = klass;
          if (klass.176 == 0B) goto <D.36510>; else goto <D.36512>;
          <D.36512>:
          klass.176 = klass;
          D.34335 = klass.176->exception_type;
          if (D.34335 != 0) goto <D.36510>; else goto <D.36511>;
          <D.36510>:
          klass.176 = klass;
          cfg->exception_ptr = klass.176;
          D.36513 = mini_get_debug_options ();
          D.36514 = D.36513->break_on_unverified;
          if (D.36514 != 0) goto <D.36515>; else goto load_error;
          <D.36515>:
          raise (5);
          <D.36511>:
          if (addr == 0B) goto <D.36516>; else goto <D.36517>;
          <D.36516>:
          klass.176 = klass;
          D.36518 = mini_field_access_needs_cctor_run (cfg, method, klass.176, vtable);
          if (D.36518 != 0) goto <D.36519>; else goto <D.36520>;
          <D.36519>:
          klass.176 = klass;
          D.36521 = monoeg_g_slist_find (class_inits, klass.176);
          if (D.36521 == 0B) goto <D.36522>; else goto <D.36523>;
          <D.36522>:
          klass.176 = klass;
          helper_sig_class_init_trampoline.196 = helper_sig_class_init_trampoline;
          mono_emit_abs_call (cfg, 15, klass.176, helper_sig_class_init_trampoline.196, 0B);
          D.29771 = cfg->verbose_level;
          if (D.29771 > 2) goto <D.36524>; else goto <D.36525>;
          <D.36524>:
          klass.176 = klass;
          D.36526 = klass.176->name_space;
          klass.176 = klass;
          D.36527 = klass.176->name;
          D.36528 = mono_field_get_name (field);
          printf ("class %s.%s needs init call for %s\n", D.36526, D.36527, D.36528);
          <D.36525>:
          klass.176 = klass;
          class_inits = monoeg_g_slist_prepend (class_inits, klass.176);
          <D.36523>:
          goto <D.36529>;
          <D.36520>:
          D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
          D.36530 = D.30081 & 16;
          if (D.36530 != 0) goto <D.36531>; else goto <D.36532>;
          <D.36531>:
          {
            struct MonoException * ex;

            D.36533 = vtable == 0B;
            D.36534 = (long int) D.36533;
            D.36535 = __builtin_expect (D.36534, 0);
            if (D.36535 != 0) goto <D.36536>; else goto <D.36537>;
            <D.36536>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10251, "vtable");
            <D.36537>:
            D.36538 = BIT_FIELD_REF <*vtable, 32, 160>;
            D.36539 = D.36538 & 33554432;
            if (D.36539 == 0) goto <D.36540>; else goto <D.36541>;
            <D.36540>:
            D.29662 = cfg->method;
            if (D.29662 != method) goto <D.36542>; else goto <D.36543>;
            <D.36542>:
            D.29634 = BIT_FIELD_REF <*method, 32, 160>;
            D.29635 = D.29634 & 124;
            if (D.29635 == 0) goto <D.36544>; else goto <D.36545>;
            <D.36544>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 1) goto <D.36546>; else goto <D.36547>;
            <D.36546>:
            printf ("inline failed: %s\n", "class init");
            <D.36547>:
            goto inline_failure;
            <D.36545>:
            <D.36543>:
            <D.36541>:
            ex = mono_runtime_class_init_full (vtable, 0);
            if (ex != 0B) goto <D.36548>; else goto <D.36549>;
            <D.36548>:
            set_exception_object (cfg, ex);
            goto exception_exit;
            <D.36549>:
          }
          <D.36532>:
          <D.36529>:
          D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
          D.30082 = D.30081 & 64;
          if (D.30082 != 0) goto <D.36550>; else goto <D.36551>;
          <D.36550>:
          D.29691 = cfg->mempool;
          ins = mono_mempool_alloc (D.29691, 56);
          ins->data.op[1].const_val = 0;
          D.29906 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.29906;
          ins->prev = 0B;
          D.29907 = ins->prev;
          ins->next = D.29907;
          D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
          D.30082 = D.30081 & 64;
          if (D.30082 != 0) goto <D.36553>; else goto <D.36554>;
          <D.36553>:
          iftmp.271 = 732;
          goto <D.36555>;
          <D.36554>:
          iftmp.271 = 362;
          <D.36555>:
          ins->opcode = iftmp.271;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.29908 = ins->sreg3;
          ins->sreg2 = D.29908;
          D.29909 = ins->sreg2;
          ins->sreg1 = D.29909;
          D.29910 = cfg->ip;
          ins->cil_code = D.29910;
          ins->data.op[0].p = field;
          ins->data.op[1].src = 16B;
          ins->type = 3;
          D.36556 = alloc_dreg (cfg, 3);
          D.36557 = (int) D.36556;
          ins->dreg = D.36557;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.36558>; else goto <D.36559>;
          <D.36558>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = ins;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          ins->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          goto <D.36560>;
          <D.36559>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.36560>:
          goto <D.36561>;
          <D.36551>:
          D.36533 = vtable == 0B;
          D.36534 = (long int) D.36533;
          D.36535 = __builtin_expect (D.36534, 0);
          if (D.36535 != 0) goto <D.36562>; else goto <D.36563>;
          <D.36562>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10264, "vtable");
          <D.36563>:
          D.36564 = mono_vtable_get_static_field_data (vtable);
          D.35792 = field->offset;
          D.36565 = (sizetype) D.35792;
          addr = D.36564 + D.36565;
          D.36566 = addr == 0B;
          D.36567 = (long int) D.36566;
          D.36568 = __builtin_expect (D.36567, 0);
          if (D.36568 != 0) goto <D.36569>; else goto <D.36570>;
          <D.36569>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10266, "addr");
          <D.36570>:
          D.29691 = cfg->mempool;
          ins = mono_mempool_alloc (D.29691, 56);
          ins->data.op[1].const_val = 0;
          D.29906 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.29906;
          ins->prev = 0B;
          D.29907 = ins->prev;
          ins->next = D.29907;
          ins->opcode = 362;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.29908 = ins->sreg3;
          ins->sreg2 = D.29908;
          D.29909 = ins->sreg2;
          ins->sreg1 = D.29909;
          D.29910 = cfg->ip;
          ins->cil_code = D.29910;
          ins->data.op[0].p = addr;
          ins->type = 3;
          D.36571 = alloc_dreg (cfg, 3);
          D.36572 = (int) D.36571;
          ins->dreg = D.36572;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.36573>; else goto <D.36574>;
          <D.36573>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = ins;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          ins->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          goto <D.36575>;
          <D.36574>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.36575>:
          <D.36561>:
          goto <D.36576>;
          <D.36517>:
          {
            struct MonoInst * iargs[1];

            try
              {
                D.29691 = cfg->mempool;
                D.36577 = mono_mempool_alloc (D.29691, 56);
                iargs[0] = D.36577;
                D.36578 = iargs[0];
                D.36578 = iargs[0];
                D.36578->data.op[1].const_val = 0;
                D.36579 = D.36578->data.op[1].const_val;
                D.36578->data.op[0].const_val = D.36579;
                D.36578 = iargs[0];
                D.36578 = iargs[0];
                D.36578->prev = 0B;
                D.36580 = D.36578->prev;
                D.36578->next = D.36580;
                D.36578 = iargs[0];
                D.36578->opcode = 362;
                D.36578 = iargs[0];
                D.36578->flags = 0;
                D.36578 = iargs[0];
                D.36578->type = 0;
                D.36578 = iargs[0];
                D.36578->dreg = -1;
                D.36578 = iargs[0];
                D.36578 = iargs[0];
                D.36578 = iargs[0];
                D.36578->sreg3 = -1;
                D.36581 = D.36578->sreg3;
                D.36578->sreg2 = D.36581;
                D.36582 = D.36578->sreg2;
                D.36578->sreg1 = D.36582;
                D.36578 = iargs[0];
                D.29910 = cfg->ip;
                D.36578->cil_code = D.29910;
                D.36578 = iargs[0];
                addr.272 = (int) addr;
                D.36578->data.op[0].const_val = addr.272;
                D.36578 = iargs[0];
                D.36578->type = 1;
                D.36578 = iargs[0];
                D.36584 = alloc_dreg (cfg, 1);
                D.36585 = (int) D.36584;
                D.36578->dreg = D.36585;
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                if (D.29939 != 0B) goto <D.36586>; else goto <D.36587>;
                <D.36586>:
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                D.36578 = iargs[0];
                D.29939->next = D.36578;
                D.36578 = iargs[0];
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                D.36578->prev = D.29939;
                bblock.129 = cfg->cbb;
                D.36578 = iargs[0];
                bblock.129->last_ins = D.36578;
                goto <D.36588>;
                <D.36587>:
                bblock.129 = cfg->cbb;
                bblock.129 = cfg->cbb;
                D.36578 = iargs[0];
                bblock.129->last_ins = D.36578;
                D.29939 = bblock.129->last_ins;
                bblock.129->code = D.29939;
                <D.36588>:
                ins = mono_emit_jit_icall (cfg, mono_get_special_static_data, &iargs);
              }
            finally
              {
                iargs = {CLOBBER};
              }
          }
          <D.36576>:
        }
        <D.36454>:
        <D.36451>:
        <D.36367>:
        <D.36252>:
        if (op == 127) goto <D.36589>; else goto <D.36590>;
        <D.36589>:
        D.36591 = mono_class_from_mono_type (ftype);
        ins->klass = D.36591;
        ins->type = 3;
        sp.273 = sp;
        sp = sp.273 + 4;
        *sp.273 = ins;
        goto <D.36593>;
        <D.36590>:
        if (op == 128) goto <D.36594>; else goto <D.36595>;
        <D.36594>:
        {
          struct MonoInst * store;

          D.29691 = cfg->mempool;
          store = mono_mempool_alloc (D.29691, 56);
          store->data.op[1].const_val = 0;
          D.36596 = store->data.op[1].const_val;
          store->data.op[0].const_val = D.36596;
          store->prev = 0B;
          D.36597 = store->prev;
          store->next = D.36597;
          D.36598 = mono_type_to_store_membase (cfg, ftype);
          D.36599 = (short unsigned int) D.36598;
          store->opcode = D.36599;
          store->flags = 0;
          store->type = 0;
          store->dreg = -1;
          store->sreg3 = -1;
          D.36600 = store->sreg3;
          store->sreg2 = D.36600;
          D.36601 = store->sreg2;
          store->sreg1 = D.36601;
          D.29910 = cfg->ip;
          store->cil_code = D.29910;
          D.36602 = store_val->dreg;
          store->sreg1 = D.36602;
          D.30101 = ins->dreg;
          store->dreg = D.30101;
          store->data.op[0].const_val = 0;
          type_to_eval_stack_type (cfg, ftype, store);
          D.36603 = mono_class_from_mono_type (ftype);
          store->klass = D.36603;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.36604>; else goto <D.36605>;
          <D.36604>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = store;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          store->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = store;
          goto <D.36606>;
          <D.36605>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = store;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.36606>:
          D.36607 = store->flags;
          D.33976 = (unsigned char) ins_flag;
          D.36608 = D.36607 | D.33976;
          store->flags = D.36608;
        }
        goto <D.36609>;
        <D.36595>:
        {
          gboolean is_const;
          struct MonoVTable * vtable;
          void * addr;

          is_const = 0;
          vtable = 0B;
          addr = 0B;
          if (context_used == 0) goto <D.36610>; else goto <D.36611>;
          <D.36610>:
          D.29716 = cfg->domain;
          klass.176 = klass;
          vtable = mono_class_vtable (D.29716, klass.176);
          klass.176 = klass;
          if (klass.176 == 0B) goto <D.36612>; else goto <D.36614>;
          <D.36614>:
          klass.176 = klass;
          D.34335 = klass.176->exception_type;
          if (D.34335 != 0) goto <D.36612>; else goto <D.36613>;
          <D.36612>:
          klass.176 = klass;
          cfg->exception_ptr = klass.176;
          D.36615 = mini_get_debug_options ();
          D.36616 = D.36615->break_on_unverified;
          if (D.36616 != 0) goto <D.36617>; else goto load_error;
          <D.36617>:
          raise (5);
          <D.36613>:
          <D.36611>:
          D.36206 = ftype->attrs;
          D.36207 = (int) D.36206;
          D.36620 = D.36207 & 32;
          if (D.36620 != 0) goto <D.36621>; else goto <D.36622>;
          <D.36621>:
          addr = mono_aot_readonly_field_override (field);
          if (addr != 0B) goto <D.36618>; else goto <D.36623>;
          <D.36623>:
          if (context_used == 0) goto <D.36624>; else goto <D.36619>;
          <D.36624>:
          D.30079 = cfg->opt;
          D.30080 = D.30079 & 512;
          if (D.30080 == 0) goto <D.36625>; else goto <D.36619>;
          <D.36625>:
          D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
          D.30082 = D.30081 & 64;
          if (D.30082 == 0) goto <D.36626>; else goto <D.36619>;
          <D.36626>:
          D.36627 = BIT_FIELD_REF <*vtable, 32, 160>;
          D.36628 = D.36627 & 33554432;
          if (D.36628 != 0) goto <D.36618>; else goto <D.36619>;
          <D.36618>:
          {
            int ro_type;

            D.36629 = ftype->type;
            ro_type = (int) D.36629;
            if (addr == 0B) goto <D.36630>; else goto <D.36631>;
            <D.36630>:
            D.36632 = mono_vtable_get_static_field_data (vtable);
            D.35792 = field->offset;
            D.36565 = (sizetype) D.35792;
            addr = D.36632 + D.36565;
            <D.36631>:
            if (ro_type == 17) goto <D.36633>; else goto <D.36634>;
            <D.36633>:
            D.36635 = ftype->data.klass;
            D.36636 = BIT_FIELD_REF <*D.36635, 32, 160>;
            D.36637 = D.36636 & 16;
            if (D.36637 != 0) goto <D.36638>; else goto <D.36639>;
            <D.36638>:
            D.36635 = ftype->data.klass;
            D.36640 = mono_class_enum_basetype (D.36635);
            D.36641 = D.36640->type;
            ro_type = (int) D.36641;
            <D.36639>:
            <D.36634>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.36642>; else goto <D.36643>;
            <D.36642>:
            D.29629 = method->klass;
            D.31352 = D.29629->name_space;
            D.29629 = method->klass;
            D.31353 = D.29629->name;
            D.31354 = method->name;
            D.31355 = method->signature;
            D.31356 = D.31355->param_count;
            D.31357 = (int) D.31356;
            D.36644 = mono_opcode_name (op);
            D.36645 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.31352, D.31353, D.31354, D.31357, D.36644, "method-to-ir.c", 10305);
            cfg->exception_message = D.36645;
            D.29771 = cfg->verbose_level;
            if (D.29771 > 1) goto <D.36646>; else goto <D.36647>;
            <D.36646>:
            D.31362 = cfg->exception_message;
            printf ("%s\n", D.31362);
            <D.36647>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.36643>:
            is_const = 1;
            switch (ro_type) <default: <D.27340>, case 2: <D.27317>, case 3: <D.27321>, case 4: <D.27320>, case 5: <D.27318>, case 6: <D.27323>, case 7: <D.27322>, case 8: <D.27324>, case 9: <D.27325>, case 10: <D.27335>, case 11: <D.27336>, case 12: <D.27337>, case 13: <D.27338>, case 14: <D.27330>, case 15: <D.27328>, case 17: <D.27339>, case 18: <D.27332>, case 20: <D.27334>, case 24: <D.27326>, case 25: <D.27327>, case 27: <D.27329>, case 28: <D.27331>, case 29: <D.27333>>
            <D.27317>:
            <D.27318>:
            D.29691 = cfg->mempool;
            D.36648 = mono_mempool_alloc (D.29691, 56);
            *sp = D.36648;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->data.op[1].const_val = 0;
            D.32396 = D.30679->data.op[1].const_val;
            D.30679->data.op[0].const_val = D.32396;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->prev = 0B;
            D.32397 = D.30679->prev;
            D.30679->next = D.32397;
            D.30679 = *sp;
            D.30679->opcode = 362;
            D.30679 = *sp;
            D.30679->flags = 0;
            D.30679 = *sp;
            D.30679->type = 0;
            D.30679 = *sp;
            D.30679->dreg = -1;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->sreg3 = -1;
            D.32398 = D.30679->sreg3;
            D.30679->sreg2 = D.32398;
            D.32399 = D.30679->sreg2;
            D.30679->sreg1 = D.32399;
            D.30679 = *sp;
            D.29910 = cfg->ip;
            D.30679->cil_code = D.29910;
            D.30679 = *sp;
            D.36649 = MEM[(guint8 *)addr];
            D.36650 = (int) D.36649;
            D.30679->data.op[0].const_val = D.36650;
            D.30679 = *sp;
            D.30679->type = 1;
            D.30679 = *sp;
            D.36651 = alloc_dreg (cfg, 1);
            D.36652 = (int) D.36651;
            D.30679->dreg = D.36652;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36653>; else goto <D.36654>;
            <D.36653>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679 = *sp;
            D.29939->next = D.30679;
            D.30679 = *sp;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            goto <D.36655>;
            <D.36654>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36655>:
            sp = sp + 4;
            goto <D.27319>;
            <D.27320>:
            D.29691 = cfg->mempool;
            D.36656 = mono_mempool_alloc (D.29691, 56);
            *sp = D.36656;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->data.op[1].const_val = 0;
            D.32396 = D.30679->data.op[1].const_val;
            D.30679->data.op[0].const_val = D.32396;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->prev = 0B;
            D.32397 = D.30679->prev;
            D.30679->next = D.32397;
            D.30679 = *sp;
            D.30679->opcode = 362;
            D.30679 = *sp;
            D.30679->flags = 0;
            D.30679 = *sp;
            D.30679->type = 0;
            D.30679 = *sp;
            D.30679->dreg = -1;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->sreg3 = -1;
            D.32398 = D.30679->sreg3;
            D.30679->sreg2 = D.32398;
            D.32399 = D.30679->sreg2;
            D.30679->sreg1 = D.32399;
            D.30679 = *sp;
            D.29910 = cfg->ip;
            D.30679->cil_code = D.29910;
            D.30679 = *sp;
            D.36657 = MEM[(gint8 *)addr];
            D.36658 = (int) D.36657;
            D.30679->data.op[0].const_val = D.36658;
            D.30679 = *sp;
            D.30679->type = 1;
            D.30679 = *sp;
            D.36659 = alloc_dreg (cfg, 1);
            D.36660 = (int) D.36659;
            D.30679->dreg = D.36660;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36661>; else goto <D.36662>;
            <D.36661>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679 = *sp;
            D.29939->next = D.30679;
            D.30679 = *sp;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            goto <D.36663>;
            <D.36662>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36663>:
            sp = sp + 4;
            goto <D.27319>;
            <D.27321>:
            <D.27322>:
            D.29691 = cfg->mempool;
            D.36664 = mono_mempool_alloc (D.29691, 56);
            *sp = D.36664;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->data.op[1].const_val = 0;
            D.32396 = D.30679->data.op[1].const_val;
            D.30679->data.op[0].const_val = D.32396;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->prev = 0B;
            D.32397 = D.30679->prev;
            D.30679->next = D.32397;
            D.30679 = *sp;
            D.30679->opcode = 362;
            D.30679 = *sp;
            D.30679->flags = 0;
            D.30679 = *sp;
            D.30679->type = 0;
            D.30679 = *sp;
            D.30679->dreg = -1;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->sreg3 = -1;
            D.32398 = D.30679->sreg3;
            D.30679->sreg2 = D.32398;
            D.32399 = D.30679->sreg2;
            D.30679->sreg1 = D.32399;
            D.30679 = *sp;
            D.29910 = cfg->ip;
            D.30679->cil_code = D.29910;
            D.30679 = *sp;
            D.36665 = MEM[(guint16 *)addr];
            D.36666 = (int) D.36665;
            D.30679->data.op[0].const_val = D.36666;
            D.30679 = *sp;
            D.30679->type = 1;
            D.30679 = *sp;
            D.36667 = alloc_dreg (cfg, 1);
            D.36668 = (int) D.36667;
            D.30679->dreg = D.36668;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36669>; else goto <D.36670>;
            <D.36669>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679 = *sp;
            D.29939->next = D.30679;
            D.30679 = *sp;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            goto <D.36671>;
            <D.36670>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36671>:
            sp = sp + 4;
            goto <D.27319>;
            <D.27323>:
            D.29691 = cfg->mempool;
            D.36672 = mono_mempool_alloc (D.29691, 56);
            *sp = D.36672;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->data.op[1].const_val = 0;
            D.32396 = D.30679->data.op[1].const_val;
            D.30679->data.op[0].const_val = D.32396;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->prev = 0B;
            D.32397 = D.30679->prev;
            D.30679->next = D.32397;
            D.30679 = *sp;
            D.30679->opcode = 362;
            D.30679 = *sp;
            D.30679->flags = 0;
            D.30679 = *sp;
            D.30679->type = 0;
            D.30679 = *sp;
            D.30679->dreg = -1;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->sreg3 = -1;
            D.32398 = D.30679->sreg3;
            D.30679->sreg2 = D.32398;
            D.32399 = D.30679->sreg2;
            D.30679->sreg1 = D.32399;
            D.30679 = *sp;
            D.29910 = cfg->ip;
            D.30679->cil_code = D.29910;
            D.30679 = *sp;
            D.36673 = MEM[(gint16 *)addr];
            D.36674 = (int) D.36673;
            D.30679->data.op[0].const_val = D.36674;
            D.30679 = *sp;
            D.30679->type = 1;
            D.30679 = *sp;
            D.36675 = alloc_dreg (cfg, 1);
            D.36676 = (int) D.36675;
            D.30679->dreg = D.36676;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36677>; else goto <D.36678>;
            <D.36677>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679 = *sp;
            D.29939->next = D.30679;
            D.30679 = *sp;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            goto <D.36679>;
            <D.36678>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36679>:
            sp = sp + 4;
            goto <D.27319>;
            <D.27324>:
            D.29691 = cfg->mempool;
            D.36680 = mono_mempool_alloc (D.29691, 56);
            *sp = D.36680;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->data.op[1].const_val = 0;
            D.32396 = D.30679->data.op[1].const_val;
            D.30679->data.op[0].const_val = D.32396;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->prev = 0B;
            D.32397 = D.30679->prev;
            D.30679->next = D.32397;
            D.30679 = *sp;
            D.30679->opcode = 362;
            D.30679 = *sp;
            D.30679->flags = 0;
            D.30679 = *sp;
            D.30679->type = 0;
            D.30679 = *sp;
            D.30679->dreg = -1;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->sreg3 = -1;
            D.32398 = D.30679->sreg3;
            D.30679->sreg2 = D.32398;
            D.32399 = D.30679->sreg2;
            D.30679->sreg1 = D.32399;
            D.30679 = *sp;
            D.29910 = cfg->ip;
            D.30679->cil_code = D.29910;
            D.30679 = *sp;
            D.36681 = MEM[(gint32 *)addr];
            D.30679->data.op[0].const_val = D.36681;
            D.30679 = *sp;
            D.30679->type = 1;
            D.30679 = *sp;
            D.36682 = alloc_dreg (cfg, 1);
            D.36683 = (int) D.36682;
            D.30679->dreg = D.36683;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36684>; else goto <D.36685>;
            <D.36684>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679 = *sp;
            D.29939->next = D.30679;
            D.30679 = *sp;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            goto <D.36686>;
            <D.36685>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36686>:
            sp = sp + 4;
            goto <D.27319>;
            <D.27325>:
            D.29691 = cfg->mempool;
            D.36687 = mono_mempool_alloc (D.29691, 56);
            *sp = D.36687;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->data.op[1].const_val = 0;
            D.32396 = D.30679->data.op[1].const_val;
            D.30679->data.op[0].const_val = D.32396;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->prev = 0B;
            D.32397 = D.30679->prev;
            D.30679->next = D.32397;
            D.30679 = *sp;
            D.30679->opcode = 362;
            D.30679 = *sp;
            D.30679->flags = 0;
            D.30679 = *sp;
            D.30679->type = 0;
            D.30679 = *sp;
            D.30679->dreg = -1;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->sreg3 = -1;
            D.32398 = D.30679->sreg3;
            D.30679->sreg2 = D.32398;
            D.32399 = D.30679->sreg2;
            D.30679->sreg1 = D.32399;
            D.30679 = *sp;
            D.29910 = cfg->ip;
            D.30679->cil_code = D.29910;
            D.30679 = *sp;
            D.36688 = MEM[(guint32 *)addr];
            D.36689 = (int) D.36688;
            D.30679->data.op[0].const_val = D.36689;
            D.30679 = *sp;
            D.30679->type = 1;
            D.30679 = *sp;
            D.36690 = alloc_dreg (cfg, 1);
            D.36691 = (int) D.36690;
            D.30679->dreg = D.36691;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36692>; else goto <D.36693>;
            <D.36692>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679 = *sp;
            D.29939->next = D.30679;
            D.30679 = *sp;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            goto <D.36694>;
            <D.36693>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36694>:
            sp = sp + 4;
            goto <D.27319>;
            <D.27326>:
            <D.27327>:
            <D.27328>:
            <D.27329>:
            D.29691 = cfg->mempool;
            D.36695 = mono_mempool_alloc (D.29691, 56);
            *sp = D.36695;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->data.op[1].const_val = 0;
            D.32396 = D.30679->data.op[1].const_val;
            D.30679->data.op[0].const_val = D.32396;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->prev = 0B;
            D.32397 = D.30679->prev;
            D.30679->next = D.32397;
            D.30679 = *sp;
            D.30679->opcode = 362;
            D.30679 = *sp;
            D.30679->flags = 0;
            D.30679 = *sp;
            D.30679->type = 0;
            D.30679 = *sp;
            D.30679->dreg = -1;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->sreg3 = -1;
            D.32398 = D.30679->sreg3;
            D.30679->sreg2 = D.32398;
            D.32399 = D.30679->sreg2;
            D.30679->sreg1 = D.32399;
            D.30679 = *sp;
            D.29910 = cfg->ip;
            D.30679->cil_code = D.29910;
            D.30679 = *sp;
            D.36696 = MEM[(void * *)addr];
            D.30679->data.op[0].p = D.36696;
            D.30679 = *sp;
            D.30679->type = 3;
            D.30679 = *sp;
            D.36697 = alloc_dreg (cfg, 3);
            D.36698 = (int) D.36697;
            D.30679->dreg = D.36698;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36699>; else goto <D.36700>;
            <D.36699>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679 = *sp;
            D.29939->next = D.30679;
            D.30679 = *sp;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            goto <D.36701>;
            <D.36700>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36701>:
            D.35782 = field->type;
            D.30679 = *sp;
            type_to_eval_stack_type (cfg, D.35782, D.30679);
            sp = sp + 4;
            goto <D.27319>;
            <D.27330>:
            <D.27331>:
            <D.27332>:
            <D.27333>:
            <D.27334>:
            D.36702 = mono_gc_is_moving ();
            if (D.36702 == 0) goto <D.36703>; else goto <D.36704>;
            <D.36703>:
            D.29691 = cfg->mempool;
            D.36705 = mono_mempool_alloc (D.29691, 56);
            *sp = D.36705;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->data.op[1].const_val = 0;
            D.32396 = D.30679->data.op[1].const_val;
            D.30679->data.op[0].const_val = D.32396;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->prev = 0B;
            D.32397 = D.30679->prev;
            D.30679->next = D.32397;
            D.30679 = *sp;
            D.30679->opcode = 362;
            D.30679 = *sp;
            D.30679->flags = 0;
            D.30679 = *sp;
            D.30679->type = 0;
            D.30679 = *sp;
            D.30679->dreg = -1;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->sreg3 = -1;
            D.32398 = D.30679->sreg3;
            D.30679->sreg2 = D.32398;
            D.32399 = D.30679->sreg2;
            D.30679->sreg1 = D.32399;
            D.30679 = *sp;
            D.29910 = cfg->ip;
            D.30679->cil_code = D.29910;
            D.30679 = *sp;
            D.36696 = MEM[(void * *)addr];
            D.30679->data.op[0].p = D.36696;
            D.30679 = *sp;
            D.30679->type = 3;
            D.30679 = *sp;
            D.36706 = alloc_dreg (cfg, 3);
            D.36707 = (int) D.36706;
            D.30679->dreg = D.36707;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36708>; else goto <D.36709>;
            <D.36708>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679 = *sp;
            D.29939->next = D.30679;
            D.30679 = *sp;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            goto <D.36710>;
            <D.36709>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36710>:
            D.35782 = field->type;
            D.30679 = *sp;
            type_to_eval_stack_type (cfg, D.35782, D.30679);
            sp = sp + 4;
            goto <D.36711>;
            <D.36704>:
            is_const = 0;
            <D.36711>:
            goto <D.27319>;
            <D.27335>:
            <D.27336>:
            D.29691 = cfg->mempool;
            D.36712 = mono_mempool_alloc (D.29691, 56);
            *sp = D.36712;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->data.op[1].const_val = 0;
            D.32396 = D.30679->data.op[1].const_val;
            D.30679->data.op[0].const_val = D.32396;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->prev = 0B;
            D.32397 = D.30679->prev;
            D.30679->next = D.32397;
            D.30679 = *sp;
            D.30679->opcode = 363;
            D.30679 = *sp;
            D.30679->flags = 0;
            D.30679 = *sp;
            D.30679->type = 0;
            D.30679 = *sp;
            D.30679->dreg = -1;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679 = *sp;
            D.30679->sreg3 = -1;
            D.32398 = D.30679->sreg3;
            D.30679->sreg2 = D.32398;
            D.32399 = D.30679->sreg2;
            D.30679->sreg1 = D.32399;
            D.30679 = *sp;
            D.29910 = cfg->ip;
            D.30679->cil_code = D.29910;
            D.30679 = *sp;
            D.36713 = alloc_lreg (cfg);
            D.36714 = (int) D.36713;
            D.30679->dreg = D.36714;
            D.30679 = *sp;
            D.30679->type = 2;
            D.30679 = *sp;
            D.36715 = MEM[(gint64 *)addr];
            D.30679->data.i8const = D.36715;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36716>; else goto <D.36717>;
            <D.36716>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679 = *sp;
            D.29939->next = D.30679;
            D.30679 = *sp;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.30679->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            goto <D.36718>;
            <D.36717>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.30679 = *sp;
            bblock.129->last_ins = D.30679;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36718>:
            sp = sp + 4;
            goto <D.27319>;
            <D.27337>:
            <D.27338>:
            <D.27339>:
            <D.27340>:
            is_const = 0;
            goto <D.27319>;
            <D.27319>:
          }
          <D.36619>:
          <D.36622>:
          if (is_const == 0) goto <D.36719>; else goto <D.36720>;
          <D.36719>:
          {
            struct MonoInst * load;

            sp.84 = (int) sp;
            stack_start.85 = (int) stack_start;
            D.30457 = sp.84 - stack_start.85;
            D.30458 = D.30457 /[ex] 4;
            D.30371 = header->max_stack;
            D.30372 = (int) D.30371;
            if (D.30458 >= D.30372) goto <D.36721>; else goto <D.36722>;
            <D.36721>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.36723>; else goto <D.36724>;
            <D.36723>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 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>:
            D.29691 = cfg->mempool;
            load = mono_mempool_alloc (D.29691, 56);
            load->data.op[1].const_val = 0;
            D.36730 = load->data.op[1].const_val;
            load->data.op[0].const_val = D.36730;
            load->prev = 0B;
            D.36731 = load->prev;
            load->next = D.36731;
            D.35782 = field->type;
            D.36732 = mono_type_to_load_membase (cfg, D.35782);
            D.36733 = (short unsigned int) D.36732;
            load->opcode = D.36733;
            load->flags = 0;
            load->type = 0;
            load->dreg = -1;
            load->sreg3 = -1;
            D.36734 = load->sreg3;
            load->sreg2 = D.36734;
            D.36735 = load->sreg2;
            load->sreg1 = D.36735;
            D.29910 = cfg->ip;
            load->cil_code = D.29910;
            load->dreg = 0;
            D.30101 = ins->dreg;
            load->sreg1 = D.30101;
            load->data.op[0].const_val = 0;
            load->type = 1;
            D.35782 = field->type;
            type_to_eval_stack_type (cfg, D.35782, load);
            D.36736 = load->type;
            D.36737 = (<unnamed type>) D.36736;
            D.36738 = alloc_dreg (cfg, D.36737);
            D.36739 = (int) D.36738;
            load->dreg = D.36739;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36740>; else goto <D.36741>;
            <D.36740>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = load;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            load->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = load;
            goto <D.36742>;
            <D.36741>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = load;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36742>:
            D.36743 = load->flags;
            D.33976 = (unsigned char) ins_flag;
            D.36744 = D.36743 | D.33976;
            load->flags = D.36744;
            ins_flag = 0;
            sp.274 = sp;
            sp = sp.274 + 4;
            *sp.274 = load;
          }
          <D.36720>:
        }
        <D.36609>:
        <D.36593>:
        ins_flag = 0;
        ip = ip + 5;
        goto <D.26808>;
      }
      <D.27342>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 7) goto <D.36746>; else goto <D.36747>;
      <D.36746>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.36748>; else goto <D.36749>;
      <D.36748>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 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>:
      sp = sp + 4294967288;
      D.31124 = ip + 5;
      if (D.31124 > end) goto <D.36755>; else goto <D.36756>;
      <D.36755>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.36757>; else goto <D.36758>;
      <D.36757>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.36759>; else goto <D.36760>;
      <D.36759>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36760>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36758>:
      D.36761 = mini_get_debug_options ();
      D.36762 = D.36761->break_on_unverified;
      if (D.36762 != 0) goto <D.36763>; else goto unverified;
      <D.36763>:
      raise (5);
      <D.36756>:
      D.31143 = ip + 1;
      token = mono_read32 (D.31143);
      klass.275 = mini_get_class (method, token, generic_context);
      klass = klass.275;
      klass.176 = klass;
      if (klass.176 == 0B) goto <D.36765>; else goto <D.36767>;
      <D.36767>:
      klass.176 = klass;
      D.34335 = klass.176->exception_type;
      if (D.34335 != 0) goto <D.36765>; else goto <D.36766>;
      <D.36765>:
      klass.176 = klass;
      cfg->exception_ptr = klass.176;
      D.36768 = mini_get_debug_options ();
      D.36769 = D.36768->break_on_unverified;
      if (D.36769 != 0) goto <D.36770>; else goto load_error;
      <D.36770>:
      raise (5);
      <D.36766>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      klass.176 = klass;
      D.34409 = &klass.176->byval_arg;
      D.36771 = mono_type_to_store_membase (cfg, D.34409);
      D.36772 = (short unsigned int) D.36771;
      ins->opcode = D.36772;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      D.31795 = D.31794->dreg;
      ins->sreg1 = D.31795;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->dreg = D.30872;
      ins->data.op[0].const_val = 0;
      klass.176 = klass;
      D.34409 = &klass.176->byval_arg;
      type_to_eval_stack_type (cfg, D.34409, ins);
      klass.176 = klass;
      D.34409 = &klass.176->byval_arg;
      D.36773 = mono_class_from_mono_type (D.34409);
      ins->klass = D.36773;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.36774>; else goto <D.36775>;
      <D.36774>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.36776>;
      <D.36775>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.36776>:
      D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.32859 = D.30081 & 268435456;
      if (D.32859 != 0) goto <D.36777>; else goto <D.36778>;
      <D.36777>:
      D.29662 = cfg->method;
      D.31591 = BIT_FIELD_REF <*D.29662, 32, 160>;
      D.31592 = D.31591 & 124;
      if (D.31592 != 96) goto <D.36779>; else goto <D.36780>;
      <D.36779>:
      klass.176 = klass;
      D.36781 = generic_class_is_reference_type (cfg, klass.176);
      if (D.36781 != 0) goto <D.36782>; else goto <D.36783>;
      <D.36782>:
      D.30679 = *sp;
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      emit_write_barrier (cfg, D.30679, D.31794);
      <D.36783>:
      <D.36780>:
      <D.36778>:
      ins_flag = 0;
      ip = ip + 5;
      inline_costs = inline_costs + 1;
      goto <D.26808>;
      <D.27343>:
      {
        struct MonoInst * len_ins;
        const char * data_ptr;
        int data_size;
        guint32 field_token;

        try
          {
            data_size = 0;
            sp.84 = (int) sp;
            stack_start.85 = (int) stack_start;
            D.30457 = sp.84 - stack_start.85;
            if (D.30457 <= 3) goto <D.36784>; else goto <D.36785>;
            <D.36784>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.36786>; else goto <D.36787>;
            <D.36786>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.36788>; else goto <D.36789>;
            <D.36788>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.36789>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.36787>:
            D.36790 = mini_get_debug_options ();
            D.36791 = D.36790->break_on_unverified;
            if (D.36791 != 0) goto <D.36792>; else goto unverified;
            <D.36792>:
            raise (5);
            <D.36785>:
            sp = sp + 4294967292;
            D.31124 = ip + 5;
            if (D.31124 > end) goto <D.36793>; else goto <D.36794>;
            <D.36793>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.36795>; else goto <D.36796>;
            <D.36795>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.36797>; else goto <D.36798>;
            <D.36797>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.36798>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.36796>:
            D.36799 = mini_get_debug_options ();
            D.36800 = D.36799->break_on_unverified;
            if (D.36800 != 0) goto <D.36801>; else goto unverified;
            <D.36801>:
            raise (5);
            <D.36794>:
            D.31143 = ip + 1;
            token = mono_read32 (D.31143);
            klass.276 = mini_get_class (method, token, generic_context);
            klass = klass.276;
            klass.176 = klass;
            if (klass.176 == 0B) goto <D.36803>; else goto <D.36805>;
            <D.36805>:
            klass.176 = klass;
            D.34335 = klass.176->exception_type;
            if (D.34335 != 0) goto <D.36803>; else goto <D.36804>;
            <D.36803>:
            klass.176 = klass;
            cfg->exception_ptr = klass.176;
            D.36806 = mini_get_debug_options ();
            D.36807 = D.36806->break_on_unverified;
            if (D.36807 != 0) goto <D.36808>; else goto load_error;
            <D.36808>:
            raise (5);
            <D.36804>:
            klass.176 = klass;
            context_used = mini_class_check_context_used (cfg, klass.176);
            D.30679 = *sp;
            D.32402 = D.30679->type;
            if (D.32402 == 2) goto <D.36809>; else goto <D.36810>;
            <D.36809>:
            D.29691 = cfg->mempool;
            ins = mono_mempool_alloc (D.29691, 56);
            ins->data.op[1].const_val = 0;
            D.29906 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.29906;
            ins->prev = 0B;
            D.29907 = ins->prev;
            ins->next = D.29907;
            ins->opcode = 528;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.29908 = ins->sreg3;
            ins->sreg2 = D.29908;
            D.29909 = ins->sreg2;
            ins->sreg1 = D.29909;
            D.29910 = cfg->ip;
            ins->cil_code = D.29910;
            D.30679 = *sp;
            D.30872 = D.30679->dreg;
            ins->sreg1 = D.30872;
            ins->type = 1;
            D.36811 = alloc_ireg (cfg);
            D.36812 = (int) D.36811;
            ins->dreg = D.36812;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.36813>; else goto <D.36814>;
            <D.36813>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = ins;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            ins->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            goto <D.36815>;
            <D.36814>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.36815>:
            D.36816 = mono_decompose_opcode (cfg, ins);
            *sp = D.36816;
            <D.36810>:
            if (context_used != 0) goto <D.36817>; else goto <D.36818>;
            <D.36817>:
            {
              struct MonoInst * args[3];
              struct MonoClass * array_class;
              struct MonoMethod * managed_alloc;

              try
                {
                  klass.176 = klass;
                  array_class = mono_array_class_get (klass.176, 1);
                  managed_alloc = mono_gc_get_managed_array_allocator (array_class);
                  D.36819 = emit_get_rgctx_klass (cfg, context_used, array_class, 2);
                  args[0] = D.36819;
                  D.30679 = *sp;
                  args[1] = D.30679;
                  if (managed_alloc != 0B) goto <D.36820>; else goto <D.36821>;
                  <D.36820>:
                  ins = mono_emit_method_call (cfg, managed_alloc, &args, 0B);
                  goto <D.36822>;
                  <D.36821>:
                  ins = mono_emit_jit_icall (cfg, mono_array_new_specific, &args);
                  <D.36822>:
                }
              finally
                {
                  args = {CLOBBER};
                }
            }
            goto <D.36823>;
            <D.36818>:
            D.30079 = cfg->opt;
            D.30080 = D.30079 & 512;
            if (D.30080 != 0) goto <D.36824>; else goto <D.36825>;
            <D.36824>:
            {
              struct MonoInst * iargs[3];

              try
                {
                  D.30079 = cfg->opt;
                  D.30080 = D.30079 & 512;
                  if (D.30080 != 0) goto <D.36826>; else goto <D.36829>;
                  <D.36829>:
                  D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
                  D.30082 = D.30081 & 64;
                  if (D.30082 != 0) goto <D.36826>; else goto <D.36827>;
                  <D.36826>:
                  {
                    struct MonoInst * __domain_var;

                    __domain_var = mono_get_domainvar (cfg);
                    D.29691 = cfg->mempool;
                    D.36830 = mono_mempool_alloc (D.29691, 56);
                    iargs[0] = D.36830;
                    D.36831 = iargs[0];
                    D.36831 = iargs[0];
                    D.36831->data.op[1].const_val = 0;
                    D.36832 = D.36831->data.op[1].const_val;
                    D.36831->data.op[0].const_val = D.36832;
                    D.36831 = iargs[0];
                    D.36831 = iargs[0];
                    D.36831->prev = 0B;
                    D.36833 = D.36831->prev;
                    D.36831->next = D.36833;
                    D.36831 = iargs[0];
                    D.36831->opcode = 424;
                    D.36831 = iargs[0];
                    D.36831->flags = 0;
                    D.36831 = iargs[0];
                    D.36831->type = 0;
                    D.36831 = iargs[0];
                    D.36831->dreg = -1;
                    D.36831 = iargs[0];
                    D.36831 = iargs[0];
                    D.36831 = iargs[0];
                    D.36831->sreg3 = -1;
                    D.36834 = D.36831->sreg3;
                    D.36831->sreg2 = D.36834;
                    D.36835 = D.36831->sreg2;
                    D.36831->sreg1 = D.36835;
                    D.36831 = iargs[0];
                    D.29910 = cfg->ip;
                    D.36831->cil_code = D.29910;
                    D.36831 = iargs[0];
                    D.30422 = cfg->varinfo;
                    D.36836 = __domain_var->data.op[0].const_val;
                    D.36837 = (unsigned int) D.36836;
                    D.36838 = D.36837 * 4;
                    D.36839 = D.30422 + D.36838;
                    D.36840 = *D.36839;
                    D.36841 = D.36840->data.op[1].vtype;
                    D.36842 = mono_type_to_regmove (cfg, D.36841);
                    D.36843 = (short unsigned int) D.36842;
                    D.36831->opcode = D.36843;
                    D.30422 = cfg->varinfo;
                    D.36836 = __domain_var->data.op[0].const_val;
                    D.36837 = (unsigned int) D.36836;
                    D.36838 = D.36837 * 4;
                    D.36839 = D.30422 + D.36838;
                    D.36840 = *D.36839;
                    D.36841 = D.36840->data.op[1].vtype;
                    D.36831 = iargs[0];
                    type_to_eval_stack_type (cfg, D.36841, D.36831);
                    D.36831 = iargs[0];
                    D.30422 = cfg->varinfo;
                    D.36836 = __domain_var->data.op[0].const_val;
                    D.36837 = (unsigned int) D.36836;
                    D.36838 = D.36837 * 4;
                    D.36839 = D.30422 + D.36838;
                    D.36840 = *D.36839;
                    D.36844 = D.36840->klass;
                    D.36831->klass = D.36844;
                    D.36831 = iargs[0];
                    D.30422 = cfg->varinfo;
                    D.36836 = __domain_var->data.op[0].const_val;
                    D.36837 = (unsigned int) D.36836;
                    D.36838 = D.36837 * 4;
                    D.36839 = D.30422 + D.36838;
                    D.36840 = *D.36839;
                    D.36845 = D.36840->dreg;
                    D.36831->sreg1 = D.36845;
                    D.36831 = iargs[0];
                    D.36831 = iargs[0];
                    D.36846 = D.36831->type;
                    D.36847 = (<unnamed type>) D.36846;
                    D.36848 = alloc_dreg (cfg, D.36847);
                    D.36849 = (int) D.36848;
                    D.36831->dreg = D.36849;
                    D.36831 = iargs[0];
                    D.36850 = D.36831->opcode;
                    if (D.36850 == 427) goto <D.36851>; else goto <D.36852>;
                    <D.36851>:
                    D.36831 = iargs[0];
                    D.30422 = cfg->varinfo;
                    D.36836 = __domain_var->data.op[0].const_val;
                    D.36837 = (unsigned int) D.36836;
                    D.36838 = D.36837 * 4;
                    D.36839 = D.30422 + D.36838;
                    D.36840 = *D.36839;
                    D.36841 = D.36840->data.op[1].vtype;
                    D.36853 = mono_class_from_mono_type (D.36841);
                    D.36831->klass = D.36853;
                    <D.36852>:
                  }
                  goto <D.36828>;
                  <D.36827>:
                  D.29691 = cfg->mempool;
                  D.36854 = mono_mempool_alloc (D.29691, 56);
                  iargs[0] = D.36854;
                  D.36831 = iargs[0];
                  D.36831 = iargs[0];
                  D.36831->data.op[1].const_val = 0;
                  D.36832 = D.36831->data.op[1].const_val;
                  D.36831->data.op[0].const_val = D.36832;
                  D.36831 = iargs[0];
                  D.36831 = iargs[0];
                  D.36831->prev = 0B;
                  D.36833 = D.36831->prev;
                  D.36831->next = D.36833;
                  D.36831 = iargs[0];
                  D.36831->opcode = 362;
                  D.36831 = iargs[0];
                  D.36831->flags = 0;
                  D.36831 = iargs[0];
                  D.36831->type = 0;
                  D.36831 = iargs[0];
                  D.36831->dreg = -1;
                  D.36831 = iargs[0];
                  D.36831 = iargs[0];
                  D.36831 = iargs[0];
                  D.36831->sreg3 = -1;
                  D.36834 = D.36831->sreg3;
                  D.36831->sreg2 = D.36834;
                  D.36835 = D.36831->sreg2;
                  D.36831->sreg1 = D.36835;
                  D.36831 = iargs[0];
                  D.29910 = cfg->ip;
                  D.36831->cil_code = D.29910;
                  D.36831 = iargs[0];
                  D.29716 = cfg->domain;
                  D.36831->data.op[0].p = D.29716;
                  D.36831 = iargs[0];
                  D.36831->type = 3;
                  D.36831 = iargs[0];
                  D.36855 = alloc_dreg (cfg, 3);
                  D.36856 = (int) D.36855;
                  D.36831->dreg = D.36856;
                  <D.36828>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.36857>; else goto <D.36858>;
                  <D.36857>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.36831 = iargs[0];
                  D.29939->next = D.36831;
                  D.36831 = iargs[0];
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.36831->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  D.36831 = iargs[0];
                  bblock.129->last_ins = D.36831;
                  goto <D.36859>;
                  <D.36858>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  D.36831 = iargs[0];
                  bblock.129->last_ins = D.36831;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.36859>:
                  D.29691 = cfg->mempool;
                  D.36860 = mono_mempool_alloc (D.29691, 56);
                  iargs[1] = D.36860;
                  D.36861 = iargs[1];
                  D.36861 = iargs[1];
                  D.36861->data.op[1].const_val = 0;
                  D.36862 = D.36861->data.op[1].const_val;
                  D.36861->data.op[0].const_val = D.36862;
                  D.36861 = iargs[1];
                  D.36861 = iargs[1];
                  D.36861->prev = 0B;
                  D.36863 = D.36861->prev;
                  D.36861->next = D.36863;
                  D.36861 = iargs[1];
                  D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
                  D.30082 = D.30081 & 64;
                  if (D.30082 != 0) goto <D.36865>; else goto <D.36866>;
                  <D.36865>:
                  iftmp.277 = 732;
                  goto <D.36867>;
                  <D.36866>:
                  iftmp.277 = 362;
                  <D.36867>:
                  D.36861->opcode = iftmp.277;
                  D.36861 = iargs[1];
                  D.36861->flags = 0;
                  D.36861 = iargs[1];
                  D.36861->type = 0;
                  D.36861 = iargs[1];
                  D.36861->dreg = -1;
                  D.36861 = iargs[1];
                  D.36861 = iargs[1];
                  D.36861 = iargs[1];
                  D.36861->sreg3 = -1;
                  D.36868 = D.36861->sreg3;
                  D.36861->sreg2 = D.36868;
                  D.36869 = D.36861->sreg2;
                  D.36861->sreg1 = D.36869;
                  D.36861 = iargs[1];
                  D.29910 = cfg->ip;
                  D.36861->cil_code = D.29910;
                  D.36861 = iargs[1];
                  klass.176 = klass;
                  D.36861->data.op[0].p = klass.176;
                  D.36861 = iargs[1];
                  D.36861->data.op[1].src = 11B;
                  D.36861 = iargs[1];
                  D.36861->type = 3;
                  D.36861 = iargs[1];
                  D.36870 = alloc_dreg (cfg, 3);
                  D.36871 = (int) D.36870;
                  D.36861->dreg = D.36871;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.36872>; else goto <D.36873>;
                  <D.36872>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.36861 = iargs[1];
                  D.29939->next = D.36861;
                  D.36861 = iargs[1];
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.36861->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  D.36861 = iargs[1];
                  bblock.129->last_ins = D.36861;
                  goto <D.36874>;
                  <D.36873>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  D.36861 = iargs[1];
                  bblock.129->last_ins = D.36861;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.36874>:
                  D.30679 = *sp;
                  iargs[2] = D.30679;
                  ins = mono_emit_jit_icall (cfg, mono_array_new, &iargs);
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            goto <D.36875>;
            <D.36825>:
            {
              struct MonoClass * array_type;

              klass.176 = klass;
              array_type = mono_array_class_get (klass.176, 1);
              D.29716 = cfg->domain;
              mono_class_vtable (D.29716, array_type);
              if (array_type == 0B) goto <D.36876>; else goto <D.36878>;
              <D.36878>:
              D.36879 = array_type->exception_type;
              if (D.36879 != 0) goto <D.36876>; else goto <D.36877>;
              <D.36876>:
              cfg->exception_ptr = array_type;
              D.36880 = mini_get_debug_options ();
              D.36881 = D.36880->break_on_unverified;
              if (D.36881 != 0) goto <D.36882>; else goto load_error;
              <D.36882>:
              raise (5);
              <D.36877>:
              D.29691 = cfg->mempool;
              ins = mono_mempool_alloc (D.29691, 56);
              ins->data.op[1].const_val = 0;
              D.29906 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.29906;
              ins->prev = 0B;
              D.29907 = ins->prev;
              ins->next = D.29907;
              ins->opcode = 782;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.29908 = ins->sreg3;
              ins->sreg2 = D.29908;
              D.29909 = ins->sreg2;
              ins->sreg1 = D.29909;
              D.29910 = cfg->ip;
              ins->cil_code = D.29910;
              D.36883 = alloc_ireg_ref (cfg);
              D.36884 = (int) D.36883;
              ins->dreg = D.36884;
              D.30679 = *sp;
              D.30872 = D.30679->dreg;
              ins->sreg1 = D.30872;
              klass.176 = klass;
              ins->data.op[1].klass = klass.176;
              ins->type = 6;
              ins->klass = array_type;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.36885>; else goto <D.36886>;
              <D.36885>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = ins;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              ins->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              goto <D.36887>;
              <D.36886>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.36887>:
              D.30117 = cfg->flags;
              D.36888 = D.30117 | 256;
              cfg->flags = D.36888;
              bblock.129 = cfg->cbb;
              bblock.129->has_array_access = 1;
              mono_get_got_var (cfg);
            }
            <D.36875>:
            <D.36823>:
            len_ins = *sp;
            ip = ip + 5;
            sp.278 = sp;
            sp = sp.278 + 4;
            *sp.278 = ins;
            inline_costs = inline_costs + 1;
            D.30079 = cfg->opt;
            D.32064 = D.30079 & 2048;
            if (D.32064 != 0) goto <D.36890>; else goto <D.36891>;
            <D.36890>:
            D.34392 = ip + 6;
            if (D.34392 < end) goto <D.36892>; else goto <D.36893>;
            <D.36892>:
            bblock.77 = bblock;
            D.36894 = ip + 6;
            D.36895 = ip_in_bb (cfg, bblock.77, D.36894);
            if (D.36895 != 0) goto <D.36896>; else goto <D.36897>;
            <D.36896>:
            D.36898 = len_ins->opcode;
            if (D.36898 == 362) goto <D.36899>; else goto <D.36900>;
            <D.36899>:
            D.31623 = cfg->compile_aot;
            D.31624 = (int) D.31623;
            klass.176 = klass;
            D.36901 = len_ins->data.op[0].const_val;
            D.36902 = (unsigned int) D.36901;
            data_ptr = initialize_array_data (method, D.31624, ip, klass.176, D.36902, &data_size, &field_token);
            if (data_ptr != 0B) goto <D.36903>; else goto <D.36904>;
            <D.36903>:
            {
              struct MonoMethod * memcpy_method;
              struct MonoInst * iargs[3];
              int add_reg;

              try
                {
                  memcpy_method = get_memcpy_method ();
                  D.36905 = alloc_ireg_mp (cfg);
                  add_reg = (int) D.36905;
                  D.29691 = cfg->mempool;
                  D.36906 = mono_mempool_alloc (D.29691, 56);
                  iargs[0] = D.36906;
                  D.36907 = iargs[0];
                  D.36907 = iargs[0];
                  D.36907->data.op[1].const_val = 0;
                  D.36908 = D.36907->data.op[1].const_val;
                  D.36907->data.op[0].const_val = D.36908;
                  D.36907 = iargs[0];
                  D.36907 = iargs[0];
                  D.36907->prev = 0B;
                  D.36909 = D.36907->prev;
                  D.36907->next = D.36909;
                  D.36907 = iargs[0];
                  D.36907->opcode = 625;
                  D.36907 = iargs[0];
                  D.36907->flags = 0;
                  D.36907 = iargs[0];
                  D.36907->type = 0;
                  D.36907 = iargs[0];
                  D.36907->dreg = -1;
                  D.36907 = iargs[0];
                  D.36907 = iargs[0];
                  D.36907 = iargs[0];
                  D.36907->sreg3 = -1;
                  D.36910 = D.36907->sreg3;
                  D.36907->sreg2 = D.36910;
                  D.36911 = D.36907->sreg2;
                  D.36907->sreg1 = D.36911;
                  D.36907 = iargs[0];
                  D.29910 = cfg->ip;
                  D.36907->cil_code = D.29910;
                  D.36907 = iargs[0];
                  D.36907->dreg = add_reg;
                  D.36907 = iargs[0];
                  D.30101 = ins->dreg;
                  D.36907->sreg1 = D.30101;
                  D.36907 = iargs[0];
                  D.36907->data.op[1].const_val = 16;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.36912>; else goto <D.36913>;
                  <D.36912>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.36907 = iargs[0];
                  D.29939->next = D.36907;
                  D.36907 = iargs[0];
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.36907->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  D.36907 = iargs[0];
                  bblock.129->last_ins = D.36907;
                  goto <D.36914>;
                  <D.36913>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  D.36907 = iargs[0];
                  bblock.129->last_ins = D.36907;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.36914>:
                  D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
                  D.30082 = D.30081 & 64;
                  if (D.30082 != 0) goto <D.36915>; else goto <D.36916>;
                  <D.36915>:
                  D.29691 = cfg->mempool;
                  D.36917 = mono_mempool_alloc (D.29691, 56);
                  iargs[1] = D.36917;
                  D.36918 = iargs[1];
                  D.36918 = iargs[1];
                  D.36918->data.op[1].const_val = 0;
                  D.36919 = D.36918->data.op[1].const_val;
                  D.36918->data.op[0].const_val = D.36919;
                  D.36918 = iargs[1];
                  D.36918 = iargs[1];
                  D.36918->prev = 0B;
                  D.36920 = D.36918->prev;
                  D.36918->next = D.36920;
                  D.36918 = iargs[1];
                  D.36918->opcode = 732;
                  D.36918 = iargs[1];
                  D.36918->flags = 0;
                  D.36918 = iargs[1];
                  D.36918->type = 0;
                  D.36918 = iargs[1];
                  D.36918->dreg = -1;
                  D.36918 = iargs[1];
                  D.36918 = iargs[1];
                  D.36918 = iargs[1];
                  D.36918->sreg3 = -1;
                  D.36921 = D.36918->sreg3;
                  D.36918->sreg2 = D.36921;
                  D.36922 = D.36918->sreg2;
                  D.36918->sreg1 = D.36922;
                  D.36918 = iargs[1];
                  D.29910 = cfg->ip;
                  D.36918->cil_code = D.29910;
                  D.36918 = iargs[1];
                  D.29691 = cfg->mempool;
                  D.29629 = method->klass;
                  D.29630 = D.29629->image;
                  field_token.279 = field_token;
                  D.36924 = mono_jump_info_token_new2 (D.29691, D.29630, field_token.279, 0B);
                  D.36918->data.op[0].p = D.36924;
                  D.36918 = iargs[1];
                  D.36918->data.op[1].p = 29B;
                  D.36918 = iargs[1];
                  D.36918->type = 3;
                  D.36918 = iargs[1];
                  D.36918->klass = 0B;
                  D.36918 = iargs[1];
                  D.36925 = alloc_dreg (cfg, 3);
                  D.36926 = (int) D.36925;
                  D.36918->dreg = D.36926;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.36927>; else goto <D.36928>;
                  <D.36927>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.36918 = iargs[1];
                  D.29939->next = D.36918;
                  D.36918 = iargs[1];
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.36918->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  D.36918 = iargs[1];
                  bblock.129->last_ins = D.36918;
                  goto <D.36929>;
                  <D.36928>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  D.36918 = iargs[1];
                  bblock.129->last_ins = D.36918;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.36929>:
                  goto <D.36930>;
                  <D.36916>:
                  D.29691 = cfg->mempool;
                  D.36931 = mono_mempool_alloc (D.29691, 56);
                  iargs[1] = D.36931;
                  D.36918 = iargs[1];
                  D.36918 = iargs[1];
                  D.36918->data.op[1].const_val = 0;
                  D.36919 = D.36918->data.op[1].const_val;
                  D.36918->data.op[0].const_val = D.36919;
                  D.36918 = iargs[1];
                  D.36918 = iargs[1];
                  D.36918->prev = 0B;
                  D.36920 = D.36918->prev;
                  D.36918->next = D.36920;
                  D.36918 = iargs[1];
                  D.36918->opcode = 362;
                  D.36918 = iargs[1];
                  D.36918->flags = 0;
                  D.36918 = iargs[1];
                  D.36918->type = 0;
                  D.36918 = iargs[1];
                  D.36918->dreg = -1;
                  D.36918 = iargs[1];
                  D.36918 = iargs[1];
                  D.36918 = iargs[1];
                  D.36918->sreg3 = -1;
                  D.36921 = D.36918->sreg3;
                  D.36918->sreg2 = D.36921;
                  D.36922 = D.36918->sreg2;
                  D.36918->sreg1 = D.36922;
                  D.36918 = iargs[1];
                  D.29910 = cfg->ip;
                  D.36918->cil_code = D.29910;
                  D.36918 = iargs[1];
                  D.36918->data.op[0].p = data_ptr;
                  D.36918 = iargs[1];
                  D.36918->type = 3;
                  D.36918 = iargs[1];
                  D.36932 = alloc_dreg (cfg, 3);
                  D.36933 = (int) D.36932;
                  D.36918->dreg = D.36933;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.36934>; else goto <D.36935>;
                  <D.36934>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.36918 = iargs[1];
                  D.29939->next = D.36918;
                  D.36918 = iargs[1];
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.36918->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  D.36918 = iargs[1];
                  bblock.129->last_ins = D.36918;
                  goto <D.36936>;
                  <D.36935>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  D.36918 = iargs[1];
                  bblock.129->last_ins = D.36918;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.36936>:
                  <D.36930>:
                  D.29691 = cfg->mempool;
                  D.36937 = mono_mempool_alloc (D.29691, 56);
                  iargs[2] = D.36937;
                  D.36938 = iargs[2];
                  D.36938 = iargs[2];
                  D.36938->data.op[1].const_val = 0;
                  D.36939 = D.36938->data.op[1].const_val;
                  D.36938->data.op[0].const_val = D.36939;
                  D.36938 = iargs[2];
                  D.36938 = iargs[2];
                  D.36938->prev = 0B;
                  D.36940 = D.36938->prev;
                  D.36938->next = D.36940;
                  D.36938 = iargs[2];
                  D.36938->opcode = 362;
                  D.36938 = iargs[2];
                  D.36938->flags = 0;
                  D.36938 = iargs[2];
                  D.36938->type = 0;
                  D.36938 = iargs[2];
                  D.36938->dreg = -1;
                  D.36938 = iargs[2];
                  D.36938 = iargs[2];
                  D.36938 = iargs[2];
                  D.36938->sreg3 = -1;
                  D.36941 = D.36938->sreg3;
                  D.36938->sreg2 = D.36941;
                  D.36942 = D.36938->sreg2;
                  D.36938->sreg1 = D.36942;
                  D.36938 = iargs[2];
                  D.29910 = cfg->ip;
                  D.36938->cil_code = D.29910;
                  D.36938 = iargs[2];
                  data_size.280 = data_size;
                  D.36938->data.op[0].const_val = data_size.280;
                  D.36938 = iargs[2];
                  D.36938->type = 1;
                  D.36938 = iargs[2];
                  D.36944 = alloc_dreg (cfg, 1);
                  D.36945 = (int) D.36944;
                  D.36938->dreg = D.36945;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.36946>; else goto <D.36947>;
                  <D.36946>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.36938 = iargs[2];
                  D.29939->next = D.36938;
                  D.36938 = iargs[2];
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.36938->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  D.36938 = iargs[2];
                  bblock.129->last_ins = D.36938;
                  goto <D.36948>;
                  <D.36947>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  D.36938 = iargs[2];
                  bblock.129->last_ins = D.36938;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.36948>:
                  mono_emit_method_call (cfg, memcpy_method, &iargs, 0B);
                  ip = ip + 11;
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            <D.36904>:
            <D.36900>:
            <D.36897>:
            <D.36893>:
            <D.36891>:
            goto <D.26808>;
          }
        finally
          {
            data_size = {CLOBBER};
            field_token = {CLOBBER};
          }
      }
      <D.27357>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.36949>; else goto <D.36950>;
      <D.36949>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.36951>; else goto <D.36952>;
      <D.36951>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.36953>; else goto <D.36954>;
      <D.36953>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36954>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36952>:
      D.36955 = mini_get_debug_options ();
      D.36956 = D.36955->break_on_unverified;
      if (D.36956 != 0) goto <D.36957>; else goto unverified;
      <D.36957>:
      raise (5);
      <D.36950>:
      sp = sp + 4294967292;
      D.30679 = *sp;
      D.32402 = D.30679->type;
      if (D.32402 != 6) goto <D.36958>; else goto <D.36959>;
      <D.36958>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.36960>; else goto <D.36961>;
      <D.36960>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.36962>; else goto <D.36963>;
      <D.36962>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36963>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36961>:
      D.36964 = mini_get_debug_options ();
      D.36965 = D.36964->break_on_unverified;
      if (D.36965 != 0) goto <D.36966>; else goto unverified;
      <D.36966>:
      raise (5);
      <D.36959>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 783;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.36967 = alloc_preg (cfg);
      D.36968 = (int) D.36967;
      ins->dreg = D.36968;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      ins->type = 1;
      D.30530 = ins->flags;
      D.36969 = D.30530 | 32;
      ins->flags = D.36969;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.36970>; else goto <D.36971>;
      <D.36970>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.36972>;
      <D.36971>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.36972>:
      D.30117 = cfg->flags;
      D.36888 = D.30117 | 256;
      cfg->flags = D.36888;
      bblock.129 = cfg->cbb;
      bblock.129->has_array_access = 1;
      ip = ip + 1;
      sp.281 = sp;
      sp = sp.281 + 4;
      *sp.281 = ins;
      goto <D.26808>;
      <D.27358>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 7) goto <D.36974>; else goto <D.36975>;
      <D.36974>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.36976>; else goto <D.36977>;
      <D.36976>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.36978>; else goto <D.36979>;
      <D.36978>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36979>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36977>:
      D.36980 = mini_get_debug_options ();
      D.36981 = D.36980->break_on_unverified;
      if (D.36981 != 0) goto <D.36982>; else goto unverified;
      <D.36982>:
      raise (5);
      <D.36975>:
      sp = sp + 4294967288;
      D.31124 = ip + 5;
      if (D.31124 > end) goto <D.36983>; else goto <D.36984>;
      <D.36983>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.36985>; else goto <D.36986>;
      <D.36985>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.36987>; else goto <D.36988>;
      <D.36987>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36988>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36986>:
      D.36989 = mini_get_debug_options ();
      D.36990 = D.36989->break_on_unverified;
      if (D.36990 != 0) goto <D.36991>; else goto unverified;
      <D.36991>:
      raise (5);
      <D.36984>:
      D.30679 = *sp;
      D.32402 = D.30679->type;
      if (D.32402 != 6) goto <D.36992>; else goto <D.36993>;
      <D.36992>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.36994>; else goto <D.36995>;
      <D.36994>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.36996>; else goto <D.36997>;
      <D.36996>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36997>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36995>:
      D.36998 = mini_get_debug_options ();
      D.36999 = D.36998->break_on_unverified;
      if (D.36999 != 0) goto <D.37000>; else goto unverified;
      <D.37000>:
      raise (5);
      <D.36993>:
      D.30117 = cfg->flags;
      D.37001 = D.30117 | 4;
      cfg->flags = D.37001;
      D.31143 = ip + 1;
      D.37002 = mono_read32 (D.31143);
      klass.282 = mini_get_class (method, D.37002, generic_context);
      klass = klass.282;
      klass.176 = klass;
      if (klass.176 == 0B) goto <D.37004>; else goto <D.37006>;
      <D.37006>:
      klass.176 = klass;
      D.34335 = klass.176->exception_type;
      if (D.34335 != 0) goto <D.37004>; else goto <D.37005>;
      <D.37004>:
      klass.176 = klass;
      cfg->exception_ptr = klass.176;
      D.37007 = mini_get_debug_options ();
      D.37008 = D.37007->break_on_unverified;
      if (D.37008 != 0) goto <D.37009>; else goto load_error;
      <D.37009>:
      raise (5);
      <D.37005>:
      klass.176 = klass;
      D.35117 = BIT_FIELD_REF <*klass.176, 32, 160>;
      D.35789 = D.35117 & 8;
      if (D.35789 == 0) goto <D.37010>; else goto <D.37011>;
      <D.37010>:
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29635 = D.29634 & 124;
      if (D.29635 == 0) goto <D.37012>; else goto <D.37013>;
      <D.37012>:
      if (readonly == 0) goto <D.37014>; else goto <D.37015>;
      <D.37014>:
      {
        struct MonoClass * array_class;

        klass.176 = klass;
        array_class = mono_array_class_get (klass.176, 1);
        D.30679 = *sp;
        mini_emit_check_array_type (cfg, D.30679, array_class);
        if (array_class == 0B) goto <D.37016>; else goto <D.37018>;
        <D.37018>:
        D.37019 = array_class->exception_type;
        if (D.37019 != 0) goto <D.37016>; else goto <D.37017>;
        <D.37016>:
        cfg->exception_ptr = array_class;
        D.37020 = mini_get_debug_options ();
        D.37021 = D.37020->break_on_unverified;
        if (D.37021 != 0) goto <D.37022>; else goto load_error;
        <D.37022>:
        raise (5);
        <D.37017>:
      }
      <D.37015>:
      <D.37013>:
      <D.37011>:
      readonly = 0;
      klass.176 = klass;
      D.30679 = *sp;
      D.31793 = sp + 4;
      D.31794 = *D.31793;
      ins = mini_emit_ldelema_1_ins (cfg, klass.176, D.30679, D.31794, 1);
      sp.283 = sp;
      sp = sp.283 + 4;
      *sp.283 = ins;
      ip = ip + 5;
      goto <D.26808>;
      <D.27360>:
      <D.27361>:
      <D.27362>:
      <D.27363>:
      <D.27364>:
      <D.27365>:
      <D.27366>:
      <D.27367>:
      <D.27368>:
      <D.27369>:
      <D.27370>:
      <D.27371>:
      {
        struct MonoInst * addr;

        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        if (D.30457 <= 7) goto <D.37024>; else goto <D.37025>;
        <D.37024>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.37026>; else goto <D.37027>;
        <D.37026>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.37028>; else goto <D.37029>;
        <D.37028>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.37029>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.37027>:
        D.37030 = mini_get_debug_options ();
        D.37031 = D.37030->break_on_unverified;
        if (D.37031 != 0) goto <D.37032>; else goto unverified;
        <D.37032>:
        raise (5);
        <D.37025>:
        sp = sp + 4294967288;
        D.30562 = *ip;
        if (D.30562 == 163) goto <D.37033>; else goto <D.37034>;
        <D.37033>:
        D.31124 = ip + 5;
        if (D.31124 > end) goto <D.37035>; else goto <D.37036>;
        <D.37035>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.37037>; else goto <D.37038>;
        <D.37037>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.37039>; else goto <D.37040>;
        <D.37039>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.37040>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.37038>:
        D.37041 = mini_get_debug_options ();
        D.37042 = D.37041->break_on_unverified;
        if (D.37042 != 0) goto <D.37043>; else goto unverified;
        <D.37043>:
        raise (5);
        <D.37036>:
        D.31143 = ip + 1;
        token = mono_read32 (D.31143);
        klass.284 = mini_get_class (method, token, generic_context);
        klass = klass.284;
        klass.176 = klass;
        if (klass.176 == 0B) goto <D.37045>; else goto <D.37047>;
        <D.37047>:
        klass.176 = klass;
        D.34335 = klass.176->exception_type;
        if (D.34335 != 0) goto <D.37045>; else goto <D.37046>;
        <D.37045>:
        klass.176 = klass;
        cfg->exception_ptr = klass.176;
        D.37048 = mini_get_debug_options ();
        D.37049 = D.37048->break_on_unverified;
        if (D.37049 != 0) goto <D.37050>; else goto load_error;
        <D.37050>:
        raise (5);
        <D.37046>:
        klass.176 = klass;
        mono_class_init (klass.176);
        goto <D.37051>;
        <D.37034>:
        D.30562 = *ip;
        D.30563 = (int) D.30562;
        klass.285 = array_access_to_klass (D.30563);
        klass = klass.285;
        <D.37051>:
        D.30679 = *sp;
        D.32402 = D.30679->type;
        if (D.32402 != 6) goto <D.37053>; else goto <D.37054>;
        <D.37053>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.37055>; else goto <D.37056>;
        <D.37055>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.37057>; else goto <D.37058>;
        <D.37057>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.37058>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.37056>:
        D.37059 = mini_get_debug_options ();
        D.37060 = D.37059->break_on_unverified;
        if (D.37060 != 0) goto <D.37061>; else goto unverified;
        <D.37061>:
        raise (5);
        <D.37054>:
        D.30117 = cfg->flags;
        D.37001 = D.30117 | 4;
        cfg->flags = D.37001;
        klass.176 = klass;
        D.37062 = mini_is_gsharedvt_variable_klass (cfg, klass.176);
        if (D.37062 != 0) goto <D.37063>; else goto <D.37064>;
        <D.37063>:
        klass.176 = klass;
        D.30679 = *sp;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        addr = mini_emit_ldelema_1_ins (cfg, klass.176, D.30679, D.31794, 1);
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        klass.176 = klass;
        D.34409 = &klass.176->byval_arg;
        D.37065 = mono_type_to_load_membase (cfg, D.34409);
        D.37066 = (short unsigned int) D.37065;
        ins->opcode = D.37066;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        ins->dreg = 0;
        D.37067 = addr->dreg;
        ins->sreg1 = D.37067;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        klass.176 = klass;
        D.34409 = &klass.176->byval_arg;
        type_to_eval_stack_type (cfg, D.34409, ins);
        D.30432 = ins->type;
        D.30433 = (<unnamed type>) D.30432;
        D.37068 = alloc_dreg (cfg, D.30433);
        D.37069 = (int) D.37068;
        ins->dreg = D.37069;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.37070>; else goto <D.37071>;
        <D.37070>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.37072>;
        <D.37071>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.37072>:
        ins->opcode = 399;
        goto <D.37073>;
        <D.37064>:
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        D.34010 = D.31794->opcode;
        if (D.34010 == 362) goto <D.37074>; else goto <D.37075>;
        <D.37074>:
        {
          int array_reg;
          int index_reg;
          int offset;

          D.30679 = *sp;
          array_reg = D.30679->dreg;
          D.31793 = sp + 4;
          D.31794 = *D.31793;
          index_reg = D.31794->dreg;
          klass.176 = klass;
          D.37076 = mono_class_array_element_size (klass.176);
          D.31793 = sp + 4;
          D.31794 = *D.31793;
          D.34035 = D.31794->data.op[0].const_val;
          D.37077 = D.37076 * D.34035;
          D.37078 = (unsigned int) D.37077;
          D.37079 = D.37078 + 16;
          offset = (int) D.37079;
          D.30079 = cfg->opt;
          D.37080 = D.30079 & 134217728;
          if (D.37080 == 0) goto <D.37081>; else goto <D.37082>;
          <D.37081>:
          D.30079 = cfg->opt;
          D.37083 = D.30079 & 262144;
          if (D.37083 == 0) goto <D.37084>; else goto <D.37085>;
          <D.37084>:
          D.29679 = BIT_FIELD_REF <*cfg, 32, 3424>;
          D.30317 = D.29679 & 64;
          if (D.30317 != 0) goto <D.37086>; else goto <D.37087>;
          <D.37086>:
          {
            struct MonoInst * inst;

            D.29691 = cfg->mempool;
            inst = mono_mempool_alloc (D.29691, 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 = 323;
            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.29910 = cfg->ip;
            inst->cil_code = D.29910;
            inst->dreg = -1;
            inst->sreg1 = array_reg;
            inst->data.op[1].const_val = 0;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.37092>; else goto <D.37093>;
            <D.37092>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = inst;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            inst->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            goto <D.37094>;
            <D.37093>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.37094>:
          }
          {
            struct MonoInst * inst;

            D.29691 = cfg->mempool;
            inst = mono_mempool_alloc (D.29691, 56);
            inst->data.op[1].const_val = 0;
            D.37095 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.37095;
            inst->prev = 0B;
            D.37096 = inst->prev;
            inst->next = D.37096;
            inst->opcode = 451;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.37097 = inst->sreg3;
            inst->sreg2 = D.37097;
            D.37098 = inst->sreg2;
            inst->sreg1 = D.37098;
            D.29910 = cfg->ip;
            inst->cil_code = D.29910;
            inst->data.op[1].p = "NullReferenceException";
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.37099>; else goto <D.37100>;
            <D.37099>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = inst;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            inst->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            goto <D.37101>;
            <D.37100>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.37101>:
          }
          goto <D.37102>;
          <D.37087>:
          <D.37102>:
          if (0 != 0) goto <D.37103>; else goto <D.37104>;
          <D.37103>:
          {
            int _length_reg;

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

              __ins_flags = 32;
              D.37108 = __ins_flags & 32;
              if (D.37108 != 0) goto <D.37109>; else goto <D.37110>;
              <D.37109>:
              D.29679 = BIT_FIELD_REF <*cfg, 32, 3424>;
              D.30317 = D.29679 & 64;
              if (D.30317 != 0) goto <D.37111>; else goto <D.37112>;
              <D.37111>:
              {
                struct MonoInst * inst;

                D.29691 = cfg->mempool;
                inst = mono_mempool_alloc (D.29691, 56);
                inst->data.op[1].const_val = 0;
                D.37113 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.37113;
                inst->prev = 0B;
                D.37114 = inst->prev;
                inst->next = D.37114;
                inst->opcode = 323;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.37115 = inst->sreg3;
                inst->sreg2 = D.37115;
                D.37116 = inst->sreg2;
                inst->sreg1 = D.37116;
                D.29910 = cfg->ip;
                inst->cil_code = D.29910;
                inst->dreg = -1;
                inst->sreg1 = array_reg;
                inst->data.op[1].const_val = 0;
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                if (D.29939 != 0B) goto <D.37117>; else goto <D.37118>;
                <D.37117>:
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                D.29939->next = inst;
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                inst->prev = D.29939;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                goto <D.37119>;
                <D.37118>:
                bblock.129 = cfg->cbb;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                D.29939 = bblock.129->last_ins;
                bblock.129->code = D.29939;
                <D.37119>:
              }
              {
                struct MonoInst * inst;

                D.29691 = cfg->mempool;
                inst = mono_mempool_alloc (D.29691, 56);
                inst->data.op[1].const_val = 0;
                D.37120 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.37120;
                inst->prev = 0B;
                D.37121 = inst->prev;
                inst->next = D.37121;
                inst->opcode = 451;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.37122 = inst->sreg3;
                inst->sreg2 = D.37122;
                D.37123 = inst->sreg2;
                inst->sreg1 = D.37123;
                D.29910 = cfg->ip;
                inst->cil_code = D.29910;
                inst->data.op[1].p = "NullReferenceException";
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                if (D.29939 != 0B) goto <D.37124>; else goto <D.37125>;
                <D.37124>:
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                D.29939->next = inst;
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                inst->prev = D.29939;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                goto <D.37126>;
                <D.37125>:
                bblock.129 = cfg->cbb;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                D.29939 = bblock.129->last_ins;
                bblock.129->code = D.29939;
                <D.37126>:
              }
              goto <D.37127>;
              <D.37112>:
              <D.37127>:
              <D.37110>:
              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.37128 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37128;
              inst->prev = 0B;
              D.37129 = inst->prev;
              inst->next = D.37129;
              inst->opcode = 393;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37130 = inst->sreg3;
              inst->sreg2 = D.37130;
              D.37131 = inst->sreg2;
              inst->sreg1 = D.37131;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = _length_reg;
              inst->sreg1 = array_reg;
              inst->data.op[0].const_val = 12;
              inst->type = 1;
              D.37132 = (unsigned char) __ins_flags;
              inst->flags = D.37132;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.37133>; else goto <D.37134>;
              <D.37133>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.37135>;
              <D.37134>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.37135>:
            }
            goto <D.37136>;
            <D.37107>:
            {
              struct MonoInst * inst;
              int __ins_flags;

              __ins_flags = 64;
              D.37137 = __ins_flags & 32;
              if (D.37137 != 0) goto <D.37138>; else goto <D.37139>;
              <D.37138>:
              D.29679 = BIT_FIELD_REF <*cfg, 32, 3424>;
              D.30317 = D.29679 & 64;
              if (D.30317 != 0) goto <D.37140>; else goto <D.37141>;
              <D.37140>:
              {
                struct MonoInst * inst;

                D.29691 = cfg->mempool;
                inst = mono_mempool_alloc (D.29691, 56);
                inst->data.op[1].const_val = 0;
                D.37142 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.37142;
                inst->prev = 0B;
                D.37143 = inst->prev;
                inst->next = D.37143;
                inst->opcode = 323;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.37144 = inst->sreg3;
                inst->sreg2 = D.37144;
                D.37145 = inst->sreg2;
                inst->sreg1 = D.37145;
                D.29910 = cfg->ip;
                inst->cil_code = D.29910;
                inst->dreg = -1;
                inst->sreg1 = array_reg;
                inst->data.op[1].const_val = 0;
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                if (D.29939 != 0B) goto <D.37146>; else goto <D.37147>;
                <D.37146>:
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                D.29939->next = inst;
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                inst->prev = D.29939;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                goto <D.37148>;
                <D.37147>:
                bblock.129 = cfg->cbb;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                D.29939 = bblock.129->last_ins;
                bblock.129->code = D.29939;
                <D.37148>:
              }
              {
                struct MonoInst * inst;

                D.29691 = cfg->mempool;
                inst = mono_mempool_alloc (D.29691, 56);
                inst->data.op[1].const_val = 0;
                D.37149 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.37149;
                inst->prev = 0B;
                D.37150 = inst->prev;
                inst->next = D.37150;
                inst->opcode = 451;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.37151 = inst->sreg3;
                inst->sreg2 = D.37151;
                D.37152 = inst->sreg2;
                inst->sreg1 = D.37152;
                D.29910 = cfg->ip;
                inst->cil_code = D.29910;
                inst->data.op[1].p = "NullReferenceException";
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                if (D.29939 != 0B) goto <D.37153>; else goto <D.37154>;
                <D.37153>:
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                D.29939->next = inst;
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                inst->prev = D.29939;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                goto <D.37155>;
                <D.37154>:
                bblock.129 = cfg->cbb;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                D.29939 = bblock.129->last_ins;
                bblock.129->code = D.29939;
                <D.37155>:
              }
              goto <D.37156>;
              <D.37141>:
              <D.37156>:
              <D.37139>:
              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.37157 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37157;
              inst->prev = 0B;
              D.37158 = inst->prev;
              inst->next = D.37158;
              inst->opcode = 393;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37159 = inst->sreg3;
              inst->sreg2 = D.37159;
              D.37160 = inst->sreg2;
              inst->sreg1 = D.37160;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = _length_reg;
              inst->sreg1 = array_reg;
              inst->data.op[0].const_val = 12;
              inst->type = 1;
              D.37161 = (unsigned char) __ins_flags;
              inst->flags = D.37161;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.37162>; else goto <D.37163>;
              <D.37162>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.37164>;
              <D.37163>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.37164>:
            }
            <D.37136>:
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.37165 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37165;
              inst->prev = 0B;
              D.37166 = inst->prev;
              inst->next = D.37166;
              inst->opcode = 322;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37167 = inst->sreg3;
              inst->sreg2 = D.37167;
              D.37168 = inst->sreg2;
              inst->sreg1 = D.37168;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = -1;
              inst->sreg1 = _length_reg;
              inst->sreg2 = index_reg;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.37169>; else goto <D.37170>;
              <D.37169>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.37171>;
              <D.37170>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.37171>:
            }
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.37172 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37172;
              inst->prev = 0B;
              D.37173 = inst->prev;
              inst->next = D.37173;
              inst->opcode = 459;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37174 = inst->sreg3;
              inst->sreg2 = D.37174;
              D.37175 = inst->sreg2;
              inst->sreg1 = D.37175;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->data.op[1].p = "IndexOutOfRangeException";
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.37176>; else goto <D.37177>;
              <D.37176>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.37178>;
              <D.37177>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.37178>:
            }
          }
          goto <D.37179>;
          <D.37104>:
          {
            int _length_reg;

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

              __ins_flags = 32;
              D.37183 = __ins_flags & 32;
              if (D.37183 != 0) goto <D.37184>; else goto <D.37185>;
              <D.37184>:
              D.29679 = BIT_FIELD_REF <*cfg, 32, 3424>;
              D.30317 = D.29679 & 64;
              if (D.30317 != 0) goto <D.37186>; else goto <D.37187>;
              <D.37186>:
              {
                struct MonoInst * inst;

                D.29691 = cfg->mempool;
                inst = mono_mempool_alloc (D.29691, 56);
                inst->data.op[1].const_val = 0;
                D.37188 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.37188;
                inst->prev = 0B;
                D.37189 = inst->prev;
                inst->next = D.37189;
                inst->opcode = 323;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.37190 = inst->sreg3;
                inst->sreg2 = D.37190;
                D.37191 = inst->sreg2;
                inst->sreg1 = D.37191;
                D.29910 = cfg->ip;
                inst->cil_code = D.29910;
                inst->dreg = -1;
                inst->sreg1 = array_reg;
                inst->data.op[1].const_val = 0;
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                if (D.29939 != 0B) goto <D.37192>; else goto <D.37193>;
                <D.37192>:
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                D.29939->next = inst;
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                inst->prev = D.29939;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                goto <D.37194>;
                <D.37193>:
                bblock.129 = cfg->cbb;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                D.29939 = bblock.129->last_ins;
                bblock.129->code = D.29939;
                <D.37194>:
              }
              {
                struct MonoInst * inst;

                D.29691 = cfg->mempool;
                inst = mono_mempool_alloc (D.29691, 56);
                inst->data.op[1].const_val = 0;
                D.37195 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.37195;
                inst->prev = 0B;
                D.37196 = inst->prev;
                inst->next = D.37196;
                inst->opcode = 451;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.37197 = inst->sreg3;
                inst->sreg2 = D.37197;
                D.37198 = inst->sreg2;
                inst->sreg1 = D.37198;
                D.29910 = cfg->ip;
                inst->cil_code = D.29910;
                inst->data.op[1].p = "NullReferenceException";
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                if (D.29939 != 0B) goto <D.37199>; else goto <D.37200>;
                <D.37199>:
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                D.29939->next = inst;
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                inst->prev = D.29939;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                goto <D.37201>;
                <D.37200>:
                bblock.129 = cfg->cbb;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                D.29939 = bblock.129->last_ins;
                bblock.129->code = D.29939;
                <D.37201>:
              }
              goto <D.37202>;
              <D.37187>:
              <D.37202>:
              <D.37185>:
              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.37203 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37203;
              inst->prev = 0B;
              D.37204 = inst->prev;
              inst->next = D.37204;
              inst->opcode = 393;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37205 = inst->sreg3;
              inst->sreg2 = D.37205;
              D.37206 = inst->sreg2;
              inst->sreg1 = D.37206;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = _length_reg;
              inst->sreg1 = array_reg;
              inst->data.op[0].const_val = 12;
              inst->type = 1;
              D.37207 = (unsigned char) __ins_flags;
              inst->flags = D.37207;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.37208>; else goto <D.37209>;
              <D.37208>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.37210>;
              <D.37209>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.37210>:
            }
            goto <D.37211>;
            <D.37182>:
            {
              struct MonoInst * inst;
              int __ins_flags;

              __ins_flags = 64;
              D.37212 = __ins_flags & 32;
              if (D.37212 != 0) goto <D.37213>; else goto <D.37214>;
              <D.37213>:
              D.29679 = BIT_FIELD_REF <*cfg, 32, 3424>;
              D.30317 = D.29679 & 64;
              if (D.30317 != 0) goto <D.37215>; else goto <D.37216>;
              <D.37215>:
              {
                struct MonoInst * inst;

                D.29691 = cfg->mempool;
                inst = mono_mempool_alloc (D.29691, 56);
                inst->data.op[1].const_val = 0;
                D.37217 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.37217;
                inst->prev = 0B;
                D.37218 = inst->prev;
                inst->next = D.37218;
                inst->opcode = 323;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.37219 = inst->sreg3;
                inst->sreg2 = D.37219;
                D.37220 = inst->sreg2;
                inst->sreg1 = D.37220;
                D.29910 = cfg->ip;
                inst->cil_code = D.29910;
                inst->dreg = -1;
                inst->sreg1 = array_reg;
                inst->data.op[1].const_val = 0;
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                if (D.29939 != 0B) goto <D.37221>; else goto <D.37222>;
                <D.37221>:
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                D.29939->next = inst;
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                inst->prev = D.29939;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                goto <D.37223>;
                <D.37222>:
                bblock.129 = cfg->cbb;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                D.29939 = bblock.129->last_ins;
                bblock.129->code = D.29939;
                <D.37223>:
              }
              {
                struct MonoInst * inst;

                D.29691 = cfg->mempool;
                inst = mono_mempool_alloc (D.29691, 56);
                inst->data.op[1].const_val = 0;
                D.37224 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.37224;
                inst->prev = 0B;
                D.37225 = inst->prev;
                inst->next = D.37225;
                inst->opcode = 451;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.37226 = inst->sreg3;
                inst->sreg2 = D.37226;
                D.37227 = inst->sreg2;
                inst->sreg1 = D.37227;
                D.29910 = cfg->ip;
                inst->cil_code = D.29910;
                inst->data.op[1].p = "NullReferenceException";
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                if (D.29939 != 0B) goto <D.37228>; else goto <D.37229>;
                <D.37228>:
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                D.29939->next = inst;
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                inst->prev = D.29939;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                goto <D.37230>;
                <D.37229>:
                bblock.129 = cfg->cbb;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                D.29939 = bblock.129->last_ins;
                bblock.129->code = D.29939;
                <D.37230>:
              }
              goto <D.37231>;
              <D.37216>:
              <D.37231>:
              <D.37214>:
              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.37232 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37232;
              inst->prev = 0B;
              D.37233 = inst->prev;
              inst->next = D.37233;
              inst->opcode = 393;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37234 = inst->sreg3;
              inst->sreg2 = D.37234;
              D.37235 = inst->sreg2;
              inst->sreg1 = D.37235;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = _length_reg;
              inst->sreg1 = array_reg;
              inst->data.op[0].const_val = 12;
              inst->type = 1;
              D.37236 = (unsigned char) __ins_flags;
              inst->flags = D.37236;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.37237>; else goto <D.37238>;
              <D.37237>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.37239>;
              <D.37238>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.37239>:
            }
            <D.37211>:
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.37240 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37240;
              inst->prev = 0B;
              D.37241 = inst->prev;
              inst->next = D.37241;
              inst->opcode = 322;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37242 = inst->sreg3;
              inst->sreg2 = D.37242;
              D.37243 = inst->sreg2;
              inst->sreg1 = D.37243;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = -1;
              inst->sreg1 = _length_reg;
              inst->sreg2 = index_reg;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.37244>; else goto <D.37245>;
              <D.37244>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.37246>;
              <D.37245>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.37246>:
            }
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.37247 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37247;
              inst->prev = 0B;
              D.37248 = inst->prev;
              inst->next = D.37248;
              inst->opcode = 459;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37249 = inst->sreg3;
              inst->sreg2 = D.37249;
              D.37250 = inst->sreg2;
              inst->sreg1 = D.37250;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->data.op[1].p = "IndexOutOfRangeException";
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.37251>; else goto <D.37252>;
              <D.37251>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.37253>;
              <D.37252>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.37253>:
            }
          }
          <D.37179>:
          goto <D.37254>;
          <D.37085>:
          {
            struct MonoInst * ins;

            D.29691 = cfg->mempool;
            ins = mono_mempool_alloc (D.29691, 56);
            ins->data.op[1].const_val = 0;
            D.37255 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.37255;
            ins->prev = 0B;
            D.37256 = ins->prev;
            ins->next = D.37256;
            ins->opcode = 784;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.37257 = ins->sreg3;
            ins->sreg2 = D.37257;
            D.37258 = ins->sreg2;
            ins->sreg1 = D.37258;
            D.29910 = cfg->ip;
            ins->cil_code = D.29910;
            ins->sreg1 = array_reg;
            ins->sreg2 = index_reg;
            ins->data.op[1].const_val = 12;
            D.37259 = ins->flags;
            D.37260 = D.37259 | 32;
            ins->flags = D.37260;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.37261>; else goto <D.37262>;
            <D.37261>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = ins;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            ins->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            goto <D.37263>;
            <D.37262>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.37263>:
            D.30117 = cfg->flags;
            D.36888 = D.30117 | 256;
            cfg->flags = D.36888;
            bblock.129 = cfg->cbb;
            bblock.129->has_array_access = 1;
          }
          <D.37254>:
          <D.37082>:
          D.29691 = cfg->mempool;
          ins = mono_mempool_alloc (D.29691, 56);
          ins->data.op[1].const_val = 0;
          D.29906 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.29906;
          ins->prev = 0B;
          D.29907 = ins->prev;
          ins->next = D.29907;
          klass.176 = klass;
          D.34409 = &klass.176->byval_arg;
          D.37264 = mono_type_to_load_membase (cfg, D.34409);
          D.37265 = (short unsigned int) D.37264;
          ins->opcode = D.37265;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.29908 = ins->sreg3;
          ins->sreg2 = D.29908;
          D.29909 = ins->sreg2;
          ins->sreg1 = D.29909;
          D.29910 = cfg->ip;
          ins->cil_code = D.29910;
          ins->dreg = 0;
          ins->sreg1 = array_reg;
          ins->data.op[0].const_val = offset;
          ins->type = 1;
          klass.176 = klass;
          D.34409 = &klass.176->byval_arg;
          type_to_eval_stack_type (cfg, D.34409, ins);
          D.30432 = ins->type;
          D.30433 = (<unnamed type>) D.30432;
          D.37266 = alloc_dreg (cfg, D.30433);
          D.37267 = (int) D.37266;
          ins->dreg = D.37267;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.37268>; else goto <D.37269>;
          <D.37268>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = ins;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          ins->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          goto <D.37270>;
          <D.37269>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = ins;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.37270>:
        }
        goto <D.37271>;
        <D.37075>:
        klass.176 = klass;
        D.30679 = *sp;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        addr = mini_emit_ldelema_1_ins (cfg, klass.176, D.30679, D.31794, 1);
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        klass.176 = klass;
        D.34409 = &klass.176->byval_arg;
        D.37272 = mono_type_to_load_membase (cfg, D.34409);
        D.37273 = (short unsigned int) D.37272;
        ins->opcode = D.37273;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        ins->dreg = 0;
        D.37067 = addr->dreg;
        ins->sreg1 = D.37067;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        klass.176 = klass;
        D.34409 = &klass.176->byval_arg;
        type_to_eval_stack_type (cfg, D.34409, ins);
        D.30432 = ins->type;
        D.30433 = (<unnamed type>) D.30432;
        D.37274 = alloc_dreg (cfg, D.30433);
        D.37275 = (int) D.37274;
        ins->dreg = D.37275;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.37276>; else goto <D.37277>;
        <D.37276>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.37278>;
        <D.37277>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.37278>:
        <D.37271>:
        <D.37073>:
        sp.286 = sp;
        sp = sp.286 + 4;
        *sp.286 = ins;
        D.30562 = *ip;
        if (D.30562 == 163) goto <D.37280>; else goto <D.37281>;
        <D.37280>:
        ip = ip + 5;
        goto <D.37282>;
        <D.37281>:
        ip = ip + 1;
        <D.37282>:
        goto <D.26808>;
      }
      <D.27401>:
      <D.27402>:
      <D.27403>:
      <D.27404>:
      <D.27405>:
      <D.27406>:
      <D.27407>:
      <D.27408>:
      <D.27409>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 11) goto <D.37283>; else goto <D.37284>;
      <D.37283>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.37285>; else goto <D.37286>;
      <D.37285>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.37287>; else goto <D.37288>;
      <D.37287>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37288>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37286>:
      D.37289 = mini_get_debug_options ();
      D.37290 = D.37289->break_on_unverified;
      if (D.37290 != 0) goto <D.37291>; else goto unverified;
      <D.37291>:
      raise (5);
      <D.37284>:
      sp = sp + 4294967284;
      D.30117 = cfg->flags;
      D.37001 = D.30117 | 4;
      cfg->flags = D.37001;
      D.30562 = *ip;
      if (D.30562 == 164) goto <D.37292>; else goto <D.37293>;
      <D.37292>:
      D.31124 = ip + 5;
      if (D.31124 > end) goto <D.37294>; else goto <D.37295>;
      <D.37294>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.37296>; else goto <D.37297>;
      <D.37296>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.37298>; else goto <D.37299>;
      <D.37298>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37299>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37297>:
      D.37300 = mini_get_debug_options ();
      D.37301 = D.37300->break_on_unverified;
      if (D.37301 != 0) goto <D.37302>; else goto unverified;
      <D.37302>:
      raise (5);
      <D.37295>:
      D.31143 = ip + 1;
      token = mono_read32 (D.31143);
      klass.287 = mini_get_class (method, token, generic_context);
      klass = klass.287;
      klass.176 = klass;
      if (klass.176 == 0B) goto <D.37304>; else goto <D.37306>;
      <D.37306>:
      klass.176 = klass;
      D.34335 = klass.176->exception_type;
      if (D.34335 != 0) goto <D.37304>; else goto <D.37305>;
      <D.37304>:
      klass.176 = klass;
      cfg->exception_ptr = klass.176;
      D.37307 = mini_get_debug_options ();
      D.37308 = D.37307->break_on_unverified;
      if (D.37308 != 0) goto <D.37309>; else goto load_error;
      <D.37309>:
      raise (5);
      <D.37305>:
      klass.176 = klass;
      mono_class_init (klass.176);
      goto <D.37310>;
      <D.37293>:
      D.30562 = *ip;
      D.30563 = (int) D.30562;
      klass.288 = array_access_to_klass (D.30563);
      klass = klass.288;
      <D.37310>:
      D.30679 = *sp;
      D.32402 = D.30679->type;
      if (D.32402 != 6) goto <D.37312>; else goto <D.37313>;
      <D.37312>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.37314>; else goto <D.37315>;
      <D.37314>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.37316>; else goto <D.37317>;
      <D.37316>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37317>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37315>:
      D.37318 = mini_get_debug_options ();
      D.37319 = D.37318->break_on_unverified;
      if (D.37319 != 0) goto <D.37320>; else goto unverified;
      <D.37320>:
      raise (5);
      <D.37313>:
      klass.176 = klass;
      emit_array_store (cfg, klass.176, sp, 1);
      D.30562 = *ip;
      if (D.30562 == 164) goto <D.37321>; else goto <D.37322>;
      <D.37321>:
      ip = ip + 5;
      goto <D.37323>;
      <D.37322>:
      ip = ip + 1;
      <D.37323>:
      inline_costs = inline_costs + 1;
      goto <D.26808>;
      <D.27410>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.37324>; else goto <D.37325>;
      <D.37324>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.37326>; else goto <D.37327>;
      <D.37326>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.37328>; else goto <D.37329>;
      <D.37328>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37329>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37327>:
      D.37330 = mini_get_debug_options ();
      D.37331 = D.37330->break_on_unverified;
      if (D.37331 != 0) goto <D.37332>; else goto unverified;
      <D.37332>:
      raise (5);
      <D.37325>:
      sp = sp + 4294967292;
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 728;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      D.37333 = alloc_freg (cfg);
      D.37334 = (int) D.37333;
      ins->dreg = D.37334;
      ins->type = 4;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      if (D.30024 != 0B) goto <D.37335>; else goto <D.37336>;
      <D.37335>:
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      D.30024->next = ins;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      ins->prev = D.30024;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      goto <D.37337>;
      <D.37336>:
      bblock.77 = bblock;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      D.30024 = bblock.77->last_ins;
      bblock.77->code = D.30024;
      <D.37337>:
      sp.289 = sp;
      sp = sp.289 + 4;
      D.37339 = mono_decompose_opcode (cfg, ins);
      *sp.289 = D.37339;
      ip = ip + 1;
      goto <D.26808>;
      <D.27411>:
      {
        struct MonoInst * src_var;
        struct MonoInst * src;
        int klass_reg;
        int dreg;

        D.37340 = alloc_preg (cfg);
        klass_reg = (int) D.37340;
        D.37341 = alloc_preg (cfg);
        dreg = (int) D.37341;
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.37342>; else goto <D.37343>;
        <D.37342>:
        D.29629 = method->klass;
        D.31352 = D.29629->name_space;
        D.29629 = method->klass;
        D.31353 = D.29629->name;
        D.31354 = method->name;
        D.31355 = method->signature;
        D.31356 = D.31355->param_count;
        D.31357 = (int) D.31356;
        D.30562 = *ip;
        D.30563 = (int) D.30562;
        D.37344 = mono_opcode_name (D.30563);
        D.37345 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.31352, D.31353, D.31354, D.31357, D.37344, "method-to-ir.c", 10668);
        cfg->exception_message = D.37345;
        D.29771 = cfg->verbose_level;
        if (D.29771 > 1) goto <D.37346>; else goto <D.37347>;
        <D.37346>:
        D.31362 = cfg->exception_message;
        printf ("%s\n", D.31362);
        <D.37347>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.37343>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        if (D.30457 <= 3) goto <D.37348>; else goto <D.37349>;
        <D.37348>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.37350>; else goto <D.37351>;
        <D.37350>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.37352>; else goto <D.37353>;
        <D.37352>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.37353>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.37351>:
        D.37354 = mini_get_debug_options ();
        D.37355 = D.37354->break_on_unverified;
        if (D.37355 != 0) goto <D.37356>; else goto unverified;
        <D.37356>:
        raise (5);
        <D.37349>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        D.30562 = *ip;
        D.33334 = (short unsigned int) D.30562;
        ins->opcode = D.33334;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        sp = sp + 4294967292;
        D.31124 = ip + 5;
        if (D.31124 > end) goto <D.37357>; else goto <D.37358>;
        <D.37357>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.37359>; else goto <D.37360>;
        <D.37359>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.37361>; else goto <D.37362>;
        <D.37361>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.37362>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.37360>:
        D.37363 = mini_get_debug_options ();
        D.37364 = D.37363->break_on_unverified;
        if (D.37364 != 0) goto <D.37365>; else goto unverified;
        <D.37365>:
        raise (5);
        <D.37358>:
        D.31143 = ip + 1;
        D.37366 = mono_read32 (D.31143);
        klass.290 = mono_class_get_full (image, D.37366, generic_context);
        klass = klass.290;
        klass.176 = klass;
        if (klass.176 == 0B) goto <D.37368>; else goto <D.37370>;
        <D.37370>:
        klass.176 = klass;
        D.34335 = klass.176->exception_type;
        if (D.34335 != 0) goto <D.37368>; else goto <D.37369>;
        <D.37368>:
        klass.176 = klass;
        cfg->exception_ptr = klass.176;
        D.37371 = mini_get_debug_options ();
        D.37372 = D.37371->break_on_unverified;
        if (D.37372 != 0) goto <D.37373>; else goto load_error;
        <D.37373>:
        raise (5);
        <D.37369>:
        klass.176 = klass;
        mono_class_init (klass.176);
        klass.176 = klass;
        context_used = mini_class_check_context_used (cfg, klass.176);
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        D.36031 = (unsigned int) D.30872;
        D.30791 = cfg->vreg_to_inst_len;
        if (D.36031 < D.30791) goto <D.37375>; else goto <D.37376>;
        <D.37375>:
        D.30794 = cfg->vreg_to_inst;
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        D.36034 = (unsigned int) D.30872;
        D.36035 = D.36034 * 4;
        D.36036 = D.30794 + D.36035;
        iftmp.291 = *D.36036;
        goto <D.37377>;
        <D.37376>:
        iftmp.291 = 0B;
        <D.37377>:
        src_var = iftmp.291;
        if (src_var == 0B) goto <D.37378>; else goto <D.37379>;
        <D.37378>:
        D.37380 = mono_defaults.typed_reference_class;
        D.37381 = &D.37380->byval_arg;
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        src_var = mono_compile_create_var_for_vreg (cfg, D.37381, 329, D.30872);
        <D.37379>:
        D.29691 = cfg->mempool;
        src = mono_mempool_alloc (D.29691, 56);
        src->data.op[1].const_val = 0;
        D.37382 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.37382;
        src->prev = 0B;
        D.37383 = src->prev;
        src->next = D.37383;
        src->opcode = 314;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.37384 = src->sreg3;
        src->sreg2 = D.37384;
        D.37385 = src->sreg2;
        src->sreg1 = D.37385;
        D.29910 = cfg->ip;
        src->cil_code = D.29910;
        src->data.op[0].p = src_var;
        D.37386 = src_var->flags;
        D.37387 = D.37386 | 16;
        src_var->flags = D.37387;
        src->type = 5;
        D.37388 = src_var->klass;
        src->klass = D.37388;
        D.37389 = alloc_dreg (cfg, 5);
        D.37390 = (int) D.37389;
        src->dreg = D.37390;
        cfg->has_indirection = 1;
        D.29838 = cfg->gsharedvt;
        D.30765 = D.29838 != 0;
        D.30766 = (long int) D.30765;
        D.30767 = __builtin_expect (D.30766, 0);
        if (D.30767 != 0) goto <D.37391>; else goto <D.37392>;
        <D.37391>:
        D.37393 = src_var->data.op[1].vtype;
        D.37394 = mini_is_gsharedvt_variable_type (cfg, D.37393);
        if (D.37394 != 0) goto <D.37395>; else goto <D.37396>;
        <D.37395>:
        handle_gsharedvt_ldaddr (cfg);
        <D.37396>:
        <D.37392>:
        D.37398 = mono_arch_is_soft_float ();
        if (D.37398 != 0) goto <D.37399>; else goto <D.37400>;
        <D.37399>:
        D.37405 = src_var->type;
        if (D.37405 == 2) goto <D.37402>; else goto <D.37406>;
        <D.37406>:
        D.37405 = src_var->type;
        if (D.37405 == 4) goto <D.37402>; else goto <D.37403>;
        <D.37402>:
        iftmp.293 = 1;
        goto <D.37404>;
        <D.37403>:
        iftmp.293 = 0;
        <D.37404>:
        iftmp.292 = (_Bool) iftmp.293;
        goto <D.37407>;
        <D.37400>:
        D.37405 = src_var->type;
        iftmp.292 = D.37405 == 2;
        <D.37407>:
        if (iftmp.292 != 0) goto <D.37408>; else goto <D.37409>;
        <D.37408>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.37411 = src_var->dreg;
          D.37412 = D.37411 + 1;
          D.37413 = (unsigned int) D.37412;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.37413 < D.30791) goto <D.37414>; else goto <D.37415>;
          <D.37414>:
          D.30794 = cfg->vreg_to_inst;
          D.37411 = src_var->dreg;
          D.37416 = (sizetype) D.37411;
          D.37417 = D.37416 + 1;
          D.37418 = D.37417 * 4;
          D.37419 = D.30794 + D.37418;
          iftmp.294 = *D.37419;
          goto <D.37420>;
          <D.37415>:
          iftmp.294 = 0B;
          <D.37420>:
          var1 = iftmp.294;
          D.37411 = src_var->dreg;
          D.37422 = D.37411 + 2;
          D.37423 = (unsigned int) D.37422;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.37423 < D.30791) goto <D.37424>; else goto <D.37425>;
          <D.37424>:
          D.30794 = cfg->vreg_to_inst;
          D.37411 = src_var->dreg;
          D.37416 = (sizetype) D.37411;
          D.37426 = D.37416 + 2;
          D.37427 = D.37426 * 4;
          D.37428 = D.30794 + D.37427;
          iftmp.295 = *D.37428;
          goto <D.37429>;
          <D.37425>:
          iftmp.295 = 0B;
          <D.37429>:
          var2 = iftmp.295;
          D.37430 = var1 == 0B;
          D.37431 = (long int) D.37430;
          D.37432 = __builtin_expect (D.37431, 0);
          if (D.37432 != 0) goto <D.37433>; else goto <D.37434>;
          <D.37433>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10684, "var1");
          <D.37434>:
          D.37435 = var2 == 0B;
          D.37436 = (long int) D.37435;
          D.37437 = __builtin_expect (D.37436, 0);
          if (D.37437 != 0) goto <D.37438>; else goto <D.37439>;
          <D.37438>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10684, "var2");
          <D.37439>:
          D.37440 = var1->flags;
          D.37441 = D.37440 | 16;
          var1->flags = D.37441;
          D.37442 = var2->flags;
          D.37443 = D.37442 | 16;
          var2->flags = D.37443;
        }
        <D.37409>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.37444>; else goto <D.37445>;
        <D.37444>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = src;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        src->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = src;
        goto <D.37446>;
        <D.37445>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = src;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.37446>:
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.37447 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.37447;
          inst->prev = 0B;
          D.37448 = inst->prev;
          inst->next = D.37448;
          inst->opcode = 388;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.37449 = inst->sreg3;
          inst->sreg2 = D.37449;
          D.37450 = inst->sreg2;
          inst->sreg1 = D.37450;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          inst->dreg = klass_reg;
          D.37451 = src->dreg;
          inst->sreg1 = D.37451;
          inst->data.op[0].const_val = 8;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.37452>; else goto <D.37453>;
          <D.37452>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.37454>;
          <D.37453>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.37454>:
        }
        if (context_used != 0) goto <D.37455>; else goto <D.37456>;
        <D.37455>:
        {
          struct MonoInst * klass_ins;

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

            D.29691 = cfg->mempool;
            inst = mono_mempool_alloc (D.29691, 56);
            inst->data.op[1].const_val = 0;
            D.37457 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.37457;
            inst->prev = 0B;
            D.37458 = inst->prev;
            inst->next = D.37458;
            inst->opcode = 322;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.37459 = inst->sreg3;
            inst->sreg2 = D.37459;
            D.37460 = inst->sreg2;
            inst->sreg1 = D.37460;
            D.29910 = cfg->ip;
            inst->cil_code = D.29910;
            inst->dreg = -1;
            inst->sreg1 = klass_reg;
            D.37461 = klass_ins->dreg;
            inst->sreg2 = D.37461;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.37462>; else goto <D.37463>;
            <D.37462>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = inst;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            inst->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            goto <D.37464>;
            <D.37463>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.37464>:
          }
          {
            struct MonoInst * inst;

            D.29691 = cfg->mempool;
            inst = mono_mempool_alloc (D.29691, 56);
            inst->data.op[1].const_val = 0;
            D.37465 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.37465;
            inst->prev = 0B;
            D.37466 = inst->prev;
            inst->next = D.37466;
            inst->opcode = 456;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.37467 = inst->sreg3;
            inst->sreg2 = D.37467;
            D.37468 = inst->sreg2;
            inst->sreg1 = D.37468;
            D.29910 = cfg->ip;
            inst->cil_code = D.29910;
            inst->data.op[1].p = "InvalidCastException";
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.37469>; else goto <D.37470>;
            <D.37469>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = inst;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            inst->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            goto <D.37471>;
            <D.37470>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.37471>:
          }
        }
        goto <D.37472>;
        <D.37456>:
        klass.176 = klass;
        mini_emit_class_check (cfg, klass_reg, klass.176);
        <D.37472>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 388;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        ins->dreg = dreg;
        D.37451 = src->dreg;
        ins->sreg1 = D.37451;
        ins->data.op[0].const_val = 4;
        ins->type = 1;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.37473>; else goto <D.37474>;
        <D.37473>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.37475>;
        <D.37474>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.37475>:
        ins->type = 5;
        sp.296 = sp;
        sp = sp.296 + 4;
        *sp.296 = ins;
        ip = ip + 5;
        goto <D.26808>;
      }
      <D.27422>:
      {
        struct MonoInst * loc;
        struct MonoInst * addr;

        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.37477>; else goto <D.37478>;
        <D.37477>:
        D.29629 = method->klass;
        D.31352 = D.29629->name_space;
        D.29629 = method->klass;
        D.31353 = D.29629->name;
        D.31354 = method->name;
        D.31355 = method->signature;
        D.31356 = D.31355->param_count;
        D.31357 = (int) D.31356;
        D.30562 = *ip;
        D.30563 = (int) D.30562;
        D.37479 = mono_opcode_name (D.30563);
        D.37480 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.31352, D.31353, D.31354, D.31357, D.37479, "method-to-ir.c", 10708);
        cfg->exception_message = D.37480;
        D.29771 = cfg->verbose_level;
        if (D.29771 > 1) goto <D.37481>; else goto <D.37482>;
        <D.37481>:
        D.31362 = cfg->exception_message;
        printf ("%s\n", D.31362);
        <D.37482>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.37478>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        if (D.30457 <= 3) goto <D.37483>; else goto <D.37484>;
        <D.37483>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.37485>; else goto <D.37486>;
        <D.37485>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.37487>; else goto <D.37488>;
        <D.37487>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.37488>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.37486>:
        D.37489 = mini_get_debug_options ();
        D.37490 = D.37489->break_on_unverified;
        if (D.37490 != 0) goto <D.37491>; else goto unverified;
        <D.37491>:
        raise (5);
        <D.37484>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        D.30562 = *ip;
        D.33334 = (short unsigned int) D.30562;
        ins->opcode = D.33334;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        sp = sp + 4294967292;
        D.31124 = ip + 5;
        if (D.31124 > end) goto <D.37492>; else goto <D.37493>;
        <D.37492>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.37494>; else goto <D.37495>;
        <D.37494>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.37496>; else goto <D.37497>;
        <D.37496>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.37497>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.37495>:
        D.37498 = mini_get_debug_options ();
        D.37499 = D.37498->break_on_unverified;
        if (D.37499 != 0) goto <D.37500>; else goto unverified;
        <D.37500>:
        raise (5);
        <D.37493>:
        D.31143 = ip + 1;
        D.37501 = mono_read32 (D.31143);
        klass.297 = mono_class_get_full (image, D.37501, generic_context);
        klass = klass.297;
        klass.176 = klass;
        if (klass.176 == 0B) goto <D.37503>; else goto <D.37505>;
        <D.37505>:
        klass.176 = klass;
        D.34335 = klass.176->exception_type;
        if (D.34335 != 0) goto <D.37503>; else goto <D.37504>;
        <D.37503>:
        klass.176 = klass;
        cfg->exception_ptr = klass.176;
        D.37506 = mini_get_debug_options ();
        D.37507 = D.37506->break_on_unverified;
        if (D.37507 != 0) goto <D.37508>; else goto load_error;
        <D.37508>:
        raise (5);
        <D.37504>:
        klass.176 = klass;
        mono_class_init (klass.176);
        klass.176 = klass;
        context_used = mini_class_check_context_used (cfg, klass.176);
        D.37380 = mono_defaults.typed_reference_class;
        D.37381 = &D.37380->byval_arg;
        loc = mono_compile_create_var (cfg, D.37381, 329);
        D.29691 = cfg->mempool;
        addr = mono_mempool_alloc (D.29691, 56);
        addr->data.op[1].const_val = 0;
        D.37509 = addr->data.op[1].const_val;
        addr->data.op[0].const_val = D.37509;
        addr->prev = 0B;
        D.37510 = addr->prev;
        addr->next = D.37510;
        addr->opcode = 314;
        addr->flags = 0;
        addr->type = 0;
        addr->dreg = -1;
        addr->sreg3 = -1;
        D.37511 = addr->sreg3;
        addr->sreg2 = D.37511;
        D.37512 = addr->sreg2;
        addr->sreg1 = D.37512;
        D.29910 = cfg->ip;
        addr->cil_code = D.29910;
        D.30422 = cfg->varinfo;
        D.37513 = loc->data.op[0].const_val;
        D.37514 = (unsigned int) D.37513;
        D.37515 = D.37514 * 4;
        D.37516 = D.30422 + D.37515;
        D.37517 = *D.37516;
        addr->data.op[0].p = D.37517;
        D.30422 = cfg->varinfo;
        D.37513 = loc->data.op[0].const_val;
        D.37514 = (unsigned int) D.37513;
        D.37515 = D.37514 * 4;
        D.37516 = D.30422 + D.37515;
        D.37517 = *D.37516;
        D.30422 = cfg->varinfo;
        D.37513 = loc->data.op[0].const_val;
        D.37514 = (unsigned int) D.37513;
        D.37515 = D.37514 * 4;
        D.37516 = D.30422 + D.37515;
        D.37517 = *D.37516;
        D.37518 = D.37517->flags;
        D.37519 = D.37518 | 16;
        D.37517->flags = D.37519;
        addr->type = 5;
        D.30422 = cfg->varinfo;
        D.37513 = loc->data.op[0].const_val;
        D.37514 = (unsigned int) D.37513;
        D.37515 = D.37514 * 4;
        D.37516 = D.30422 + D.37515;
        D.37517 = *D.37516;
        D.37520 = D.37517->klass;
        addr->klass = D.37520;
        D.37521 = alloc_dreg (cfg, 5);
        D.37522 = (int) D.37521;
        addr->dreg = D.37522;
        cfg->has_indirection = 1;
        D.29838 = cfg->gsharedvt;
        D.30765 = D.29838 != 0;
        D.30766 = (long int) D.30765;
        D.30767 = __builtin_expect (D.30766, 0);
        if (D.30767 != 0) goto <D.37523>; else goto <D.37524>;
        <D.37523>:
        D.30422 = cfg->varinfo;
        D.37513 = loc->data.op[0].const_val;
        D.37514 = (unsigned int) D.37513;
        D.37515 = D.37514 * 4;
        D.37516 = D.30422 + D.37515;
        D.37517 = *D.37516;
        D.37525 = D.37517->data.op[1].vtype;
        D.37526 = mini_is_gsharedvt_variable_type (cfg, D.37525);
        if (D.37526 != 0) goto <D.37527>; else goto <D.37528>;
        <D.37527>:
        handle_gsharedvt_ldaddr (cfg);
        <D.37528>:
        <D.37524>:
        D.37530 = mono_arch_is_soft_float ();
        if (D.37530 != 0) goto <D.37531>; else goto <D.37532>;
        <D.37531>:
        D.30422 = cfg->varinfo;
        D.37513 = loc->data.op[0].const_val;
        D.37514 = (unsigned int) D.37513;
        D.37515 = D.37514 * 4;
        D.37516 = D.30422 + D.37515;
        D.37517 = *D.37516;
        D.37537 = D.37517->type;
        if (D.37537 == 2) goto <D.37534>; else goto <D.37538>;
        <D.37538>:
        D.30422 = cfg->varinfo;
        D.37513 = loc->data.op[0].const_val;
        D.37514 = (unsigned int) D.37513;
        D.37515 = D.37514 * 4;
        D.37516 = D.30422 + D.37515;
        D.37517 = *D.37516;
        D.37537 = D.37517->type;
        if (D.37537 == 4) goto <D.37534>; else goto <D.37535>;
        <D.37534>:
        iftmp.299 = 1;
        goto <D.37536>;
        <D.37535>:
        iftmp.299 = 0;
        <D.37536>:
        iftmp.298 = (_Bool) iftmp.299;
        goto <D.37539>;
        <D.37532>:
        D.30422 = cfg->varinfo;
        D.37513 = loc->data.op[0].const_val;
        D.37514 = (unsigned int) D.37513;
        D.37515 = D.37514 * 4;
        D.37516 = D.30422 + D.37515;
        D.37517 = *D.37516;
        D.37537 = D.37517->type;
        iftmp.298 = D.37537 == 2;
        <D.37539>:
        if (iftmp.298 != 0) goto <D.37540>; else goto <D.37541>;
        <D.37540>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.30422 = cfg->varinfo;
          D.37513 = loc->data.op[0].const_val;
          D.37514 = (unsigned int) D.37513;
          D.37515 = D.37514 * 4;
          D.37516 = D.30422 + D.37515;
          D.37517 = *D.37516;
          D.37543 = D.37517->dreg;
          D.37544 = D.37543 + 1;
          D.37545 = (unsigned int) D.37544;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.37545 < D.30791) goto <D.37546>; else goto <D.37547>;
          <D.37546>:
          D.30794 = cfg->vreg_to_inst;
          D.30422 = cfg->varinfo;
          D.37513 = loc->data.op[0].const_val;
          D.37514 = (unsigned int) D.37513;
          D.37515 = D.37514 * 4;
          D.37516 = D.30422 + D.37515;
          D.37517 = *D.37516;
          D.37543 = D.37517->dreg;
          D.37548 = (sizetype) D.37543;
          D.37549 = D.37548 + 1;
          D.37550 = D.37549 * 4;
          D.37551 = D.30794 + D.37550;
          iftmp.300 = *D.37551;
          goto <D.37552>;
          <D.37547>:
          iftmp.300 = 0B;
          <D.37552>:
          var1 = iftmp.300;
          D.30422 = cfg->varinfo;
          D.37513 = loc->data.op[0].const_val;
          D.37514 = (unsigned int) D.37513;
          D.37515 = D.37514 * 4;
          D.37516 = D.30422 + D.37515;
          D.37517 = *D.37516;
          D.37543 = D.37517->dreg;
          D.37554 = D.37543 + 2;
          D.37555 = (unsigned int) D.37554;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.37555 < D.30791) goto <D.37556>; else goto <D.37557>;
          <D.37556>:
          D.30794 = cfg->vreg_to_inst;
          D.30422 = cfg->varinfo;
          D.37513 = loc->data.op[0].const_val;
          D.37514 = (unsigned int) D.37513;
          D.37515 = D.37514 * 4;
          D.37516 = D.30422 + D.37515;
          D.37517 = *D.37516;
          D.37543 = D.37517->dreg;
          D.37548 = (sizetype) D.37543;
          D.37558 = D.37548 + 2;
          D.37559 = D.37558 * 4;
          D.37560 = D.30794 + D.37559;
          iftmp.301 = *D.37560;
          goto <D.37561>;
          <D.37557>:
          iftmp.301 = 0B;
          <D.37561>:
          var2 = iftmp.301;
          D.37562 = var1 == 0B;
          D.37563 = (long int) D.37562;
          D.37564 = __builtin_expect (D.37563, 0);
          if (D.37564 != 0) goto <D.37565>; else goto <D.37566>;
          <D.37565>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10721, "var1");
          <D.37566>:
          D.37567 = var2 == 0B;
          D.37568 = (long int) D.37567;
          D.37569 = __builtin_expect (D.37568, 0);
          if (D.37569 != 0) goto <D.37570>; else goto <D.37571>;
          <D.37570>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10721, "var2");
          <D.37571>:
          D.37572 = var1->flags;
          D.37573 = D.37572 | 16;
          var1->flags = D.37573;
          D.37574 = var2->flags;
          D.37575 = D.37574 | 16;
          var2->flags = D.37575;
        }
        <D.37541>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.37576>; else goto <D.37577>;
        <D.37576>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = addr;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        addr->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = addr;
        goto <D.37578>;
        <D.37577>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = addr;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.37578>:
        if (context_used != 0) goto <D.37579>; else goto <D.37580>;
        <D.37579>:
        {
          struct MonoInst * const_ins;
          int type_reg;

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

            D.29691 = cfg->mempool;
            inst = mono_mempool_alloc (D.29691, 56);
            inst->data.op[1].const_val = 0;
            D.37582 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.37582;
            inst->prev = 0B;
            D.37583 = inst->prev;
            inst->next = D.37583;
            inst->opcode = 377;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.37584 = inst->sreg3;
            inst->sreg2 = D.37584;
            D.37585 = inst->sreg2;
            inst->sreg1 = D.37585;
            D.29910 = cfg->ip;
            inst->cil_code = D.29910;
            D.37586 = const_ins->dreg;
            inst->sreg1 = D.37586;
            D.37587 = addr->dreg;
            inst->dreg = D.37587;
            inst->data.op[0].const_val = 8;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.37588>; else goto <D.37589>;
            <D.37588>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = inst;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            inst->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            goto <D.37590>;
            <D.37589>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.37590>:
          }
          {
            struct MonoInst * inst;

            D.29691 = cfg->mempool;
            inst = mono_mempool_alloc (D.29691, 56);
            inst->data.op[1].const_val = 0;
            D.37591 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.37591;
            inst->prev = 0B;
            D.37592 = inst->prev;
            inst->next = D.37592;
            inst->opcode = 429;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.37593 = inst->sreg3;
            inst->sreg2 = D.37593;
            D.37594 = inst->sreg2;
            inst->sreg1 = D.37594;
            D.29910 = cfg->ip;
            inst->cil_code = D.29910;
            inst->dreg = type_reg;
            D.37586 = const_ins->dreg;
            inst->sreg1 = D.37586;
            inst->data.op[1].const_val = 128;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.37595>; else goto <D.37596>;
            <D.37595>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = inst;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            inst->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            goto <D.37597>;
            <D.37596>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.37597>:
          }
          {
            struct MonoInst * inst;

            D.29691 = cfg->mempool;
            inst = mono_mempool_alloc (D.29691, 56);
            inst->data.op[1].const_val = 0;
            D.37598 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.37598;
            inst->prev = 0B;
            D.37599 = inst->prev;
            inst->next = D.37599;
            inst->opcode = 377;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.37600 = inst->sreg3;
            inst->sreg2 = D.37600;
            D.37601 = inst->sreg2;
            inst->sreg1 = D.37601;
            D.29910 = cfg->ip;
            inst->cil_code = D.29910;
            inst->sreg1 = type_reg;
            D.37587 = addr->dreg;
            inst->dreg = D.37587;
            inst->data.op[0].const_val = 0;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.37602>; else goto <D.37603>;
            <D.37602>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = inst;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            inst->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            goto <D.37604>;
            <D.37603>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.37604>:
          }
        }
        goto <D.37605>;
        <D.37580>:
        D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.30082 = D.30081 & 64;
        if (D.30082 != 0) goto <D.37606>; else goto <D.37607>;
        <D.37606>:
        {
          int const_reg;
          int type_reg;

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

            D.29691 = cfg->mempool;
            inst = mono_mempool_alloc (D.29691, 56);
            inst->data.op[1].const_val = 0;
            D.37610 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.37610;
            inst->prev = 0B;
            D.37611 = inst->prev;
            inst->next = D.37611;
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.37613>; else goto <D.37614>;
            <D.37613>:
            iftmp.302 = 732;
            goto <D.37615>;
            <D.37614>:
            iftmp.302 = 362;
            <D.37615>:
            inst->opcode = iftmp.302;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.37616 = inst->sreg3;
            inst->sreg2 = D.37616;
            D.37617 = inst->sreg2;
            inst->sreg1 = D.37617;
            D.29910 = cfg->ip;
            inst->cil_code = D.29910;
            inst->dreg = const_reg;
            klass.176 = klass;
            inst->data.op[0].p = klass.176;
            inst->data.op[1].const_val = 11;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.37618>; else goto <D.37619>;
            <D.37618>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = inst;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            inst->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            goto <D.37620>;
            <D.37619>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.37620>:
          }
          {
            struct MonoInst * inst;

            D.29691 = cfg->mempool;
            inst = mono_mempool_alloc (D.29691, 56);
            inst->data.op[1].const_val = 0;
            D.37621 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.37621;
            inst->prev = 0B;
            D.37622 = inst->prev;
            inst->next = D.37622;
            inst->opcode = 377;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.37623 = inst->sreg3;
            inst->sreg2 = D.37623;
            D.37624 = inst->sreg2;
            inst->sreg1 = D.37624;
            D.29910 = cfg->ip;
            inst->cil_code = D.29910;
            inst->sreg1 = const_reg;
            D.37587 = addr->dreg;
            inst->dreg = D.37587;
            inst->data.op[0].const_val = 8;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.37625>; else goto <D.37626>;
            <D.37625>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = inst;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            inst->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            goto <D.37627>;
            <D.37626>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.37627>:
          }
          {
            struct MonoInst * inst;

            D.29691 = cfg->mempool;
            inst = mono_mempool_alloc (D.29691, 56);
            inst->data.op[1].const_val = 0;
            D.37628 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.37628;
            inst->prev = 0B;
            D.37629 = inst->prev;
            inst->next = D.37629;
            inst->opcode = 429;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.37630 = inst->sreg3;
            inst->sreg2 = D.37630;
            D.37631 = inst->sreg2;
            inst->sreg1 = D.37631;
            D.29910 = cfg->ip;
            inst->cil_code = D.29910;
            inst->dreg = type_reg;
            inst->sreg1 = const_reg;
            inst->data.op[1].const_val = 128;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.37632>; else goto <D.37633>;
            <D.37632>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = inst;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            inst->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            goto <D.37634>;
            <D.37633>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.37634>:
          }
          {
            struct MonoInst * inst;

            D.29691 = cfg->mempool;
            inst = mono_mempool_alloc (D.29691, 56);
            inst->data.op[1].const_val = 0;
            D.37635 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.37635;
            inst->prev = 0B;
            D.37636 = inst->prev;
            inst->next = D.37636;
            inst->opcode = 377;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.37637 = inst->sreg3;
            inst->sreg2 = D.37637;
            D.37638 = inst->sreg2;
            inst->sreg1 = D.37638;
            D.29910 = cfg->ip;
            inst->cil_code = D.29910;
            inst->sreg1 = type_reg;
            D.37587 = addr->dreg;
            inst->dreg = D.37587;
            inst->data.op[0].const_val = 0;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.37639>; else goto <D.37640>;
            <D.37639>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = inst;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            inst->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            goto <D.37641>;
            <D.37640>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = inst;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.37641>:
          }
        }
        goto <D.37642>;
        <D.37607>:
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.37643 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.37643;
          inst->prev = 0B;
          D.37644 = inst->prev;
          inst->next = D.37644;
          inst->opcode = 384;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.37645 = inst->sreg3;
          inst->sreg2 = D.37645;
          D.37646 = inst->sreg2;
          inst->sreg1 = D.37646;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          D.37587 = addr->dreg;
          inst->dreg = D.37587;
          inst->data.op[0].const_val = 0;
          klass.176 = klass;
          D.34409 = &klass.176->byval_arg;
          D.37647 = (int) D.34409;
          inst->data.op[1].const_val = D.37647;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.37648>; else goto <D.37649>;
          <D.37648>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.37650>;
          <D.37649>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.37650>:
        }
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.37651 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.37651;
          inst->prev = 0B;
          D.37652 = inst->prev;
          inst->next = D.37652;
          inst->opcode = 384;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.37653 = inst->sreg3;
          inst->sreg2 = D.37653;
          D.37654 = inst->sreg2;
          inst->sreg1 = D.37654;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          D.37587 = addr->dreg;
          inst->dreg = D.37587;
          inst->data.op[0].const_val = 8;
          klass.176 = klass;
          klass.303 = (int) klass.176;
          inst->data.op[1].const_val = klass.303;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.37656>; else goto <D.37657>;
          <D.37656>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.37658>;
          <D.37657>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.37658>:
        }
        <D.37642>:
        <D.37605>:
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.37659 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.37659;
          inst->prev = 0B;
          D.37660 = inst->prev;
          inst->next = D.37660;
          inst->opcode = 377;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.37661 = inst->sreg3;
          inst->sreg2 = D.37661;
          D.37662 = inst->sreg2;
          inst->sreg1 = D.37662;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          D.30679 = *sp;
          D.30872 = D.30679->dreg;
          inst->sreg1 = D.30872;
          D.37587 = addr->dreg;
          inst->dreg = D.37587;
          inst->data.op[0].const_val = 4;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.37663>; else goto <D.37664>;
          <D.37663>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.37665>;
          <D.37664>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.37665>:
        }
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 424;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        D.30422 = cfg->varinfo;
        D.37513 = loc->data.op[0].const_val;
        D.37514 = (unsigned int) D.37513;
        D.37515 = D.37514 * 4;
        D.37516 = D.30422 + D.37515;
        D.37517 = *D.37516;
        D.37525 = D.37517->data.op[1].vtype;
        D.37666 = mono_type_to_regmove (cfg, D.37525);
        D.37667 = (short unsigned int) D.37666;
        ins->opcode = D.37667;
        D.30422 = cfg->varinfo;
        D.37513 = loc->data.op[0].const_val;
        D.37514 = (unsigned int) D.37513;
        D.37515 = D.37514 * 4;
        D.37516 = D.30422 + D.37515;
        D.37517 = *D.37516;
        D.37525 = D.37517->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.37525, ins);
        D.30422 = cfg->varinfo;
        D.37513 = loc->data.op[0].const_val;
        D.37514 = (unsigned int) D.37513;
        D.37515 = D.37514 * 4;
        D.37516 = D.30422 + D.37515;
        D.37517 = *D.37516;
        D.37520 = D.37517->klass;
        ins->klass = D.37520;
        D.30422 = cfg->varinfo;
        D.37513 = loc->data.op[0].const_val;
        D.37514 = (unsigned int) D.37513;
        D.37515 = D.37514 * 4;
        D.37516 = D.30422 + D.37515;
        D.37517 = *D.37516;
        D.37543 = D.37517->dreg;
        ins->sreg1 = D.37543;
        D.30432 = ins->type;
        D.30433 = (<unnamed type>) D.30432;
        D.37668 = alloc_dreg (cfg, D.30433);
        D.37669 = (int) D.37668;
        ins->dreg = D.37669;
        D.30436 = ins->opcode;
        if (D.30436 == 427) goto <D.37670>; else goto <D.37671>;
        <D.37670>:
        D.30422 = cfg->varinfo;
        D.37513 = loc->data.op[0].const_val;
        D.37514 = (unsigned int) D.37513;
        D.37515 = D.37514 * 4;
        D.37516 = D.30422 + D.37515;
        D.37517 = *D.37516;
        D.37525 = D.37517->data.op[1].vtype;
        D.37672 = mono_class_from_mono_type (D.37525);
        ins->klass = D.37672;
        <D.37671>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.37673>; else goto <D.37674>;
        <D.37673>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.37675>;
        <D.37674>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.37675>:
        ins->type = 7;
        D.37380 = mono_defaults.typed_reference_class;
        ins->klass = D.37380;
        sp.304 = sp;
        sp = sp.304 + 4;
        *sp.304 = ins;
        ip = ip + 5;
        goto <D.26808>;
      }
      <D.27441>:
      {
        void * handle;
        struct MonoClass * handle_class;

        try
          {
            sp.84 = (int) sp;
            stack_start.85 = (int) stack_start;
            D.30457 = sp.84 - stack_start.85;
            D.30458 = D.30457 /[ex] 4;
            D.30371 = header->max_stack;
            D.30372 = (int) D.30371;
            if (D.30458 >= D.30372) goto <D.37677>; else goto <D.37678>;
            <D.37677>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.37679>; else goto <D.37680>;
            <D.37679>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.37681>; else goto <D.37682>;
            <D.37681>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.37682>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.37680>:
            D.37683 = mini_get_debug_options ();
            D.37684 = D.37683->break_on_unverified;
            if (D.37684 != 0) goto <D.37685>; else goto unverified;
            <D.37685>:
            raise (5);
            <D.37678>:
            D.31124 = ip + 5;
            if (D.31124 > end) goto <D.37686>; else goto <D.37687>;
            <D.37686>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.37688>; else goto <D.37689>;
            <D.37688>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.37690>; else goto <D.37691>;
            <D.37690>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.37691>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.37689>:
            D.37692 = mini_get_debug_options ();
            D.37693 = D.37692->break_on_unverified;
            if (D.37693 != 0) goto <D.37694>; else goto unverified;
            <D.37694>:
            raise (5);
            <D.37687>:
            D.31143 = ip + 1;
            D.37695 = mono_read32 (D.31143);
            n = (int) D.37695;
            D.29634 = BIT_FIELD_REF <*method, 32, 160>;
            D.29635 = D.29634 & 124;
            if (D.29635 == 68) goto <D.37696>; else goto <D.37699>;
            <D.37699>:
            D.29634 = BIT_FIELD_REF <*method, 32, 160>;
            D.29635 = D.29634 & 124;
            if (D.29635 == 64) goto <D.37696>; else goto <D.37697>;
            <D.37696>:
            n.181 = (unsigned int) n;
            handle = mono_method_get_wrapper_data (method, n.181);
            D.37700 = n + 1;
            D.37701 = (unsigned int) D.37700;
            handle_class.305 = mono_method_get_wrapper_data (method, D.37701);
            handle_class = handle_class.305;
            D.37703 = mono_defaults.typehandle_class;
            handle_class.306 = handle_class;
            if (D.37703 == handle_class.306) goto <D.37705>; else goto <D.37706>;
            <D.37705>:
            handle = &MEM[(struct MonoClass *)handle].byval_arg;
            <D.37706>:
            goto <D.37698>;
            <D.37697>:
            n.184 = (unsigned int) n;
            handle = mono_ldtoken (image, n.184, &handle_class, generic_context);
            <D.37698>:
            if (handle == 0B) goto <D.37707>; else goto <D.37708>;
            <D.37707>:
            D.37709 = mini_get_debug_options ();
            D.37710 = D.37709->break_on_unverified;
            if (D.37710 != 0) goto <D.37711>; else goto load_error;
            <D.37711>:
            raise (5);
            <D.37708>:
            handle_class.306 = handle_class;
            mono_class_init (handle_class.306);
            D.29727 = cfg->generic_sharing_context;
            if (D.29727 != 0B) goto <D.37712>; else goto <D.37713>;
            <D.37712>:
            D.37714 = n >> 24;
            D.37715 = (unsigned int) D.37714;
            D.37716 = D.37715 + 4294967295;
            if (D.37716 <= 1) goto <D.37717>; else goto <D.37718>;
            <D.37717>:
            context_used = 0;
            goto <D.37719>;
            <D.37718>:
            D.37703 = mono_defaults.typehandle_class;
            handle_class.306 = handle_class;
            if (D.37703 == handle_class.306) goto <D.37720>; else goto <D.37721>;
            <D.37720>:
            D.37722 = mono_type_get_type (handle);
            if (D.37722 == 18) goto <D.37723>; else goto <D.37724>;
            <D.37723>:
            context_used = 0;
            goto <D.37725>;
            <D.37724>:
            D.37726 = mono_class_from_mono_type (handle);
            context_used = mini_class_check_context_used (cfg, D.37726);
            <D.37725>:
            goto <D.37727>;
            <D.37721>:
            D.37728 = mono_defaults.fieldhandle_class;
            handle_class.306 = handle_class;
            if (D.37728 == handle_class.306) goto <D.37729>; else goto <D.37730>;
            <D.37729>:
            D.37731 = MEM[(struct MonoClassField *)handle].parent;
            context_used = mini_class_check_context_used (cfg, D.37731);
            goto <D.37732>;
            <D.37730>:
            D.37733 = mono_defaults.methodhandle_class;
            handle_class.306 = handle_class;
            if (D.37733 == handle_class.306) goto <D.37734>; else goto <D.37735>;
            <D.37734>:
            context_used = mini_method_check_context_used (cfg, handle);
            goto <D.37736>;
            <D.37735>:
            monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 10795);
            <D.37736>:
            <D.37732>:
            <D.37727>:
            <D.37719>:
            <D.37713>:
            D.30079 = cfg->opt;
            D.30080 = D.30079 & 512;
            if (D.30080 != 0) goto <D.37739>; else goto <D.37737>;
            <D.37739>:
            D.29634 = BIT_FIELD_REF <*method, 32, 160>;
            D.29635 = D.29634 & 124;
            if (D.29635 != 68) goto <D.37740>; else goto <D.37737>;
            <D.37740>:
            D.29634 = BIT_FIELD_REF <*method, 32, 160>;
            D.29635 = D.29634 & 124;
            if (D.29635 != 64) goto <D.37741>; else goto <D.37737>;
            <D.37741>:
            {
              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.306 = handle_class;
                  D.37742 = &handle_class.306->byval_arg;
                  vtvar = mono_compile_create_var (cfg, D.37742, 329);
                  D.29691 = cfg->mempool;
                  D.37743 = mono_mempool_alloc (D.29691, 56);
                  iargs[0] = D.37743;
                  D.37744 = iargs[0];
                  D.37744 = iargs[0];
                  D.37744->data.op[1].const_val = 0;
                  D.37745 = D.37744->data.op[1].const_val;
                  D.37744->data.op[0].const_val = D.37745;
                  D.37744 = iargs[0];
                  D.37744 = iargs[0];
                  D.37744->prev = 0B;
                  D.37746 = D.37744->prev;
                  D.37744->next = D.37746;
                  D.37744 = iargs[0];
                  D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
                  D.30082 = D.30081 & 64;
                  if (D.30082 != 0) goto <D.37748>; else goto <D.37749>;
                  <D.37748>:
                  iftmp.307 = 732;
                  goto <D.37750>;
                  <D.37749>:
                  iftmp.307 = 362;
                  <D.37750>:
                  D.37744->opcode = iftmp.307;
                  D.37744 = iargs[0];
                  D.37744->flags = 0;
                  D.37744 = iargs[0];
                  D.37744->type = 0;
                  D.37744 = iargs[0];
                  D.37744->dreg = -1;
                  D.37744 = iargs[0];
                  D.37744 = iargs[0];
                  D.37744 = iargs[0];
                  D.37744->sreg3 = -1;
                  D.37751 = D.37744->sreg3;
                  D.37744->sreg2 = D.37751;
                  D.37752 = D.37744->sreg2;
                  D.37744->sreg1 = D.37752;
                  D.37744 = iargs[0];
                  D.29910 = cfg->ip;
                  D.37744->cil_code = D.29910;
                  D.37744 = iargs[0];
                  D.37744->data.op[0].p = image;
                  D.37744 = iargs[0];
                  D.37744->data.op[1].src = 12B;
                  D.37744 = iargs[0];
                  D.37744->type = 3;
                  D.37744 = iargs[0];
                  D.37753 = alloc_dreg (cfg, 3);
                  D.37754 = (int) D.37753;
                  D.37744->dreg = D.37754;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.37755>; else goto <D.37756>;
                  <D.37755>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.37744 = iargs[0];
                  D.29939->next = D.37744;
                  D.37744 = iargs[0];
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.37744->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  D.37744 = iargs[0];
                  bblock.129->last_ins = D.37744;
                  goto <D.37757>;
                  <D.37756>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  D.37744 = iargs[0];
                  bblock.129->last_ins = D.37744;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.37757>:
                  D.29691 = cfg->mempool;
                  D.37758 = mono_mempool_alloc (D.29691, 56);
                  iargs[1] = D.37758;
                  D.37759 = iargs[1];
                  D.37759 = iargs[1];
                  D.37759->data.op[1].const_val = 0;
                  D.37760 = D.37759->data.op[1].const_val;
                  D.37759->data.op[0].const_val = D.37760;
                  D.37759 = iargs[1];
                  D.37759 = iargs[1];
                  D.37759->prev = 0B;
                  D.37761 = D.37759->prev;
                  D.37759->next = D.37761;
                  D.37759 = iargs[1];
                  D.37759->opcode = 362;
                  D.37759 = iargs[1];
                  D.37759->flags = 0;
                  D.37759 = iargs[1];
                  D.37759->type = 0;
                  D.37759 = iargs[1];
                  D.37759->dreg = -1;
                  D.37759 = iargs[1];
                  D.37759 = iargs[1];
                  D.37759 = iargs[1];
                  D.37759->sreg3 = -1;
                  D.37762 = D.37759->sreg3;
                  D.37759->sreg2 = D.37762;
                  D.37763 = D.37759->sreg2;
                  D.37759->sreg1 = D.37763;
                  D.37759 = iargs[1];
                  D.29910 = cfg->ip;
                  D.37759->cil_code = D.29910;
                  D.37759 = iargs[1];
                  D.37759->data.op[0].const_val = n;
                  D.37759 = iargs[1];
                  D.37759->type = 1;
                  D.37759 = iargs[1];
                  D.37764 = alloc_dreg (cfg, 1);
                  D.37765 = (int) D.37764;
                  D.37759->dreg = D.37765;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.37766>; else goto <D.37767>;
                  <D.37766>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.37759 = iargs[1];
                  D.29939->next = D.37759;
                  D.37759 = iargs[1];
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.37759->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  D.37759 = iargs[1];
                  bblock.129->last_ins = D.37759;
                  goto <D.37768>;
                  <D.37767>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  D.37759 = iargs[1];
                  bblock.129->last_ins = D.37759;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.37768>:
                  if (method_context_used != 0) goto <D.37769>; else goto <D.37770>;
                  <D.37769>:
                  D.37771 = emit_get_rgctx_method (cfg, method_context_used, method, 5);
                  iargs[2] = D.37771;
                  ins = mono_emit_jit_icall (cfg, mono_ldtoken_wrapper_generic_shared, &iargs);
                  goto <D.37772>;
                  <D.37770>:
                  D.29691 = cfg->mempool;
                  D.37773 = mono_mempool_alloc (D.29691, 56);
                  iargs[2] = D.37773;
                  D.37774 = iargs[2];
                  D.37774 = iargs[2];
                  D.37774->data.op[1].const_val = 0;
                  D.37775 = D.37774->data.op[1].const_val;
                  D.37774->data.op[0].const_val = D.37775;
                  D.37774 = iargs[2];
                  D.37774 = iargs[2];
                  D.37774->prev = 0B;
                  D.37776 = D.37774->prev;
                  D.37774->next = D.37776;
                  D.37774 = iargs[2];
                  D.37774->opcode = 362;
                  D.37774 = iargs[2];
                  D.37774->flags = 0;
                  D.37774 = iargs[2];
                  D.37774->type = 0;
                  D.37774 = iargs[2];
                  D.37774->dreg = -1;
                  D.37774 = iargs[2];
                  D.37774 = iargs[2];
                  D.37774 = iargs[2];
                  D.37774->sreg3 = -1;
                  D.37777 = D.37774->sreg3;
                  D.37774->sreg2 = D.37777;
                  D.37778 = D.37774->sreg2;
                  D.37774->sreg1 = D.37778;
                  D.37774 = iargs[2];
                  D.29910 = cfg->ip;
                  D.37774->cil_code = D.29910;
                  D.37774 = iargs[2];
                  D.37774->data.op[0].p = generic_context;
                  D.37774 = iargs[2];
                  D.37774->type = 3;
                  D.37774 = iargs[2];
                  D.37779 = alloc_dreg (cfg, 3);
                  D.37780 = (int) D.37779;
                  D.37774->dreg = D.37780;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.37781>; else goto <D.37782>;
                  <D.37781>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.37774 = iargs[2];
                  D.29939->next = D.37774;
                  D.37774 = iargs[2];
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.37774->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  D.37774 = iargs[2];
                  bblock.129->last_ins = D.37774;
                  goto <D.37783>;
                  <D.37782>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  D.37774 = iargs[2];
                  bblock.129->last_ins = D.37774;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.37783>:
                  ins = mono_emit_jit_icall (cfg, mono_ldtoken_wrapper, &iargs);
                  <D.37772>:
                  D.29691 = cfg->mempool;
                  addr = mono_mempool_alloc (D.29691, 56);
                  addr->data.op[1].const_val = 0;
                  D.37784 = addr->data.op[1].const_val;
                  addr->data.op[0].const_val = D.37784;
                  addr->prev = 0B;
                  D.37785 = addr->prev;
                  addr->next = D.37785;
                  addr->opcode = 314;
                  addr->flags = 0;
                  addr->type = 0;
                  addr->dreg = -1;
                  addr->sreg3 = -1;
                  D.37786 = addr->sreg3;
                  addr->sreg2 = D.37786;
                  D.37787 = addr->sreg2;
                  addr->sreg1 = D.37787;
                  D.29910 = cfg->ip;
                  addr->cil_code = D.29910;
                  D.30422 = cfg->varinfo;
                  D.37788 = vtvar->data.op[0].const_val;
                  D.37789 = (unsigned int) D.37788;
                  D.37790 = D.37789 * 4;
                  D.37791 = D.30422 + D.37790;
                  D.37792 = *D.37791;
                  addr->data.op[0].p = D.37792;
                  D.30422 = cfg->varinfo;
                  D.37788 = vtvar->data.op[0].const_val;
                  D.37789 = (unsigned int) D.37788;
                  D.37790 = D.37789 * 4;
                  D.37791 = D.30422 + D.37790;
                  D.37792 = *D.37791;
                  D.30422 = cfg->varinfo;
                  D.37788 = vtvar->data.op[0].const_val;
                  D.37789 = (unsigned int) D.37788;
                  D.37790 = D.37789 * 4;
                  D.37791 = D.30422 + D.37790;
                  D.37792 = *D.37791;
                  D.37793 = D.37792->flags;
                  D.37794 = D.37793 | 16;
                  D.37792->flags = D.37794;
                  addr->type = 5;
                  D.30422 = cfg->varinfo;
                  D.37788 = vtvar->data.op[0].const_val;
                  D.37789 = (unsigned int) D.37788;
                  D.37790 = D.37789 * 4;
                  D.37791 = D.30422 + D.37790;
                  D.37792 = *D.37791;
                  D.37795 = D.37792->klass;
                  addr->klass = D.37795;
                  D.37796 = alloc_dreg (cfg, 5);
                  D.37797 = (int) D.37796;
                  addr->dreg = D.37797;
                  cfg->has_indirection = 1;
                  D.29838 = cfg->gsharedvt;
                  D.30765 = D.29838 != 0;
                  D.30766 = (long int) D.30765;
                  D.30767 = __builtin_expect (D.30766, 0);
                  if (D.30767 != 0) goto <D.37798>; else goto <D.37799>;
                  <D.37798>:
                  D.30422 = cfg->varinfo;
                  D.37788 = vtvar->data.op[0].const_val;
                  D.37789 = (unsigned int) D.37788;
                  D.37790 = D.37789 * 4;
                  D.37791 = D.30422 + D.37790;
                  D.37792 = *D.37791;
                  D.37800 = D.37792->data.op[1].vtype;
                  D.37801 = mini_is_gsharedvt_variable_type (cfg, D.37800);
                  if (D.37801 != 0) goto <D.37802>; else goto <D.37803>;
                  <D.37802>:
                  handle_gsharedvt_ldaddr (cfg);
                  <D.37803>:
                  <D.37799>:
                  D.37805 = mono_arch_is_soft_float ();
                  if (D.37805 != 0) goto <D.37806>; else goto <D.37807>;
                  <D.37806>:
                  D.30422 = cfg->varinfo;
                  D.37788 = vtvar->data.op[0].const_val;
                  D.37789 = (unsigned int) D.37788;
                  D.37790 = D.37789 * 4;
                  D.37791 = D.30422 + D.37790;
                  D.37792 = *D.37791;
                  D.37812 = D.37792->type;
                  if (D.37812 == 2) goto <D.37809>; else goto <D.37813>;
                  <D.37813>:
                  D.30422 = cfg->varinfo;
                  D.37788 = vtvar->data.op[0].const_val;
                  D.37789 = (unsigned int) D.37788;
                  D.37790 = D.37789 * 4;
                  D.37791 = D.30422 + D.37790;
                  D.37792 = *D.37791;
                  D.37812 = D.37792->type;
                  if (D.37812 == 4) goto <D.37809>; else goto <D.37810>;
                  <D.37809>:
                  iftmp.309 = 1;
                  goto <D.37811>;
                  <D.37810>:
                  iftmp.309 = 0;
                  <D.37811>:
                  iftmp.308 = (_Bool) iftmp.309;
                  goto <D.37814>;
                  <D.37807>:
                  D.30422 = cfg->varinfo;
                  D.37788 = vtvar->data.op[0].const_val;
                  D.37789 = (unsigned int) D.37788;
                  D.37790 = D.37789 * 4;
                  D.37791 = D.30422 + D.37790;
                  D.37792 = *D.37791;
                  D.37812 = D.37792->type;
                  iftmp.308 = D.37812 == 2;
                  <D.37814>:
                  if (iftmp.308 != 0) goto <D.37815>; else goto <D.37816>;
                  <D.37815>:
                  {
                    struct MonoInst * var1;
                    struct MonoInst * var2;

                    D.30422 = cfg->varinfo;
                    D.37788 = vtvar->data.op[0].const_val;
                    D.37789 = (unsigned int) D.37788;
                    D.37790 = D.37789 * 4;
                    D.37791 = D.30422 + D.37790;
                    D.37792 = *D.37791;
                    D.37818 = D.37792->dreg;
                    D.37819 = D.37818 + 1;
                    D.37820 = (unsigned int) D.37819;
                    D.30791 = cfg->vreg_to_inst_len;
                    if (D.37820 < D.30791) goto <D.37821>; else goto <D.37822>;
                    <D.37821>:
                    D.30794 = cfg->vreg_to_inst;
                    D.30422 = cfg->varinfo;
                    D.37788 = vtvar->data.op[0].const_val;
                    D.37789 = (unsigned int) D.37788;
                    D.37790 = D.37789 * 4;
                    D.37791 = D.30422 + D.37790;
                    D.37792 = *D.37791;
                    D.37818 = D.37792->dreg;
                    D.37823 = (sizetype) D.37818;
                    D.37824 = D.37823 + 1;
                    D.37825 = D.37824 * 4;
                    D.37826 = D.30794 + D.37825;
                    iftmp.310 = *D.37826;
                    goto <D.37827>;
                    <D.37822>:
                    iftmp.310 = 0B;
                    <D.37827>:
                    var1 = iftmp.310;
                    D.30422 = cfg->varinfo;
                    D.37788 = vtvar->data.op[0].const_val;
                    D.37789 = (unsigned int) D.37788;
                    D.37790 = D.37789 * 4;
                    D.37791 = D.30422 + D.37790;
                    D.37792 = *D.37791;
                    D.37818 = D.37792->dreg;
                    D.37829 = D.37818 + 2;
                    D.37830 = (unsigned int) D.37829;
                    D.30791 = cfg->vreg_to_inst_len;
                    if (D.37830 < D.30791) goto <D.37831>; else goto <D.37832>;
                    <D.37831>:
                    D.30794 = cfg->vreg_to_inst;
                    D.30422 = cfg->varinfo;
                    D.37788 = vtvar->data.op[0].const_val;
                    D.37789 = (unsigned int) D.37788;
                    D.37790 = D.37789 * 4;
                    D.37791 = D.30422 + D.37790;
                    D.37792 = *D.37791;
                    D.37818 = D.37792->dreg;
                    D.37823 = (sizetype) D.37818;
                    D.37833 = D.37823 + 2;
                    D.37834 = D.37833 * 4;
                    D.37835 = D.30794 + D.37834;
                    iftmp.311 = *D.37835;
                    goto <D.37836>;
                    <D.37832>:
                    iftmp.311 = 0B;
                    <D.37836>:
                    var2 = iftmp.311;
                    D.37837 = var1 == 0B;
                    D.37838 = (long int) D.37837;
                    D.37839 = __builtin_expect (D.37838, 0);
                    if (D.37839 != 0) goto <D.37840>; else goto <D.37841>;
                    <D.37840>:
                    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10818, "var1");
                    <D.37841>:
                    D.37842 = var2 == 0B;
                    D.37843 = (long int) D.37842;
                    D.37844 = __builtin_expect (D.37843, 0);
                    if (D.37844 != 0) goto <D.37845>; else goto <D.37846>;
                    <D.37845>:
                    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10818, "var2");
                    <D.37846>:
                    D.37847 = var1->flags;
                    D.37848 = D.37847 | 16;
                    var1->flags = D.37848;
                    D.37849 = var2->flags;
                    D.37850 = D.37849 | 16;
                    var2->flags = D.37850;
                  }
                  <D.37816>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.37851>; else goto <D.37852>;
                  <D.37851>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.29939->next = addr;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  addr->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  bblock.129->last_ins = addr;
                  goto <D.37853>;
                  <D.37852>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  bblock.129->last_ins = addr;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.37853>:
                  {
                    struct MonoInst * inst;

                    D.29691 = cfg->mempool;
                    inst = mono_mempool_alloc (D.29691, 56);
                    inst->data.op[1].const_val = 0;
                    D.37854 = inst->data.op[1].const_val;
                    inst->data.op[0].const_val = D.37854;
                    inst->prev = 0B;
                    D.37855 = inst->prev;
                    inst->next = D.37855;
                    inst->opcode = 374;
                    inst->flags = 0;
                    inst->type = 0;
                    inst->dreg = -1;
                    inst->sreg3 = -1;
                    D.37856 = inst->sreg3;
                    inst->sreg2 = D.37856;
                    D.37857 = inst->sreg2;
                    inst->sreg1 = D.37857;
                    D.29910 = cfg->ip;
                    inst->cil_code = D.29910;
                    D.30101 = ins->dreg;
                    inst->sreg1 = D.30101;
                    D.37858 = addr->dreg;
                    inst->dreg = D.37858;
                    inst->data.op[0].const_val = 0;
                    bblock.129 = cfg->cbb;
                    D.29939 = bblock.129->last_ins;
                    if (D.29939 != 0B) goto <D.37859>; else goto <D.37860>;
                    <D.37859>:
                    bblock.129 = cfg->cbb;
                    D.29939 = bblock.129->last_ins;
                    D.29939->next = inst;
                    bblock.129 = cfg->cbb;
                    D.29939 = bblock.129->last_ins;
                    inst->prev = D.29939;
                    bblock.129 = cfg->cbb;
                    bblock.129->last_ins = inst;
                    goto <D.37861>;
                    <D.37860>:
                    bblock.129 = cfg->cbb;
                    bblock.129 = cfg->cbb;
                    bblock.129->last_ins = inst;
                    D.29939 = bblock.129->last_ins;
                    bblock.129->code = D.29939;
                    <D.37861>:
                  }
                  D.29691 = cfg->mempool;
                  ins = mono_mempool_alloc (D.29691, 56);
                  ins->data.op[1].const_val = 0;
                  D.29906 = ins->data.op[1].const_val;
                  ins->data.op[0].const_val = D.29906;
                  ins->prev = 0B;
                  D.29907 = ins->prev;
                  ins->next = D.29907;
                  ins->opcode = 424;
                  ins->flags = 0;
                  ins->type = 0;
                  ins->dreg = -1;
                  ins->sreg3 = -1;
                  D.29908 = ins->sreg3;
                  ins->sreg2 = D.29908;
                  D.29909 = ins->sreg2;
                  ins->sreg1 = D.29909;
                  D.29910 = cfg->ip;
                  ins->cil_code = D.29910;
                  D.30422 = cfg->varinfo;
                  D.37788 = vtvar->data.op[0].const_val;
                  D.37789 = (unsigned int) D.37788;
                  D.37790 = D.37789 * 4;
                  D.37791 = D.30422 + D.37790;
                  D.37792 = *D.37791;
                  D.37800 = D.37792->data.op[1].vtype;
                  D.37862 = mono_type_to_regmove (cfg, D.37800);
                  D.37863 = (short unsigned int) D.37862;
                  ins->opcode = D.37863;
                  D.30422 = cfg->varinfo;
                  D.37788 = vtvar->data.op[0].const_val;
                  D.37789 = (unsigned int) D.37788;
                  D.37790 = D.37789 * 4;
                  D.37791 = D.30422 + D.37790;
                  D.37792 = *D.37791;
                  D.37800 = D.37792->data.op[1].vtype;
                  type_to_eval_stack_type (cfg, D.37800, ins);
                  D.30422 = cfg->varinfo;
                  D.37788 = vtvar->data.op[0].const_val;
                  D.37789 = (unsigned int) D.37788;
                  D.37790 = D.37789 * 4;
                  D.37791 = D.30422 + D.37790;
                  D.37792 = *D.37791;
                  D.37795 = D.37792->klass;
                  ins->klass = D.37795;
                  D.30422 = cfg->varinfo;
                  D.37788 = vtvar->data.op[0].const_val;
                  D.37789 = (unsigned int) D.37788;
                  D.37790 = D.37789 * 4;
                  D.37791 = D.30422 + D.37790;
                  D.37792 = *D.37791;
                  D.37818 = D.37792->dreg;
                  ins->sreg1 = D.37818;
                  D.30432 = ins->type;
                  D.30433 = (<unnamed type>) D.30432;
                  D.37864 = alloc_dreg (cfg, D.30433);
                  D.37865 = (int) D.37864;
                  ins->dreg = D.37865;
                  D.30436 = ins->opcode;
                  if (D.30436 == 427) goto <D.37866>; else goto <D.37867>;
                  <D.37866>:
                  D.30422 = cfg->varinfo;
                  D.37788 = vtvar->data.op[0].const_val;
                  D.37789 = (unsigned int) D.37788;
                  D.37790 = D.37789 * 4;
                  D.37791 = D.30422 + D.37790;
                  D.37792 = *D.37791;
                  D.37800 = D.37792->data.op[1].vtype;
                  D.37868 = mono_class_from_mono_type (D.37800);
                  ins->klass = D.37868;
                  <D.37867>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.37869>; else goto <D.37870>;
                  <D.37869>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.29939->next = ins;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  ins->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  bblock.129->last_ins = ins;
                  goto <D.37871>;
                  <D.37870>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  bblock.129->last_ins = ins;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.37871>:
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            goto <D.37738>;
            <D.37737>:
            D.31124 = ip + 5;
            if (D.31124 < end) goto <D.37875>; else goto <D.37872>;
            <D.37875>:
            bblock.77 = bblock;
            D.32590 = ip + 5;
            D.37876 = ip_in_bb (cfg, bblock.77, D.32590);
            if (D.37876 != 0) goto <D.37877>; else goto <D.37872>;
            <D.37877>:
            D.31124 = ip + 5;
            D.31637 = *D.31124;
            if (D.31637 == 40) goto <D.37873>; else goto <D.37878>;
            <D.37878>:
            D.31124 = ip + 5;
            D.31637 = *D.31124;
            if (D.31637 == 111) goto <D.37873>; else goto <D.37872>;
            <D.37873>:
            D.34427 = ip + 6;
            D.37879 = mono_read32 (D.34427);
            cmethod = mini_get_method (cfg, method, D.37879, 0B, generic_context);
            if (cmethod != 0B) goto <D.37880>; else goto <D.37872>;
            <D.37880>:
            D.31542 = cmethod->klass;
            D.37881 = mono_defaults.systemtype_class;
            if (D.31542 == D.37881) goto <D.37882>; else goto <D.37872>;
            <D.37882>:
            {
              size_t __s1_len;
              size_t __s2_len;

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

                __s2 = cmethod->name;
                D.37886 = "GetTypeFromHandle";
                D.37887 = MEM[(const unsigned char *)D.37886];
                D.37888 = (int) D.37887;
                D.37889 = *__s2;
                D.37890 = (int) D.37889;
                __result = D.37888 - D.37890;
                {
                  if (__s2_len != 0) goto <D.37891>; else goto <D.37892>;
                  <D.37891>:
                  if (__result == 0) goto <D.37893>; else goto <D.37894>;
                  <D.37893>:
                  D.37895 = &MEM[(void *)"GetTypeFromHandle" + 1B];
                  D.37896 = *D.37895;
                  D.37897 = (int) D.37896;
                  D.37898 = __s2 + 1;
                  D.37899 = *D.37898;
                  D.37900 = (int) D.37899;
                  __result = D.37897 - D.37900;
                  if (__s2_len > 1) goto <D.37901>; else goto <D.37902>;
                  <D.37901>:
                  if (__result == 0) goto <D.37903>; else goto <D.37904>;
                  <D.37903>:
                  D.37905 = &MEM[(void *)"GetTypeFromHandle" + 2B];
                  D.37906 = *D.37905;
                  D.37907 = (int) D.37906;
                  D.37908 = __s2 + 2;
                  D.37909 = *D.37908;
                  D.37910 = (int) D.37909;
                  __result = D.37907 - D.37910;
                  if (__s2_len > 2) goto <D.37911>; else goto <D.37912>;
                  <D.37911>:
                  if (__result == 0) goto <D.37913>; else goto <D.37914>;
                  <D.37913>:
                  D.37915 = &MEM[(void *)"GetTypeFromHandle" + 3B];
                  D.37916 = *D.37915;
                  D.37917 = (int) D.37916;
                  D.37918 = __s2 + 3;
                  D.37919 = *D.37918;
                  D.37920 = (int) D.37919;
                  __result = D.37917 - D.37920;
                  <D.37914>:
                  <D.37912>:
                  <D.37904>:
                  <D.37902>:
                  <D.37894>:
                  <D.37892>:
                }
                D.27458 = __result;
              }
              iftmp.312 = -D.27458;
              goto <D.37921>;
              <D.37885>:
              D.32059 = cmethod->name;
              iftmp.312 = __builtin_strcmp (D.32059, "GetTypeFromHandle");
              <D.37921>:
              D.27459 = iftmp.312;
            }
            if (D.27459 == 0) goto <D.37922>; else goto <D.37872>;
            <D.37922>:
            {
              struct MonoClass * tclass;

              tclass = mono_class_from_mono_type (handle);
              mono_class_init (tclass);
              if (context_used != 0) goto <D.37923>; else goto <D.37924>;
              <D.37923>:
              ins = emit_get_rgctx_klass (cfg, context_used, tclass, 4);
              goto <D.37925>;
              <D.37924>:
              D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.30082 = D.30081 & 64;
              if (D.30082 != 0) goto <D.37926>; else goto <D.37927>;
              <D.37926>:
              D.29634 = BIT_FIELD_REF <*method, 32, 160>;
              D.29635 = D.29634 & 124;
              if (D.29635 != 0) goto <D.37928>; else goto <D.37929>;
              <D.37928>:
              D.37932 = tclass->image;
              D.37933 = tclass->type_token;
              D.37934 = mono_class_get (D.37932, D.37933);
              if (D.37934 == tclass) goto <D.37935>; else goto <D.37930>;
              <D.37935>:
              if (generic_context == 0B) goto <D.37936>; else goto <D.37930>;
              <D.37936>:
              D.29691 = cfg->mempool;
              ins = mono_mempool_alloc (D.29691, 56);
              ins->data.op[1].const_val = 0;
              D.29906 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.29906;
              ins->prev = 0B;
              D.29907 = ins->prev;
              ins->next = D.29907;
              ins->opcode = 732;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.29908 = ins->sreg3;
              ins->sreg2 = D.29908;
              D.29909 = ins->sreg2;
              ins->sreg1 = D.29909;
              D.29910 = cfg->ip;
              ins->cil_code = D.29910;
              D.29691 = cfg->mempool;
              D.37932 = tclass->image;
              D.37933 = tclass->type_token;
              D.37937 = mono_jump_info_token_new2 (D.29691, D.37932, D.37933, generic_context);
              ins->data.op[0].p = D.37937;
              ins->data.op[1].p = 19B;
              ins->type = 6;
              D.37938 = mono_defaults.monotype_class;
              ins->klass = D.37938;
              D.37939 = alloc_dreg (cfg, 6);
              D.37940 = (int) D.37939;
              ins->dreg = D.37940;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.37941>; else goto <D.37942>;
              <D.37941>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = ins;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              ins->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              goto <D.37943>;
              <D.37942>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.37943>:
              goto <D.37931>;
              <D.37930>:
              D.29771 = cfg->verbose_level;
              if (D.29771 > 1) goto <D.37944>; else goto <D.37945>;
              <D.37944>:
              printf ("AOT disabled: %s:%d\n", "method-to-ir.c", 10842);
              <D.37945>:
              cfg->disable_aot = 1;
              D.29691 = cfg->mempool;
              ins = mono_mempool_alloc (D.29691, 56);
              ins->data.op[1].const_val = 0;
              D.29906 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.29906;
              ins->prev = 0B;
              D.29907 = ins->prev;
              ins->next = D.29907;
              ins->opcode = 362;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.29908 = ins->sreg3;
              ins->sreg2 = D.29908;
              D.29909 = ins->sreg2;
              ins->sreg1 = D.29909;
              D.29910 = cfg->ip;
              ins->cil_code = D.29910;
              ins->data.op[0].p = 0B;
              ins->type = 3;
              D.37946 = alloc_dreg (cfg, 3);
              D.37947 = (int) D.37946;
              ins->dreg = D.37947;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.37948>; else goto <D.37949>;
              <D.37948>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = ins;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              ins->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              goto <D.37950>;
              <D.37949>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.37950>:
              <D.37931>:
              goto <D.37951>;
              <D.37929>:
              D.29691 = cfg->mempool;
              ins = mono_mempool_alloc (D.29691, 56);
              ins->data.op[1].const_val = 0;
              D.29906 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.29906;
              ins->prev = 0B;
              D.29907 = ins->prev;
              ins->next = D.29907;
              ins->opcode = 732;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.29908 = ins->sreg3;
              ins->sreg2 = D.29908;
              D.29909 = ins->sreg2;
              ins->sreg1 = D.29909;
              D.29910 = cfg->ip;
              ins->cil_code = D.29910;
              D.29691 = cfg->mempool;
              n.181 = (unsigned int) n;
              D.37952 = mono_jump_info_token_new2 (D.29691, image, n.181, generic_context);
              ins->data.op[0].p = D.37952;
              ins->data.op[1].p = 19B;
              ins->type = 6;
              D.37938 = mono_defaults.monotype_class;
              ins->klass = D.37938;
              D.37953 = alloc_dreg (cfg, 6);
              D.37954 = (int) D.37953;
              ins->dreg = D.37954;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.37955>; else goto <D.37956>;
              <D.37955>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = ins;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              ins->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              goto <D.37957>;
              <D.37956>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.37957>:
              <D.37951>:
              goto <D.37958>;
              <D.37927>:
              D.29691 = cfg->mempool;
              ins = mono_mempool_alloc (D.29691, 56);
              ins->data.op[1].const_val = 0;
              D.29906 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.29906;
              ins->prev = 0B;
              D.29907 = ins->prev;
              ins->next = D.29907;
              ins->opcode = 362;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.29908 = ins->sreg3;
              ins->sreg2 = D.29908;
              D.29909 = ins->sreg2;
              ins->sreg1 = D.29909;
              D.29910 = cfg->ip;
              ins->cil_code = D.29910;
              D.29716 = cfg->domain;
              D.37959 = mono_type_get_object (D.29716, handle);
              ins->data.op[0].p = D.37959;
              ins->type = 3;
              D.37960 = alloc_dreg (cfg, 3);
              D.37961 = (int) D.37960;
              ins->dreg = D.37961;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.37962>; else goto <D.37963>;
              <D.37962>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = ins;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              ins->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              goto <D.37964>;
              <D.37963>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.37964>:
              <D.37958>:
              <D.37925>:
              ins->type = 6;
              D.31542 = cmethod->klass;
              ins->klass = D.31542;
              ip = ip + 5;
            }
            goto <D.37874>;
            <D.37872>:
            {
              struct MonoInst * addr;
              struct MonoInst * vtvar;

              handle_class.306 = handle_class;
              D.37742 = &handle_class.306->byval_arg;
              vtvar = mono_compile_create_var (cfg, D.37742, 329);
              if (context_used != 0) goto <D.37965>; else goto <D.37966>;
              <D.37965>:
              D.37703 = mono_defaults.typehandle_class;
              handle_class.306 = handle_class;
              if (D.37703 == handle_class.306) goto <D.37967>; else goto <D.37968>;
              <D.37967>:
              D.37969 = mono_class_from_mono_type (handle);
              ins = emit_get_rgctx_klass (cfg, context_used, D.37969, 3);
              goto <D.37970>;
              <D.37968>:
              D.37733 = mono_defaults.methodhandle_class;
              handle_class.306 = handle_class;
              if (D.37733 == handle_class.306) goto <D.37971>; else goto <D.37972>;
              <D.37971>:
              ins = emit_get_rgctx_method (cfg, context_used, handle, 5);
              goto <D.37973>;
              <D.37972>:
              D.37728 = mono_defaults.fieldhandle_class;
              handle_class.306 = handle_class;
              if (D.37728 == handle_class.306) goto <D.37974>; else goto <D.37975>;
              <D.37974>:
              ins = emit_get_rgctx_field (cfg, context_used, handle, 7);
              goto <D.37976>;
              <D.37975>:
              monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 10871);
              <D.37976>:
              <D.37973>:
              <D.37970>:
              goto <D.37977>;
              <D.37966>:
              D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.30082 = D.30081 & 64;
              if (D.30082 != 0) goto <D.37978>; else goto <D.37979>;
              <D.37978>:
              D.29691 = cfg->mempool;
              ins = mono_mempool_alloc (D.29691, 56);
              ins->data.op[1].const_val = 0;
              D.29906 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.29906;
              ins->prev = 0B;
              D.29907 = ins->prev;
              ins->next = D.29907;
              ins->opcode = 732;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.29908 = ins->sreg3;
              ins->sreg2 = D.29908;
              D.29909 = ins->sreg2;
              ins->sreg1 = D.29909;
              D.29910 = cfg->ip;
              ins->cil_code = D.29910;
              D.29691 = cfg->mempool;
              n.181 = (unsigned int) n;
              D.37980 = mono_jump_info_token_new2 (D.29691, image, n.181, generic_context);
              ins->data.op[0].p = D.37980;
              ins->data.op[1].p = 18B;
              ins->type = 3;
              ins->klass = 0B;
              D.37981 = alloc_dreg (cfg, 3);
              D.37982 = (int) D.37981;
              ins->dreg = D.37982;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.37983>; else goto <D.37984>;
              <D.37983>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = ins;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              ins->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              goto <D.37985>;
              <D.37984>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.37985>:
              goto <D.37986>;
              <D.37979>:
              D.29691 = cfg->mempool;
              ins = mono_mempool_alloc (D.29691, 56);
              ins->data.op[1].const_val = 0;
              D.29906 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.29906;
              ins->prev = 0B;
              D.29907 = ins->prev;
              ins->next = D.29907;
              ins->opcode = 362;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.29908 = ins->sreg3;
              ins->sreg2 = D.29908;
              D.29909 = ins->sreg2;
              ins->sreg1 = D.29909;
              D.29910 = cfg->ip;
              ins->cil_code = D.29910;
              ins->data.op[0].p = handle;
              ins->type = 3;
              D.37987 = alloc_dreg (cfg, 3);
              D.37988 = (int) D.37987;
              ins->dreg = D.37988;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.37989>; else goto <D.37990>;
              <D.37989>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = ins;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              ins->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              goto <D.37991>;
              <D.37990>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.37991>:
              <D.37986>:
              <D.37977>:
              D.29691 = cfg->mempool;
              addr = mono_mempool_alloc (D.29691, 56);
              addr->data.op[1].const_val = 0;
              D.37992 = addr->data.op[1].const_val;
              addr->data.op[0].const_val = D.37992;
              addr->prev = 0B;
              D.37993 = addr->prev;
              addr->next = D.37993;
              addr->opcode = 314;
              addr->flags = 0;
              addr->type = 0;
              addr->dreg = -1;
              addr->sreg3 = -1;
              D.37994 = addr->sreg3;
              addr->sreg2 = D.37994;
              D.37995 = addr->sreg2;
              addr->sreg1 = D.37995;
              D.29910 = cfg->ip;
              addr->cil_code = D.29910;
              D.30422 = cfg->varinfo;
              D.37996 = vtvar->data.op[0].const_val;
              D.37997 = (unsigned int) D.37996;
              D.37998 = D.37997 * 4;
              D.37999 = D.30422 + D.37998;
              D.38000 = *D.37999;
              addr->data.op[0].p = D.38000;
              D.30422 = cfg->varinfo;
              D.37996 = vtvar->data.op[0].const_val;
              D.37997 = (unsigned int) D.37996;
              D.37998 = D.37997 * 4;
              D.37999 = D.30422 + D.37998;
              D.38000 = *D.37999;
              D.30422 = cfg->varinfo;
              D.37996 = vtvar->data.op[0].const_val;
              D.37997 = (unsigned int) D.37996;
              D.37998 = D.37997 * 4;
              D.37999 = D.30422 + D.37998;
              D.38000 = *D.37999;
              D.38001 = D.38000->flags;
              D.38002 = D.38001 | 16;
              D.38000->flags = D.38002;
              addr->type = 5;
              D.30422 = cfg->varinfo;
              D.37996 = vtvar->data.op[0].const_val;
              D.37997 = (unsigned int) D.37996;
              D.37998 = D.37997 * 4;
              D.37999 = D.30422 + D.37998;
              D.38000 = *D.37999;
              D.38003 = D.38000->klass;
              addr->klass = D.38003;
              D.38004 = alloc_dreg (cfg, 5);
              D.38005 = (int) D.38004;
              addr->dreg = D.38005;
              cfg->has_indirection = 1;
              D.29838 = cfg->gsharedvt;
              D.30765 = D.29838 != 0;
              D.30766 = (long int) D.30765;
              D.30767 = __builtin_expect (D.30766, 0);
              if (D.30767 != 0) goto <D.38006>; else goto <D.38007>;
              <D.38006>:
              D.30422 = cfg->varinfo;
              D.37996 = vtvar->data.op[0].const_val;
              D.37997 = (unsigned int) D.37996;
              D.37998 = D.37997 * 4;
              D.37999 = D.30422 + D.37998;
              D.38000 = *D.37999;
              D.38008 = D.38000->data.op[1].vtype;
              D.38009 = mini_is_gsharedvt_variable_type (cfg, D.38008);
              if (D.38009 != 0) goto <D.38010>; else goto <D.38011>;
              <D.38010>:
              handle_gsharedvt_ldaddr (cfg);
              <D.38011>:
              <D.38007>:
              D.38013 = mono_arch_is_soft_float ();
              if (D.38013 != 0) goto <D.38014>; else goto <D.38015>;
              <D.38014>:
              D.30422 = cfg->varinfo;
              D.37996 = vtvar->data.op[0].const_val;
              D.37997 = (unsigned int) D.37996;
              D.37998 = D.37997 * 4;
              D.37999 = D.30422 + D.37998;
              D.38000 = *D.37999;
              D.38020 = D.38000->type;
              if (D.38020 == 2) goto <D.38017>; else goto <D.38021>;
              <D.38021>:
              D.30422 = cfg->varinfo;
              D.37996 = vtvar->data.op[0].const_val;
              D.37997 = (unsigned int) D.37996;
              D.37998 = D.37997 * 4;
              D.37999 = D.30422 + D.37998;
              D.38000 = *D.37999;
              D.38020 = D.38000->type;
              if (D.38020 == 4) goto <D.38017>; else goto <D.38018>;
              <D.38017>:
              iftmp.314 = 1;
              goto <D.38019>;
              <D.38018>:
              iftmp.314 = 0;
              <D.38019>:
              iftmp.313 = (_Bool) iftmp.314;
              goto <D.38022>;
              <D.38015>:
              D.30422 = cfg->varinfo;
              D.37996 = vtvar->data.op[0].const_val;
              D.37997 = (unsigned int) D.37996;
              D.37998 = D.37997 * 4;
              D.37999 = D.30422 + D.37998;
              D.38000 = *D.37999;
              D.38020 = D.38000->type;
              iftmp.313 = D.38020 == 2;
              <D.38022>:
              if (iftmp.313 != 0) goto <D.38023>; else goto <D.38024>;
              <D.38023>:
              {
                struct MonoInst * var1;
                struct MonoInst * var2;

                D.30422 = cfg->varinfo;
                D.37996 = vtvar->data.op[0].const_val;
                D.37997 = (unsigned int) D.37996;
                D.37998 = D.37997 * 4;
                D.37999 = D.30422 + D.37998;
                D.38000 = *D.37999;
                D.38026 = D.38000->dreg;
                D.38027 = D.38026 + 1;
                D.38028 = (unsigned int) D.38027;
                D.30791 = cfg->vreg_to_inst_len;
                if (D.38028 < D.30791) goto <D.38029>; else goto <D.38030>;
                <D.38029>:
                D.30794 = cfg->vreg_to_inst;
                D.30422 = cfg->varinfo;
                D.37996 = vtvar->data.op[0].const_val;
                D.37997 = (unsigned int) D.37996;
                D.37998 = D.37997 * 4;
                D.37999 = D.30422 + D.37998;
                D.38000 = *D.37999;
                D.38026 = D.38000->dreg;
                D.38031 = (sizetype) D.38026;
                D.38032 = D.38031 + 1;
                D.38033 = D.38032 * 4;
                D.38034 = D.30794 + D.38033;
                iftmp.315 = *D.38034;
                goto <D.38035>;
                <D.38030>:
                iftmp.315 = 0B;
                <D.38035>:
                var1 = iftmp.315;
                D.30422 = cfg->varinfo;
                D.37996 = vtvar->data.op[0].const_val;
                D.37997 = (unsigned int) D.37996;
                D.37998 = D.37997 * 4;
                D.37999 = D.30422 + D.37998;
                D.38000 = *D.37999;
                D.38026 = D.38000->dreg;
                D.38037 = D.38026 + 2;
                D.38038 = (unsigned int) D.38037;
                D.30791 = cfg->vreg_to_inst_len;
                if (D.38038 < D.30791) goto <D.38039>; else goto <D.38040>;
                <D.38039>:
                D.30794 = cfg->vreg_to_inst;
                D.30422 = cfg->varinfo;
                D.37996 = vtvar->data.op[0].const_val;
                D.37997 = (unsigned int) D.37996;
                D.37998 = D.37997 * 4;
                D.37999 = D.30422 + D.37998;
                D.38000 = *D.37999;
                D.38026 = D.38000->dreg;
                D.38031 = (sizetype) D.38026;
                D.38041 = D.38031 + 2;
                D.38042 = D.38041 * 4;
                D.38043 = D.30794 + D.38042;
                iftmp.316 = *D.38043;
                goto <D.38044>;
                <D.38040>:
                iftmp.316 = 0B;
                <D.38044>:
                var2 = iftmp.316;
                D.38045 = var1 == 0B;
                D.38046 = (long int) D.38045;
                D.38047 = __builtin_expect (D.38046, 0);
                if (D.38047 != 0) goto <D.38048>; else goto <D.38049>;
                <D.38048>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10878, "var1");
                <D.38049>:
                D.38050 = var2 == 0B;
                D.38051 = (long int) D.38050;
                D.38052 = __builtin_expect (D.38051, 0);
                if (D.38052 != 0) goto <D.38053>; else goto <D.38054>;
                <D.38053>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10878, "var2");
                <D.38054>:
                D.38055 = var1->flags;
                D.38056 = D.38055 | 16;
                var1->flags = D.38056;
                D.38057 = var2->flags;
                D.38058 = D.38057 | 16;
                var2->flags = D.38058;
              }
              <D.38024>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.38059>; else goto <D.38060>;
              <D.38059>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = addr;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              addr->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = addr;
              goto <D.38061>;
              <D.38060>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = addr;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.38061>:
              {
                struct MonoInst * inst;

                D.29691 = cfg->mempool;
                inst = mono_mempool_alloc (D.29691, 56);
                inst->data.op[1].const_val = 0;
                D.38062 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.38062;
                inst->prev = 0B;
                D.38063 = inst->prev;
                inst->next = D.38063;
                inst->opcode = 374;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.38064 = inst->sreg3;
                inst->sreg2 = D.38064;
                D.38065 = inst->sreg2;
                inst->sreg1 = D.38065;
                D.29910 = cfg->ip;
                inst->cil_code = D.29910;
                D.30101 = ins->dreg;
                inst->sreg1 = D.30101;
                D.38066 = addr->dreg;
                inst->dreg = D.38066;
                inst->data.op[0].const_val = 0;
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                if (D.29939 != 0B) goto <D.38067>; else goto <D.38068>;
                <D.38067>:
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                D.29939->next = inst;
                bblock.129 = cfg->cbb;
                D.29939 = bblock.129->last_ins;
                inst->prev = D.29939;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                goto <D.38069>;
                <D.38068>:
                bblock.129 = cfg->cbb;
                bblock.129 = cfg->cbb;
                bblock.129->last_ins = inst;
                D.29939 = bblock.129->last_ins;
                bblock.129->code = D.29939;
                <D.38069>:
              }
              D.29691 = cfg->mempool;
              ins = mono_mempool_alloc (D.29691, 56);
              ins->data.op[1].const_val = 0;
              D.29906 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.29906;
              ins->prev = 0B;
              D.29907 = ins->prev;
              ins->next = D.29907;
              ins->opcode = 424;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.29908 = ins->sreg3;
              ins->sreg2 = D.29908;
              D.29909 = ins->sreg2;
              ins->sreg1 = D.29909;
              D.29910 = cfg->ip;
              ins->cil_code = D.29910;
              D.30422 = cfg->varinfo;
              D.37996 = vtvar->data.op[0].const_val;
              D.37997 = (unsigned int) D.37996;
              D.37998 = D.37997 * 4;
              D.37999 = D.30422 + D.37998;
              D.38000 = *D.37999;
              D.38008 = D.38000->data.op[1].vtype;
              D.38070 = mono_type_to_regmove (cfg, D.38008);
              D.38071 = (short unsigned int) D.38070;
              ins->opcode = D.38071;
              D.30422 = cfg->varinfo;
              D.37996 = vtvar->data.op[0].const_val;
              D.37997 = (unsigned int) D.37996;
              D.37998 = D.37997 * 4;
              D.37999 = D.30422 + D.37998;
              D.38000 = *D.37999;
              D.38008 = D.38000->data.op[1].vtype;
              type_to_eval_stack_type (cfg, D.38008, ins);
              D.30422 = cfg->varinfo;
              D.37996 = vtvar->data.op[0].const_val;
              D.37997 = (unsigned int) D.37996;
              D.37998 = D.37997 * 4;
              D.37999 = D.30422 + D.37998;
              D.38000 = *D.37999;
              D.38003 = D.38000->klass;
              ins->klass = D.38003;
              D.30422 = cfg->varinfo;
              D.37996 = vtvar->data.op[0].const_val;
              D.37997 = (unsigned int) D.37996;
              D.37998 = D.37997 * 4;
              D.37999 = D.30422 + D.37998;
              D.38000 = *D.37999;
              D.38026 = D.38000->dreg;
              ins->sreg1 = D.38026;
              D.30432 = ins->type;
              D.30433 = (<unnamed type>) D.30432;
              D.38072 = alloc_dreg (cfg, D.30433);
              D.38073 = (int) D.38072;
              ins->dreg = D.38073;
              D.30436 = ins->opcode;
              if (D.30436 == 427) goto <D.38074>; else goto <D.38075>;
              <D.38074>:
              D.30422 = cfg->varinfo;
              D.37996 = vtvar->data.op[0].const_val;
              D.37997 = (unsigned int) D.37996;
              D.37998 = D.37997 * 4;
              D.37999 = D.30422 + D.37998;
              D.38000 = *D.37999;
              D.38008 = D.38000->data.op[1].vtype;
              D.38076 = mono_class_from_mono_type (D.38008);
              ins->klass = D.38076;
              <D.38075>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.38077>; else goto <D.38078>;
              <D.38077>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = ins;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              ins->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              goto <D.38079>;
              <D.38078>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.38079>:
            }
            <D.37874>:
            <D.37738>:
            sp.317 = sp;
            sp = sp.317 + 4;
            *sp.317 = ins;
            ip = ip + 5;
            goto <D.26808>;
          }
        finally
          {
            handle_class = {CLOBBER};
          }
      }
      <D.27466>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.38081>; else goto <D.38082>;
      <D.38081>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.38083>; else goto <D.38084>;
      <D.38083>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.38085>; else goto <D.38086>;
      <D.38085>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38086>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38084>:
      D.38087 = mini_get_debug_options ();
      D.38088 = D.38087->break_on_unverified;
      if (D.38088 != 0) goto <D.38089>; else goto unverified;
      <D.38089>:
      raise (5);
      <D.38082>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 371;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      sp = sp + 4294967292;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      ip = ip + 1;
      bblock.77 = bblock;
      bblock.77->out_of_line = 1;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      if (D.30024 != 0B) goto <D.38090>; else goto <D.38091>;
      <D.38090>:
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      D.30024->next = ins;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      ins->prev = D.30024;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      goto <D.38092>;
      <D.38091>:
      bblock.77 = bblock;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      D.30024 = bblock.77->last_ins;
      bblock.77->code = D.30024;
      <D.38092>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 798;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      if (D.30024 != 0B) goto <D.38093>; else goto <D.38094>;
      <D.38093>:
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      D.30024->next = ins;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      ins->prev = D.30024;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      goto <D.38095>;
      <D.38094>:
      bblock.77 = bblock;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      D.30024 = bblock.77->last_ins;
      bblock.77->code = D.30024;
      <D.38095>:
      sp = stack_start;
      bblock.77 = bblock;
      link_bblock (cfg, bblock.77, end_bblock);
      start_new_bblock = 1;
      goto <D.26808>;
      <D.27467>:
      if (sp != stack_start) goto <D.38096>; else goto <D.38097>;
      <D.38096>:
      emit_seq_point (cfg, method, ip, 0, 0);
      <D.38097>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 738;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      if (D.30024 != 0B) goto <D.38098>; else goto <D.38099>;
      <D.38098>:
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      D.30024->next = ins;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      ins->prev = D.30024;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      goto <D.38100>;
      <D.38099>:
      bblock.77 = bblock;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      D.30024 = bblock.77->last_ins;
      bblock.77->code = D.30024;
      <D.38100>:
      ip = ip + 1;
      start_new_bblock = 1;
      goto <D.27469>;
      <D.27468>:
      sp = sp + 4294967292;
      <D.27469>:
      if (sp != stack_start) goto <D.27468>; else goto <D.27470>;
      <D.27470>:
      goto <D.26808>;
      <D.27471>:
      <D.27472>:
      {
        struct GList * handlers;

        D.30562 = *ip;
        if (D.30562 == 221) goto <D.38101>; else goto <D.38102>;
        <D.38101>:
        D.31124 = ip + 5;
        if (D.31124 > end) goto <D.38103>; else goto <D.38104>;
        <D.38103>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.38105>; else goto <D.38106>;
        <D.38105>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.38107>; else goto <D.38108>;
        <D.38107>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38108>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38106>:
        D.38109 = mini_get_debug_options ();
        D.38110 = D.38109->break_on_unverified;
        if (D.38110 != 0) goto <D.38111>; else goto unverified;
        <D.38111>:
        raise (5);
        <D.38104>:
        D.31143 = ip + 1;
        D.38112 = mono_read32 (D.31143);
        D.38113 = D.38112 + 5;
        target = ip + D.38113;
        goto <D.38114>;
        <D.38102>:
        D.30690 = ip + 2;
        if (D.30690 > end) goto <D.38115>; else goto <D.38116>;
        <D.38115>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.38117>; else goto <D.38118>;
        <D.38117>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.38119>; else goto <D.38120>;
        <D.38119>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38120>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38118>:
        D.38121 = mini_get_debug_options ();
        D.38122 = D.38121->break_on_unverified;
        if (D.38122 != 0) goto <D.38123>; else goto unverified;
        <D.38123>:
        raise (5);
        <D.38116>:
        D.30709 = ip + 1;
        D.30710 = *D.30709;
        D.38124 = (signed char) D.30710;
        D.38125 = (sizetype) D.38124;
        D.38126 = D.38125 + 2;
        target = ip + D.38126;
        <D.38114>:
        goto <D.27475>;
        <D.27474>:
        sp = sp + 4294967292;
        <D.27475>:
        if (sp != stack_start) goto <D.27474>; else goto <D.27476>;
        <D.27476>:
        i = 0;
        goto <D.27485>;
        <D.27484>:
        {
          struct MonoExceptionClause * clause;

          D.29818 = header->clauses;
          i.75 = (unsigned int) i;
          D.29820 = i.75 * 24;
          clause = D.29818 + D.29820;
          D.38127 = clause->handler_offset;
          ip.82 = (int) ip;
          D.29837 = header->code;
          D.30379 = (int) D.29837;
          D.30380 = ip.82 - D.30379;
          D.38128 = (unsigned int) D.30380;
          if (D.38127 <= D.38128) goto <D.38129>; else goto <D.38130>;
          <D.38129>:
          ip.82 = (int) ip;
          D.29837 = header->code;
          D.30379 = (int) D.29837;
          D.30380 = ip.82 - D.30379;
          D.38128 = (unsigned int) D.30380;
          D.38127 = clause->handler_offset;
          D.38131 = clause->handler_len;
          D.38132 = D.38127 + D.38131;
          if (D.38128 < D.38132) goto <D.38133>; else goto <D.38134>;
          <D.38133>:
          D.38135 = clause->flags;
          if (D.38135 == 0) goto <D.38136>; else goto <D.38137>;
          <D.38136>:
          ip.82 = (int) ip;
          D.29837 = header->code;
          D.30379 = (int) D.29837;
          D.30380 = ip.82 - D.30379;
          D.30562 = *ip;
          if (D.30562 == 221) goto <D.38139>; else goto <D.38140>;
          <D.38139>:
          iftmp.318 = 5;
          goto <D.38141>;
          <D.38140>:
          iftmp.318 = 2;
          <D.38141>:
          D.38142 = D.30380 + iftmp.318;
          D.38143 = (unsigned int) D.38142;
          D.38127 = clause->handler_offset;
          D.38131 = clause->handler_len;
          D.38132 = D.38127 + D.38131;
          if (D.38143 <= D.38132) goto <D.38144>; else goto <D.38145>;
          <D.38144>:
          D.29634 = BIT_FIELD_REF <*method, 32, 160>;
          D.29635 = D.29634 & 124;
          if (D.29635 != 16) goto <D.38146>; else goto <D.38147>;
          <D.38146>:
          {
            struct MonoInst * exc_ins;
            struct MonoBasicBlock * dont_throw;

            exc_ins = mono_emit_jit_icall (cfg, mono_thread_get_undeniable_exception, 0B);
            D.29691 = cfg->mempool;
            dont_throw = mono_mempool_alloc0 (D.29691, 172);
            D.29798 = cfg->num_bblocks;
            D.38148 = D.29798;
            D.38149 = D.38148 + 1;
            cfg->num_bblocks = D.38149;
            D.38150 = (int) D.38148;
            dont_throw->block_num = D.38150;
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.38151 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.38151;
              inst->prev = 0B;
              D.38152 = inst->prev;
              inst->next = D.38152;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.38153 = inst->sreg3;
              inst->sreg2 = D.38153;
              D.38154 = inst->sreg2;
              inst->sreg1 = D.38154;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = -1;
              D.38155 = exc_ins->dreg;
              inst->sreg1 = D.38155;
              inst->data.op[1].const_val = 0;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.38156>; else goto <D.38157>;
              <D.38156>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.38158>;
              <D.38157>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.38158>:
            }
            {
              struct MonoInst * ins;
              struct MonoBasicBlock * falsebb;

              D.29691 = cfg->mempool;
              ins = mono_mempool_alloc (D.29691, 56);
              ins->data.op[1].const_val = 0;
              D.38159 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.38159;
              ins->prev = 0B;
              D.38160 = ins->prev;
              ins->next = D.38160;
              ins->opcode = 648;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.38161 = ins->sreg3;
              ins->sreg2 = D.38161;
              D.38162 = ins->sreg2;
              ins->sreg1 = D.38162;
              D.29910 = cfg->ip;
              ins->cil_code = D.29910;
              if (0 != 0) goto <D.38163>; else goto <D.38164>;
              <D.38163>:
              D.29691 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.29691, 172);
              D.29798 = cfg->num_bblocks;
              D.38165 = D.29798;
              D.38166 = D.38165 + 1;
              cfg->num_bblocks = D.38166;
              D.38167 = (int) D.38165;
              falsebb->block_num = D.38167;
              ins->data.op[0].target_block = dont_throw;
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, dont_throw);
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.38168>; else goto <D.38169>;
              <D.38168>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = ins;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              ins->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              goto <D.38170>;
              <D.38169>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.38170>:
              D.38171 = falsebb->cil_code;
              if (D.38171 != 0B) goto <D.38172>; else goto <D.38173>;
              <D.38172>:
              D.29821 = cfg->cil_offset_to_bb;
              D.38171 = falsebb->cil_code;
              D.38174 = (int) D.38171;
              D.29825 = cfg->cil_start;
              D.29826 = (int) D.29825;
              D.38175 = D.38174 - D.29826;
              D.38176 = (unsigned int) D.38175;
              D.38177 = D.38176 * 4;
              D.38178 = D.29821 + D.38177;
              *D.38178 = falsebb;
              <D.38173>:
              D.29857 = cfg->real_offset;
              falsebb->real_offset = D.29857;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.38182>; else goto <D.38179>;
              <D.38182>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33848 = D.33847 + 64985;
              if (D.33848 <= 9) goto <D.38180>; else goto <D.38183>;
              <D.38183>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33850 = D.33847 + 64878;
              if (D.33850 <= 9) goto <D.38180>; else goto <D.38184>;
              <D.38184>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33852 = D.33847 + 64888;
              if (D.33852 <= 9) goto <D.38180>; else goto <D.38179>;
              <D.38180>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33853 = D.29939->data.op[1].many_blocks;
              D.33854 = D.33853 + 4;
              D.33855 = *D.33854;
              if (D.33855 == 0B) goto <D.38185>; else goto <D.38179>;
              <D.38185>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33853 = D.29939->data.op[1].many_blocks;
              D.33854 = D.33853 + 4;
              *D.33854 = falsebb;
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, falsebb);
              goto <D.38181>;
              <D.38179>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 == 0B) goto <D.38186>; else goto <D.38188>;
              <D.38188>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              if (D.33847 != 442) goto <D.38189>; else goto <D.38187>;
              <D.38189>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              if (D.33847 != 759) goto <D.38190>; else goto <D.38187>;
              <D.38190>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33848 = D.33847 + 64985;
              if (D.33848 > 9) goto <D.38191>; else goto <D.38187>;
              <D.38191>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33850 = D.33847 + 64878;
              if (D.33850 > 9) goto <D.38192>; else goto <D.38187>;
              <D.38192>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33852 = D.33847 + 64888;
              if (D.33852 > 9) goto <D.38186>; else goto <D.38187>;
              <D.38186>:
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, falsebb);
              <D.38187>:
              <D.38181>:
              bblock.129 = cfg->cbb;
              bblock.129->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.38193>;
              <D.38164>:
              D.29691 = cfg->mempool;
              D.38194 = mono_mempool_alloc (D.29691, 8);
              ins->data.op[1].many_blocks = D.38194;
              D.38195 = ins->data.op[1].many_blocks;
              *D.38195 = dont_throw;
              D.38195 = ins->data.op[1].many_blocks;
              D.38196 = D.38195 + 4;
              *D.38196 = 0B;
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, dont_throw);
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.38197>; else goto <D.38198>;
              <D.38197>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = ins;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              ins->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              goto <D.38199>;
              <D.38198>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.38199>:
              D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.33871 = D.30081 & 8;
              if (D.33871 == 0) goto <D.38200>; else goto <D.38201>;
              <D.38200>:
              D.29691 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.29691, 172);
              D.29798 = cfg->num_bblocks;
              D.38202 = D.29798;
              D.38203 = D.38202 + 1;
              cfg->num_bblocks = D.38203;
              D.38204 = (int) D.38202;
              falsebb->block_num = D.38204;
              D.38195 = ins->data.op[1].many_blocks;
              D.38196 = D.38195 + 4;
              *D.38196 = falsebb;
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, falsebb);
              D.38171 = falsebb->cil_code;
              if (D.38171 != 0B) goto <D.38205>; else goto <D.38206>;
              <D.38205>:
              D.29821 = cfg->cil_offset_to_bb;
              D.38171 = falsebb->cil_code;
              D.38174 = (int) D.38171;
              D.29825 = cfg->cil_start;
              D.29826 = (int) D.29825;
              D.38175 = D.38174 - D.29826;
              D.38176 = (unsigned int) D.38175;
              D.38177 = D.38176 * 4;
              D.38178 = D.29821 + D.38177;
              *D.38178 = falsebb;
              <D.38206>:
              D.29857 = cfg->real_offset;
              falsebb->real_offset = D.29857;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.38210>; else goto <D.38207>;
              <D.38210>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33848 = D.33847 + 64985;
              if (D.33848 <= 9) goto <D.38208>; else goto <D.38211>;
              <D.38211>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33850 = D.33847 + 64878;
              if (D.33850 <= 9) goto <D.38208>; else goto <D.38212>;
              <D.38212>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33852 = D.33847 + 64888;
              if (D.33852 <= 9) goto <D.38208>; else goto <D.38207>;
              <D.38208>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33853 = D.29939->data.op[1].many_blocks;
              D.33854 = D.33853 + 4;
              D.33855 = *D.33854;
              if (D.33855 == 0B) goto <D.38213>; else goto <D.38207>;
              <D.38213>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33853 = D.29939->data.op[1].many_blocks;
              D.33854 = D.33853 + 4;
              *D.33854 = falsebb;
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, falsebb);
              goto <D.38209>;
              <D.38207>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 == 0B) goto <D.38214>; else goto <D.38216>;
              <D.38216>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              if (D.33847 != 442) goto <D.38217>; else goto <D.38215>;
              <D.38217>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              if (D.33847 != 759) goto <D.38218>; else goto <D.38215>;
              <D.38218>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33848 = D.33847 + 64985;
              if (D.33848 > 9) goto <D.38219>; else goto <D.38215>;
              <D.38219>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33850 = D.33847 + 64878;
              if (D.33850 > 9) goto <D.38220>; else goto <D.38215>;
              <D.38220>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33852 = D.33847 + 64888;
              if (D.33852 > 9) goto <D.38214>; else goto <D.38215>;
              <D.38214>:
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, falsebb);
              <D.38215>:
              <D.38209>:
              bblock.129 = cfg->cbb;
              bblock.129->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.38221>;
              <D.38201>:
              bblock.129 = cfg->cbb;
              bblock.129->extended = 1;
              <D.38221>:
              <D.38193>:
            }
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.38222 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.38222;
              inst->prev = 0B;
              D.38223 = inst->prev;
              inst->next = D.38223;
              inst->opcode = 371;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.38224 = inst->sreg3;
              inst->sreg2 = D.38224;
              D.38225 = inst->sreg2;
              inst->sreg1 = D.38225;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = -1;
              D.38155 = exc_ins->dreg;
              inst->sreg1 = D.38155;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.38226>; else goto <D.38227>;
              <D.38226>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.38228>;
              <D.38227>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.38228>:
            }
            D.38229 = dont_throw->cil_code;
            if (D.38229 != 0B) goto <D.38230>; else goto <D.38231>;
            <D.38230>:
            D.29821 = cfg->cil_offset_to_bb;
            D.38229 = dont_throw->cil_code;
            D.38232 = (int) D.38229;
            D.29825 = cfg->cil_start;
            D.29826 = (int) D.29825;
            D.38233 = D.38232 - D.29826;
            D.38234 = (unsigned int) D.38233;
            D.38235 = D.38234 * 4;
            D.38236 = D.29821 + D.38235;
            *D.38236 = dont_throw;
            <D.38231>:
            D.29857 = cfg->real_offset;
            dont_throw->real_offset = D.29857;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.38240>; else goto <D.38237>;
            <D.38240>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33847 = D.29939->opcode;
            D.33848 = D.33847 + 64985;
            if (D.33848 <= 9) goto <D.38238>; else goto <D.38241>;
            <D.38241>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33847 = D.29939->opcode;
            D.33850 = D.33847 + 64878;
            if (D.33850 <= 9) goto <D.38238>; else goto <D.38242>;
            <D.38242>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33847 = D.29939->opcode;
            D.33852 = D.33847 + 64888;
            if (D.33852 <= 9) goto <D.38238>; else goto <D.38237>;
            <D.38238>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33853 = D.29939->data.op[1].many_blocks;
            D.33854 = D.33853 + 4;
            D.33855 = *D.33854;
            if (D.33855 == 0B) goto <D.38243>; else goto <D.38237>;
            <D.38243>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33853 = D.29939->data.op[1].many_blocks;
            D.33854 = D.33853 + 4;
            *D.33854 = dont_throw;
            bblock.129 = cfg->cbb;
            mono_link_bblock (cfg, bblock.129, dont_throw);
            goto <D.38239>;
            <D.38237>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 == 0B) goto <D.38244>; else goto <D.38246>;
            <D.38246>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33847 = D.29939->opcode;
            if (D.33847 != 442) goto <D.38247>; else goto <D.38245>;
            <D.38247>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33847 = D.29939->opcode;
            if (D.33847 != 759) goto <D.38248>; else goto <D.38245>;
            <D.38248>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33847 = D.29939->opcode;
            D.33848 = D.33847 + 64985;
            if (D.33848 > 9) goto <D.38249>; else goto <D.38245>;
            <D.38249>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33847 = D.29939->opcode;
            D.33850 = D.33847 + 64878;
            if (D.33850 > 9) goto <D.38250>; else goto <D.38245>;
            <D.38250>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33847 = D.29939->opcode;
            D.33852 = D.33847 + 64888;
            if (D.33852 > 9) goto <D.38244>; else goto <D.38245>;
            <D.38244>:
            bblock.129 = cfg->cbb;
            mono_link_bblock (cfg, bblock.129, dont_throw);
            <D.38245>:
            <D.38239>:
            bblock.129 = cfg->cbb;
            bblock.129->next_bb = dont_throw;
            cfg->cbb = dont_throw;
            bblock.129 = cfg->cbb;
            bblock = bblock.129;
          }
          <D.38147>:
          <D.38145>:
          <D.38137>:
          <D.38134>:
          <D.38130>:
        }
        i = i + 1;
        <D.27485>:
        D.30004 = header->num_clauses;
        D.30005 = (int) D.30004;
        if (D.30005 > i) goto <D.27484>; else goto <D.27486>;
        <D.27486>:
        handlers = mono_find_final_block (cfg, ip, target, 2);
        if (handlers != 0B) goto <D.38251>; else goto <D.38252>;
        <D.38251>:
        {
          struct GList * tmp;
          struct MonoExceptionClause * clause;

          tmp = handlers;
          goto <D.27491>;
          <D.27490>:
          clause = tmp->data;
          D.29821 = cfg->cil_offset_to_bb;
          D.38253 = clause->handler_offset;
          D.38254 = D.38253 * 4;
          D.38255 = D.29821 + D.38254;
          tblock = *D.38255;
          D.38256 = tblock == 0B;
          D.38257 = (long int) D.38256;
          D.38258 = __builtin_expect (D.38257, 0);
          if (D.38258 != 0) goto <D.38259>; else goto <D.38260>;
          <D.38259>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10988, "tblock");
          <D.38260>:
          bblock.77 = bblock;
          link_bblock (cfg, bblock.77, tblock);
          D.29691 = cfg->mempool;
          ins = mono_mempool_alloc (D.29691, 56);
          ins->data.op[1].const_val = 0;
          D.29906 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.29906;
          ins->prev = 0B;
          D.29907 = ins->prev;
          ins->next = D.29907;
          ins->opcode = 735;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.29908 = ins->sreg3;
          ins->sreg2 = D.29908;
          D.29909 = ins->sreg2;
          ins->sreg1 = D.29909;
          D.29910 = cfg->ip;
          ins->cil_code = D.29910;
          ins->data.op[0].target_block = tblock;
          ins->data.op[1].exception_clause = clause;
          bblock.77 = bblock;
          D.30024 = bblock.77->last_ins;
          if (D.30024 != 0B) goto <D.38261>; else goto <D.38262>;
          <D.38261>:
          bblock.77 = bblock;
          D.30024 = bblock.77->last_ins;
          D.30024->next = ins;
          bblock.77 = bblock;
          D.30024 = bblock.77->last_ins;
          ins->prev = D.30024;
          bblock.77 = bblock;
          bblock.77->last_ins = ins;
          goto <D.38263>;
          <D.38262>:
          bblock.77 = bblock;
          bblock.77 = bblock;
          bblock.77->last_ins = ins;
          D.30024 = bblock.77->last_ins;
          bblock.77->code = D.30024;
          <D.38263>:
          bblock.77 = bblock;
          bblock.77->has_call_handler = 1;
          if (0 != 0) goto <D.38264>; else goto <D.38265>;
          <D.38264>:
          {
            struct MonoBasicBlock * target_bb;

            D.29821 = cfg->cil_offset_to_bb;
            target.154 = (int) target;
            D.29825 = cfg->cil_start;
            D.29826 = (int) D.29825;
            D.33281 = target.154 - D.29826;
            D.33282 = (unsigned int) D.33281;
            D.33283 = D.33282 * 4;
            D.33284 = D.29821 + D.33283;
            target_bb = *D.33284;
            if (target_bb == 0B) goto <D.38266>; else goto <D.38267>;
            <D.38266>:
            if (target >= end) goto <D.38268>; else goto <D.38270>;
            <D.38270>:
            D.29837 = header->code;
            if (D.29837 > target) goto <D.38268>; else goto <D.38269>;
            <D.38268>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.38271>; else goto <D.38272>;
            <D.38271>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.38273>; else goto <D.38274>;
            <D.38273>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.38274>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.38272>:
            D.38275 = mini_get_debug_options ();
            D.38276 = D.38275->break_on_unverified;
            if (D.38276 != 0) goto <D.38277>; else goto unverified;
            <D.38277>:
            raise (5);
            <D.38269>:
            D.29691 = cfg->mempool;
            target_bb = mono_mempool_alloc0 (D.29691, 172);
            D.29798 = cfg->num_bblocks;
            D.38278 = D.29798;
            D.38279 = D.38278 + 1;
            cfg->num_bblocks = D.38279;
            D.38280 = (int) D.38278;
            target_bb->block_num = D.38280;
            target_bb->cil_code = target;
            D.38281 = target_bb->cil_code;
            if (D.38281 != 0B) goto <D.38282>; else goto <D.38283>;
            <D.38282>:
            D.29821 = cfg->cil_offset_to_bb;
            D.38281 = target_bb->cil_code;
            D.38284 = (int) D.38281;
            D.29825 = cfg->cil_start;
            D.29826 = (int) D.29825;
            D.38285 = D.38284 - D.29826;
            D.38286 = (unsigned int) D.38285;
            D.38287 = D.38286 * 4;
            D.38288 = D.29821 + D.38287;
            *D.38288 = target_bb;
            <D.38283>:
            D.29857 = cfg->real_offset;
            target_bb->real_offset = D.29857;
            <D.38267>:
            link_bblock (cfg, tblock, target_bb);
          }
          <D.38265>:
          tmp = tmp->next;
          <D.27491>:
          if (tmp != 0B) goto <D.27490>; else goto <D.27492>;
          <D.27492>:
          monoeg_g_list_free (handlers);
        }
        <D.38252>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 442;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        if (D.30024 != 0B) goto <D.38289>; else goto <D.38290>;
        <D.38289>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        D.30024->next = ins;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        ins->prev = D.30024;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        goto <D.38291>;
        <D.38290>:
        bblock.77 = bblock;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        D.30024 = bblock.77->last_ins;
        bblock.77->code = D.30024;
        <D.38291>:
        D.29821 = cfg->cil_offset_to_bb;
        target.154 = (int) target;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.33281 = target.154 - D.29826;
        D.33282 = (unsigned int) D.33281;
        D.33283 = D.33282 * 4;
        D.33284 = D.29821 + D.33283;
        tblock = *D.33284;
        if (tblock == 0B) goto <D.38292>; else goto <D.38293>;
        <D.38292>:
        if (target >= end) goto <D.38294>; else goto <D.38296>;
        <D.38296>:
        D.29837 = header->code;
        if (D.29837 > target) goto <D.38294>; else goto <D.38295>;
        <D.38294>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.38297>; else goto <D.38298>;
        <D.38297>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.38299>; else goto <D.38300>;
        <D.38299>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38300>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38298>:
        D.38301 = mini_get_debug_options ();
        D.38302 = D.38301->break_on_unverified;
        if (D.38302 != 0) goto <D.38303>; else goto unverified;
        <D.38303>:
        raise (5);
        <D.38295>:
        D.29691 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.29691, 172);
        D.29798 = cfg->num_bblocks;
        D.38304 = D.29798;
        D.38305 = D.38304 + 1;
        cfg->num_bblocks = D.38305;
        D.38306 = (int) D.38304;
        tblock->block_num = D.38306;
        tblock->cil_code = target;
        D.29886 = tblock->cil_code;
        if (D.29886 != 0B) goto <D.38307>; else goto <D.38308>;
        <D.38307>:
        D.29821 = cfg->cil_offset_to_bb;
        D.29886 = tblock->cil_code;
        D.29889 = (int) D.29886;
        D.29825 = cfg->cil_start;
        D.29826 = (int) D.29825;
        D.29890 = D.29889 - D.29826;
        D.29891 = (unsigned int) D.29890;
        D.29892 = D.29891 * 4;
        D.29893 = D.29821 + D.29892;
        *D.29893 = tblock;
        <D.38308>:
        D.29857 = cfg->real_offset;
        tblock->real_offset = D.29857;
        <D.38293>:
        bblock.77 = bblock;
        link_bblock (cfg, bblock.77, tblock);
        ins->data.op[0].target_block = tblock;
        start_new_bblock = 1;
        D.30562 = *ip;
        if (D.30562 == 221) goto <D.38309>; else goto <D.38310>;
        <D.38309>:
        ip = ip + 5;
        goto <D.38311>;
        <D.38310>:
        ip = ip + 2;
        <D.38311>:
        goto <D.26808>;
      }
      <D.27493>:
      D.29634 = BIT_FIELD_REF <*method, 32, 160>;
      D.29635 = D.29634 & 124;
      D.38312 = D.29635 == 0;
      D.38313 = (long int) D.38312;
      D.38314 = __builtin_expect (D.38313, 0);
      if (D.38314 != 0) goto <D.38315>; else goto <D.38316>;
      <D.38315>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11030, "method->wrapper_type != MONO_WRAPPER_NONE");
      <D.38316>:
      D.30690 = ip + 2;
      if (D.30690 > end) goto <D.38317>; else goto <D.38318>;
      <D.38317>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.38319>; else goto <D.38320>;
      <D.38319>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.38321>; else goto <D.38322>;
      <D.38321>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38322>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38320>:
      D.38323 = mini_get_debug_options ();
      D.38324 = D.38323->break_on_unverified;
      if (D.38324 != 0) goto <D.38325>; else goto unverified;
      <D.38325>:
      raise (5);
      <D.38318>:
      D.30709 = ip + 1;
      D.30710 = *D.30709;
      D.31040 = (int) D.30710;
      switch (D.31040) <default: <D.27552>, case 0: <D.27494>, case 1: <D.27515>, case 2: <D.27499>, case 3: <D.27507>, case 4: <D.27512>, case 5: <D.27522>, case 6: <D.27516>, case 7: <D.27525>, case 8: <D.27526>, case 9: <D.27528>, case 10: <D.27529>, case 11: <D.27530>, case 12: <D.27531>, case 13: <D.27532>, case 14: <D.27504>, case 15: <D.27534>, case 16: <D.27536>, case 17: <D.27537>, case 18: <D.27550>, case 19: <D.27501>>
      <D.27494>:
      {
        void * func;
        struct MonoJitICallInfo * info;

        D.38326 = ip + 2;
        token = mono_read32 (D.38326);
        func = mono_method_get_wrapper_data (method, token);
        info = mono_find_jit_icall_by_addr (func);
        if (info == 0B) goto <D.38327>; else goto <D.38328>;
        <D.38327>:
        D.38329 = mono_method_full_name (method, 1);
        monoeg_g_log (0B, 4, "Could not find icall address in wrapper %s", D.38329);
        <D.27497>:
        goto <D.27497>;
        <D.38328>:
        D.38330 = info == 0B;
        D.38331 = (long int) D.38330;
        D.38332 = __builtin_expect (D.38331, 0);
        if (D.38332 != 0) goto <D.38333>; else goto <D.38334>;
        <D.38333>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11043, "info");
        <D.38334>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        D.30458 = D.30457 /[ex] 4;
        D.38335 = info->sig;
        D.38336 = D.38335->param_count;
        D.38337 = (int) D.38336;
        if (D.30458 < D.38337) goto <D.38338>; else goto <D.38339>;
        <D.38338>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.38340>; else goto <D.38341>;
        <D.38340>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.38342>; else goto <D.38343>;
        <D.38342>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38343>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38341>:
        D.38344 = mini_get_debug_options ();
        D.38345 = D.38344->break_on_unverified;
        if (D.38345 != 0) goto <D.38346>; else goto unverified;
        <D.38346>:
        raise (5);
        <D.38339>:
        D.38335 = info->sig;
        D.38336 = D.38335->param_count;
        D.38347 = (unsigned int) D.38336;
        D.38348 = D.38347 * 4;
        D.38349 = -D.38348;
        sp = sp + D.38349;
        D.38350 = info->func;
        ins = mono_emit_jit_icall (cfg, D.38350, sp);
        D.38335 = info->sig;
        D.38351 = D.38335->ret;
        D.38352 = mono_type_is_void (D.38351);
        if (D.38352 == 0) goto <D.38353>; else goto <D.38354>;
        <D.38353>:
        sp.319 = sp;
        sp = sp.319 + 4;
        *sp.319 = ins;
        <D.38354>:
        ip = ip + 6;
        num_calls.320 = num_calls;
        num_calls = num_calls.320 + 1;
        D.38357 = num_calls.320 * 10;
        inline_costs = D.38357 + inline_costs;
        goto <D.27498>;
      }
      <D.27499>:
      {
        void * ptr;

        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        D.30458 = D.30457 /[ex] 4;
        D.30371 = header->max_stack;
        D.30372 = (int) D.30371;
        if (D.30458 >= D.30372) goto <D.38358>; else goto <D.38359>;
        <D.38358>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.38360>; else goto <D.38361>;
        <D.38360>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.38362>; else goto <D.38363>;
        <D.38362>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38363>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38361>:
        D.38364 = mini_get_debug_options ();
        D.38365 = D.38364->break_on_unverified;
        if (D.38365 != 0) goto <D.38366>; else goto unverified;
        <D.38366>:
        raise (5);
        <D.38359>:
        D.34392 = ip + 6;
        if (D.34392 > end) goto <D.38367>; else goto <D.38368>;
        <D.38367>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.38369>; else goto <D.38370>;
        <D.38369>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.38371>; else goto <D.38372>;
        <D.38371>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38372>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38370>:
        D.38373 = mini_get_debug_options ();
        D.38374 = D.38373->break_on_unverified;
        if (D.38374 != 0) goto <D.38375>; else goto unverified;
        <D.38375>:
        raise (5);
        <D.38368>:
        D.38326 = ip + 2;
        token = mono_read32 (D.38326);
        ptr = mono_method_get_wrapper_data (method, token);
        D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.30082 = D.30081 & 64;
        if (D.30082 != 0) goto <D.38376>; else goto <D.38377>;
        <D.38376>:
        D.38378 = mono_thread_interruption_request_flag ();
        if (D.38378 == ptr) goto <D.38379>; else goto <D.38380>;
        <D.38379>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.30082 = D.30081 & 64;
        if (D.30082 != 0) goto <D.38382>; else goto <D.38383>;
        <D.38382>:
        iftmp.321 = 732;
        goto <D.38384>;
        <D.38383>:
        iftmp.321 = 362;
        <D.38384>:
        ins->opcode = iftmp.321;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        ins->data.op[0].p = 0B;
        ins->data.op[1].src = 33B;
        ins->type = 3;
        D.38385 = alloc_dreg (cfg, 3);
        D.38386 = (int) D.38385;
        ins->dreg = D.38386;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.38387>; else goto <D.38388>;
        <D.38387>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.38389>;
        <D.38388>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.38389>:
        sp.322 = sp;
        sp = sp.322 + 4;
        *sp.322 = ins;
        ip = ip + 6;
        goto <D.27498>;
        <D.38380>:
        <D.38377>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 362;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        ins->data.op[0].p = ptr;
        ins->type = 3;
        D.38391 = alloc_dreg (cfg, 3);
        D.38392 = (int) D.38391;
        ins->dreg = D.38392;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.38393>; else goto <D.38394>;
        <D.38393>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.38395>;
        <D.38394>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.38395>:
        sp.323 = sp;
        sp = sp.323 + 4;
        *sp.323 = ins;
        ip = ip + 6;
        num_calls.324 = num_calls;
        num_calls = num_calls.324 + 1;
        D.38398 = num_calls.324 * 10;
        inline_costs = D.38398 + inline_costs;
        D.29771 = cfg->verbose_level;
        if (D.29771 > 1) goto <D.38399>; else goto <D.38400>;
        <D.38399>:
        printf ("AOT disabled: %s:%d\n", "method-to-ir.c", 11077);
        <D.38400>:
        cfg->disable_aot = 1;
        goto <D.27498>;
      }
      <D.27501>:
      {
        struct MonoJitICallInfo * callinfo;
        void * ptr;

        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        D.30458 = D.30457 /[ex] 4;
        D.30371 = header->max_stack;
        D.30372 = (int) D.30371;
        if (D.30458 >= D.30372) goto <D.38401>; else goto <D.38402>;
        <D.38401>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.38403>; else goto <D.38404>;
        <D.38403>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.38405>; else goto <D.38406>;
        <D.38405>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38406>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38404>:
        D.38407 = mini_get_debug_options ();
        D.38408 = D.38407->break_on_unverified;
        if (D.38408 != 0) goto <D.38409>; else goto unverified;
        <D.38409>:
        raise (5);
        <D.38402>:
        D.34392 = ip + 6;
        if (D.34392 > end) goto <D.38410>; else goto <D.38411>;
        <D.38410>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.38412>; else goto <D.38413>;
        <D.38412>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.38414>; else goto <D.38415>;
        <D.38414>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38415>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38413>:
        D.38416 = mini_get_debug_options ();
        D.38417 = D.38416->break_on_unverified;
        if (D.38417 != 0) goto <D.38418>; else goto unverified;
        <D.38418>:
        raise (5);
        <D.38411>:
        D.38326 = ip + 2;
        token = mono_read32 (D.38326);
        ptr = mono_method_get_wrapper_data (method, token);
        callinfo = mono_find_jit_icall_by_addr (ptr);
        D.38419 = callinfo == 0B;
        D.38420 = (long int) D.38419;
        D.38421 = __builtin_expect (D.38420, 0);
        if (D.38421 != 0) goto <D.38422>; else goto <D.38423>;
        <D.38422>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11090, "callinfo");
        <D.38423>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.30082 = D.30081 & 64;
        if (D.30082 != 0) goto <D.38425>; else goto <D.38426>;
        <D.38425>:
        iftmp.325 = 732;
        goto <D.38427>;
        <D.38426>:
        iftmp.325 = 362;
        <D.38427>:
        ins->opcode = iftmp.325;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        D.38428 = callinfo->name;
        ins->data.op[0].p = D.38428;
        ins->data.op[1].src = 32B;
        ins->type = 3;
        D.38429 = alloc_dreg (cfg, 3);
        D.38430 = (int) D.38429;
        ins->dreg = D.38430;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.38431>; else goto <D.38432>;
        <D.38431>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.38433>;
        <D.38432>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.38433>:
        sp.326 = sp;
        sp = sp.326 + 4;
        *sp.326 = ins;
        ip = ip + 6;
        num_calls.327 = num_calls;
        num_calls = num_calls.327 + 1;
        D.38436 = num_calls.327 * 10;
        inline_costs = D.38436 + inline_costs;
        goto <D.27498>;
      }
      <D.27504>:
      {
        struct MonoMethod * cmethod;
        void * ptr;

        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        D.30458 = D.30457 /[ex] 4;
        D.30371 = header->max_stack;
        D.30372 = (int) D.30371;
        if (D.30458 >= D.30372) goto <D.38437>; else goto <D.38438>;
        <D.38437>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.38439>; else goto <D.38440>;
        <D.38439>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.38441>; else goto <D.38442>;
        <D.38441>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38442>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38440>:
        D.38443 = mini_get_debug_options ();
        D.38444 = D.38443->break_on_unverified;
        if (D.38444 != 0) goto <D.38445>; else goto unverified;
        <D.38445>:
        raise (5);
        <D.38438>:
        D.34392 = ip + 6;
        if (D.34392 > end) goto <D.38446>; else goto <D.38447>;
        <D.38446>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.38448>; else goto <D.38449>;
        <D.38448>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.38450>; else goto <D.38451>;
        <D.38450>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38451>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38449>:
        D.38452 = mini_get_debug_options ();
        D.38453 = D.38452->break_on_unverified;
        if (D.38453 != 0) goto <D.38454>; else goto unverified;
        <D.38454>:
        raise (5);
        <D.38447>:
        D.38326 = ip + 2;
        token = mono_read32 (D.38326);
        cmethod = mono_method_get_wrapper_data (method, token);
        D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.30082 = D.30081 & 64;
        if (D.30082 != 0) goto <D.38455>; else goto <D.38456>;
        <D.38455>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.30082 = D.30081 & 64;
        if (D.30082 != 0) goto <D.38458>; else goto <D.38459>;
        <D.38458>:
        iftmp.328 = 732;
        goto <D.38460>;
        <D.38459>:
        iftmp.328 = 362;
        <D.38460>:
        ins->opcode = iftmp.328;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        ins->data.op[0].p = cmethod;
        ins->data.op[1].src = 31B;
        ins->type = 3;
        D.38461 = alloc_dreg (cfg, 3);
        D.38462 = (int) D.38461;
        ins->dreg = D.38462;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.38463>; else goto <D.38464>;
        <D.38463>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.38465>;
        <D.38464>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.38465>:
        goto <D.38466>;
        <D.38456>:
        ptr = mono_lookup_internal_call (cmethod);
        D.38467 = ptr == 0B;
        D.38468 = (long int) D.38467;
        D.38469 = __builtin_expect (D.38468, 0);
        if (D.38469 != 0) goto <D.38470>; else goto <D.38471>;
        <D.38470>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11111, "ptr");
        <D.38471>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 362;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        ins->data.op[0].p = ptr;
        ins->type = 3;
        D.38472 = alloc_dreg (cfg, 3);
        D.38473 = (int) D.38472;
        ins->dreg = D.38473;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.38474>; else goto <D.38475>;
        <D.38474>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.38476>;
        <D.38475>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.38476>:
        <D.38466>:
        sp.329 = sp;
        sp = sp.329 + 4;
        *sp.329 = ins;
        ip = ip + 6;
        goto <D.27498>;
      }
      <D.27507>:
      {
        struct MonoInst * src_var;
        struct MonoInst * src;

        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        if (D.30457 <= 3) goto <D.38478>; else goto <D.38479>;
        <D.38478>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.38480>; else goto <D.38481>;
        <D.38480>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.38482>; else goto <D.38483>;
        <D.38482>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38483>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38481>:
        D.38484 = mini_get_debug_options ();
        D.38485 = D.38484->break_on_unverified;
        if (D.38485 != 0) goto <D.38486>; else goto unverified;
        <D.38486>:
        raise (5);
        <D.38479>:
        sp = sp + 4294967292;
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        D.36031 = (unsigned int) D.30872;
        D.30791 = cfg->vreg_to_inst_len;
        if (D.36031 < D.30791) goto <D.38488>; else goto <D.38489>;
        <D.38488>:
        D.30794 = cfg->vreg_to_inst;
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        D.36034 = (unsigned int) D.30872;
        D.36035 = D.36034 * 4;
        D.36036 = D.30794 + D.36035;
        iftmp.330 = *D.36036;
        goto <D.38490>;
        <D.38489>:
        iftmp.330 = 0B;
        <D.38490>:
        src_var = iftmp.330;
        D.29691 = cfg->mempool;
        src = mono_mempool_alloc (D.29691, 56);
        src->data.op[1].const_val = 0;
        D.38491 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.38491;
        src->prev = 0B;
        D.38492 = src->prev;
        src->next = D.38492;
        src->opcode = 314;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.38493 = src->sreg3;
        src->sreg2 = D.38493;
        D.38494 = src->sreg2;
        src->sreg1 = D.38494;
        D.29910 = cfg->ip;
        src->cil_code = D.29910;
        src->data.op[0].p = src_var;
        D.38495 = src_var->flags;
        D.38496 = D.38495 | 16;
        src_var->flags = D.38496;
        src->type = 5;
        D.38497 = src_var->klass;
        src->klass = D.38497;
        D.38498 = alloc_dreg (cfg, 5);
        D.38499 = (int) D.38498;
        src->dreg = D.38499;
        cfg->has_indirection = 1;
        D.29838 = cfg->gsharedvt;
        D.30765 = D.29838 != 0;
        D.30766 = (long int) D.30765;
        D.30767 = __builtin_expect (D.30766, 0);
        if (D.30767 != 0) goto <D.38500>; else goto <D.38501>;
        <D.38500>:
        D.38502 = src_var->data.op[1].vtype;
        D.38503 = mini_is_gsharedvt_variable_type (cfg, D.38502);
        if (D.38503 != 0) goto <D.38504>; else goto <D.38505>;
        <D.38504>:
        handle_gsharedvt_ldaddr (cfg);
        <D.38505>:
        <D.38501>:
        D.38507 = mono_arch_is_soft_float ();
        if (D.38507 != 0) goto <D.38508>; else goto <D.38509>;
        <D.38508>:
        D.38514 = src_var->type;
        if (D.38514 == 2) goto <D.38511>; else goto <D.38515>;
        <D.38515>:
        D.38514 = src_var->type;
        if (D.38514 == 4) goto <D.38511>; else goto <D.38512>;
        <D.38511>:
        iftmp.332 = 1;
        goto <D.38513>;
        <D.38512>:
        iftmp.332 = 0;
        <D.38513>:
        iftmp.331 = (_Bool) iftmp.332;
        goto <D.38516>;
        <D.38509>:
        D.38514 = src_var->type;
        iftmp.331 = D.38514 == 2;
        <D.38516>:
        if (iftmp.331 != 0) goto <D.38517>; else goto <D.38518>;
        <D.38517>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.38520 = src_var->dreg;
          D.38521 = D.38520 + 1;
          D.38522 = (unsigned int) D.38521;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.38522 < D.30791) goto <D.38523>; else goto <D.38524>;
          <D.38523>:
          D.30794 = cfg->vreg_to_inst;
          D.38520 = src_var->dreg;
          D.38525 = (sizetype) D.38520;
          D.38526 = D.38525 + 1;
          D.38527 = D.38526 * 4;
          D.38528 = D.30794 + D.38527;
          iftmp.333 = *D.38528;
          goto <D.38529>;
          <D.38524>:
          iftmp.333 = 0B;
          <D.38529>:
          var1 = iftmp.333;
          D.38520 = src_var->dreg;
          D.38531 = D.38520 + 2;
          D.38532 = (unsigned int) D.38531;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.38532 < D.30791) goto <D.38533>; else goto <D.38534>;
          <D.38533>:
          D.30794 = cfg->vreg_to_inst;
          D.38520 = src_var->dreg;
          D.38525 = (sizetype) D.38520;
          D.38535 = D.38525 + 2;
          D.38536 = D.38535 * 4;
          D.38537 = D.30794 + D.38536;
          iftmp.334 = *D.38537;
          goto <D.38538>;
          <D.38534>:
          iftmp.334 = 0B;
          <D.38538>:
          var2 = iftmp.334;
          D.38539 = var1 == 0B;
          D.38540 = (long int) D.38539;
          D.38541 = __builtin_expect (D.38540, 0);
          if (D.38541 != 0) goto <D.38542>; else goto <D.38543>;
          <D.38542>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11126, "var1");
          <D.38543>:
          D.38544 = var2 == 0B;
          D.38545 = (long int) D.38544;
          D.38546 = __builtin_expect (D.38545, 0);
          if (D.38546 != 0) goto <D.38547>; else goto <D.38548>;
          <D.38547>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11126, "var2");
          <D.38548>:
          D.38549 = var1->flags;
          D.38550 = D.38549 | 16;
          var1->flags = D.38550;
          D.38551 = var2->flags;
          D.38552 = D.38551 | 16;
          var2->flags = D.38552;
        }
        <D.38518>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.38553>; else goto <D.38554>;
        <D.38553>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = src;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        src->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = src;
        goto <D.38555>;
        <D.38554>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = src;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.38555>:
        sp.335 = sp;
        sp = sp.335 + 4;
        *sp.335 = src;
        ip = ip + 2;
        goto <D.27498>;
      }
      <D.27512>:
      {
        struct MonoInst * iargs[2];

        try
          {
            sp.84 = (int) sp;
            stack_start.85 = (int) stack_start;
            D.30457 = sp.84 - stack_start.85;
            D.30458 = D.30457 /[ex] 4;
            D.30371 = header->max_stack;
            D.30372 = (int) D.30371;
            if (D.30458 >= D.30372) goto <D.38557>; else goto <D.38558>;
            <D.38557>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.38559>; else goto <D.38560>;
            <D.38559>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.38561>; else goto <D.38562>;
            <D.38561>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.38562>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.38560>:
            D.38563 = mini_get_debug_options ();
            D.38564 = D.38563->break_on_unverified;
            if (D.38564 != 0) goto <D.38565>; else goto unverified;
            <D.38565>:
            raise (5);
            <D.38558>:
            D.34392 = ip + 6;
            if (D.34392 > end) goto <D.38566>; else goto <D.38567>;
            <D.38566>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.38568>; else goto <D.38569>;
            <D.38568>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.38570>; else goto <D.38571>;
            <D.38570>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.38571>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.38569>:
            D.38572 = mini_get_debug_options ();
            D.38573 = D.38572->break_on_unverified;
            if (D.38573 != 0) goto <D.38574>; else goto unverified;
            <D.38574>:
            raise (5);
            <D.38567>:
            D.38326 = ip + 2;
            token = mono_read32 (D.38326);
            klass.336 = mono_method_get_wrapper_data (method, token);
            klass = klass.336;
            klass.176 = klass;
            mono_class_init (klass.176);
            D.30079 = cfg->opt;
            D.30080 = D.30079 & 512;
            if (D.30080 != 0) goto <D.38576>; else goto <D.38579>;
            <D.38579>:
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.38576>; else goto <D.38577>;
            <D.38576>:
            {
              struct MonoInst * __domain_var;

              __domain_var = mono_get_domainvar (cfg);
              D.29691 = cfg->mempool;
              D.38580 = mono_mempool_alloc (D.29691, 56);
              iargs[0] = D.38580;
              D.38581 = iargs[0];
              D.38581 = iargs[0];
              D.38581->data.op[1].const_val = 0;
              D.38582 = D.38581->data.op[1].const_val;
              D.38581->data.op[0].const_val = D.38582;
              D.38581 = iargs[0];
              D.38581 = iargs[0];
              D.38581->prev = 0B;
              D.38583 = D.38581->prev;
              D.38581->next = D.38583;
              D.38581 = iargs[0];
              D.38581->opcode = 424;
              D.38581 = iargs[0];
              D.38581->flags = 0;
              D.38581 = iargs[0];
              D.38581->type = 0;
              D.38581 = iargs[0];
              D.38581->dreg = -1;
              D.38581 = iargs[0];
              D.38581 = iargs[0];
              D.38581 = iargs[0];
              D.38581->sreg3 = -1;
              D.38584 = D.38581->sreg3;
              D.38581->sreg2 = D.38584;
              D.38585 = D.38581->sreg2;
              D.38581->sreg1 = D.38585;
              D.38581 = iargs[0];
              D.29910 = cfg->ip;
              D.38581->cil_code = D.29910;
              D.38581 = iargs[0];
              D.30422 = cfg->varinfo;
              D.38586 = __domain_var->data.op[0].const_val;
              D.38587 = (unsigned int) D.38586;
              D.38588 = D.38587 * 4;
              D.38589 = D.30422 + D.38588;
              D.38590 = *D.38589;
              D.38591 = D.38590->data.op[1].vtype;
              D.38592 = mono_type_to_regmove (cfg, D.38591);
              D.38593 = (short unsigned int) D.38592;
              D.38581->opcode = D.38593;
              D.30422 = cfg->varinfo;
              D.38586 = __domain_var->data.op[0].const_val;
              D.38587 = (unsigned int) D.38586;
              D.38588 = D.38587 * 4;
              D.38589 = D.30422 + D.38588;
              D.38590 = *D.38589;
              D.38591 = D.38590->data.op[1].vtype;
              D.38581 = iargs[0];
              type_to_eval_stack_type (cfg, D.38591, D.38581);
              D.38581 = iargs[0];
              D.30422 = cfg->varinfo;
              D.38586 = __domain_var->data.op[0].const_val;
              D.38587 = (unsigned int) D.38586;
              D.38588 = D.38587 * 4;
              D.38589 = D.30422 + D.38588;
              D.38590 = *D.38589;
              D.38594 = D.38590->klass;
              D.38581->klass = D.38594;
              D.38581 = iargs[0];
              D.30422 = cfg->varinfo;
              D.38586 = __domain_var->data.op[0].const_val;
              D.38587 = (unsigned int) D.38586;
              D.38588 = D.38587 * 4;
              D.38589 = D.30422 + D.38588;
              D.38590 = *D.38589;
              D.38595 = D.38590->dreg;
              D.38581->sreg1 = D.38595;
              D.38581 = iargs[0];
              D.38581 = iargs[0];
              D.38596 = D.38581->type;
              D.38597 = (<unnamed type>) D.38596;
              D.38598 = alloc_dreg (cfg, D.38597);
              D.38599 = (int) D.38598;
              D.38581->dreg = D.38599;
              D.38581 = iargs[0];
              D.38600 = D.38581->opcode;
              if (D.38600 == 427) goto <D.38601>; else goto <D.38602>;
              <D.38601>:
              D.38581 = iargs[0];
              D.30422 = cfg->varinfo;
              D.38586 = __domain_var->data.op[0].const_val;
              D.38587 = (unsigned int) D.38586;
              D.38588 = D.38587 * 4;
              D.38589 = D.30422 + D.38588;
              D.38590 = *D.38589;
              D.38591 = D.38590->data.op[1].vtype;
              D.38603 = mono_class_from_mono_type (D.38591);
              D.38581->klass = D.38603;
              <D.38602>:
            }
            goto <D.38578>;
            <D.38577>:
            D.29691 = cfg->mempool;
            D.38604 = mono_mempool_alloc (D.29691, 56);
            iargs[0] = D.38604;
            D.38581 = iargs[0];
            D.38581 = iargs[0];
            D.38581->data.op[1].const_val = 0;
            D.38582 = D.38581->data.op[1].const_val;
            D.38581->data.op[0].const_val = D.38582;
            D.38581 = iargs[0];
            D.38581 = iargs[0];
            D.38581->prev = 0B;
            D.38583 = D.38581->prev;
            D.38581->next = D.38583;
            D.38581 = iargs[0];
            D.38581->opcode = 362;
            D.38581 = iargs[0];
            D.38581->flags = 0;
            D.38581 = iargs[0];
            D.38581->type = 0;
            D.38581 = iargs[0];
            D.38581->dreg = -1;
            D.38581 = iargs[0];
            D.38581 = iargs[0];
            D.38581 = iargs[0];
            D.38581->sreg3 = -1;
            D.38584 = D.38581->sreg3;
            D.38581->sreg2 = D.38584;
            D.38585 = D.38581->sreg2;
            D.38581->sreg1 = D.38585;
            D.38581 = iargs[0];
            D.29910 = cfg->ip;
            D.38581->cil_code = D.29910;
            D.38581 = iargs[0];
            D.29716 = cfg->domain;
            D.38581->data.op[0].p = D.29716;
            D.38581 = iargs[0];
            D.38581->type = 3;
            D.38581 = iargs[0];
            D.38605 = alloc_dreg (cfg, 3);
            D.38606 = (int) D.38605;
            D.38581->dreg = D.38606;
            <D.38578>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.38607>; else goto <D.38608>;
            <D.38607>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.38581 = iargs[0];
            D.29939->next = D.38581;
            D.38581 = iargs[0];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.38581->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.38581 = iargs[0];
            bblock.129->last_ins = D.38581;
            goto <D.38609>;
            <D.38608>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.38581 = iargs[0];
            bblock.129->last_ins = D.38581;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.38609>:
            D.29691 = cfg->mempool;
            D.38610 = mono_mempool_alloc (D.29691, 56);
            iargs[1] = D.38610;
            D.38611 = iargs[1];
            D.38611 = iargs[1];
            D.38611->data.op[1].const_val = 0;
            D.38612 = D.38611->data.op[1].const_val;
            D.38611->data.op[0].const_val = D.38612;
            D.38611 = iargs[1];
            D.38611 = iargs[1];
            D.38611->prev = 0B;
            D.38613 = D.38611->prev;
            D.38611->next = D.38613;
            D.38611 = iargs[1];
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.38615>; else goto <D.38616>;
            <D.38615>:
            iftmp.337 = 732;
            goto <D.38617>;
            <D.38616>:
            iftmp.337 = 362;
            <D.38617>:
            D.38611->opcode = iftmp.337;
            D.38611 = iargs[1];
            D.38611->flags = 0;
            D.38611 = iargs[1];
            D.38611->type = 0;
            D.38611 = iargs[1];
            D.38611->dreg = -1;
            D.38611 = iargs[1];
            D.38611 = iargs[1];
            D.38611 = iargs[1];
            D.38611->sreg3 = -1;
            D.38618 = D.38611->sreg3;
            D.38611->sreg2 = D.38618;
            D.38619 = D.38611->sreg2;
            D.38611->sreg1 = D.38619;
            D.38611 = iargs[1];
            D.29910 = cfg->ip;
            D.38611->cil_code = D.29910;
            D.38611 = iargs[1];
            klass.176 = klass;
            D.38611->data.op[0].p = klass.176;
            D.38611 = iargs[1];
            D.38611->data.op[1].src = 11B;
            D.38611 = iargs[1];
            D.38611->type = 3;
            D.38611 = iargs[1];
            D.38620 = alloc_dreg (cfg, 3);
            D.38621 = (int) D.38620;
            D.38611->dreg = D.38621;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.38622>; else goto <D.38623>;
            <D.38622>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.38611 = iargs[1];
            D.29939->next = D.38611;
            D.38611 = iargs[1];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.38611->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.38611 = iargs[1];
            bblock.129->last_ins = D.38611;
            goto <D.38624>;
            <D.38623>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.38611 = iargs[1];
            bblock.129->last_ins = D.38611;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.38624>:
            sp.338 = sp;
            sp = sp.338 + 4;
            D.38626 = mono_emit_jit_icall (cfg, mono_object_new, &iargs);
            *sp.338 = D.38626;
            ip = ip + 6;
            num_calls.339 = num_calls;
            num_calls = num_calls.339 + 1;
            D.38628 = num_calls.339 * 10;
            inline_costs = D.38628 + inline_costs;
            goto <D.27498>;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      <D.27515>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.38629>; else goto <D.38630>;
      <D.38629>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.38631>; else goto <D.38632>;
      <D.38631>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.38633>; else goto <D.38634>;
      <D.38633>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38634>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38632>:
      D.38635 = mini_get_debug_options ();
      D.38636 = D.38635->break_on_unverified;
      if (D.38636 != 0) goto <D.38637>; else goto unverified;
      <D.38637>:
      raise (5);
      <D.38630>:
      sp = sp + 4294967292;
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.38638 = alloc_ireg_mp (cfg);
      D.38639 = (int) D.38638;
      ins->dreg = D.38639;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      ins->type = 5;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.38640>; else goto <D.38641>;
      <D.38640>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.38642>;
      <D.38641>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.38642>:
      sp.340 = sp;
      sp = sp.340 + 4;
      *sp.340 = ins;
      ip = ip + 2;
      goto <D.27498>;
      <D.27516>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.38644>; else goto <D.38645>;
      <D.38644>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.38646>; else goto <D.38647>;
      <D.38646>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.38648>; else goto <D.38649>;
      <D.38648>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38649>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38647>:
      D.38650 = mini_get_debug_options ();
      D.38651 = D.38650->break_on_unverified;
      if (D.38651 != 0) goto <D.38652>; else goto unverified;
      <D.38652>:
      raise (5);
      <D.38645>:
      D.34392 = ip + 6;
      if (D.34392 > end) goto <D.38653>; else goto <D.38654>;
      <D.38653>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.38655>; else goto <D.38656>;
      <D.38655>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.38657>; else goto <D.38658>;
      <D.38657>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38658>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38656>:
      D.38659 = mini_get_debug_options ();
      D.38660 = D.38659->break_on_unverified;
      if (D.38660 != 0) goto <D.38661>; else goto unverified;
      <D.38661>:
      raise (5);
      <D.38654>:
      sp = sp + 4294967292;
      D.38326 = ip + 2;
      token = mono_read32 (D.38326);
      klass.341 = mono_method_get_wrapper_data (method, token);
      klass = klass.341;
      klass.176 = klass;
      D.35117 = BIT_FIELD_REF <*klass.176, 32, 160>;
      D.35789 = D.35117 & 8;
      D.38663 = D.35789 == 0;
      D.38664 = (long int) D.38663;
      D.38665 = __builtin_expect (D.38664, 0);
      if (D.38665 != 0) goto <D.38666>; else goto <D.38667>;
      <D.38666>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11169, "klass->valuetype");
      <D.38667>:
      klass.176 = klass;
      mono_class_init (klass.176);
      {
        struct MonoInst * src;
        struct MonoInst * dest;
        struct MonoInst * temp;

        src = *sp;
        klass.176 = klass;
        D.34409 = &klass.176->byval_arg;
        temp = mono_compile_create_var (cfg, D.34409, 329);
        temp->backend.is_pinvoke = 1;
        D.29691 = cfg->mempool;
        dest = mono_mempool_alloc (D.29691, 56);
        dest->data.op[1].const_val = 0;
        D.38668 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.38668;
        dest->prev = 0B;
        D.38669 = dest->prev;
        dest->next = D.38669;
        dest->opcode = 314;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.38670 = dest->sreg3;
        dest->sreg2 = D.38670;
        D.38671 = dest->sreg2;
        dest->sreg1 = D.38671;
        D.29910 = cfg->ip;
        dest->cil_code = D.29910;
        D.30422 = cfg->varinfo;
        D.38672 = temp->data.op[0].const_val;
        D.38673 = (unsigned int) D.38672;
        D.38674 = D.38673 * 4;
        D.38675 = D.30422 + D.38674;
        D.38676 = *D.38675;
        dest->data.op[0].p = D.38676;
        D.30422 = cfg->varinfo;
        D.38672 = temp->data.op[0].const_val;
        D.38673 = (unsigned int) D.38672;
        D.38674 = D.38673 * 4;
        D.38675 = D.30422 + D.38674;
        D.38676 = *D.38675;
        D.30422 = cfg->varinfo;
        D.38672 = temp->data.op[0].const_val;
        D.38673 = (unsigned int) D.38672;
        D.38674 = D.38673 * 4;
        D.38675 = D.30422 + D.38674;
        D.38676 = *D.38675;
        D.38677 = D.38676->flags;
        D.38678 = D.38677 | 16;
        D.38676->flags = D.38678;
        dest->type = 5;
        D.30422 = cfg->varinfo;
        D.38672 = temp->data.op[0].const_val;
        D.38673 = (unsigned int) D.38672;
        D.38674 = D.38673 * 4;
        D.38675 = D.30422 + D.38674;
        D.38676 = *D.38675;
        D.38679 = D.38676->klass;
        dest->klass = D.38679;
        D.38680 = alloc_dreg (cfg, 5);
        D.38681 = (int) D.38680;
        dest->dreg = D.38681;
        cfg->has_indirection = 1;
        D.29838 = cfg->gsharedvt;
        D.30765 = D.29838 != 0;
        D.30766 = (long int) D.30765;
        D.30767 = __builtin_expect (D.30766, 0);
        if (D.30767 != 0) goto <D.38682>; else goto <D.38683>;
        <D.38682>:
        D.30422 = cfg->varinfo;
        D.38672 = temp->data.op[0].const_val;
        D.38673 = (unsigned int) D.38672;
        D.38674 = D.38673 * 4;
        D.38675 = D.30422 + D.38674;
        D.38676 = *D.38675;
        D.38684 = D.38676->data.op[1].vtype;
        D.38685 = mini_is_gsharedvt_variable_type (cfg, D.38684);
        if (D.38685 != 0) goto <D.38686>; else goto <D.38687>;
        <D.38686>:
        handle_gsharedvt_ldaddr (cfg);
        <D.38687>:
        <D.38683>:
        D.38689 = mono_arch_is_soft_float ();
        if (D.38689 != 0) goto <D.38690>; else goto <D.38691>;
        <D.38690>:
        D.30422 = cfg->varinfo;
        D.38672 = temp->data.op[0].const_val;
        D.38673 = (unsigned int) D.38672;
        D.38674 = D.38673 * 4;
        D.38675 = D.30422 + D.38674;
        D.38676 = *D.38675;
        D.38696 = D.38676->type;
        if (D.38696 == 2) goto <D.38693>; else goto <D.38697>;
        <D.38697>:
        D.30422 = cfg->varinfo;
        D.38672 = temp->data.op[0].const_val;
        D.38673 = (unsigned int) D.38672;
        D.38674 = D.38673 * 4;
        D.38675 = D.30422 + D.38674;
        D.38676 = *D.38675;
        D.38696 = D.38676->type;
        if (D.38696 == 4) goto <D.38693>; else goto <D.38694>;
        <D.38693>:
        iftmp.343 = 1;
        goto <D.38695>;
        <D.38694>:
        iftmp.343 = 0;
        <D.38695>:
        iftmp.342 = (_Bool) iftmp.343;
        goto <D.38698>;
        <D.38691>:
        D.30422 = cfg->varinfo;
        D.38672 = temp->data.op[0].const_val;
        D.38673 = (unsigned int) D.38672;
        D.38674 = D.38673 * 4;
        D.38675 = D.30422 + D.38674;
        D.38676 = *D.38675;
        D.38696 = D.38676->type;
        iftmp.342 = D.38696 == 2;
        <D.38698>:
        if (iftmp.342 != 0) goto <D.38699>; else goto <D.38700>;
        <D.38699>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.30422 = cfg->varinfo;
          D.38672 = temp->data.op[0].const_val;
          D.38673 = (unsigned int) D.38672;
          D.38674 = D.38673 * 4;
          D.38675 = D.30422 + D.38674;
          D.38676 = *D.38675;
          D.38702 = D.38676->dreg;
          D.38703 = D.38702 + 1;
          D.38704 = (unsigned int) D.38703;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.38704 < D.30791) goto <D.38705>; else goto <D.38706>;
          <D.38705>:
          D.30794 = cfg->vreg_to_inst;
          D.30422 = cfg->varinfo;
          D.38672 = temp->data.op[0].const_val;
          D.38673 = (unsigned int) D.38672;
          D.38674 = D.38673 * 4;
          D.38675 = D.30422 + D.38674;
          D.38676 = *D.38675;
          D.38702 = D.38676->dreg;
          D.38707 = (sizetype) D.38702;
          D.38708 = D.38707 + 1;
          D.38709 = D.38708 * 4;
          D.38710 = D.30794 + D.38709;
          iftmp.344 = *D.38710;
          goto <D.38711>;
          <D.38706>:
          iftmp.344 = 0B;
          <D.38711>:
          var1 = iftmp.344;
          D.30422 = cfg->varinfo;
          D.38672 = temp->data.op[0].const_val;
          D.38673 = (unsigned int) D.38672;
          D.38674 = D.38673 * 4;
          D.38675 = D.30422 + D.38674;
          D.38676 = *D.38675;
          D.38702 = D.38676->dreg;
          D.38713 = D.38702 + 2;
          D.38714 = (unsigned int) D.38713;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.38714 < D.30791) goto <D.38715>; else goto <D.38716>;
          <D.38715>:
          D.30794 = cfg->vreg_to_inst;
          D.30422 = cfg->varinfo;
          D.38672 = temp->data.op[0].const_val;
          D.38673 = (unsigned int) D.38672;
          D.38674 = D.38673 * 4;
          D.38675 = D.30422 + D.38674;
          D.38676 = *D.38675;
          D.38702 = D.38676->dreg;
          D.38707 = (sizetype) D.38702;
          D.38717 = D.38707 + 2;
          D.38718 = D.38717 * 4;
          D.38719 = D.30794 + D.38718;
          iftmp.345 = *D.38719;
          goto <D.38720>;
          <D.38716>:
          iftmp.345 = 0B;
          <D.38720>:
          var2 = iftmp.345;
          D.38721 = var1 == 0B;
          D.38722 = (long int) D.38721;
          D.38723 = __builtin_expect (D.38722, 0);
          if (D.38723 != 0) goto <D.38724>; else goto <D.38725>;
          <D.38724>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11178, "var1");
          <D.38725>:
          D.38726 = var2 == 0B;
          D.38727 = (long int) D.38726;
          D.38728 = __builtin_expect (D.38727, 0);
          if (D.38728 != 0) goto <D.38729>; else goto <D.38730>;
          <D.38729>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11178, "var2");
          <D.38730>:
          D.38731 = var1->flags;
          D.38732 = D.38731 | 16;
          var1->flags = D.38732;
          D.38733 = var2->flags;
          D.38734 = D.38733 | 16;
          var2->flags = D.38734;
        }
        <D.38700>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.38735>; else goto <D.38736>;
        <D.38735>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = dest;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        dest->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = dest;
        goto <D.38737>;
        <D.38736>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = dest;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.38737>:
        klass.176 = klass;
        mini_emit_stobj (cfg, dest, src, klass.176, 1);
        D.29691 = cfg->mempool;
        dest = mono_mempool_alloc (D.29691, 56);
        dest->data.op[1].const_val = 0;
        D.38668 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.38668;
        dest->prev = 0B;
        D.38669 = dest->prev;
        dest->next = D.38669;
        dest->opcode = 424;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.38670 = dest->sreg3;
        dest->sreg2 = D.38670;
        D.38671 = dest->sreg2;
        dest->sreg1 = D.38671;
        D.29910 = cfg->ip;
        dest->cil_code = D.29910;
        D.30422 = cfg->varinfo;
        D.38672 = temp->data.op[0].const_val;
        D.38673 = (unsigned int) D.38672;
        D.38674 = D.38673 * 4;
        D.38675 = D.30422 + D.38674;
        D.38676 = *D.38675;
        D.38684 = D.38676->data.op[1].vtype;
        D.38738 = mono_type_to_regmove (cfg, D.38684);
        D.38739 = (short unsigned int) D.38738;
        dest->opcode = D.38739;
        D.30422 = cfg->varinfo;
        D.38672 = temp->data.op[0].const_val;
        D.38673 = (unsigned int) D.38672;
        D.38674 = D.38673 * 4;
        D.38675 = D.30422 + D.38674;
        D.38676 = *D.38675;
        D.38684 = D.38676->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.38684, dest);
        D.30422 = cfg->varinfo;
        D.38672 = temp->data.op[0].const_val;
        D.38673 = (unsigned int) D.38672;
        D.38674 = D.38673 * 4;
        D.38675 = D.30422 + D.38674;
        D.38676 = *D.38675;
        D.38679 = D.38676->klass;
        dest->klass = D.38679;
        D.30422 = cfg->varinfo;
        D.38672 = temp->data.op[0].const_val;
        D.38673 = (unsigned int) D.38672;
        D.38674 = D.38673 * 4;
        D.38675 = D.30422 + D.38674;
        D.38676 = *D.38675;
        D.38702 = D.38676->dreg;
        dest->sreg1 = D.38702;
        D.38740 = dest->type;
        D.38741 = (<unnamed type>) D.38740;
        D.38742 = alloc_dreg (cfg, D.38741);
        D.38743 = (int) D.38742;
        dest->dreg = D.38743;
        D.38744 = dest->opcode;
        if (D.38744 == 427) goto <D.38745>; else goto <D.38746>;
        <D.38745>:
        D.30422 = cfg->varinfo;
        D.38672 = temp->data.op[0].const_val;
        D.38673 = (unsigned int) D.38672;
        D.38674 = D.38673 * 4;
        D.38675 = D.30422 + D.38674;
        D.38676 = *D.38675;
        D.38684 = D.38676->data.op[1].vtype;
        D.38747 = mono_class_from_mono_type (D.38684);
        dest->klass = D.38747;
        <D.38746>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.38748>; else goto <D.38749>;
        <D.38748>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = dest;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        dest->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = dest;
        goto <D.38750>;
        <D.38749>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = dest;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.38750>:
        dest->type = 7;
        klass.176 = klass;
        dest->klass = klass.176;
        sp.346 = sp;
        sp = sp.346 + 4;
        *sp.346 = dest;
        ip = ip + 6;
      }
      goto <D.27498>;
      <D.27522>:
      D.33177 = cfg->ret;
      D.38752 = D.33177 == 0B;
      D.38753 = (long int) D.38752;
      D.38754 = __builtin_expect (D.38753, 0);
      if (D.38754 != 0) goto <D.38755>; else goto <D.38756>;
      <D.38755>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11194, "cfg->ret");
      <D.38756>:
      D.38757 = mono_method_signature (method);
      D.38758 = BIT_FIELD_REF <*D.38757, 32, 64>;
      D.38759 = D.38758 & 16777216;
      D.38760 = D.38759 == 0;
      D.38761 = (long int) D.38760;
      D.38762 = __builtin_expect (D.38761, 0);
      if (D.38762 != 0) goto <D.38763>; else goto <D.38764>;
      <D.38763>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11195, "mono_method_signature (method)->pinvoke");
      <D.38764>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.38765>; else goto <D.38766>;
      <D.38765>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.38767>; else goto <D.38768>;
      <D.38767>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.38769>; else goto <D.38770>;
      <D.38769>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38770>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38768>:
      D.38771 = mini_get_debug_options ();
      D.38772 = D.38771->break_on_unverified;
      if (D.38772 != 0) goto <D.38773>; else goto unverified;
      <D.38773>:
      raise (5);
      <D.38766>:
      sp = sp + 4294967292;
      D.34392 = ip + 6;
      if (D.34392 > end) goto <D.38774>; else goto <D.38775>;
      <D.38774>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.38776>; else goto <D.38777>;
      <D.38776>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.38778>; else goto <D.38779>;
      <D.38778>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38779>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38777>:
      D.38780 = mini_get_debug_options ();
      D.38781 = D.38780->break_on_unverified;
      if (D.38781 != 0) goto <D.38782>; else goto unverified;
      <D.38782>:
      raise (5);
      <D.38775>:
      D.38326 = ip + 2;
      token = mono_read32 (D.38326);
      klass.347 = mono_method_get_wrapper_data (method, token);
      klass = klass.347;
      D.33219 = cfg->vret_addr;
      if (D.33219 == 0B) goto <D.38784>; else goto <D.38785>;
      <D.38784>:
      D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.38786 = D.30081 & 1024;
      D.38787 = D.38786 == 0;
      D.38788 = (long int) D.38787;
      D.38789 = __builtin_expect (D.38788, 0);
      if (D.38789 != 0) goto <D.38790>; else goto <D.38791>;
      <D.38790>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11204, "cfg->ret_var_is_local");
      <D.38791>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 314;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.33177 = cfg->ret;
      ins->data.op[0].p = D.33177;
      D.33177 = cfg->ret;
      D.33177 = cfg->ret;
      D.38792 = D.33177->flags;
      D.38793 = D.38792 | 16;
      D.33177->flags = D.38793;
      ins->type = 5;
      D.33177 = cfg->ret;
      D.33228 = D.33177->klass;
      ins->klass = D.33228;
      D.38794 = alloc_dreg (cfg, 5);
      D.38795 = (int) D.38794;
      ins->dreg = D.38795;
      cfg->has_indirection = 1;
      D.29838 = cfg->gsharedvt;
      D.30765 = D.29838 != 0;
      D.30766 = (long int) D.30765;
      D.30767 = __builtin_expect (D.30766, 0);
      if (D.30767 != 0) goto <D.38796>; else goto <D.38797>;
      <D.38796>:
      D.33177 = cfg->ret;
      D.38798 = D.33177->data.op[1].vtype;
      D.38799 = mini_is_gsharedvt_variable_type (cfg, D.38798);
      if (D.38799 != 0) goto <D.38800>; else goto <D.38801>;
      <D.38800>:
      handle_gsharedvt_ldaddr (cfg);
      <D.38801>:
      <D.38797>:
      D.38803 = mono_arch_is_soft_float ();
      if (D.38803 != 0) goto <D.38804>; else goto <D.38805>;
      <D.38804>:
      D.33177 = cfg->ret;
      D.38810 = D.33177->type;
      if (D.38810 == 2) goto <D.38807>; else goto <D.38811>;
      <D.38811>:
      D.33177 = cfg->ret;
      D.38810 = D.33177->type;
      if (D.38810 == 4) goto <D.38807>; else goto <D.38808>;
      <D.38807>:
      iftmp.349 = 1;
      goto <D.38809>;
      <D.38808>:
      iftmp.349 = 0;
      <D.38809>:
      iftmp.348 = (_Bool) iftmp.349;
      goto <D.38812>;
      <D.38805>:
      D.33177 = cfg->ret;
      D.38810 = D.33177->type;
      iftmp.348 = D.38810 == 2;
      <D.38812>:
      if (iftmp.348 != 0) goto <D.38813>; else goto <D.38814>;
      <D.38813>:
      {
        struct MonoInst * var1;
        struct MonoInst * var2;

        D.33177 = cfg->ret;
        D.33229 = D.33177->dreg;
        D.38816 = D.33229 + 1;
        D.38817 = (unsigned int) D.38816;
        D.30791 = cfg->vreg_to_inst_len;
        if (D.38817 < D.30791) goto <D.38818>; else goto <D.38819>;
        <D.38818>:
        D.30794 = cfg->vreg_to_inst;
        D.33177 = cfg->ret;
        D.33229 = D.33177->dreg;
        D.38820 = (sizetype) D.33229;
        D.38821 = D.38820 + 1;
        D.38822 = D.38821 * 4;
        D.38823 = D.30794 + D.38822;
        iftmp.350 = *D.38823;
        goto <D.38824>;
        <D.38819>:
        iftmp.350 = 0B;
        <D.38824>:
        var1 = iftmp.350;
        D.33177 = cfg->ret;
        D.33229 = D.33177->dreg;
        D.38826 = D.33229 + 2;
        D.38827 = (unsigned int) D.38826;
        D.30791 = cfg->vreg_to_inst_len;
        if (D.38827 < D.30791) goto <D.38828>; else goto <D.38829>;
        <D.38828>:
        D.30794 = cfg->vreg_to_inst;
        D.33177 = cfg->ret;
        D.33229 = D.33177->dreg;
        D.38820 = (sizetype) D.33229;
        D.38830 = D.38820 + 2;
        D.38831 = D.38830 * 4;
        D.38832 = D.30794 + D.38831;
        iftmp.351 = *D.38832;
        goto <D.38833>;
        <D.38829>:
        iftmp.351 = 0B;
        <D.38833>:
        var2 = iftmp.351;
        D.38834 = var1 == 0B;
        D.38835 = (long int) D.38834;
        D.38836 = __builtin_expect (D.38835, 0);
        if (D.38836 != 0) goto <D.38837>; else goto <D.38838>;
        <D.38837>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11206, "var1");
        <D.38838>:
        D.38839 = var2 == 0B;
        D.38840 = (long int) D.38839;
        D.38841 = __builtin_expect (D.38840, 0);
        if (D.38841 != 0) goto <D.38842>; else goto <D.38843>;
        <D.38842>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11206, "var2");
        <D.38843>:
        D.38844 = var1->flags;
        D.38845 = D.38844 | 16;
        var1->flags = D.38845;
        D.38846 = var2->flags;
        D.38847 = D.38846 | 16;
        var2->flags = D.38847;
      }
      <D.38814>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.38848>; else goto <D.38849>;
      <D.38848>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.38850>;
      <D.38849>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.38850>:
      goto <D.38851>;
      <D.38785>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      ins->type = 5;
      D.33177 = cfg->ret;
      D.33228 = D.33177->klass;
      ins->klass = D.33228;
      D.33219 = cfg->vret_addr;
      D.33242 = D.33219->dreg;
      ins->sreg1 = D.33242;
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.38852 = alloc_dreg (cfg, D.30433);
      D.38853 = (int) D.38852;
      ins->dreg = D.38853;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.38854>; else goto <D.38855>;
      <D.38854>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.38856>;
      <D.38855>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.38856>:
      <D.38851>:
      D.30679 = *sp;
      klass.176 = klass;
      mini_emit_stobj (cfg, ins, D.30679, klass.176, 1);
      if (sp != stack_start) goto <D.38857>; else goto <D.38858>;
      <D.38857>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.38859>; else goto <D.38860>;
      <D.38859>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.38861>; else goto <D.38862>;
      <D.38861>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38862>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38860>:
      D.38863 = mini_get_debug_options ();
      D.38864 = D.38863->break_on_unverified;
      if (D.38864 != 0) goto <D.38865>; else goto unverified;
      <D.38865>:
      raise (5);
      <D.38858>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 442;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      ins->data.op[0].target_block = end_bblock;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      if (D.30024 != 0B) goto <D.38866>; else goto <D.38867>;
      <D.38866>:
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      D.30024->next = ins;
      bblock.77 = bblock;
      D.30024 = bblock.77->last_ins;
      ins->prev = D.30024;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      goto <D.38868>;
      <D.38867>:
      bblock.77 = bblock;
      bblock.77 = bblock;
      bblock.77->last_ins = ins;
      D.30024 = bblock.77->last_ins;
      bblock.77->code = D.30024;
      <D.38868>:
      bblock.77 = bblock;
      link_bblock (cfg, bblock.77, end_bblock);
      start_new_bblock = 1;
      ip = ip + 6;
      goto <D.27498>;
      <D.27525>:
      <D.27526>:
      {
        int token;

        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        if (D.30457 <= 3) goto <D.38869>; else goto <D.38870>;
        <D.38869>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.38871>; else goto <D.38872>;
        <D.38871>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 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>:
        sp = sp + 4294967292;
        D.34392 = ip + 6;
        if (D.34392 > end) goto <D.38878>; else goto <D.38879>;
        <D.38878>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.38880>; else goto <D.38881>;
        <D.38880>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.38882>; else goto <D.38883>;
        <D.38882>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38883>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38881>:
        D.38884 = mini_get_debug_options ();
        D.38885 = D.38884->break_on_unverified;
        if (D.38885 != 0) goto <D.38886>; else goto unverified;
        <D.38886>:
        raise (5);
        <D.38879>:
        D.38326 = ip + 2;
        D.38887 = mono_read32 (D.38326);
        token = (int) D.38887;
        token.352 = (unsigned int) token;
        klass.353 = mono_method_get_wrapper_data (method, token.352);
        klass = klass.353;
        D.30709 = ip + 1;
        D.30710 = *D.30709;
        if (D.30710 == 7) goto <D.38890>; else goto <D.38891>;
        <D.38890>:
        klass.176 = klass;
        D.30679 = *sp;
        ins = handle_cisinst (cfg, klass.176, D.30679);
        goto <D.38892>;
        <D.38891>:
        klass.176 = klass;
        D.30679 = *sp;
        ins = handle_ccastclass (cfg, klass.176, D.30679);
        <D.38892>:
        bblock.129 = cfg->cbb;
        bblock = bblock.129;
        sp.354 = sp;
        sp = sp.354 + 4;
        *sp.354 = ins;
        ip = ip + 6;
        goto <D.27498>;
      }
      <D.27528>:
      <D.27529>:
      ip = ip + 2;
      goto <D.27498>;
      <D.27530>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      D.30371 = header->max_stack;
      D.30372 = (int) D.30371;
      if (D.30458 >= D.30372) goto <D.38894>; else goto <D.38895>;
      <D.38894>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.38896>; else goto <D.38897>;
      <D.38896>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.38898>; else goto <D.38899>;
      <D.38898>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38899>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38897>:
      D.38900 = mini_get_debug_options ();
      D.38901 = D.38900->break_on_unverified;
      if (D.38901 != 0) goto <D.38902>; else goto unverified;
      <D.38902>:
      raise (5);
      <D.38895>:
      D.34392 = ip + 6;
      if (D.34392 > end) goto <D.38903>; else goto <D.38904>;
      <D.38903>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.38905>; else goto <D.38906>;
      <D.38905>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.38907>; else goto <D.38908>;
      <D.38907>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38908>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38906>:
      D.38909 = mini_get_debug_options ();
      D.38910 = D.38909->break_on_unverified;
      if (D.38910 != 0) goto <D.38911>; else goto unverified;
      <D.38911>:
      raise (5);
      <D.38904>:
      D.38326 = ip + 2;
      token = mono_read32 (D.38326);
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.30082 = D.30081 & 64;
      if (D.30082 != 0) goto <D.38913>; else goto <D.38914>;
      <D.38913>:
      iftmp.355 = 732;
      goto <D.38915>;
      <D.38914>:
      iftmp.355 = 362;
      <D.38915>:
      ins->opcode = iftmp.355;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.38916 = mono_method_get_wrapper_data (method, token);
      ins->data.op[0].p = D.38916;
      ins->data.op[1].src = 11B;
      ins->type = 3;
      D.38917 = alloc_dreg (cfg, 3);
      D.38918 = (int) D.38917;
      ins->dreg = D.38918;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.38919>; else goto <D.38920>;
      <D.38919>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.38921>;
      <D.38920>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.38921>:
      sp.356 = sp;
      sp = sp.356 + 4;
      *sp.356 = ins;
      ip = ip + 6;
      num_calls.357 = num_calls;
      num_calls = num_calls.357 + 1;
      D.38924 = num_calls.357 * 10;
      inline_costs = D.38924 + inline_costs;
      goto <D.27498>;
      <D.27531>:
      bblock.77 = bblock;
      bblock.77->out_of_line = 1;
      ip = ip + 2;
      goto <D.27498>;
      <D.27532>:
      {
        int key;

        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        D.30458 = D.30457 /[ex] 4;
        D.30371 = header->max_stack;
        D.30372 = (int) D.30371;
        if (D.30458 >= D.30372) goto <D.38925>; else goto <D.38926>;
        <D.38925>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.38927>; else goto <D.38928>;
        <D.38927>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.38929>; else goto <D.38930>;
        <D.38929>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38930>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38928>:
        D.38931 = mini_get_debug_options ();
        D.38932 = D.38931->break_on_unverified;
        if (D.38932 != 0) goto <D.38933>; else goto unverified;
        <D.38933>:
        raise (5);
        <D.38926>:
        D.34392 = ip + 6;
        if (D.34392 > end) goto <D.38934>; else goto <D.38935>;
        <D.38934>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.38936>; else goto <D.38937>;
        <D.38936>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.38938>; else goto <D.38939>;
        <D.38938>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38939>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38937>:
        D.38940 = mini_get_debug_options ();
        D.38941 = D.38940->break_on_unverified;
        if (D.38941 != 0) goto <D.38942>; else goto unverified;
        <D.38942>:
        raise (5);
        <D.38935>:
        D.38326 = ip + 2;
        D.38943 = mono_read32 (D.38326);
        key = (int) D.38943;
        D.38944 = key > 8;
        D.38945 = (long int) D.38944;
        D.38946 = __builtin_expect (D.38945, 0);
        if (D.38946 != 0) goto <D.38947>; else goto <D.38948>;
        <D.38947>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11268, "key < TLS_KEY_NUM");
        <D.38948>:
        key.358 = (<unnamed type>) key;
        ins = mono_create_tls_get (cfg, key.358);
        if (ins == 0B) goto <D.38950>; else goto <D.38951>;
        <D.38950>:
        D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.30082 = D.30081 & 64;
        if (D.30082 != 0) goto <D.38952>; else goto <D.38953>;
        <D.38952>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 1) goto <D.38954>; else goto <D.38955>;
        <D.38954>:
        printf ("AOT disabled: %s:%d\n", "method-to-ir.c", 11273);
        <D.38955>:
        cfg->disable_aot = 1;
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 791;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        D.38956 = alloc_preg (cfg);
        D.38957 = (int) D.38956;
        ins->dreg = D.38957;
        ins->type = 3;
        goto <D.38958>;
        <D.38953>:
        monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 11278);
        <D.38958>:
        <D.38951>:
        ins->type = 3;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        if (D.30024 != 0B) goto <D.38959>; else goto <D.38960>;
        <D.38959>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        D.30024->next = ins;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        ins->prev = D.30024;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        goto <D.38961>;
        <D.38960>:
        bblock.77 = bblock;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        D.30024 = bblock.77->last_ins;
        bblock.77->code = D.30024;
        <D.38961>:
        sp.359 = sp;
        sp = sp.359 + 4;
        *sp.359 = ins;
        ip = ip + 6;
        goto <D.27498>;
      }
      <D.27534>:
      {
        struct MonoCallInst * call;

        D.38963 = cfg->dyn_call_var;
        if (D.38963 == 0B) goto <D.38964>; else goto <D.38965>;
        <D.38964>:
        D.30093 = mono_defaults.int_class;
        D.30094 = &D.30093->byval_arg;
        D.38966 = mono_compile_create_var (cfg, D.30094, 329);
        cfg->dyn_call_var = D.38966;
        D.38963 = cfg->dyn_call_var;
        D.38963 = cfg->dyn_call_var;
        D.38967 = D.38963->flags;
        D.38968 = D.38967 | 4;
        D.38963->flags = D.38968;
        <D.38965>:
        D.29691 = cfg->mempool;
        call = mono_mempool_alloc0 (D.29691, 120);
        call->inst.opcode = 361;
        call->inst.dreg = -1;
        call->inst.sreg3 = -1;
        D.38969 = call->inst.sreg3;
        call->inst.sreg2 = D.38969;
        D.38970 = call->inst.sreg2;
        call->inst.sreg1 = D.38970;
        D.29910 = cfg->ip;
        call->inst.cil_code = D.29910;
        ins = call;
        sp = sp + 4294967288;
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        ins->sreg1 = D.30872;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        D.31795 = D.31794->dreg;
        ins->sreg2 = D.31795;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        if (D.30024 != 0B) goto <D.38971>; else goto <D.38972>;
        <D.38971>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        D.30024->next = ins;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        ins->prev = D.30024;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        goto <D.38973>;
        <D.38972>:
        bblock.77 = bblock;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        D.30024 = bblock.77->last_ins;
        bblock.77->code = D.30024;
        <D.38973>:
        D.38974 = cfg->param_area;
        cfg->param_area = D.38974;
        ip = ip + 2;
        num_calls.360 = num_calls;
        num_calls = num_calls.360 + 1;
        D.38976 = num_calls.360 * 10;
        inline_costs = D.38976 + inline_costs;
        goto <D.27498>;
      }
      <D.27536>:
      D.31124 = ip + 5;
      if (D.31124 > end) goto <D.38977>; else goto <D.38978>;
      <D.38977>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.38979>; else goto <D.38980>;
      <D.38979>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.38981>; else goto <D.38982>;
      <D.38981>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38982>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38980>:
      D.38983 = mini_get_debug_options ();
      D.38984 = D.38983->break_on_unverified;
      if (D.38984 != 0) goto <D.38985>; else goto unverified;
      <D.38985>:
      raise (5);
      <D.38978>:
      D.31143 = ip + 1;
      D.38986 = mono_read32 (D.31143);
      D.38987 = (int) D.38986;
      emit_memory_barrier (cfg, D.38987);
      ip = ip + 5;
      goto <D.27498>;
      <D.27537>:
      {
        struct MonoInst * args[16];
        struct MonoInst * ad_ins;
        struct MonoInst * lmf_ins;
        struct MonoBasicBlock * next_bb;

        try
          {
            next_bb = 0B;
            D.30093 = mono_defaults.int_class;
            D.30094 = &D.30093->byval_arg;
            D.38988 = mono_compile_create_var (cfg, D.30094, 329);
            cfg->orig_domain_var = D.38988;
            D.29691 = cfg->mempool;
            ins = mono_mempool_alloc (D.29691, 56);
            ins->data.op[1].const_val = 0;
            D.29906 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.29906;
            ins->prev = 0B;
            D.29907 = ins->prev;
            ins->next = D.29907;
            ins->opcode = 362;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.29908 = ins->sreg3;
            ins->sreg2 = D.29908;
            D.29909 = ins->sreg2;
            ins->sreg1 = D.29909;
            D.29910 = cfg->ip;
            ins->cil_code = D.29910;
            ins->data.op[0].p = 0B;
            ins->type = 3;
            D.38989 = alloc_dreg (cfg, 3);
            D.38990 = (int) D.38989;
            ins->dreg = D.38990;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.38991>; else goto <D.38992>;
            <D.38991>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = ins;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            ins->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            goto <D.38993>;
            <D.38992>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.38993>:
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.38994 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.38994;
              inst->prev = 0B;
              D.38995 = inst->prev;
              inst->next = D.38995;
              inst->opcode = 424;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.38996 = inst->sreg3;
              inst->sreg2 = D.38996;
              D.38997 = inst->sreg2;
              inst->sreg1 = D.38997;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              D.38998 = cfg->orig_domain_var;
              D.38999 = D.38998->dreg;
              inst->dreg = D.38999;
              D.30101 = ins->dreg;
              inst->sreg1 = D.30101;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.39000>; else goto <D.39001>;
              <D.39000>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.39002>;
              <D.39001>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.39002>:
            }
            ad_ins = mono_get_domain_intrinsic (cfg);
            lmf_ins = mono_get_lmf_intrinsic (cfg);
            if (0 != 0) goto <D.39003>; else goto <D.39004>;
            <D.39003>:
            D.29691 = cfg->mempool;
            next_bb = mono_mempool_alloc0 (D.29691, 172);
            D.29798 = cfg->num_bblocks;
            D.39005 = D.29798;
            D.39006 = D.39005 + 1;
            cfg->num_bblocks = D.39006;
            D.39007 = (int) D.39005;
            next_bb->block_num = D.39007;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.39008>; else goto <D.39009>;
            <D.39008>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = ad_ins;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            ad_ins->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ad_ins;
            goto <D.39010>;
            <D.39009>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ad_ins;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.39010>:
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.39011 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.39011;
              inst->prev = 0B;
              D.39012 = inst->prev;
              inst->next = D.39012;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.39013 = inst->sreg3;
              inst->sreg2 = D.39013;
              D.39014 = inst->sreg2;
              inst->sreg1 = D.39014;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = -1;
              D.39015 = ad_ins->dreg;
              inst->sreg1 = D.39015;
              inst->data.op[1].const_val = 0;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.39016>; else goto <D.39017>;
              <D.39016>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.39018>;
              <D.39017>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.39018>:
            }
            {
              struct MonoInst * ins;
              struct MonoBasicBlock * falsebb;

              D.29691 = cfg->mempool;
              ins = mono_mempool_alloc (D.29691, 56);
              ins->data.op[1].const_val = 0;
              D.39019 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.39019;
              ins->prev = 0B;
              D.39020 = ins->prev;
              ins->next = D.39020;
              ins->opcode = 653;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.39021 = ins->sreg3;
              ins->sreg2 = D.39021;
              D.39022 = ins->sreg2;
              ins->sreg1 = D.39022;
              D.29910 = cfg->ip;
              ins->cil_code = D.29910;
              if (0 != 0) goto <D.39023>; else goto <D.39024>;
              <D.39023>:
              D.29691 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.29691, 172);
              D.29798 = cfg->num_bblocks;
              D.39025 = D.29798;
              D.39026 = D.39025 + 1;
              cfg->num_bblocks = D.39026;
              D.39027 = (int) D.39025;
              falsebb->block_num = D.39027;
              ins->data.op[0].target_block = next_bb;
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, next_bb);
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.39028>; else goto <D.39029>;
              <D.39028>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = ins;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              ins->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              goto <D.39030>;
              <D.39029>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.39030>:
              D.39031 = falsebb->cil_code;
              if (D.39031 != 0B) goto <D.39032>; else goto <D.39033>;
              <D.39032>:
              D.29821 = cfg->cil_offset_to_bb;
              D.39031 = falsebb->cil_code;
              D.39034 = (int) D.39031;
              D.29825 = cfg->cil_start;
              D.29826 = (int) D.29825;
              D.39035 = D.39034 - D.29826;
              D.39036 = (unsigned int) D.39035;
              D.39037 = D.39036 * 4;
              D.39038 = D.29821 + D.39037;
              *D.39038 = falsebb;
              <D.39033>:
              D.29857 = cfg->real_offset;
              falsebb->real_offset = D.29857;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.39042>; else goto <D.39039>;
              <D.39042>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33848 = D.33847 + 64985;
              if (D.33848 <= 9) goto <D.39040>; else goto <D.39043>;
              <D.39043>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33850 = D.33847 + 64878;
              if (D.33850 <= 9) goto <D.39040>; else goto <D.39044>;
              <D.39044>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33852 = D.33847 + 64888;
              if (D.33852 <= 9) goto <D.39040>; else goto <D.39039>;
              <D.39040>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33853 = D.29939->data.op[1].many_blocks;
              D.33854 = D.33853 + 4;
              D.33855 = *D.33854;
              if (D.33855 == 0B) goto <D.39045>; else goto <D.39039>;
              <D.39045>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33853 = D.29939->data.op[1].many_blocks;
              D.33854 = D.33853 + 4;
              *D.33854 = falsebb;
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, falsebb);
              goto <D.39041>;
              <D.39039>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 == 0B) goto <D.39046>; else goto <D.39048>;
              <D.39048>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              if (D.33847 != 442) goto <D.39049>; else goto <D.39047>;
              <D.39049>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              if (D.33847 != 759) goto <D.39050>; else goto <D.39047>;
              <D.39050>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33848 = D.33847 + 64985;
              if (D.33848 > 9) goto <D.39051>; else goto <D.39047>;
              <D.39051>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33850 = D.33847 + 64878;
              if (D.33850 > 9) goto <D.39052>; else goto <D.39047>;
              <D.39052>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33852 = D.33847 + 64888;
              if (D.33852 > 9) goto <D.39046>; else goto <D.39047>;
              <D.39046>:
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, falsebb);
              <D.39047>:
              <D.39041>:
              bblock.129 = cfg->cbb;
              bblock.129->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.39053>;
              <D.39024>:
              D.29691 = cfg->mempool;
              D.39054 = mono_mempool_alloc (D.29691, 8);
              ins->data.op[1].many_blocks = D.39054;
              D.39055 = ins->data.op[1].many_blocks;
              *D.39055 = next_bb;
              D.39055 = ins->data.op[1].many_blocks;
              D.39056 = D.39055 + 4;
              *D.39056 = 0B;
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, next_bb);
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.39057>; else goto <D.39058>;
              <D.39057>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = ins;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              ins->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              goto <D.39059>;
              <D.39058>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.39059>:
              D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.33871 = D.30081 & 8;
              if (D.33871 == 0) goto <D.39060>; else goto <D.39061>;
              <D.39060>:
              D.29691 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.29691, 172);
              D.29798 = cfg->num_bblocks;
              D.39062 = D.29798;
              D.39063 = D.39062 + 1;
              cfg->num_bblocks = D.39063;
              D.39064 = (int) D.39062;
              falsebb->block_num = D.39064;
              D.39055 = ins->data.op[1].many_blocks;
              D.39056 = D.39055 + 4;
              *D.39056 = falsebb;
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, falsebb);
              D.39031 = falsebb->cil_code;
              if (D.39031 != 0B) goto <D.39065>; else goto <D.39066>;
              <D.39065>:
              D.29821 = cfg->cil_offset_to_bb;
              D.39031 = falsebb->cil_code;
              D.39034 = (int) D.39031;
              D.29825 = cfg->cil_start;
              D.29826 = (int) D.29825;
              D.39035 = D.39034 - D.29826;
              D.39036 = (unsigned int) D.39035;
              D.39037 = D.39036 * 4;
              D.39038 = D.29821 + D.39037;
              *D.39038 = falsebb;
              <D.39066>:
              D.29857 = cfg->real_offset;
              falsebb->real_offset = D.29857;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.39070>; else goto <D.39067>;
              <D.39070>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33848 = D.33847 + 64985;
              if (D.33848 <= 9) goto <D.39068>; else goto <D.39071>;
              <D.39071>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33850 = D.33847 + 64878;
              if (D.33850 <= 9) goto <D.39068>; else goto <D.39072>;
              <D.39072>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33852 = D.33847 + 64888;
              if (D.33852 <= 9) goto <D.39068>; else goto <D.39067>;
              <D.39068>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33853 = D.29939->data.op[1].many_blocks;
              D.33854 = D.33853 + 4;
              D.33855 = *D.33854;
              if (D.33855 == 0B) goto <D.39073>; else goto <D.39067>;
              <D.39073>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33853 = D.29939->data.op[1].many_blocks;
              D.33854 = D.33853 + 4;
              *D.33854 = falsebb;
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, falsebb);
              goto <D.39069>;
              <D.39067>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 == 0B) goto <D.39074>; else goto <D.39076>;
              <D.39076>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              if (D.33847 != 442) goto <D.39077>; else goto <D.39075>;
              <D.39077>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              if (D.33847 != 759) goto <D.39078>; else goto <D.39075>;
              <D.39078>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33848 = D.33847 + 64985;
              if (D.33848 > 9) goto <D.39079>; else goto <D.39075>;
              <D.39079>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33850 = D.33847 + 64878;
              if (D.33850 > 9) goto <D.39080>; else goto <D.39075>;
              <D.39080>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33852 = D.33847 + 64888;
              if (D.33852 > 9) goto <D.39074>; else goto <D.39075>;
              <D.39074>:
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, falsebb);
              <D.39075>:
              <D.39069>:
              bblock.129 = cfg->cbb;
              bblock.129->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.39081>;
              <D.39061>:
              bblock.129 = cfg->cbb;
              bblock.129->extended = 1;
              <D.39081>:
              <D.39053>:
            }
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.39082>; else goto <D.39083>;
            <D.39082>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = lmf_ins;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            lmf_ins->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = lmf_ins;
            goto <D.39084>;
            <D.39083>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = lmf_ins;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.39084>:
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.39085 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.39085;
              inst->prev = 0B;
              D.39086 = inst->prev;
              inst->next = D.39086;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.39087 = inst->sreg3;
              inst->sreg2 = D.39087;
              D.39088 = inst->sreg2;
              inst->sreg1 = D.39088;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              inst->dreg = -1;
              D.39089 = lmf_ins->dreg;
              inst->sreg1 = D.39089;
              inst->data.op[1].const_val = 0;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.39090>; else goto <D.39091>;
              <D.39090>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.39092>;
              <D.39091>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.39092>:
            }
            {
              struct MonoInst * ins;
              struct MonoBasicBlock * falsebb;

              D.29691 = cfg->mempool;
              ins = mono_mempool_alloc (D.29691, 56);
              ins->data.op[1].const_val = 0;
              D.39093 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.39093;
              ins->prev = 0B;
              D.39094 = ins->prev;
              ins->next = D.39094;
              ins->opcode = 653;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.39095 = ins->sreg3;
              ins->sreg2 = D.39095;
              D.39096 = ins->sreg2;
              ins->sreg1 = D.39096;
              D.29910 = cfg->ip;
              ins->cil_code = D.29910;
              if (0 != 0) goto <D.39097>; else goto <D.39098>;
              <D.39097>:
              D.29691 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.29691, 172);
              D.29798 = cfg->num_bblocks;
              D.39099 = D.29798;
              D.39100 = D.39099 + 1;
              cfg->num_bblocks = D.39100;
              D.39101 = (int) D.39099;
              falsebb->block_num = D.39101;
              ins->data.op[0].target_block = next_bb;
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, next_bb);
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.39102>; else goto <D.39103>;
              <D.39102>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = ins;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              ins->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              goto <D.39104>;
              <D.39103>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.39104>:
              D.39105 = falsebb->cil_code;
              if (D.39105 != 0B) goto <D.39106>; else goto <D.39107>;
              <D.39106>:
              D.29821 = cfg->cil_offset_to_bb;
              D.39105 = falsebb->cil_code;
              D.39108 = (int) D.39105;
              D.29825 = cfg->cil_start;
              D.29826 = (int) D.29825;
              D.39109 = D.39108 - D.29826;
              D.39110 = (unsigned int) D.39109;
              D.39111 = D.39110 * 4;
              D.39112 = D.29821 + D.39111;
              *D.39112 = falsebb;
              <D.39107>:
              D.29857 = cfg->real_offset;
              falsebb->real_offset = D.29857;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.39116>; else goto <D.39113>;
              <D.39116>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33848 = D.33847 + 64985;
              if (D.33848 <= 9) goto <D.39114>; else goto <D.39117>;
              <D.39117>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33850 = D.33847 + 64878;
              if (D.33850 <= 9) goto <D.39114>; else goto <D.39118>;
              <D.39118>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33852 = D.33847 + 64888;
              if (D.33852 <= 9) goto <D.39114>; else goto <D.39113>;
              <D.39114>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33853 = D.29939->data.op[1].many_blocks;
              D.33854 = D.33853 + 4;
              D.33855 = *D.33854;
              if (D.33855 == 0B) goto <D.39119>; else goto <D.39113>;
              <D.39119>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33853 = D.29939->data.op[1].many_blocks;
              D.33854 = D.33853 + 4;
              *D.33854 = falsebb;
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, falsebb);
              goto <D.39115>;
              <D.39113>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 == 0B) goto <D.39120>; else goto <D.39122>;
              <D.39122>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              if (D.33847 != 442) goto <D.39123>; else goto <D.39121>;
              <D.39123>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              if (D.33847 != 759) goto <D.39124>; else goto <D.39121>;
              <D.39124>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33848 = D.33847 + 64985;
              if (D.33848 > 9) goto <D.39125>; else goto <D.39121>;
              <D.39125>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33850 = D.33847 + 64878;
              if (D.33850 > 9) goto <D.39126>; else goto <D.39121>;
              <D.39126>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33852 = D.33847 + 64888;
              if (D.33852 > 9) goto <D.39120>; else goto <D.39121>;
              <D.39120>:
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, falsebb);
              <D.39121>:
              <D.39115>:
              bblock.129 = cfg->cbb;
              bblock.129->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.39127>;
              <D.39098>:
              D.29691 = cfg->mempool;
              D.39128 = mono_mempool_alloc (D.29691, 8);
              ins->data.op[1].many_blocks = D.39128;
              D.39129 = ins->data.op[1].many_blocks;
              *D.39129 = next_bb;
              D.39129 = ins->data.op[1].many_blocks;
              D.39130 = D.39129 + 4;
              *D.39130 = 0B;
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, next_bb);
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.39131>; else goto <D.39132>;
              <D.39131>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = ins;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              ins->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              goto <D.39133>;
              <D.39132>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = ins;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.39133>:
              D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.33871 = D.30081 & 8;
              if (D.33871 == 0) goto <D.39134>; else goto <D.39135>;
              <D.39134>:
              D.29691 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.29691, 172);
              D.29798 = cfg->num_bblocks;
              D.39136 = D.29798;
              D.39137 = D.39136 + 1;
              cfg->num_bblocks = D.39137;
              D.39138 = (int) D.39136;
              falsebb->block_num = D.39138;
              D.39129 = ins->data.op[1].many_blocks;
              D.39130 = D.39129 + 4;
              *D.39130 = falsebb;
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, falsebb);
              D.39105 = falsebb->cil_code;
              if (D.39105 != 0B) goto <D.39139>; else goto <D.39140>;
              <D.39139>:
              D.29821 = cfg->cil_offset_to_bb;
              D.39105 = falsebb->cil_code;
              D.39108 = (int) D.39105;
              D.29825 = cfg->cil_start;
              D.29826 = (int) D.29825;
              D.39109 = D.39108 - D.29826;
              D.39110 = (unsigned int) D.39109;
              D.39111 = D.39110 * 4;
              D.39112 = D.29821 + D.39111;
              *D.39112 = falsebb;
              <D.39140>:
              D.29857 = cfg->real_offset;
              falsebb->real_offset = D.29857;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.39144>; else goto <D.39141>;
              <D.39144>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33848 = D.33847 + 64985;
              if (D.33848 <= 9) goto <D.39142>; else goto <D.39145>;
              <D.39145>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33850 = D.33847 + 64878;
              if (D.33850 <= 9) goto <D.39142>; else goto <D.39146>;
              <D.39146>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33852 = D.33847 + 64888;
              if (D.33852 <= 9) goto <D.39142>; else goto <D.39141>;
              <D.39142>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33853 = D.29939->data.op[1].many_blocks;
              D.33854 = D.33853 + 4;
              D.33855 = *D.33854;
              if (D.33855 == 0B) goto <D.39147>; else goto <D.39141>;
              <D.39147>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33853 = D.29939->data.op[1].many_blocks;
              D.33854 = D.33853 + 4;
              *D.33854 = falsebb;
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, falsebb);
              goto <D.39143>;
              <D.39141>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 == 0B) goto <D.39148>; else goto <D.39150>;
              <D.39150>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              if (D.33847 != 442) goto <D.39151>; else goto <D.39149>;
              <D.39151>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              if (D.33847 != 759) goto <D.39152>; else goto <D.39149>;
              <D.39152>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33848 = D.33847 + 64985;
              if (D.33848 > 9) goto <D.39153>; else goto <D.39149>;
              <D.39153>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33850 = D.33847 + 64878;
              if (D.33850 > 9) goto <D.39154>; else goto <D.39149>;
              <D.39154>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.33847 = D.29939->opcode;
              D.33852 = D.33847 + 64888;
              if (D.33852 > 9) goto <D.39148>; else goto <D.39149>;
              <D.39148>:
              bblock.129 = cfg->cbb;
              mono_link_bblock (cfg, bblock.129, falsebb);
              <D.39149>:
              <D.39143>:
              bblock.129 = cfg->cbb;
              bblock.129->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.39155>;
              <D.39135>:
              bblock.129 = cfg->cbb;
              bblock.129->extended = 1;
              <D.39155>:
              <D.39127>:
            }
            <D.39004>:
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.30082 = D.30081 & 64;
            if (D.30082 != 0) goto <D.39156>; else goto <D.39157>;
            <D.39156>:
            D.29691 = cfg->mempool;
            D.39158 = mono_mempool_alloc (D.29691, 56);
            args[0] = D.39158;
            D.39159 = args[0];
            D.39159 = args[0];
            D.39159->data.op[1].const_val = 0;
            D.39160 = D.39159->data.op[1].const_val;
            D.39159->data.op[0].const_val = D.39160;
            D.39159 = args[0];
            D.39159 = args[0];
            D.39159->prev = 0B;
            D.39161 = D.39159->prev;
            D.39159->next = D.39161;
            D.39159 = args[0];
            D.39159->opcode = 362;
            D.39159 = args[0];
            D.39159->flags = 0;
            D.39159 = args[0];
            D.39159->type = 0;
            D.39159 = args[0];
            D.39159->dreg = -1;
            D.39159 = args[0];
            D.39159 = args[0];
            D.39159 = args[0];
            D.39159->sreg3 = -1;
            D.39162 = D.39159->sreg3;
            D.39159->sreg2 = D.39162;
            D.39163 = D.39159->sreg2;
            D.39159->sreg1 = D.39163;
            D.39159 = args[0];
            D.29910 = cfg->ip;
            D.39159->cil_code = D.29910;
            D.39159 = args[0];
            D.39159->data.op[0].p = 0B;
            D.39159 = args[0];
            D.39159->type = 3;
            D.39159 = args[0];
            D.39164 = alloc_dreg (cfg, 3);
            D.39165 = (int) D.39164;
            D.39159->dreg = D.39165;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.39166>; else goto <D.39167>;
            <D.39166>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.39159 = args[0];
            D.29939->next = D.39159;
            D.39159 = args[0];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.39159->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.39159 = args[0];
            bblock.129->last_ins = D.39159;
            goto <D.39168>;
            <D.39167>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.39159 = args[0];
            bblock.129->last_ins = D.39159;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.39168>:
            goto <D.39169>;
            <D.39157>:
            D.29691 = cfg->mempool;
            D.39170 = mono_mempool_alloc (D.29691, 56);
            args[0] = D.39170;
            D.39159 = args[0];
            D.39159 = args[0];
            D.39159->data.op[1].const_val = 0;
            D.39160 = D.39159->data.op[1].const_val;
            D.39159->data.op[0].const_val = D.39160;
            D.39159 = args[0];
            D.39159 = args[0];
            D.39159->prev = 0B;
            D.39161 = D.39159->prev;
            D.39159->next = D.39161;
            D.39159 = args[0];
            D.39159->opcode = 362;
            D.39159 = args[0];
            D.39159->flags = 0;
            D.39159 = args[0];
            D.39159->type = 0;
            D.39159 = args[0];
            D.39159->dreg = -1;
            D.39159 = args[0];
            D.39159 = args[0];
            D.39159 = args[0];
            D.39159->sreg3 = -1;
            D.39162 = D.39159->sreg3;
            D.39159->sreg2 = D.39162;
            D.39163 = D.39159->sreg2;
            D.39159->sreg1 = D.39163;
            D.39159 = args[0];
            D.29910 = cfg->ip;
            D.39159->cil_code = D.29910;
            D.39159 = args[0];
            D.29716 = cfg->domain;
            D.39159->data.op[0].p = D.29716;
            D.39159 = args[0];
            D.39159->type = 3;
            D.39159 = args[0];
            D.39171 = alloc_dreg (cfg, 3);
            D.39172 = (int) D.39171;
            D.39159->dreg = D.39172;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.39173>; else goto <D.39174>;
            <D.39173>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.39159 = args[0];
            D.29939->next = D.39159;
            D.39159 = args[0];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.39159->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.39159 = args[0];
            bblock.129->last_ins = D.39159;
            goto <D.39175>;
            <D.39174>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.39159 = args[0];
            bblock.129->last_ins = D.39159;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.39175>:
            <D.39169>:
            ins = mono_emit_jit_icall (cfg, mono_jit_thread_attach, &args);
            {
              struct MonoInst * inst;

              D.29691 = cfg->mempool;
              inst = mono_mempool_alloc (D.29691, 56);
              inst->data.op[1].const_val = 0;
              D.39176 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.39176;
              inst->prev = 0B;
              D.39177 = inst->prev;
              inst->next = D.39177;
              inst->opcode = 424;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.39178 = inst->sreg3;
              inst->sreg2 = D.39178;
              D.39179 = inst->sreg2;
              inst->sreg1 = D.39179;
              D.29910 = cfg->ip;
              inst->cil_code = D.29910;
              D.38998 = cfg->orig_domain_var;
              D.38999 = D.38998->dreg;
              inst->dreg = D.38999;
              D.30101 = ins->dreg;
              inst->sreg1 = D.30101;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              if (D.29939 != 0B) goto <D.39180>; else goto <D.39181>;
              <D.39180>:
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              D.29939->next = inst;
              bblock.129 = cfg->cbb;
              D.29939 = bblock.129->last_ins;
              inst->prev = D.29939;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              goto <D.39182>;
              <D.39181>:
              bblock.129 = cfg->cbb;
              bblock.129 = cfg->cbb;
              bblock.129->last_ins = inst;
              D.29939 = bblock.129->last_ins;
              bblock.129->code = D.29939;
              <D.39182>:
            }
            if (next_bb != 0B) goto <D.39183>; else goto <D.39184>;
            <D.39183>:
            D.39185 = next_bb->cil_code;
            if (D.39185 != 0B) goto <D.39186>; else goto <D.39187>;
            <D.39186>:
            D.29821 = cfg->cil_offset_to_bb;
            D.39185 = next_bb->cil_code;
            D.39188 = (int) D.39185;
            D.29825 = cfg->cil_start;
            D.29826 = (int) D.29825;
            D.39189 = D.39188 - D.29826;
            D.39190 = (unsigned int) D.39189;
            D.39191 = D.39190 * 4;
            D.39192 = D.29821 + D.39191;
            *D.39192 = next_bb;
            <D.39187>:
            D.29857 = cfg->real_offset;
            next_bb->real_offset = D.29857;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.39196>; else goto <D.39193>;
            <D.39196>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33847 = D.29939->opcode;
            D.33848 = D.33847 + 64985;
            if (D.33848 <= 9) goto <D.39194>; else goto <D.39197>;
            <D.39197>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33847 = D.29939->opcode;
            D.33850 = D.33847 + 64878;
            if (D.33850 <= 9) goto <D.39194>; else goto <D.39198>;
            <D.39198>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33847 = D.29939->opcode;
            D.33852 = D.33847 + 64888;
            if (D.33852 <= 9) goto <D.39194>; else goto <D.39193>;
            <D.39194>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33853 = D.29939->data.op[1].many_blocks;
            D.33854 = D.33853 + 4;
            D.33855 = *D.33854;
            if (D.33855 == 0B) goto <D.39199>; else goto <D.39193>;
            <D.39199>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33853 = D.29939->data.op[1].many_blocks;
            D.33854 = D.33853 + 4;
            *D.33854 = next_bb;
            bblock.129 = cfg->cbb;
            mono_link_bblock (cfg, bblock.129, next_bb);
            goto <D.39195>;
            <D.39193>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 == 0B) goto <D.39200>; else goto <D.39202>;
            <D.39202>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33847 = D.29939->opcode;
            if (D.33847 != 442) goto <D.39203>; else goto <D.39201>;
            <D.39203>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33847 = D.29939->opcode;
            if (D.33847 != 759) goto <D.39204>; else goto <D.39201>;
            <D.39204>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33847 = D.29939->opcode;
            D.33848 = D.33847 + 64985;
            if (D.33848 > 9) goto <D.39205>; else goto <D.39201>;
            <D.39205>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33847 = D.29939->opcode;
            D.33850 = D.33847 + 64878;
            if (D.33850 > 9) goto <D.39206>; else goto <D.39201>;
            <D.39206>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.33847 = D.29939->opcode;
            D.33852 = D.33847 + 64888;
            if (D.33852 > 9) goto <D.39200>; else goto <D.39201>;
            <D.39200>:
            bblock.129 = cfg->cbb;
            mono_link_bblock (cfg, bblock.129, next_bb);
            <D.39201>:
            <D.39195>:
            bblock.129 = cfg->cbb;
            bblock.129->next_bb = next_bb;
            cfg->cbb = next_bb;
            bblock.129 = cfg->cbb;
            bblock = bblock.129;
            <D.39184>:
            ip = ip + 2;
            goto <D.27498>;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      <D.27550>:
      {
        struct MonoInst * args[16];

        try
          {
            D.39207 = alloc_ireg (cfg);
            dreg = (int) D.39207;
            D.29691 = cfg->mempool;
            D.39208 = mono_mempool_alloc (D.29691, 56);
            args[0] = D.39208;
            D.39209 = args[0];
            D.39209 = args[0];
            D.39209->data.op[1].const_val = 0;
            D.39210 = D.39209->data.op[1].const_val;
            D.39209->data.op[0].const_val = D.39210;
            D.39209 = args[0];
            D.39209 = args[0];
            D.39209->prev = 0B;
            D.39211 = D.39209->prev;
            D.39209->next = D.39211;
            D.39209 = args[0];
            D.39209->opcode = 424;
            D.39209 = args[0];
            D.39209->flags = 0;
            D.39209 = args[0];
            D.39209->type = 0;
            D.39209 = args[0];
            D.39209->dreg = -1;
            D.39209 = args[0];
            D.39209 = args[0];
            D.39209 = args[0];
            D.39209->sreg3 = -1;
            D.39212 = D.39209->sreg3;
            D.39209->sreg2 = D.39212;
            D.39213 = D.39209->sreg2;
            D.39209->sreg1 = D.39213;
            D.39209 = args[0];
            D.29910 = cfg->ip;
            D.39209->cil_code = D.29910;
            D.39209 = args[0];
            D.39209->dreg = dreg;
            D.39209 = args[0];
            D.38998 = cfg->orig_domain_var;
            D.38999 = D.38998->dreg;
            D.39209->sreg1 = D.38999;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.39214>; else goto <D.39215>;
            <D.39214>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.39209 = args[0];
            D.29939->next = D.39209;
            D.39209 = args[0];
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.39209->prev = D.29939;
            bblock.129 = cfg->cbb;
            D.39209 = args[0];
            bblock.129->last_ins = D.39209;
            goto <D.39216>;
            <D.39215>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            D.39209 = args[0];
            bblock.129->last_ins = D.39209;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.39216>:
            mono_emit_jit_icall (cfg, mono_jit_set_domain, &args);
            ip = ip + 2;
            goto <D.27498>;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      <D.27552>:
      D.30709 = ip + 1;
      D.30710 = *D.30709;
      D.31040 = (int) D.30710;
      monoeg_g_log (0B, 4, "opcode 0x%02x 0x%02x not handled", 240, D.31040);
      <D.27553>:
      goto <D.27553>;
      <D.27498>:
      goto <D.26808>;
      <D.27554>:
      D.30690 = ip + 2;
      if (D.30690 > end) goto <D.39217>; else goto <D.39218>;
      <D.39217>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39219>; else goto <D.39220>;
      <D.39219>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39221>; else goto <D.39222>;
      <D.39221>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39222>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39220>:
      D.39223 = mini_get_debug_options ();
      D.39224 = D.39223->break_on_unverified;
      if (D.39224 != 0) goto <D.39225>; else goto unverified;
      <D.39225>:
      raise (5);
      <D.39218>:
      D.30709 = ip + 1;
      D.30710 = *D.30709;
      D.31040 = (int) D.30710;
      switch (D.31040) <default: <D.27635>, case 0: <D.27555>, case 1: <D.27561>, case 2: <D.27562>, case 3: <D.27563>, case 4: <D.27564>, case 5: <D.27565>, case 6: <D.27567>, case 7: <D.27578>, case 8: <D.27630>, case 9: <D.27580>, case 10: <D.27581>, case 11: <D.27584>, case 12: <D.27585>, case 13: <D.27586>, case 14: <D.27590>, case 15: <D.27591>, case 16: <D.27631>, case 17: <D.27592>, case 18: <D.27600>, case 19: <D.27601>, case 20: <D.27602>, case 21: <D.27603>, case 22: <D.27605>, case 23: <D.27606>, case 24: <D.27607>, case 25: <D.27611>, case 26: <D.27612>, case 27: <D.27633>, case 28: <D.27619>, case 29: <D.27624>, case 30: <D.27629>, case 34: <D.27632>, case 36: <D.27634>>
      <D.27555>:
      {
        struct MonoInst * addr;
        struct MonoInst * vtvar;

        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        D.30458 = D.30457 /[ex] 4;
        D.30371 = header->max_stack;
        D.30372 = (int) D.30371;
        if (D.30458 >= D.30372) goto <D.39226>; else goto <D.39227>;
        <D.39226>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.39228>; else goto <D.39229>;
        <D.39228>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.39230>; else goto <D.39231>;
        <D.39230>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39231>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39229>:
        D.39232 = mini_get_debug_options ();
        D.39233 = D.39232->break_on_unverified;
        if (D.39233 != 0) goto <D.39234>; else goto unverified;
        <D.39234>:
        raise (5);
        <D.39227>:
        D.39235 = mono_defaults.argumenthandle_class;
        D.39236 = &D.39235->byval_arg;
        vtvar = mono_compile_create_var (cfg, D.39236, 329);
        D.29691 = cfg->mempool;
        addr = mono_mempool_alloc (D.29691, 56);
        addr->data.op[1].const_val = 0;
        D.39237 = addr->data.op[1].const_val;
        addr->data.op[0].const_val = D.39237;
        addr->prev = 0B;
        D.39238 = addr->prev;
        addr->next = D.39238;
        addr->opcode = 314;
        addr->flags = 0;
        addr->type = 0;
        addr->dreg = -1;
        addr->sreg3 = -1;
        D.39239 = addr->sreg3;
        addr->sreg2 = D.39239;
        D.39240 = addr->sreg2;
        addr->sreg1 = D.39240;
        D.29910 = cfg->ip;
        addr->cil_code = D.29910;
        D.30422 = cfg->varinfo;
        D.39241 = vtvar->data.op[0].const_val;
        D.39242 = (unsigned int) D.39241;
        D.39243 = D.39242 * 4;
        D.39244 = D.30422 + D.39243;
        D.39245 = *D.39244;
        addr->data.op[0].p = D.39245;
        D.30422 = cfg->varinfo;
        D.39241 = vtvar->data.op[0].const_val;
        D.39242 = (unsigned int) D.39241;
        D.39243 = D.39242 * 4;
        D.39244 = D.30422 + D.39243;
        D.39245 = *D.39244;
        D.30422 = cfg->varinfo;
        D.39241 = vtvar->data.op[0].const_val;
        D.39242 = (unsigned int) D.39241;
        D.39243 = D.39242 * 4;
        D.39244 = D.30422 + D.39243;
        D.39245 = *D.39244;
        D.39246 = D.39245->flags;
        D.39247 = D.39246 | 16;
        D.39245->flags = D.39247;
        addr->type = 5;
        D.30422 = cfg->varinfo;
        D.39241 = vtvar->data.op[0].const_val;
        D.39242 = (unsigned int) D.39241;
        D.39243 = D.39242 * 4;
        D.39244 = D.30422 + D.39243;
        D.39245 = *D.39244;
        D.39248 = D.39245->klass;
        addr->klass = D.39248;
        D.39249 = alloc_dreg (cfg, 5);
        D.39250 = (int) D.39249;
        addr->dreg = D.39250;
        cfg->has_indirection = 1;
        D.29838 = cfg->gsharedvt;
        D.30765 = D.29838 != 0;
        D.30766 = (long int) D.30765;
        D.30767 = __builtin_expect (D.30766, 0);
        if (D.30767 != 0) goto <D.39251>; else goto <D.39252>;
        <D.39251>:
        D.30422 = cfg->varinfo;
        D.39241 = vtvar->data.op[0].const_val;
        D.39242 = (unsigned int) D.39241;
        D.39243 = D.39242 * 4;
        D.39244 = D.30422 + D.39243;
        D.39245 = *D.39244;
        D.39253 = D.39245->data.op[1].vtype;
        D.39254 = mini_is_gsharedvt_variable_type (cfg, D.39253);
        if (D.39254 != 0) goto <D.39255>; else goto <D.39256>;
        <D.39255>:
        handle_gsharedvt_ldaddr (cfg);
        <D.39256>:
        <D.39252>:
        D.39258 = mono_arch_is_soft_float ();
        if (D.39258 != 0) goto <D.39259>; else goto <D.39260>;
        <D.39259>:
        D.30422 = cfg->varinfo;
        D.39241 = vtvar->data.op[0].const_val;
        D.39242 = (unsigned int) D.39241;
        D.39243 = D.39242 * 4;
        D.39244 = D.30422 + D.39243;
        D.39245 = *D.39244;
        D.39265 = D.39245->type;
        if (D.39265 == 2) goto <D.39262>; else goto <D.39266>;
        <D.39266>:
        D.30422 = cfg->varinfo;
        D.39241 = vtvar->data.op[0].const_val;
        D.39242 = (unsigned int) D.39241;
        D.39243 = D.39242 * 4;
        D.39244 = D.30422 + D.39243;
        D.39245 = *D.39244;
        D.39265 = D.39245->type;
        if (D.39265 == 4) goto <D.39262>; else goto <D.39263>;
        <D.39262>:
        iftmp.362 = 1;
        goto <D.39264>;
        <D.39263>:
        iftmp.362 = 0;
        <D.39264>:
        iftmp.361 = (_Bool) iftmp.362;
        goto <D.39267>;
        <D.39260>:
        D.30422 = cfg->varinfo;
        D.39241 = vtvar->data.op[0].const_val;
        D.39242 = (unsigned int) D.39241;
        D.39243 = D.39242 * 4;
        D.39244 = D.30422 + D.39243;
        D.39245 = *D.39244;
        D.39265 = D.39245->type;
        iftmp.361 = D.39265 == 2;
        <D.39267>:
        if (iftmp.361 != 0) goto <D.39268>; else goto <D.39269>;
        <D.39268>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.30422 = cfg->varinfo;
          D.39241 = vtvar->data.op[0].const_val;
          D.39242 = (unsigned int) D.39241;
          D.39243 = D.39242 * 4;
          D.39244 = D.30422 + D.39243;
          D.39245 = *D.39244;
          D.39271 = D.39245->dreg;
          D.39272 = D.39271 + 1;
          D.39273 = (unsigned int) D.39272;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.39273 < D.30791) goto <D.39274>; else goto <D.39275>;
          <D.39274>:
          D.30794 = cfg->vreg_to_inst;
          D.30422 = cfg->varinfo;
          D.39241 = vtvar->data.op[0].const_val;
          D.39242 = (unsigned int) D.39241;
          D.39243 = D.39242 * 4;
          D.39244 = D.30422 + D.39243;
          D.39245 = *D.39244;
          D.39271 = D.39245->dreg;
          D.39276 = (sizetype) D.39271;
          D.39277 = D.39276 + 1;
          D.39278 = D.39277 * 4;
          D.39279 = D.30794 + D.39278;
          iftmp.363 = *D.39279;
          goto <D.39280>;
          <D.39275>:
          iftmp.363 = 0B;
          <D.39280>:
          var1 = iftmp.363;
          D.30422 = cfg->varinfo;
          D.39241 = vtvar->data.op[0].const_val;
          D.39242 = (unsigned int) D.39241;
          D.39243 = D.39242 * 4;
          D.39244 = D.30422 + D.39243;
          D.39245 = *D.39244;
          D.39271 = D.39245->dreg;
          D.39282 = D.39271 + 2;
          D.39283 = (unsigned int) D.39282;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.39283 < D.30791) goto <D.39284>; else goto <D.39285>;
          <D.39284>:
          D.30794 = cfg->vreg_to_inst;
          D.30422 = cfg->varinfo;
          D.39241 = vtvar->data.op[0].const_val;
          D.39242 = (unsigned int) D.39241;
          D.39243 = D.39242 * 4;
          D.39244 = D.30422 + D.39243;
          D.39245 = *D.39244;
          D.39271 = D.39245->dreg;
          D.39276 = (sizetype) D.39271;
          D.39286 = D.39276 + 2;
          D.39287 = D.39286 * 4;
          D.39288 = D.30794 + D.39287;
          iftmp.364 = *D.39288;
          goto <D.39289>;
          <D.39285>:
          iftmp.364 = 0B;
          <D.39289>:
          var2 = iftmp.364;
          D.39290 = var1 == 0B;
          D.39291 = (long int) D.39290;
          D.39292 = __builtin_expect (D.39291, 0);
          if (D.39292 != 0) goto <D.39293>; else goto <D.39294>;
          <D.39293>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11394, "var1");
          <D.39294>:
          D.39295 = var2 == 0B;
          D.39296 = (long int) D.39295;
          D.39297 = __builtin_expect (D.39296, 0);
          if (D.39297 != 0) goto <D.39298>; else goto <D.39299>;
          <D.39298>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11394, "var2");
          <D.39299>:
          D.39300 = var1->flags;
          D.39301 = D.39300 | 16;
          var1->flags = D.39301;
          D.39302 = var2->flags;
          D.39303 = D.39302 | 16;
          var2->flags = D.39303;
        }
        <D.39269>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.39304>; else goto <D.39305>;
        <D.39304>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = addr;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        addr->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = addr;
        goto <D.39306>;
        <D.39305>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = addr;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.39306>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 373;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        ins->dreg = -1;
        D.39307 = addr->dreg;
        ins->sreg1 = D.39307;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.39308>; else goto <D.39309>;
        <D.39308>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.39310>;
        <D.39309>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.39310>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 424;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        D.30422 = cfg->varinfo;
        D.39241 = vtvar->data.op[0].const_val;
        D.39242 = (unsigned int) D.39241;
        D.39243 = D.39242 * 4;
        D.39244 = D.30422 + D.39243;
        D.39245 = *D.39244;
        D.39253 = D.39245->data.op[1].vtype;
        D.39311 = mono_type_to_regmove (cfg, D.39253);
        D.39312 = (short unsigned int) D.39311;
        ins->opcode = D.39312;
        D.30422 = cfg->varinfo;
        D.39241 = vtvar->data.op[0].const_val;
        D.39242 = (unsigned int) D.39241;
        D.39243 = D.39242 * 4;
        D.39244 = D.30422 + D.39243;
        D.39245 = *D.39244;
        D.39253 = D.39245->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.39253, ins);
        D.30422 = cfg->varinfo;
        D.39241 = vtvar->data.op[0].const_val;
        D.39242 = (unsigned int) D.39241;
        D.39243 = D.39242 * 4;
        D.39244 = D.30422 + D.39243;
        D.39245 = *D.39244;
        D.39248 = D.39245->klass;
        ins->klass = D.39248;
        D.30422 = cfg->varinfo;
        D.39241 = vtvar->data.op[0].const_val;
        D.39242 = (unsigned int) D.39241;
        D.39243 = D.39242 * 4;
        D.39244 = D.30422 + D.39243;
        D.39245 = *D.39244;
        D.39271 = D.39245->dreg;
        ins->sreg1 = D.39271;
        D.30432 = ins->type;
        D.30433 = (<unnamed type>) D.30432;
        D.39313 = alloc_dreg (cfg, D.30433);
        D.39314 = (int) D.39313;
        ins->dreg = D.39314;
        D.30436 = ins->opcode;
        if (D.30436 == 427) goto <D.39315>; else goto <D.39316>;
        <D.39315>:
        D.30422 = cfg->varinfo;
        D.39241 = vtvar->data.op[0].const_val;
        D.39242 = (unsigned int) D.39241;
        D.39243 = D.39242 * 4;
        D.39244 = D.30422 + D.39243;
        D.39245 = *D.39244;
        D.39253 = D.39245->data.op[1].vtype;
        D.39317 = mono_class_from_mono_type (D.39253);
        ins->klass = D.39317;
        <D.39316>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.39318>; else goto <D.39319>;
        <D.39318>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.39320>;
        <D.39319>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.39320>:
        ins->type = 7;
        D.39235 = mono_defaults.argumenthandle_class;
        ins->klass = D.39235;
        sp.365 = sp;
        sp = sp.365 + 4;
        *sp.365 = ins;
        ip = ip + 2;
        goto <D.27560>;
      }
      <D.27561>:
      <D.27562>:
      <D.27563>:
      <D.27564>:
      <D.27565>:
      {
        struct MonoInst * cmp;

        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        if (D.30457 <= 7) goto <D.39322>; else goto <D.39323>;
        <D.39322>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.39324>; else goto <D.39325>;
        <D.39324>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.39326>; else goto <D.39327>;
        <D.39326>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39327>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39325>:
        D.39328 = mini_get_debug_options ();
        D.39329 = D.39328->break_on_unverified;
        if (D.39329 != 0) goto <D.39330>; else goto unverified;
        <D.39330>:
        raise (5);
        <D.39323>:
        D.29691 = cfg->mempool;
        cmp = mono_mempool_alloc (D.29691, 56);
        cmp->data.op[1].const_val = 0;
        D.39331 = cmp->data.op[1].const_val;
        cmp->data.op[0].const_val = D.39331;
        cmp->prev = 0B;
        D.39332 = cmp->prev;
        cmp->next = D.39332;
        D.30709 = ip + 1;
        D.30710 = *D.30709;
        D.39333 = (short unsigned int) D.30710;
        D.39334 = D.39333 + 445;
        cmp->opcode = D.39334;
        cmp->flags = 0;
        cmp->type = 0;
        cmp->dreg = -1;
        cmp->sreg3 = -1;
        D.39335 = cmp->sreg3;
        cmp->sreg2 = D.39335;
        D.39336 = cmp->sreg2;
        cmp->sreg1 = D.39336;
        D.29910 = cfg->ip;
        cmp->cil_code = D.29910;
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        D.39337 = cmp->opcode;
        ins->opcode = D.39337;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        sp = sp + 4294967288;
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        cmp->sreg1 = D.30872;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        D.31795 = D.31794->dreg;
        cmp->sreg2 = D.31795;
        D.30679 = *sp;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        type_from_op (cmp, D.30679, D.31794);
        D.39338 = cmp->type;
        if (D.39338 == 0) goto <D.39339>; else goto <D.39340>;
        <D.39339>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.39341>; else goto <D.39342>;
        <D.39341>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.39343>; else goto <D.39344>;
        <D.39343>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39344>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39342>:
        D.39345 = mini_get_debug_options ();
        D.39346 = D.39345->break_on_unverified;
        if (D.39346 != 0) goto <D.39347>; else goto unverified;
        <D.39347>:
        raise (5);
        <D.39340>:
        D.30679 = *sp;
        D.32402 = D.30679->type;
        if (D.32402 == 2) goto <D.39348>; else goto <D.39349>;
        <D.39348>:
        cmp->opcode = 325;
        goto <D.39350>;
        <D.39349>:
        D.30679 = *sp;
        D.32402 = D.30679->type;
        if (D.32402 == 4) goto <D.39351>; else goto <D.39352>;
        <D.39351>:
        cmp->opcode = 324;
        goto <D.39353>;
        <D.39352>:
        cmp->opcode = 326;
        <D.39353>:
        <D.39350>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        if (D.30024 != 0B) goto <D.39354>; else goto <D.39355>;
        <D.39354>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        D.30024->next = cmp;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        cmp->prev = D.30024;
        bblock.77 = bblock;
        bblock.77->last_ins = cmp;
        goto <D.39356>;
        <D.39355>:
        bblock.77 = bblock;
        bblock.77 = bblock;
        bblock.77->last_ins = cmp;
        D.30024 = bblock.77->last_ins;
        bblock.77->code = D.30024;
        <D.39356>:
        ins->type = 1;
        D.30432 = ins->type;
        D.30433 = (<unnamed type>) D.30432;
        D.39357 = alloc_dreg (cfg, D.30433);
        D.39358 = (int) D.39357;
        ins->dreg = D.39358;
        D.30679 = *sp;
        D.31793 = sp + 4;
        D.31794 = *D.31793;
        type_from_op (ins, D.30679, D.31794);
        D.39337 = cmp->opcode;
        if (D.39337 == 324) goto <D.39359>; else goto <D.39360>;
        <D.39359>:
        cmp->opcode = 316;
        D.39361 = cmp->sreg1;
        ins->sreg1 = D.39361;
        D.39336 = cmp->sreg2;
        ins->sreg2 = D.39336;
        <D.39360>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        if (D.30024 != 0B) goto <D.39362>; else goto <D.39363>;
        <D.39362>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        D.30024->next = ins;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        ins->prev = D.30024;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        goto <D.39364>;
        <D.39363>:
        bblock.77 = bblock;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        D.30024 = bblock.77->last_ins;
        bblock.77->code = D.30024;
        <D.39364>:
        sp.366 = sp;
        sp = sp.366 + 4;
        *sp.366 = ins;
        ip = ip + 2;
        goto <D.27560>;
      }
      <D.27567>:
      {
        struct MonoInst * argconst;
        struct MonoMethod * cil_method;

        try
          {
            sp.84 = (int) sp;
            stack_start.85 = (int) stack_start;
            D.30457 = sp.84 - stack_start.85;
            D.30458 = D.30457 /[ex] 4;
            D.30371 = header->max_stack;
            D.30372 = (int) D.30371;
            if (D.30458 >= D.30372) goto <D.39366>; else goto <D.39367>;
            <D.39366>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.39368>; else goto <D.39369>;
            <D.39368>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.39370>; else goto <D.39371>;
            <D.39370>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.39371>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.39369>:
            D.39372 = mini_get_debug_options ();
            D.39373 = D.39372->break_on_unverified;
            if (D.39373 != 0) goto <D.39374>; else goto unverified;
            <D.39374>:
            raise (5);
            <D.39367>:
            D.34392 = ip + 6;
            if (D.34392 > end) goto <D.39375>; else goto <D.39376>;
            <D.39375>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.39377>; else goto <D.39378>;
            <D.39377>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.39379>; else goto <D.39380>;
            <D.39379>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.39380>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.39378>:
            D.39381 = mini_get_debug_options ();
            D.39382 = D.39381->break_on_unverified;
            if (D.39382 != 0) goto <D.39383>; else goto unverified;
            <D.39383>:
            raise (5);
            <D.39376>:
            D.38326 = ip + 2;
            D.39384 = mono_read32 (D.38326);
            n = (int) D.39384;
            n.181 = (unsigned int) n;
            cmethod = mini_get_method (cfg, method, n.181, 0B, generic_context);
            if (cmethod == 0B) goto <D.39385>; else goto <D.39387>;
            <D.39387>:
            D.39388 = mono_loader_get_last_error ();
            if (D.39388 != 0B) goto <D.39385>; else goto <D.39386>;
            <D.39385>:
            D.39389 = mini_get_debug_options ();
            D.39390 = D.39389->break_on_unverified;
            if (D.39390 != 0) goto <D.39391>; else goto load_error;
            <D.39391>:
            raise (5);
            <D.39386>:
            D.31542 = cmethod->klass;
            mono_class_init (D.31542);
            n.181 = (unsigned int) n;
            mono_save_token_info (cfg, image, n.181, cmethod);
            context_used = mini_method_check_context_used (cfg, cmethod);
            cil_method = cmethod;
            if (dont_verify == 0) goto <D.39392>; else goto <D.39393>;
            <D.39392>:
            D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.31559 = D.30081 & 16384;
            if (D.31559 == 0) goto <D.39394>; else goto <D.39395>;
            <D.39394>:
            D.39396 = mono_method_can_access_method (method, cmethod);
            if (D.39396 == 0) goto <D.39397>; else goto <D.39398>;
            <D.39397>:
            {
              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.39399 = monoeg_g_strdup_printf ("Method `%s\' is inaccessible from method `%s\'\n", cil_method_fname, method_fname);
              cfg->exception_message = D.39399;
              monoeg_g_free (method_fname);
              monoeg_g_free (cil_method_fname);
              goto exception_exit;
            }
            <D.39398>:
            <D.39395>:
            <D.39393>:
            D.39400 = mono_security_get_mode ();
            if (D.39400 == 2) goto <D.39401>; else goto <D.39402>;
            <D.39401>:
            D.39403 = check_linkdemand (cfg, method, cmethod);
            if (D.39403 != 0) goto <D.39404>; else goto <D.39405>;
            <D.39404>:
            D.29662 = cfg->method;
            if (D.29662 != method) goto <D.39406>; else goto <D.39407>;
            <D.39406>:
            D.29634 = BIT_FIELD_REF <*method, 32, 160>;
            D.29635 = D.29634 & 124;
            if (D.29635 == 0) goto <D.39408>; else goto <D.39409>;
            <D.39408>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 1) goto <D.39410>; else goto <D.39411>;
            <D.39410>:
            printf ("inline failed: %s\n", "linkdemand");
            <D.39411>:
            goto inline_failure;
            <D.39409>:
            <D.39407>:
            <D.39405>:
            D.30240 = cfg->exception_type;
            if (D.30240 != 0) goto exception_exit; else goto <D.39412>;
            <D.39412>:
            goto <D.39413>;
            <D.39402>:
            D.39414 = mono_security_get_mode ();
            if (D.39414 == 1) goto <D.39415>; else goto <D.39416>;
            <D.39415>:
            bblock.77 = bblock;
            ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock.77, ip);
            <D.39416>:
            <D.39413>:
            if (sp > stack_start) goto <D.39417>; else goto <D.39418>;
            <D.39417>:
            D.39419 = ip + 11;
            if (D.39419 < end) goto <D.39420>; else goto <D.39421>;
            <D.39420>:
            bblock.77 = bblock;
            D.36894 = ip + 6;
            D.39422 = ip_in_bb (cfg, bblock.77, D.36894);
            if (D.39422 != 0) goto <D.39423>; else goto <D.39424>;
            <D.39423>:
            D.34392 = ip + 6;
            D.34393 = *D.34392;
            if (D.34393 == 115) goto <D.39425>; else goto <D.39426>;
            <D.39425>:
            {
              struct MonoMethod * ctor_method;

              D.39427 = ip + 7;
              D.39428 = mono_read32 (D.39427);
              ctor_method = mini_get_method (cfg, method, D.39428, 0B, generic_context);
              if (ctor_method != 0B) goto <D.39429>; else goto <D.39430>;
              <D.39429>:
              D.39431 = ctor_method->klass;
              D.39432 = D.39431->parent;
              D.32017 = mono_defaults.multicastdelegate_class;
              if (D.39432 == D.32017) goto <D.39433>; else goto <D.39434>;
              <D.39433>:
              {
                struct MonoInst * target_ins;
                struct MonoMethod * invoke;
                int invoke_context_used;

                D.39431 = ctor_method->klass;
                invoke = mono_get_delegate_invoke (D.39431);
                if (invoke == 0B) goto <D.39435>; else goto <D.39437>;
                <D.39437>:
                D.39438 = mono_method_signature (invoke);
                if (D.39438 == 0B) goto <D.39435>; else goto <D.39436>;
                <D.39435>:
                D.39439 = mini_get_debug_options ();
                D.39440 = D.39439->break_on_unverified;
                if (D.39440 != 0) goto <D.39441>; else goto load_error;
                <D.39441>:
                raise (5);
                <D.39436>:
                invoke_context_used = mini_method_check_context_used (cfg, invoke);
                target_ins = MEM[(struct MonoInst * *)sp + 4294967292B];
                D.39442 = mono_security_get_mode ();
                if (D.39442 == 1) goto <D.39443>; else goto <D.39444>;
                <D.39443>:
                bblock.77 = bblock;
                ensure_method_is_allowed_to_call_method (cfg, method, ctor_method, bblock.77, ip);
                <D.39444>:
                D.31578 = cmethod->flags;
                D.31579 = (int) D.31578;
                D.39445 = D.31579 & 16;
                if (D.39445 == 0) goto <D.39446>; else goto <D.39447>;
                <D.39446>:
                D.39448 = mono_method_signature (invoke);
                D.39449 = D.39448->param_count;
                D.39450 = mono_method_signature (cmethod);
                D.39451 = D.39450->param_count;
                if (D.39449 == D.39451) goto <D.39452>; else goto <D.39453>;
                <D.39452>:
                {
                  struct MonoInst * inst;

                  D.29691 = cfg->mempool;
                  inst = mono_mempool_alloc (D.29691, 56);
                  inst->data.op[1].const_val = 0;
                  D.39454 = inst->data.op[1].const_val;
                  inst->data.op[0].const_val = D.39454;
                  inst->prev = 0B;
                  D.39455 = inst->prev;
                  inst->next = D.39455;
                  inst->opcode = 323;
                  inst->flags = 0;
                  inst->type = 0;
                  inst->dreg = -1;
                  inst->sreg3 = -1;
                  D.39456 = inst->sreg3;
                  inst->sreg2 = D.39456;
                  D.39457 = inst->sreg2;
                  inst->sreg1 = D.39457;
                  D.29910 = cfg->ip;
                  inst->cil_code = D.29910;
                  inst->dreg = -1;
                  D.39458 = target_ins->dreg;
                  inst->sreg1 = D.39458;
                  inst->data.op[1].const_val = 0;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.39459>; else goto <D.39460>;
                  <D.39459>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.29939->next = inst;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  inst->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  bblock.129->last_ins = inst;
                  goto <D.39461>;
                  <D.39460>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  bblock.129->last_ins = inst;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.39461>:
                }
                {
                  struct MonoInst * inst;

                  D.29691 = cfg->mempool;
                  inst = mono_mempool_alloc (D.29691, 56);
                  inst->data.op[1].const_val = 0;
                  D.39462 = inst->data.op[1].const_val;
                  inst->data.op[0].const_val = D.39462;
                  inst->prev = 0B;
                  D.39463 = inst->prev;
                  inst->next = D.39463;
                  inst->opcode = 451;
                  inst->flags = 0;
                  inst->type = 0;
                  inst->dreg = -1;
                  inst->sreg3 = -1;
                  D.39464 = inst->sreg3;
                  inst->sreg2 = D.39464;
                  D.39465 = inst->sreg2;
                  inst->sreg1 = D.39465;
                  D.29910 = cfg->ip;
                  inst->cil_code = D.29910;
                  inst->data.op[1].p = "ArgumentException";
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  if (D.29939 != 0B) goto <D.39466>; else goto <D.39467>;
                  <D.39466>:
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  D.29939->next = inst;
                  bblock.129 = cfg->cbb;
                  D.29939 = bblock.129->last_ins;
                  inst->prev = D.29939;
                  bblock.129 = cfg->cbb;
                  bblock.129->last_ins = inst;
                  goto <D.39468>;
                  <D.39467>:
                  bblock.129 = cfg->cbb;
                  bblock.129 = cfg->cbb;
                  bblock.129->last_ins = inst;
                  D.29939 = bblock.129->last_ins;
                  bblock.129->code = D.29939;
                  <D.39468>:
                }
                <D.39453>:
                <D.39447>:
                if (invoke_context_used == 0) goto <D.39469>; else goto <D.39470>;
                <D.39469>:
                ip = ip + 6;
                D.29771 = cfg->verbose_level;
                if (D.29771 > 3) goto <D.39471>; else goto <D.39472>;
                <D.39471>:
                bblock.77 = bblock;
                D.30560 = bblock.77->block_num;
                sp.84 = (int) sp;
                stack_start.85 = (int) stack_start;
                D.30457 = sp.84 - stack_start.85;
                D.30458 = D.30457 /[ex] 4;
                D.39473 = mono_disasm_code_one (0B, method, ip, 0B);
                monoeg_g_print ("converting (in B%d: stack: %d) %s", D.30560, D.30458, D.39473);
                <D.39472>:
                sp = sp + 4294967292;
                D.39431 = ctor_method->klass;
                D.39474 = handle_delegate_ctor (cfg, D.39431, target_ins, cmethod, context_used);
                *sp = D.39474;
                D.30240 = cfg->exception_type;
                if (D.30240 != 0) goto exception_exit; else goto <D.39475>;
                <D.39475>:
                ip = ip + 5;
                sp = sp + 4;
                goto <D.27560>;
                <D.39470>:
              }
              <D.39434>:
              <D.39430>:
            }
            <D.39426>:
            <D.39424>:
            <D.39421>:
            <D.39418>:
            argconst.367 = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
            argconst = argconst.367;
            ins = mono_emit_jit_icall (cfg, mono_ldftn, &argconst);
            sp.368 = sp;
            sp = sp.368 + 4;
            *sp.368 = ins;
            ip = ip + 6;
            num_calls.369 = num_calls;
            num_calls = num_calls.369 + 1;
            D.39479 = num_calls.369 * 10;
            inline_costs = D.39479 + inline_costs;
            goto <D.27560>;
          }
        finally
          {
            argconst = {CLOBBER};
          }
      }
      <D.27578>:
      {
        struct MonoInst * args[2];

        try
          {
            sp.84 = (int) sp;
            stack_start.85 = (int) stack_start;
            D.30457 = sp.84 - stack_start.85;
            if (D.30457 <= 3) goto <D.39480>; else goto <D.39481>;
            <D.39480>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.39482>; else goto <D.39483>;
            <D.39482>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.39484>; else goto <D.39485>;
            <D.39484>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.39485>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.39483>:
            D.39486 = mini_get_debug_options ();
            D.39487 = D.39486->break_on_unverified;
            if (D.39487 != 0) goto <D.39488>; else goto unverified;
            <D.39488>:
            raise (5);
            <D.39481>:
            D.34392 = ip + 6;
            if (D.34392 > end) goto <D.39489>; else goto <D.39490>;
            <D.39489>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.39491>; else goto <D.39492>;
            <D.39491>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.39493>; else goto <D.39494>;
            <D.39493>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.39494>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.39492>:
            D.39495 = mini_get_debug_options ();
            D.39496 = D.39495->break_on_unverified;
            if (D.39496 != 0) goto <D.39497>; else goto unverified;
            <D.39497>:
            raise (5);
            <D.39490>:
            D.38326 = ip + 2;
            D.39498 = mono_read32 (D.38326);
            n = (int) D.39498;
            n.181 = (unsigned int) n;
            cmethod = mini_get_method (cfg, method, n.181, 0B, generic_context);
            if (cmethod == 0B) goto <D.39499>; else goto <D.39501>;
            <D.39501>:
            D.39502 = mono_loader_get_last_error ();
            if (D.39502 != 0B) goto <D.39499>; else goto <D.39500>;
            <D.39499>:
            D.39503 = mini_get_debug_options ();
            D.39504 = D.39503->break_on_unverified;
            if (D.39504 != 0) goto <D.39505>; else goto load_error;
            <D.39505>:
            raise (5);
            <D.39500>:
            D.31542 = cmethod->klass;
            mono_class_init (D.31542);
            context_used = mini_method_check_context_used (cfg, cmethod);
            D.39506 = mono_security_get_mode ();
            if (D.39506 == 2) goto <D.39507>; else goto <D.39508>;
            <D.39507>:
            D.39509 = check_linkdemand (cfg, method, cmethod);
            if (D.39509 != 0) goto <D.39510>; else goto <D.39511>;
            <D.39510>:
            D.29662 = cfg->method;
            if (D.29662 != method) goto <D.39512>; else goto <D.39513>;
            <D.39512>:
            D.29634 = BIT_FIELD_REF <*method, 32, 160>;
            D.29635 = D.29634 & 124;
            if (D.29635 == 0) goto <D.39514>; else goto <D.39515>;
            <D.39514>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 1) goto <D.39516>; else goto <D.39517>;
            <D.39516>:
            printf ("inline failed: %s\n", "linkdemand");
            <D.39517>:
            goto inline_failure;
            <D.39515>:
            <D.39513>:
            <D.39511>:
            D.30240 = cfg->exception_type;
            if (D.30240 != 0) goto exception_exit; else goto <D.39518>;
            <D.39518>:
            goto <D.39519>;
            <D.39508>:
            D.39520 = mono_security_get_mode ();
            if (D.39520 == 1) goto <D.39521>; else goto <D.39522>;
            <D.39521>:
            bblock.77 = bblock;
            ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock.77, ip);
            <D.39522>:
            <D.39519>:
            sp = sp + 4294967292;
            D.30679 = *sp;
            args[0] = D.30679;
            D.39523 = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
            args[1] = D.39523;
            if (context_used != 0) goto <D.39524>; else goto <D.39525>;
            <D.39524>:
            sp.370 = sp;
            sp = sp.370 + 4;
            D.39527 = mono_emit_jit_icall (cfg, mono_ldvirtfn_gshared, &args);
            *sp.370 = D.39527;
            goto <D.39528>;
            <D.39525>:
            sp.371 = sp;
            sp = sp.371 + 4;
            D.39530 = mono_emit_jit_icall (cfg, mono_ldvirtfn, &args);
            *sp.371 = D.39530;
            <D.39528>:
            ip = ip + 6;
            num_calls.372 = num_calls;
            num_calls = num_calls.372 + 1;
            D.39532 = num_calls.372 * 10;
            inline_costs = D.39532 + inline_costs;
            goto <D.27560>;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      <D.27580>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      D.30371 = header->max_stack;
      D.30372 = (int) D.30371;
      if (D.30458 >= D.30372) goto <D.39533>; else goto <D.39534>;
      <D.39533>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39535>; else goto <D.39536>;
      <D.39535>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39537>; else goto <D.39538>;
      <D.39537>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39538>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39536>:
      D.39539 = mini_get_debug_options ();
      D.39540 = D.39539->break_on_unverified;
      if (D.39540 != 0) goto <D.39541>; else goto unverified;
      <D.39541>:
      raise (5);
      <D.39534>:
      D.39542 = ip + 4;
      if (D.39542 > end) goto <D.39543>; else goto <D.39544>;
      <D.39543>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39545>; else goto <D.39546>;
      <D.39545>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39547>; else goto <D.39548>;
      <D.39547>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39548>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39546>:
      D.39549 = mini_get_debug_options ();
      D.39550 = D.39549->break_on_unverified;
      if (D.39550 != 0) goto <D.39551>; else goto unverified;
      <D.39551>:
      raise (5);
      <D.39544>:
      D.38326 = ip + 2;
      D.39552 = mono_read16 (D.38326);
      n = (int) D.39552;
      n.89 = (unsigned int) n;
      if (n.89 >= num_args) goto <D.39553>; else goto <D.39554>;
      <D.39553>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39555>; else goto <D.39556>;
      <D.39555>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39557>; else goto <D.39558>;
      <D.39557>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39558>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39556>:
      D.39559 = mini_get_debug_options ();
      D.39560 = D.39559->break_on_unverified;
      if (D.39560 != 0) goto <D.39561>; else goto unverified;
      <D.39561>:
      raise (5);
      <D.39554>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.30299 = cfg->arg_types;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30607 = D.30299 + D.30606;
      D.30608 = *D.30607;
      D.39562 = mono_type_to_regmove (cfg, D.30608);
      D.39563 = (short unsigned int) D.39562;
      ins->opcode = D.39563;
      D.30299 = cfg->arg_types;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30607 = D.30299 + D.30606;
      D.30608 = *D.30607;
      type_to_eval_stack_type (cfg, D.30608, ins);
      D.30289 = cfg->args;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30611 = D.30289 + D.30606;
      D.30612 = *D.30611;
      D.30613 = D.30612->klass;
      ins->klass = D.30613;
      D.30289 = cfg->args;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30611 = D.30289 + D.30606;
      D.30612 = *D.30611;
      D.30614 = D.30612->dreg;
      ins->sreg1 = D.30614;
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.39564 = alloc_dreg (cfg, D.30433);
      D.39565 = (int) D.39564;
      ins->dreg = D.39565;
      D.30436 = ins->opcode;
      if (D.30436 == 427) goto <D.39566>; else goto <D.39567>;
      <D.39566>:
      D.30299 = cfg->arg_types;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30607 = D.30299 + D.30606;
      D.30608 = *D.30607;
      D.39568 = mono_class_from_mono_type (D.30608);
      ins->klass = D.39568;
      <D.39567>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.39569>; else goto <D.39570>;
      <D.39569>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.39571>;
      <D.39570>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.39571>:
      sp.373 = sp;
      sp = sp.373 + 4;
      *sp.373 = ins;
      ip = ip + 4;
      goto <D.27560>;
      <D.27581>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      D.30371 = header->max_stack;
      D.30372 = (int) D.30371;
      if (D.30458 >= D.30372) goto <D.39573>; else goto <D.39574>;
      <D.39573>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39575>; else goto <D.39576>;
      <D.39575>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39577>; else goto <D.39578>;
      <D.39577>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39578>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39576>:
      D.39579 = mini_get_debug_options ();
      D.39580 = D.39579->break_on_unverified;
      if (D.39580 != 0) goto <D.39581>; else goto unverified;
      <D.39581>:
      raise (5);
      <D.39574>:
      D.39542 = ip + 4;
      if (D.39542 > end) goto <D.39582>; else goto <D.39583>;
      <D.39582>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39584>; else goto <D.39585>;
      <D.39584>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39586>; else goto <D.39587>;
      <D.39586>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39587>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39585>:
      D.39588 = mini_get_debug_options ();
      D.39589 = D.39588->break_on_unverified;
      if (D.39589 != 0) goto <D.39590>; else goto unverified;
      <D.39590>:
      raise (5);
      <D.39583>:
      D.38326 = ip + 2;
      D.39591 = mono_read16 (D.38326);
      n = (int) D.39591;
      n.89 = (unsigned int) n;
      if (n.89 >= num_args) goto <D.39592>; else goto <D.39593>;
      <D.39592>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39594>; else goto <D.39595>;
      <D.39594>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39596>; else goto <D.39597>;
      <D.39596>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39597>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39595>:
      D.39598 = mini_get_debug_options ();
      D.39599 = D.39598->break_on_unverified;
      if (D.39599 != 0) goto <D.39600>; else goto unverified;
      <D.39600>:
      raise (5);
      <D.39593>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 314;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30758 = arg_array + D.30606;
      D.30759 = *D.30758;
      ins->data.op[0].p = D.30759;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30758 = arg_array + D.30606;
      D.30759 = *D.30758;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30758 = arg_array + D.30606;
      D.30759 = *D.30758;
      D.30760 = D.30759->flags;
      D.30761 = D.30760 | 16;
      D.30759->flags = D.30761;
      ins->type = 5;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30758 = arg_array + D.30606;
      D.30759 = *D.30758;
      D.30762 = D.30759->klass;
      ins->klass = D.30762;
      D.39601 = alloc_dreg (cfg, 5);
      D.39602 = (int) D.39601;
      ins->dreg = D.39602;
      cfg->has_indirection = 1;
      D.29838 = cfg->gsharedvt;
      D.30765 = D.29838 != 0;
      D.30766 = (long int) D.30765;
      D.30767 = __builtin_expect (D.30766, 0);
      if (D.30767 != 0) goto <D.39603>; else goto <D.39604>;
      <D.39603>:
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30758 = arg_array + D.30606;
      D.30759 = *D.30758;
      D.30770 = D.30759->data.op[1].vtype;
      D.39605 = mini_is_gsharedvt_variable_type (cfg, D.30770);
      if (D.39605 != 0) goto <D.39606>; else goto <D.39607>;
      <D.39606>:
      handle_gsharedvt_ldaddr (cfg);
      <D.39607>:
      <D.39604>:
      D.39609 = mono_arch_is_soft_float ();
      if (D.39609 != 0) goto <D.39610>; else goto <D.39611>;
      <D.39610>:
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30758 = arg_array + D.30606;
      D.30759 = *D.30758;
      D.30782 = D.30759->type;
      if (D.30782 == 2) goto <D.39613>; else goto <D.39616>;
      <D.39616>:
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30758 = arg_array + D.30606;
      D.30759 = *D.30758;
      D.30782 = D.30759->type;
      if (D.30782 == 4) goto <D.39613>; else goto <D.39614>;
      <D.39613>:
      iftmp.375 = 1;
      goto <D.39615>;
      <D.39614>:
      iftmp.375 = 0;
      <D.39615>:
      iftmp.374 = (_Bool) iftmp.375;
      goto <D.39617>;
      <D.39611>:
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30758 = arg_array + D.30606;
      D.30759 = *D.30758;
      D.30782 = D.30759->type;
      iftmp.374 = D.30782 == 2;
      <D.39617>:
      if (iftmp.374 != 0) goto <D.39618>; else goto <D.39619>;
      <D.39618>:
      {
        struct MonoInst * var1;
        struct MonoInst * var2;

        n.89 = (unsigned int) n;
        D.30606 = n.89 * 4;
        D.30758 = arg_array + D.30606;
        D.30759 = *D.30758;
        D.30788 = D.30759->dreg;
        D.30789 = D.30788 + 1;
        D.30790 = (unsigned int) D.30789;
        D.30791 = cfg->vreg_to_inst_len;
        if (D.30790 < D.30791) goto <D.39621>; else goto <D.39622>;
        <D.39621>:
        D.30794 = cfg->vreg_to_inst;
        n.89 = (unsigned int) n;
        D.30606 = n.89 * 4;
        D.30758 = arg_array + D.30606;
        D.30759 = *D.30758;
        D.30788 = D.30759->dreg;
        D.30795 = (sizetype) D.30788;
        D.30796 = D.30795 + 1;
        D.30797 = D.30796 * 4;
        D.30798 = D.30794 + D.30797;
        iftmp.376 = *D.30798;
        goto <D.39623>;
        <D.39622>:
        iftmp.376 = 0B;
        <D.39623>:
        var1 = iftmp.376;
        n.89 = (unsigned int) n;
        D.30606 = n.89 * 4;
        D.30758 = arg_array + D.30606;
        D.30759 = *D.30758;
        D.30788 = D.30759->dreg;
        D.30801 = D.30788 + 2;
        D.30802 = (unsigned int) D.30801;
        D.30791 = cfg->vreg_to_inst_len;
        if (D.30802 < D.30791) goto <D.39625>; else goto <D.39626>;
        <D.39625>:
        D.30794 = cfg->vreg_to_inst;
        n.89 = (unsigned int) n;
        D.30606 = n.89 * 4;
        D.30758 = arg_array + D.30606;
        D.30759 = *D.30758;
        D.30788 = D.30759->dreg;
        D.30795 = (sizetype) D.30788;
        D.30805 = D.30795 + 2;
        D.30806 = D.30805 * 4;
        D.30807 = D.30794 + D.30806;
        iftmp.377 = *D.30807;
        goto <D.39627>;
        <D.39626>:
        iftmp.377 = 0B;
        <D.39627>:
        var2 = iftmp.377;
        D.39628 = var1 == 0B;
        D.39629 = (long int) D.39628;
        D.39630 = __builtin_expect (D.39629, 0);
        if (D.39630 != 0) goto <D.39631>; else goto <D.39632>;
        <D.39631>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11584, "var1");
        <D.39632>:
        D.39633 = var2 == 0B;
        D.39634 = (long int) D.39633;
        D.39635 = __builtin_expect (D.39634, 0);
        if (D.39635 != 0) goto <D.39636>; else goto <D.39637>;
        <D.39636>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11584, "var2");
        <D.39637>:
        D.39638 = var1->flags;
        D.39639 = D.39638 | 16;
        var1->flags = D.39639;
        D.39640 = var2->flags;
        D.39641 = D.39640 | 16;
        var2->flags = D.39641;
      }
      <D.39619>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.39642>; else goto <D.39643>;
      <D.39642>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.39644>;
      <D.39643>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.39644>:
      sp.378 = sp;
      sp = sp.378 + 4;
      *sp.378 = ins;
      ip = ip + 4;
      goto <D.27560>;
      <D.27584>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.39646>; else goto <D.39647>;
      <D.39646>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39648>; else goto <D.39649>;
      <D.39648>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39650>; else goto <D.39651>;
      <D.39650>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39651>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39649>:
      D.39652 = mini_get_debug_options ();
      D.39653 = D.39652->break_on_unverified;
      if (D.39653 != 0) goto <D.39654>; else goto unverified;
      <D.39654>:
      raise (5);
      <D.39647>:
      sp = sp + 4294967292;
      D.39542 = ip + 4;
      if (D.39542 > end) goto <D.39655>; else goto <D.39656>;
      <D.39655>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39657>; else goto <D.39658>;
      <D.39657>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39659>; else goto <D.39660>;
      <D.39659>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39660>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39658>:
      D.39661 = mini_get_debug_options ();
      D.39662 = D.39661->break_on_unverified;
      if (D.39662 != 0) goto <D.39663>; else goto unverified;
      <D.39663>:
      raise (5);
      <D.39656>:
      D.38326 = ip + 2;
      D.39664 = mono_read16 (D.38326);
      n = (int) D.39664;
      n.89 = (unsigned int) n;
      if (n.89 >= num_args) goto <D.39665>; else goto <D.39666>;
      <D.39665>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39667>; else goto <D.39668>;
      <D.39667>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39669>; else goto <D.39670>;
      <D.39669>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39670>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39668>:
      D.39671 = mini_get_debug_options ();
      D.39672 = D.39671->break_on_unverified;
      if (D.39672 != 0) goto <D.39673>; else goto unverified;
      <D.39673>:
      raise (5);
      <D.39666>:
      if (dont_verify_stloc == 0) goto <D.39674>; else goto <D.39675>;
      <D.39674>:
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.39676 = param_types + D.30606;
      D.39677 = *D.39676;
      D.30679 = *sp;
      D.39678 = target_type_is_incompatible (cfg, D.39677, D.30679);
      if (D.39678 != 0) goto <D.39679>; else goto <D.39680>;
      <D.39679>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39681>; else goto <D.39682>;
      <D.39681>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39683>; else goto <D.39684>;
      <D.39683>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39684>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39682>:
      D.39685 = mini_get_debug_options ();
      D.39686 = D.39685->break_on_unverified;
      if (D.39686 != 0) goto <D.39687>; else goto unverified;
      <D.39687>:
      raise (5);
      <D.39680>:
      <D.39675>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.30299 = cfg->arg_types;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30607 = D.30299 + D.30606;
      D.30608 = *D.30607;
      D.39688 = mono_type_to_regmove (cfg, D.30608);
      D.39689 = (short unsigned int) D.39688;
      ins->opcode = D.39689;
      D.30289 = cfg->args;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30611 = D.30289 + D.30606;
      D.30612 = *D.30611;
      D.30613 = D.30612->klass;
      ins->klass = D.30613;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      D.30289 = cfg->args;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30611 = D.30289 + D.30606;
      D.30612 = *D.30611;
      D.30614 = D.30612->dreg;
      ins->dreg = D.30614;
      D.30436 = ins->opcode;
      if (D.30436 == 427) goto <D.39690>; else goto <D.39691>;
      <D.39690>:
      D.30299 = cfg->arg_types;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30607 = D.30299 + D.30606;
      D.30608 = *D.30607;
      D.39692 = mono_class_from_mono_type (D.30608);
      ins->klass = D.39692;
      <D.39691>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.39693>; else goto <D.39694>;
      <D.39693>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.39695>;
      <D.39694>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.39695>:
      ip = ip + 4;
      goto <D.27560>;
      <D.27585>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      D.30458 = D.30457 /[ex] 4;
      D.30371 = header->max_stack;
      D.30372 = (int) D.30371;
      if (D.30458 >= D.30372) goto <D.39696>; else goto <D.39697>;
      <D.39696>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39698>; else goto <D.39699>;
      <D.39698>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39700>; else goto <D.39701>;
      <D.39700>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39701>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39699>:
      D.39702 = mini_get_debug_options ();
      D.39703 = D.39702->break_on_unverified;
      if (D.39703 != 0) goto <D.39704>; else goto unverified;
      <D.39704>:
      raise (5);
      <D.39697>:
      D.39542 = ip + 4;
      if (D.39542 > end) goto <D.39705>; else goto <D.39706>;
      <D.39705>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39707>; else goto <D.39708>;
      <D.39707>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39709>; else goto <D.39710>;
      <D.39709>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39710>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39708>:
      D.39711 = mini_get_debug_options ();
      D.39712 = D.39711->break_on_unverified;
      if (D.39712 != 0) goto <D.39713>; else goto unverified;
      <D.39713>:
      raise (5);
      <D.39706>:
      D.38326 = ip + 2;
      D.39714 = mono_read16 (D.38326);
      n = (int) D.39714;
      n.89 = (unsigned int) n;
      D.30276 = header->num_locals;
      D.30633 = (unsigned int) D.30276;
      if (n.89 >= D.30633) goto <D.39715>; else goto <D.39716>;
      <D.39715>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39717>; else goto <D.39718>;
      <D.39717>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39719>; else goto <D.39720>;
      <D.39719>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39720>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39718>:
      D.39721 = mini_get_debug_options ();
      D.39722 = D.39721->break_on_unverified;
      if (D.39722 != 0) goto <D.39723>; else goto unverified;
      <D.39723>:
      raise (5);
      <D.39716>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 424;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.30264 = header->locals[n];
      D.39724 = mono_type_to_regmove (cfg, D.30264);
      D.39725 = (short unsigned int) D.39724;
      ins->opcode = D.39725;
      D.30264 = header->locals[n];
      type_to_eval_stack_type (cfg, D.30264, ins);
      D.30645 = cfg->locals;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30646 = D.30645 + D.30606;
      D.30647 = *D.30646;
      D.30648 = D.30647->klass;
      ins->klass = D.30648;
      D.30645 = cfg->locals;
      n.89 = (unsigned int) n;
      D.30606 = n.89 * 4;
      D.30646 = D.30645 + D.30606;
      D.30647 = *D.30646;
      D.30649 = D.30647->dreg;
      ins->sreg1 = D.30649;
      D.30432 = ins->type;
      D.30433 = (<unnamed type>) D.30432;
      D.39726 = alloc_dreg (cfg, D.30433);
      D.39727 = (int) D.39726;
      ins->dreg = D.39727;
      D.30436 = ins->opcode;
      if (D.30436 == 427) goto <D.39728>; else goto <D.39729>;
      <D.39728>:
      D.30264 = header->locals[n];
      D.39730 = mono_class_from_mono_type (D.30264);
      ins->klass = D.39730;
      <D.39729>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.39731>; else goto <D.39732>;
      <D.39731>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.39733>;
      <D.39732>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.39733>:
      sp.379 = sp;
      sp = sp.379 + 4;
      *sp.379 = ins;
      ip = ip + 4;
      goto <D.27560>;
      <D.27586>:
      {
        unsigned char * tmp_ip;

        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        D.30458 = D.30457 /[ex] 4;
        D.30371 = header->max_stack;
        D.30372 = (int) D.30371;
        if (D.30458 >= D.30372) goto <D.39735>; else goto <D.39736>;
        <D.39735>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.39737>; else goto <D.39738>;
        <D.39737>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.39739>; else goto <D.39740>;
        <D.39739>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39740>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39738>:
        D.39741 = mini_get_debug_options ();
        D.39742 = D.39741->break_on_unverified;
        if (D.39742 != 0) goto <D.39743>; else goto unverified;
        <D.39743>:
        raise (5);
        <D.39736>:
        D.39542 = ip + 4;
        if (D.39542 > end) goto <D.39744>; else goto <D.39745>;
        <D.39744>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.39746>; else goto <D.39747>;
        <D.39746>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.39748>; else goto <D.39749>;
        <D.39748>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39749>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39747>:
        D.39750 = mini_get_debug_options ();
        D.39751 = D.39750->break_on_unverified;
        if (D.39751 != 0) goto <D.39752>; else goto unverified;
        <D.39752>:
        raise (5);
        <D.39745>:
        D.38326 = ip + 2;
        D.39753 = mono_read16 (D.38326);
        n = (int) D.39753;
        n.89 = (unsigned int) n;
        D.30276 = header->num_locals;
        D.30633 = (unsigned int) D.30276;
        if (n.89 >= D.30633) goto <D.39754>; else goto <D.39755>;
        <D.39754>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.39756>; else goto <D.39757>;
        <D.39756>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.39758>; else goto <D.39759>;
        <D.39758>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39759>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39757>:
        D.39760 = mini_get_debug_options ();
        D.39761 = D.39760->break_on_unverified;
        if (D.39761 != 0) goto <D.39762>; else goto unverified;
        <D.39762>:
        raise (5);
        <D.39755>:
        tmp_ip = emit_optimized_ldloca_ir (cfg, ip, end, 2);
        if (tmp_ip != 0B) goto <D.39763>; else goto <D.39764>;
        <D.39763>:
        ip = tmp_ip;
        inline_costs = inline_costs + 1;
        goto <D.27560>;
        <D.39764>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 314;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        D.30645 = cfg->locals;
        n.89 = (unsigned int) n;
        D.30606 = n.89 * 4;
        D.30646 = D.30645 + D.30606;
        D.30647 = *D.30646;
        ins->data.op[0].p = D.30647;
        D.30645 = cfg->locals;
        n.89 = (unsigned int) n;
        D.30606 = n.89 * 4;
        D.30646 = D.30645 + D.30606;
        D.30647 = *D.30646;
        D.30645 = cfg->locals;
        n.89 = (unsigned int) n;
        D.30606 = n.89 * 4;
        D.30646 = D.30645 + D.30606;
        D.30647 = *D.30646;
        D.39765 = D.30647->flags;
        D.39766 = D.39765 | 16;
        D.30647->flags = D.39766;
        ins->type = 5;
        D.30645 = cfg->locals;
        n.89 = (unsigned int) n;
        D.30606 = n.89 * 4;
        D.30646 = D.30645 + D.30606;
        D.30647 = *D.30646;
        D.30648 = D.30647->klass;
        ins->klass = D.30648;
        D.39767 = alloc_dreg (cfg, 5);
        D.39768 = (int) D.39767;
        ins->dreg = D.39768;
        cfg->has_indirection = 1;
        D.29838 = cfg->gsharedvt;
        D.30765 = D.29838 != 0;
        D.30766 = (long int) D.30765;
        D.30767 = __builtin_expect (D.30766, 0);
        if (D.30767 != 0) goto <D.39769>; else goto <D.39770>;
        <D.39769>:
        D.30645 = cfg->locals;
        n.89 = (unsigned int) n;
        D.30606 = n.89 * 4;
        D.30646 = D.30645 + D.30606;
        D.30647 = *D.30646;
        D.39771 = D.30647->data.op[1].vtype;
        D.39772 = mini_is_gsharedvt_variable_type (cfg, D.39771);
        if (D.39772 != 0) goto <D.39773>; else goto <D.39774>;
        <D.39773>:
        handle_gsharedvt_ldaddr (cfg);
        <D.39774>:
        <D.39770>:
        D.39776 = mono_arch_is_soft_float ();
        if (D.39776 != 0) goto <D.39777>; else goto <D.39778>;
        <D.39777>:
        D.30645 = cfg->locals;
        n.89 = (unsigned int) n;
        D.30606 = n.89 * 4;
        D.30646 = D.30645 + D.30606;
        D.30647 = *D.30646;
        D.39783 = D.30647->type;
        if (D.39783 == 2) goto <D.39780>; else goto <D.39784>;
        <D.39784>:
        D.30645 = cfg->locals;
        n.89 = (unsigned int) n;
        D.30606 = n.89 * 4;
        D.30646 = D.30645 + D.30606;
        D.30647 = *D.30646;
        D.39783 = D.30647->type;
        if (D.39783 == 4) goto <D.39780>; else goto <D.39781>;
        <D.39780>:
        iftmp.381 = 1;
        goto <D.39782>;
        <D.39781>:
        iftmp.381 = 0;
        <D.39782>:
        iftmp.380 = (_Bool) iftmp.381;
        goto <D.39785>;
        <D.39778>:
        D.30645 = cfg->locals;
        n.89 = (unsigned int) n;
        D.30606 = n.89 * 4;
        D.30646 = D.30645 + D.30606;
        D.30647 = *D.30646;
        D.39783 = D.30647->type;
        iftmp.380 = D.39783 == 2;
        <D.39785>:
        if (iftmp.380 != 0) goto <D.39786>; else goto <D.39787>;
        <D.39786>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.30645 = cfg->locals;
          n.89 = (unsigned int) n;
          D.30606 = n.89 * 4;
          D.30646 = D.30645 + D.30606;
          D.30647 = *D.30646;
          D.30649 = D.30647->dreg;
          D.39789 = D.30649 + 1;
          D.39790 = (unsigned int) D.39789;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.39790 < D.30791) goto <D.39791>; else goto <D.39792>;
          <D.39791>:
          D.30794 = cfg->vreg_to_inst;
          D.30645 = cfg->locals;
          n.89 = (unsigned int) n;
          D.30606 = n.89 * 4;
          D.30646 = D.30645 + D.30606;
          D.30647 = *D.30646;
          D.30649 = D.30647->dreg;
          D.39793 = (sizetype) D.30649;
          D.39794 = D.39793 + 1;
          D.39795 = D.39794 * 4;
          D.39796 = D.30794 + D.39795;
          iftmp.382 = *D.39796;
          goto <D.39797>;
          <D.39792>:
          iftmp.382 = 0B;
          <D.39797>:
          var1 = iftmp.382;
          D.30645 = cfg->locals;
          n.89 = (unsigned int) n;
          D.30606 = n.89 * 4;
          D.30646 = D.30645 + D.30606;
          D.30647 = *D.30646;
          D.30649 = D.30647->dreg;
          D.39799 = D.30649 + 2;
          D.39800 = (unsigned int) D.39799;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.39800 < D.30791) goto <D.39801>; else goto <D.39802>;
          <D.39801>:
          D.30794 = cfg->vreg_to_inst;
          D.30645 = cfg->locals;
          n.89 = (unsigned int) n;
          D.30606 = n.89 * 4;
          D.30646 = D.30645 + D.30606;
          D.30647 = *D.30646;
          D.30649 = D.30647->dreg;
          D.39793 = (sizetype) D.30649;
          D.39803 = D.39793 + 2;
          D.39804 = D.39803 * 4;
          D.39805 = D.30794 + D.39804;
          iftmp.383 = *D.39805;
          goto <D.39806>;
          <D.39802>:
          iftmp.383 = 0B;
          <D.39806>:
          var2 = iftmp.383;
          D.39807 = var1 == 0B;
          D.39808 = (long int) D.39807;
          D.39809 = __builtin_expect (D.39808, 0);
          if (D.39809 != 0) goto <D.39810>; else goto <D.39811>;
          <D.39810>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11622, "var1");
          <D.39811>:
          D.39812 = var2 == 0B;
          D.39813 = (long int) D.39812;
          D.39814 = __builtin_expect (D.39813, 0);
          if (D.39814 != 0) goto <D.39815>; else goto <D.39816>;
          <D.39815>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11622, "var2");
          <D.39816>:
          D.39817 = var1->flags;
          D.39818 = D.39817 | 16;
          var1->flags = D.39818;
          D.39819 = var2->flags;
          D.39820 = D.39819 | 16;
          var2->flags = D.39820;
        }
        <D.39787>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.39821>; else goto <D.39822>;
        <D.39821>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.39823>;
        <D.39822>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.39823>:
        sp.384 = sp;
        sp = sp.384 + 4;
        *sp.384 = ins;
        ip = ip + 4;
        goto <D.27560>;
      }
      <D.27590>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.39825>; else goto <D.39826>;
      <D.39825>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39827>; else goto <D.39828>;
      <D.39827>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39829>; else goto <D.39830>;
      <D.39829>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39830>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39828>:
      D.39831 = mini_get_debug_options ();
      D.39832 = D.39831->break_on_unverified;
      if (D.39832 != 0) goto <D.39833>; else goto unverified;
      <D.39833>:
      raise (5);
      <D.39826>:
      sp = sp + 4294967292;
      D.39542 = ip + 4;
      if (D.39542 > end) goto <D.39834>; else goto <D.39835>;
      <D.39834>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39836>; else goto <D.39837>;
      <D.39836>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39838>; else goto <D.39839>;
      <D.39838>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39839>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39837>:
      D.39840 = mini_get_debug_options ();
      D.39841 = D.39840->break_on_unverified;
      if (D.39841 != 0) goto <D.39842>; else goto unverified;
      <D.39842>:
      raise (5);
      <D.39835>:
      D.38326 = ip + 2;
      D.39843 = mono_read16 (D.38326);
      n = (int) D.39843;
      n.89 = (unsigned int) n;
      D.30276 = header->num_locals;
      D.30633 = (unsigned int) D.30276;
      if (n.89 >= D.30633) goto <D.39844>; else goto <D.39845>;
      <D.39844>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39846>; else goto <D.39847>;
      <D.39846>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39848>; else goto <D.39849>;
      <D.39848>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39849>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39847>:
      D.39850 = mini_get_debug_options ();
      D.39851 = D.39850->break_on_unverified;
      if (D.39851 != 0) goto <D.39852>; else goto unverified;
      <D.39852>:
      raise (5);
      <D.39845>:
      if (dont_verify_stloc == 0) goto <D.39853>; else goto <D.39854>;
      <D.39853>:
      D.30264 = header->locals[n];
      D.30679 = *sp;
      D.39855 = target_type_is_incompatible (cfg, D.30264, D.30679);
      if (D.39855 != 0) goto <D.39856>; else goto <D.39857>;
      <D.39856>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39858>; else goto <D.39859>;
      <D.39858>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39860>; else goto <D.39861>;
      <D.39860>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39861>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39859>:
      D.39862 = mini_get_debug_options ();
      D.39863 = D.39862->break_on_unverified;
      if (D.39863 != 0) goto <D.39864>; else goto unverified;
      <D.39864>:
      raise (5);
      <D.39857>:
      <D.39854>:
      emit_stloc_ir (cfg, sp, header, n);
      ip = ip + 4;
      inline_costs = inline_costs + 1;
      goto <D.27560>;
      <D.27591>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.39865>; else goto <D.39866>;
      <D.39865>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39867>; else goto <D.39868>;
      <D.39867>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39869>; else goto <D.39870>;
      <D.39869>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39870>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39868>:
      D.39871 = mini_get_debug_options ();
      D.39872 = D.39871->break_on_unverified;
      if (D.39872 != 0) goto <D.39873>; else goto unverified;
      <D.39873>:
      raise (5);
      <D.39866>:
      sp = sp + 4294967292;
      if (sp != stack_start) goto <D.39874>; else goto <D.39875>;
      <D.39874>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39876>; else goto <D.39877>;
      <D.39876>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39878>; else goto <D.39879>;
      <D.39878>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39879>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39877>:
      D.39880 = mini_get_debug_options ();
      D.39881 = D.39880->break_on_unverified;
      if (D.39881 != 0) goto <D.39882>; else goto unverified;
      <D.39882>:
      raise (5);
      <D.39875>:
      D.29662 = cfg->method;
      if (D.29662 != method) goto inline_failure; else goto <D.39883>;
      <D.39883>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 338;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      D.39884 = alloc_preg (cfg);
      D.39885 = (int) D.39884;
      ins->dreg = D.39885;
      D.30679 = *sp;
      D.30872 = D.30679->dreg;
      ins->sreg1 = D.30872;
      ins->type = 3;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      if (D.29939 != 0B) goto <D.39886>; else goto <D.39887>;
      <D.39886>:
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      D.29939->next = ins;
      bblock.129 = cfg->cbb;
      D.29939 = bblock.129->last_ins;
      ins->prev = D.29939;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      goto <D.39888>;
      <D.39887>:
      bblock.129 = cfg->cbb;
      bblock.129 = cfg->cbb;
      bblock.129->last_ins = ins;
      D.29939 = bblock.129->last_ins;
      bblock.129->code = D.29939;
      <D.39888>:
      D.30117 = cfg->flags;
      D.30118 = D.30117 | 1;
      cfg->flags = D.30118;
      if (init_locals != 0) goto <D.39889>; else goto <D.39890>;
      <D.39889>:
      D.30530 = ins->flags;
      D.39891 = D.30530 | 1;
      ins->flags = D.39891;
      <D.39890>:
      sp.385 = sp;
      sp = sp.385 + 4;
      *sp.385 = ins;
      ip = ip + 2;
      goto <D.27560>;
      <D.27592>:
      {
        struct MonoExceptionClause * clause;
        struct MonoExceptionClause * nearest;
        int cc;
        int nearest_num;

        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        if (D.30457 <= 3) goto <D.39893>; else goto <D.39894>;
        <D.39893>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.39895>; else goto <D.39896>;
        <D.39895>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.39897>; else goto <D.39898>;
        <D.39897>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39898>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39896>:
        D.39899 = mini_get_debug_options ();
        D.39900 = D.39899->break_on_unverified;
        if (D.39900 != 0) goto <D.39901>; else goto unverified;
        <D.39901>:
        raise (5);
        <D.39894>:
        sp = sp + 4294967292;
        if (sp != stack_start) goto <D.39902>; else goto <D.39904>;
        <D.39904>:
        D.30679 = *sp;
        D.32402 = D.30679->type;
        if (D.32402 != 1) goto <D.39902>; else goto <D.39903>;
        <D.39902>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.39905>; else goto <D.39906>;
        <D.39905>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 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.39903>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 737;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        ins->sreg1 = D.30872;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        if (D.30024 != 0B) goto <D.39912>; else goto <D.39913>;
        <D.39912>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        D.30024->next = ins;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        ins->prev = D.30024;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        goto <D.39914>;
        <D.39913>:
        bblock.77 = bblock;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        D.30024 = bblock.77->last_ins;
        bblock.77->code = D.30024;
        <D.39914>:
        start_new_bblock = 1;
        ip = ip + 2;
        nearest = 0B;
        nearest_num = 0;
        cc = 0;
        goto <D.27598>;
        <D.27597>:
        D.29818 = header->clauses;
        cc.386 = (unsigned int) cc;
        D.39916 = cc.386 * 24;
        clause = D.29818 + D.39916;
        D.39919 = clause->flags;
        D.39920 = D.39919 & 1;
        if (D.39920 != 0) goto <D.39921>; else goto <D.39922>;
        <D.39921>:
        ip.82 = (int) ip;
        D.29837 = header->code;
        D.30379 = (int) D.29837;
        D.30380 = ip.82 - D.30379;
        D.38128 = (unsigned int) D.30380;
        D.39923 = clause->data.filter_offset;
        if (D.38128 > D.39923) goto <D.39924>; else goto <D.39925>;
        <D.39924>:
        ip.82 = (int) ip;
        D.29837 = header->code;
        D.30379 = (int) D.29837;
        D.30380 = ip.82 - D.30379;
        D.38128 = (unsigned int) D.30380;
        D.39926 = clause->handler_offset;
        if (D.38128 <= D.39926) goto <D.39927>; else goto <D.39928>;
        <D.39927>:
        if (nearest == 0B) goto <D.39917>; else goto <D.39929>;
        <D.39929>:
        D.39923 = clause->data.filter_offset;
        D.39930 = nearest->data.filter_offset;
        if (D.39923 < D.39930) goto <D.39917>; else goto <D.39918>;
        <D.39917>:
        nearest = clause;
        nearest_num = cc;
        <D.39918>:
        <D.39928>:
        <D.39925>:
        <D.39922>:
        cc = cc + 1;
        <D.27598>:
        D.30004 = header->num_clauses;
        D.30005 = (int) D.30004;
        if (D.30005 > cc) goto <D.27597>; else goto <D.27599>;
        <D.27599>:
        D.39931 = nearest == 0B;
        D.39932 = (long int) D.39931;
        D.39933 = __builtin_expect (D.39932, 0);
        if (D.39933 != 0) goto <D.39934>; else goto <D.39935>;
        <D.39934>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11690, "nearest");
        <D.39935>:
        ip.82 = (int) ip;
        D.29837 = header->code;
        D.30379 = (int) D.29837;
        D.30380 = ip.82 - D.30379;
        D.38128 = (unsigned int) D.30380;
        D.39936 = nearest->handler_offset;
        if (D.38128 != D.39936) goto <D.39937>; else goto <D.39938>;
        <D.39937>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.39939>; else goto <D.39940>;
        <D.39939>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.39941>; else goto <D.39942>;
        <D.39941>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39942>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39940>:
        D.39943 = mini_get_debug_options ();
        D.39944 = D.39943->break_on_unverified;
        if (D.39944 != 0) goto <D.39945>; else goto unverified;
        <D.39945>:
        raise (5);
        <D.39938>:
        goto <D.27560>;
      }
      <D.27600>:
      ins_flag = ins_flag | 8;
      D.39946 = ip + 3;
      if (D.39946 > end) goto <D.39947>; else goto <D.39948>;
      <D.39947>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39949>; else goto <D.39950>;
      <D.39949>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39951>; else goto <D.39952>;
      <D.39951>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39952>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39950>:
      D.39953 = mini_get_debug_options ();
      D.39954 = D.39953->break_on_unverified;
      if (D.39954 != 0) goto <D.39955>; else goto unverified;
      <D.39955>:
      raise (5);
      <D.39948>:
      ip = ip + 3;
      goto <D.27560>;
      <D.27601>:
      ins_flag = ins_flag | 4;
      ip = ip + 2;
      goto <D.27560>;
      <D.27602>:
      ins_flag = ins_flag | 4;
      D.30117 = cfg->flags;
      D.39956 = D.30117 | 16;
      cfg->flags = D.39956;
      inline_costs = inline_costs + 100000;
      ip = ip + 2;
      goto <D.27560>;
      <D.27603>:
      sp.84 = (int) sp;
      stack_start.85 = (int) stack_start;
      D.30457 = sp.84 - stack_start.85;
      if (D.30457 <= 3) goto <D.39957>; else goto <D.39958>;
      <D.39957>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39959>; else goto <D.39960>;
      <D.39959>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39961>; else goto <D.39962>;
      <D.39961>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39962>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39960>:
      D.39963 = mini_get_debug_options ();
      D.39964 = D.39963->break_on_unverified;
      if (D.39964 != 0) goto <D.39965>; else goto unverified;
      <D.39965>:
      raise (5);
      <D.39958>:
      sp = sp + 4294967292;
      D.34392 = ip + 6;
      if (D.34392 > end) goto <D.39966>; else goto <D.39967>;
      <D.39966>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39968>; else goto <D.39969>;
      <D.39968>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39970>; else goto <D.39971>;
      <D.39970>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39971>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39969>:
      D.39972 = mini_get_debug_options ();
      D.39973 = D.39972->break_on_unverified;
      if (D.39973 != 0) goto <D.39974>; else goto unverified;
      <D.39974>:
      raise (5);
      <D.39967>:
      D.38326 = ip + 2;
      token = mono_read32 (D.38326);
      klass.387 = mini_get_class (method, token, generic_context);
      klass = klass.387;
      klass.176 = klass;
      if (klass.176 == 0B) goto <D.39976>; else goto <D.39978>;
      <D.39978>:
      klass.176 = klass;
      D.34335 = klass.176->exception_type;
      if (D.34335 != 0) goto <D.39976>; else goto <D.39977>;
      <D.39976>:
      klass.176 = klass;
      cfg->exception_ptr = klass.176;
      D.39979 = mini_get_debug_options ();
      D.39980 = D.39979->break_on_unverified;
      if (D.39980 != 0) goto <D.39981>; else goto load_error;
      <D.39981>:
      raise (5);
      <D.39977>:
      klass.176 = klass;
      D.39982 = generic_class_is_reference_type (cfg, klass.176);
      if (D.39982 != 0) goto <D.39983>; else goto <D.39984>;
      <D.39983>:
      {
        struct MonoInst * inst;

        D.29691 = cfg->mempool;
        inst = mono_mempool_alloc (D.29691, 56);
        inst->data.op[1].const_val = 0;
        D.39985 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.39985;
        inst->prev = 0B;
        D.39986 = inst->prev;
        inst->next = D.39986;
        inst->opcode = 381;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.39987 = inst->sreg3;
        inst->sreg2 = D.39987;
        D.39988 = inst->sreg2;
        inst->sreg1 = D.39988;
        D.29910 = cfg->ip;
        inst->cil_code = D.29910;
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        inst->dreg = D.30872;
        inst->data.op[0].const_val = 0;
        inst->data.op[1].const_val = 0;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.39989>; else goto <D.39990>;
        <D.39989>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = inst;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        inst->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = inst;
        goto <D.39991>;
        <D.39990>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = inst;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.39991>:
      }
      goto <D.39992>;
      <D.39984>:
      D.30679 = *sp;
      klass.176 = klass;
      mini_emit_initobj (cfg, D.30679, 0B, klass.176);
      <D.39992>:
      ip = ip + 6;
      inline_costs = inline_costs + 1;
      goto <D.27560>;
      <D.27605>:
      D.34392 = ip + 6;
      if (D.34392 > end) goto <D.39993>; else goto <D.39994>;
      <D.39993>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.39995>; else goto <D.39996>;
      <D.39995>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.39997>; else goto <D.39998>;
      <D.39997>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39998>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39996>:
      D.39999 = mini_get_debug_options ();
      D.40000 = D.39999->break_on_unverified;
      if (D.40000 != 0) goto <D.40001>; else goto unverified;
      <D.40001>:
      raise (5);
      <D.39994>:
      D.38326 = ip + 2;
      token = mono_read32 (D.38326);
      constrained_call = mini_get_class (method, token, generic_context);
      if (constrained_call == 0B) goto <D.40002>; else goto <D.40004>;
      <D.40004>:
      D.31967 = constrained_call->exception_type;
      if (D.31967 != 0) goto <D.40002>; else goto <D.40003>;
      <D.40002>:
      cfg->exception_ptr = constrained_call;
      D.40005 = mini_get_debug_options ();
      D.40006 = D.40005->break_on_unverified;
      if (D.40006 != 0) goto <D.40007>; else goto load_error;
      <D.40007>:
      raise (5);
      <D.40003>:
      ip = ip + 6;
      goto <D.27560>;
      <D.27606>:
      <D.27607>:
      {
        struct MonoInst * iargs[3];

        try
          {
            sp.84 = (int) sp;
            stack_start.85 = (int) stack_start;
            D.30457 = sp.84 - stack_start.85;
            if (D.30457 <= 11) goto <D.40008>; else goto <D.40009>;
            <D.40008>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.40010>; else goto <D.40011>;
            <D.40010>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.40012>; else goto <D.40013>;
            <D.40012>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.40013>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.40011>:
            D.40014 = mini_get_debug_options ();
            D.40015 = D.40014->break_on_unverified;
            if (D.40015 != 0) goto <D.40016>; else goto unverified;
            <D.40016>:
            raise (5);
            <D.40009>:
            sp = sp + 4294967284;
            D.30709 = ip + 1;
            D.30710 = *D.30709;
            if (D.30710 == 23) goto <D.40019>; else goto <D.40017>;
            <D.40019>:
            D.30079 = cfg->opt;
            D.32064 = D.30079 & 2048;
            if (D.32064 != 0) goto <D.40020>; else goto <D.40017>;
            <D.40020>:
            D.40021 = sp + 8;
            D.40022 = *D.40021;
            D.40023 = D.40022->opcode;
            if (D.40023 == 362) goto <D.40024>; else goto <D.40017>;
            <D.40024>:
            D.40021 = sp + 8;
            D.40022 = *D.40021;
            n = D.40022->data.op[0].const_val;
            n.89 = (unsigned int) n;
            if (n.89 <= 20) goto <D.40025>; else goto <D.40017>;
            <D.40025>:
            D.30679 = *sp;
            D.30872 = D.30679->dreg;
            D.31793 = sp + 4;
            D.31794 = *D.31793;
            D.31795 = D.31794->dreg;
            D.40021 = sp + 8;
            D.40022 = *D.40021;
            D.40026 = D.40022->data.op[0].const_val;
            mini_emit_memcpy (cfg, D.30872, 0, D.31795, 0, D.40026, 0);
            goto <D.40018>;
            <D.40017>:
            D.30709 = ip + 1;
            D.30710 = *D.30709;
            if (D.30710 == 24) goto <D.40029>; else goto <D.40027>;
            <D.40029>:
            D.30079 = cfg->opt;
            D.32064 = D.30079 & 2048;
            if (D.32064 != 0) goto <D.40030>; else goto <D.40027>;
            <D.40030>:
            D.40021 = sp + 8;
            D.40022 = *D.40021;
            D.40023 = D.40022->opcode;
            if (D.40023 == 362) goto <D.40031>; else goto <D.40027>;
            <D.40031>:
            D.40021 = sp + 8;
            D.40022 = *D.40021;
            n = D.40022->data.op[0].const_val;
            n.89 = (unsigned int) n;
            if (n.89 <= 20) goto <D.40032>; else goto <D.40027>;
            <D.40032>:
            D.31793 = sp + 4;
            D.31794 = *D.31793;
            D.34010 = D.31794->opcode;
            if (D.34010 == 362) goto <D.40033>; else goto <D.40027>;
            <D.40033>:
            D.31793 = sp + 4;
            D.31794 = *D.31793;
            D.34035 = D.31794->data.op[0].const_val;
            if (D.34035 == 0) goto <D.40034>; else goto <D.40027>;
            <D.40034>:
            D.30679 = *sp;
            D.30872 = D.30679->dreg;
            D.40021 = sp + 8;
            D.40022 = *D.40021;
            D.40026 = D.40022->data.op[0].const_val;
            D.31793 = sp + 4;
            D.31794 = *D.31793;
            D.34035 = D.31794->data.op[0].const_val;
            mini_emit_memset (cfg, D.30872, 0, D.40026, D.34035, 0);
            goto <D.40028>;
            <D.40027>:
            D.30679 = *sp;
            iargs[0] = D.30679;
            D.34793 = MEM[(struct MonoInst * *)sp + 4B];
            iargs[1] = D.34793;
            D.40035 = MEM[(struct MonoInst * *)sp + 8B];
            iargs[2] = D.40035;
            D.30709 = ip + 1;
            D.30710 = *D.30709;
            if (D.30710 == 23) goto <D.40036>; else goto <D.40037>;
            <D.40036>:
            {
              struct MonoMethod * memcpy_method;

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

              memset_method = get_memset_method ();
              mono_emit_method_call (cfg, memset_method, &iargs, 0B);
            }
            <D.40038>:
            <D.40028>:
            <D.40018>:
            ip = ip + 2;
            inline_costs = inline_costs + 1;
            goto <D.27560>;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      <D.27611>:
      D.39946 = ip + 3;
      if (D.39946 > end) goto <D.40039>; else goto <D.40040>;
      <D.40039>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.40041>; else goto <D.40042>;
      <D.40041>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.40043>; else goto <D.40044>;
      <D.40043>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40044>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40042>:
      D.40045 = mini_get_debug_options ();
      D.40046 = D.40045->break_on_unverified;
      if (D.40046 != 0) goto <D.40047>; else goto unverified;
      <D.40047>:
      raise (5);
      <D.40040>:
      D.30690 = ip + 2;
      D.40048 = *D.30690;
      D.40049 = (int) D.40048;
      D.40050 = D.40049 & 1;
      if (D.40050 != 0) goto <D.40051>; else goto <D.40052>;
      <D.40051>:
      ins_flag = ins_flag | 4;
      <D.40052>:
      D.30690 = ip + 2;
      D.40048 = *D.30690;
      D.40049 = (int) D.40048;
      D.40053 = D.40049 & 2;
      if (D.40053 != 0) goto <D.40054>; else goto <D.40055>;
      <D.40054>:
      ins_flag = ins_flag | 16;
      <D.40055>:
      ip = ip + 3;
      goto <D.27560>;
      <D.27612>:
      {
        struct MonoInst * load;
        int handler_offset;

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

          D.29818 = header->clauses;
          i.75 = (unsigned int) i;
          D.29820 = i.75 * 24;
          clause = D.29818 + D.29820;
          D.40056 = clause->handler_offset;
          ip.82 = (int) ip;
          D.29837 = header->code;
          D.30379 = (int) D.29837;
          D.30380 = ip.82 - D.30379;
          D.38128 = (unsigned int) D.30380;
          if (D.40056 <= D.38128) goto <D.40057>; else goto <D.40058>;
          <D.40057>:
          ip.82 = (int) ip;
          D.29837 = header->code;
          D.30379 = (int) D.29837;
          D.30380 = ip.82 - D.30379;
          D.38128 = (unsigned int) D.30380;
          D.40056 = clause->handler_offset;
          D.40059 = clause->handler_len;
          D.40060 = D.40056 + D.40059;
          if (D.38128 < D.40060) goto <D.40061>; else goto <D.40062>;
          <D.40061>:
          D.40063 = clause->flags;
          D.40064 = D.40063 & 2;
          if (D.40064 == 0) goto <D.40065>; else goto <D.40066>;
          <D.40065>:
          D.40056 = clause->handler_offset;
          handler_offset = (int) D.40056;
          goto <D.27616>;
          <D.40066>:
          <D.40062>:
          <D.40058>:
        }
        i = i + 1;
        <D.27618>:
        D.30004 = header->num_clauses;
        D.30005 = (int) D.30004;
        if (D.30005 > i) goto <D.27617>; else goto <D.27616>;
        <D.27616>:
        bblock.77 = bblock;
        bblock.77 = bblock;
        D.40067 = bblock.77->flags;
        D.40068 = D.40067 | 8;
        bblock.77->flags = D.40068;
        D.40069 = handler_offset == -1;
        D.40070 = (long int) D.40069;
        D.40071 = __builtin_expect (D.40070, 0);
        if (D.40071 != 0) goto <D.40072>; else goto <D.40073>;
        <D.40072>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11786, "handler_offset != -1");
        <D.40073>:
        D.29691 = cfg->mempool;
        load = mono_mempool_alloc (D.29691, 56);
        load->data.op[1].const_val = 0;
        D.40074 = load->data.op[1].const_val;
        load->data.op[0].const_val = D.40074;
        load->prev = 0B;
        D.40075 = load->prev;
        load->next = D.40075;
        load->opcode = 424;
        load->flags = 0;
        load->type = 0;
        load->dreg = -1;
        load->sreg3 = -1;
        D.40076 = load->sreg3;
        load->sreg2 = D.40076;
        D.40077 = load->sreg2;
        load->sreg1 = D.40077;
        D.29910 = cfg->ip;
        load->cil_code = D.29910;
        D.30422 = cfg->varinfo;
        D.40078 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.40079 = D.40078->data.op[0].const_val;
        D.40080 = (unsigned int) D.40079;
        D.40081 = D.40080 * 4;
        D.40082 = D.30422 + D.40081;
        D.40083 = *D.40082;
        D.40084 = D.40083->data.op[1].vtype;
        D.40085 = mono_type_to_regmove (cfg, D.40084);
        D.40086 = (short unsigned int) D.40085;
        load->opcode = D.40086;
        D.30422 = cfg->varinfo;
        D.40087 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.40088 = D.40087->data.op[0].const_val;
        D.40089 = (unsigned int) D.40088;
        D.40090 = D.40089 * 4;
        D.40091 = D.30422 + D.40090;
        D.40092 = *D.40091;
        D.40093 = D.40092->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.40093, load);
        D.30422 = cfg->varinfo;
        D.40094 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.40095 = D.40094->data.op[0].const_val;
        D.40096 = (unsigned int) D.40095;
        D.40097 = D.40096 * 4;
        D.40098 = D.30422 + D.40097;
        D.40099 = *D.40098;
        D.40100 = D.40099->klass;
        load->klass = D.40100;
        D.30422 = cfg->varinfo;
        D.40101 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.40102 = D.40101->data.op[0].const_val;
        D.40103 = (unsigned int) D.40102;
        D.40104 = D.40103 * 4;
        D.40105 = D.30422 + D.40104;
        D.40106 = *D.40105;
        D.40107 = D.40106->dreg;
        load->sreg1 = D.40107;
        D.40108 = load->type;
        D.40109 = (<unnamed type>) D.40108;
        D.40110 = alloc_dreg (cfg, D.40109);
        D.40111 = (int) D.40110;
        load->dreg = D.40111;
        D.40112 = load->opcode;
        if (D.40112 == 427) goto <D.40113>; else goto <D.40114>;
        <D.40113>:
        D.30422 = cfg->varinfo;
        D.40115 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.40116 = D.40115->data.op[0].const_val;
        D.40117 = (unsigned int) D.40116;
        D.40118 = D.40117 * 4;
        D.40119 = D.30422 + D.40118;
        D.40120 = *D.40119;
        D.40121 = D.40120->data.op[1].vtype;
        D.40122 = mono_class_from_mono_type (D.40121);
        load->klass = D.40122;
        <D.40114>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.40123>; else goto <D.40124>;
        <D.40123>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = load;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        load->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = load;
        goto <D.40125>;
        <D.40124>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = load;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.40125>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 372;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        D.40126 = load->dreg;
        ins->sreg1 = D.40126;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        if (D.30024 != 0B) goto <D.40127>; else goto <D.40128>;
        <D.40127>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        D.30024->next = ins;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        ins->prev = D.30024;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        goto <D.40129>;
        <D.40128>:
        bblock.77 = bblock;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        D.30024 = bblock.77->last_ins;
        bblock.77->code = D.30024;
        <D.40129>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        ins->opcode = 798;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        if (D.30024 != 0B) goto <D.40130>; else goto <D.40131>;
        <D.40130>:
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        D.30024->next = ins;
        bblock.77 = bblock;
        D.30024 = bblock.77->last_ins;
        ins->prev = D.30024;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        goto <D.40132>;
        <D.40131>:
        bblock.77 = bblock;
        bblock.77 = bblock;
        bblock.77->last_ins = ins;
        D.30024 = bblock.77->last_ins;
        bblock.77->code = D.30024;
        <D.40132>:
        sp = stack_start;
        bblock.77 = bblock;
        link_bblock (cfg, bblock.77, end_bblock);
        start_new_bblock = 1;
        ip = ip + 2;
        goto <D.27560>;
      }
      <D.27619>:
      {
        guint32 val;
        int ialign;

        try
          {
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.40133>; else goto <D.40134>;
            <D.40133>:
            D.29629 = method->klass;
            D.31352 = D.29629->name_space;
            D.29629 = method->klass;
            D.31353 = D.29629->name;
            D.31354 = method->name;
            D.31355 = method->signature;
            D.31356 = D.31355->param_count;
            D.31357 = (int) D.31356;
            D.30562 = *ip;
            D.30563 = (int) D.30562;
            D.40135 = mono_opcode_name (D.30563);
            D.40136 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.31352, D.31353, D.31354, D.31357, D.40135, "method-to-ir.c", 11806);
            cfg->exception_message = D.40136;
            D.29771 = cfg->verbose_level;
            if (D.29771 > 1) goto <D.40137>; else goto <D.40138>;
            <D.40137>:
            D.31362 = cfg->exception_message;
            printf ("%s\n", D.31362);
            <D.40138>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.40134>:
            sp.84 = (int) sp;
            stack_start.85 = (int) stack_start;
            D.30457 = sp.84 - stack_start.85;
            D.30458 = D.30457 /[ex] 4;
            D.30371 = header->max_stack;
            D.30372 = (int) D.30371;
            if (D.30458 >= D.30372) goto <D.40139>; else goto <D.40140>;
            <D.40139>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.40141>; else goto <D.40142>;
            <D.40141>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.40143>; else goto <D.40144>;
            <D.40143>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.40144>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.40142>:
            D.40145 = mini_get_debug_options ();
            D.40146 = D.40145->break_on_unverified;
            if (D.40146 != 0) goto <D.40147>; else goto unverified;
            <D.40147>:
            raise (5);
            <D.40140>:
            D.34392 = ip + 6;
            if (D.34392 > end) goto <D.40148>; else goto <D.40149>;
            <D.40148>:
            D.29838 = cfg->gsharedvt;
            if (D.29838 != 0) goto <D.40150>; else goto <D.40151>;
            <D.40150>:
            D.29771 = cfg->verbose_level;
            if (D.29771 > 2) goto <D.40152>; else goto <D.40153>;
            <D.40152>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.40153>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.40151>:
            D.40154 = mini_get_debug_options ();
            D.40155 = D.40154->break_on_unverified;
            if (D.40155 != 0) goto <D.40156>; else goto unverified;
            <D.40156>:
            raise (5);
            <D.40149>:
            D.38326 = ip + 2;
            token = mono_read32 (D.38326);
            D.40159 = token >> 24;
            if (D.40159 == 27) goto <D.40160>; else goto <D.40157>;
            <D.40160>:
            D.29629 = method->klass;
            D.29630 = D.29629->image;
            D.40161 = BIT_FIELD_REF <*D.29630, 32, 128>;
            D.40162 = D.40161 & 8;
            if (D.40162 == 0) goto <D.40163>; else goto <D.40157>;
            <D.40163>:
            if (generic_context == 0B) goto <D.40164>; else goto <D.40157>;
            <D.40164>:
            {
              struct MonoType * type;

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

              klass = mono_class_get_full (image, token, generic_context);
              if (klass == 0B) goto <D.40166>; else goto <D.40168>;
              <D.40168>:
              D.40169 = klass->exception_type;
              if (D.40169 != 0) goto <D.40166>; else goto <D.40167>;
              <D.40166>:
              cfg->exception_ptr = klass;
              D.40170 = mini_get_debug_options ();
              D.40171 = D.40170->break_on_unverified;
              if (D.40171 != 0) goto <D.40172>; else goto load_error;
              <D.40172>:
              raise (5);
              <D.40167>:
              mono_class_init (klass);
              D.40173 = &klass->byval_arg;
              D.40174 = mono_type_size (D.40173, &ialign);
              val = (guint32) D.40174;
            }
            <D.40158>:
            D.29691 = cfg->mempool;
            ins = mono_mempool_alloc (D.29691, 56);
            ins->data.op[1].const_val = 0;
            D.29906 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.29906;
            ins->prev = 0B;
            D.29907 = ins->prev;
            ins->next = D.29907;
            ins->opcode = 362;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.29908 = ins->sreg3;
            ins->sreg2 = D.29908;
            D.29909 = ins->sreg2;
            ins->sreg1 = D.29909;
            D.29910 = cfg->ip;
            ins->cil_code = D.29910;
            val.388 = (int) val;
            ins->data.op[0].const_val = val.388;
            ins->type = 1;
            D.40176 = alloc_dreg (cfg, 1);
            D.40177 = (int) D.40176;
            ins->dreg = D.40177;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            if (D.29939 != 0B) goto <D.40178>; else goto <D.40179>;
            <D.40178>:
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            D.29939->next = ins;
            bblock.129 = cfg->cbb;
            D.29939 = bblock.129->last_ins;
            ins->prev = D.29939;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            goto <D.40180>;
            <D.40179>:
            bblock.129 = cfg->cbb;
            bblock.129 = cfg->cbb;
            bblock.129->last_ins = ins;
            D.29939 = bblock.129->last_ins;
            bblock.129->code = D.29939;
            <D.40180>:
            sp.389 = sp;
            sp = sp.389 + 4;
            *sp.389 = ins;
            ip = ip + 6;
            goto <D.27560>;
          }
        finally
          {
            ialign = {CLOBBER};
          }
      }
      <D.27624>:
      {
        struct MonoInst * src_var;
        struct MonoInst * src;

        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.40182>; else goto <D.40183>;
        <D.40182>:
        D.29629 = method->klass;
        D.31352 = D.29629->name_space;
        D.29629 = method->klass;
        D.31353 = D.29629->name;
        D.31354 = method->name;
        D.31355 = method->signature;
        D.31356 = D.31355->param_count;
        D.31357 = (int) D.31356;
        D.30562 = *ip;
        D.30563 = (int) D.30562;
        D.40184 = mono_opcode_name (D.30563);
        D.40185 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.31352, D.31353, D.31354, D.31357, D.40184, "method-to-ir.c", 11828);
        cfg->exception_message = D.40185;
        D.29771 = cfg->verbose_level;
        if (D.29771 > 1) goto <D.40186>; else goto <D.40187>;
        <D.40186>:
        D.31362 = cfg->exception_message;
        printf ("%s\n", D.31362);
        <D.40187>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40183>:
        sp.84 = (int) sp;
        stack_start.85 = (int) stack_start;
        D.30457 = sp.84 - stack_start.85;
        if (D.30457 <= 3) goto <D.40188>; else goto <D.40189>;
        <D.40188>:
        D.29838 = cfg->gsharedvt;
        if (D.29838 != 0) goto <D.40190>; else goto <D.40191>;
        <D.40190>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.40192>; else goto <D.40193>;
        <D.40192>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40193>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40191>:
        D.40194 = mini_get_debug_options ();
        D.40195 = D.40194->break_on_unverified;
        if (D.40195 != 0) goto <D.40196>; else goto unverified;
        <D.40196>:
        raise (5);
        <D.40189>:
        sp = sp + 4294967292;
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        D.36031 = (unsigned int) D.30872;
        D.30791 = cfg->vreg_to_inst_len;
        if (D.36031 < D.30791) goto <D.40198>; else goto <D.40199>;
        <D.40198>:
        D.30794 = cfg->vreg_to_inst;
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        D.36034 = (unsigned int) D.30872;
        D.36035 = D.36034 * 4;
        D.36036 = D.30794 + D.36035;
        iftmp.390 = *D.36036;
        goto <D.40200>;
        <D.40199>:
        iftmp.390 = 0B;
        <D.40200>:
        src_var = iftmp.390;
        if (src_var == 0B) goto <D.40201>; else goto <D.40202>;
        <D.40201>:
        D.37380 = mono_defaults.typed_reference_class;
        D.37381 = &D.37380->byval_arg;
        D.30679 = *sp;
        D.30872 = D.30679->dreg;
        src_var = mono_compile_create_var_for_vreg (cfg, D.37381, 329, D.30872);
        <D.40202>:
        D.29691 = cfg->mempool;
        src = mono_mempool_alloc (D.29691, 56);
        src->data.op[1].const_val = 0;
        D.40203 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.40203;
        src->prev = 0B;
        D.40204 = src->prev;
        src->next = D.40204;
        src->opcode = 314;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.40205 = src->sreg3;
        src->sreg2 = D.40205;
        D.40206 = src->sreg2;
        src->sreg1 = D.40206;
        D.29910 = cfg->ip;
        src->cil_code = D.29910;
        src->data.op[0].p = src_var;
        D.40207 = src_var->flags;
        D.40208 = D.40207 | 16;
        src_var->flags = D.40208;
        src->type = 5;
        D.40209 = src_var->klass;
        src->klass = D.40209;
        D.40210 = alloc_dreg (cfg, 5);
        D.40211 = (int) D.40210;
        src->dreg = D.40211;
        cfg->has_indirection = 1;
        D.29838 = cfg->gsharedvt;
        D.30765 = D.29838 != 0;
        D.30766 = (long int) D.30765;
        D.30767 = __builtin_expect (D.30766, 0);
        if (D.30767 != 0) goto <D.40212>; else goto <D.40213>;
        <D.40212>:
        D.40214 = src_var->data.op[1].vtype;
        D.40215 = mini_is_gsharedvt_variable_type (cfg, D.40214);
        if (D.40215 != 0) goto <D.40216>; else goto <D.40217>;
        <D.40216>:
        handle_gsharedvt_ldaddr (cfg);
        <D.40217>:
        <D.40213>:
        D.40219 = mono_arch_is_soft_float ();
        if (D.40219 != 0) goto <D.40220>; else goto <D.40221>;
        <D.40220>:
        D.40226 = src_var->type;
        if (D.40226 == 2) goto <D.40223>; else goto <D.40227>;
        <D.40227>:
        D.40226 = src_var->type;
        if (D.40226 == 4) goto <D.40223>; else goto <D.40224>;
        <D.40223>:
        iftmp.392 = 1;
        goto <D.40225>;
        <D.40224>:
        iftmp.392 = 0;
        <D.40225>:
        iftmp.391 = (_Bool) iftmp.392;
        goto <D.40228>;
        <D.40221>:
        D.40226 = src_var->type;
        iftmp.391 = D.40226 == 2;
        <D.40228>:
        if (iftmp.391 != 0) goto <D.40229>; else goto <D.40230>;
        <D.40229>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.40232 = src_var->dreg;
          D.40233 = D.40232 + 1;
          D.40234 = (unsigned int) D.40233;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.40234 < D.30791) goto <D.40235>; else goto <D.40236>;
          <D.40235>:
          D.30794 = cfg->vreg_to_inst;
          D.40232 = src_var->dreg;
          D.40237 = (sizetype) D.40232;
          D.40238 = D.40237 + 1;
          D.40239 = D.40238 * 4;
          D.40240 = D.30794 + D.40239;
          iftmp.393 = *D.40240;
          goto <D.40241>;
          <D.40236>:
          iftmp.393 = 0B;
          <D.40241>:
          var1 = iftmp.393;
          D.40232 = src_var->dreg;
          D.40243 = D.40232 + 2;
          D.40244 = (unsigned int) D.40243;
          D.30791 = cfg->vreg_to_inst_len;
          if (D.40244 < D.30791) goto <D.40245>; else goto <D.40246>;
          <D.40245>:
          D.30794 = cfg->vreg_to_inst;
          D.40232 = src_var->dreg;
          D.40237 = (sizetype) D.40232;
          D.40247 = D.40237 + 2;
          D.40248 = D.40247 * 4;
          D.40249 = D.30794 + D.40248;
          iftmp.394 = *D.40249;
          goto <D.40250>;
          <D.40246>:
          iftmp.394 = 0B;
          <D.40250>:
          var2 = iftmp.394;
          D.40251 = var1 == 0B;
          D.40252 = (long int) D.40251;
          D.40253 = __builtin_expect (D.40252, 0);
          if (D.40253 != 0) goto <D.40254>; else goto <D.40255>;
          <D.40254>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11837, "var1");
          <D.40255>:
          D.40256 = var2 == 0B;
          D.40257 = (long int) D.40256;
          D.40258 = __builtin_expect (D.40257, 0);
          if (D.40258 != 0) goto <D.40259>; else goto <D.40260>;
          <D.40259>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11837, "var2");
          <D.40260>:
          D.40261 = var1->flags;
          D.40262 = D.40261 | 16;
          var1->flags = D.40262;
          D.40263 = var2->flags;
          D.40264 = D.40263 | 16;
          var2->flags = D.40264;
        }
        <D.40230>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.40265>; else goto <D.40266>;
        <D.40265>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = src;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        src->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = src;
        goto <D.40267>;
        <D.40266>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = src;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.40267>:
        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.29906 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.29906;
        ins->prev = 0B;
        D.29907 = ins->prev;
        ins->next = D.29907;
        D.37703 = mono_defaults.typehandle_class;
        D.40268 = &D.37703->byval_arg;
        D.40269 = mono_type_to_load_membase (cfg, D.40268);
        D.40270 = (short unsigned int) D.40269;
        ins->opcode = D.40270;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.29908 = ins->sreg3;
        ins->sreg2 = D.29908;
        D.29909 = ins->sreg2;
        ins->sreg1 = D.29909;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        ins->dreg = 0;
        D.40271 = src->dreg;
        ins->sreg1 = D.40271;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        D.37703 = mono_defaults.typehandle_class;
        D.40268 = &D.37703->byval_arg;
        type_to_eval_stack_type (cfg, D.40268, ins);
        D.30432 = ins->type;
        D.30433 = (<unnamed type>) D.30432;
        D.40272 = alloc_dreg (cfg, D.30433);
        D.40273 = (int) D.40272;
        ins->dreg = D.40273;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.40274>; else goto <D.40275>;
        <D.40274>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = ins;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        ins->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        goto <D.40276>;
        <D.40275>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = ins;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.40276>:
        sp.395 = sp;
        sp = sp.395 + 4;
        *sp.395 = ins;
        ip = ip + 2;
        goto <D.27560>;
      }
      <D.27629>:
      readonly = 1;
      ip = ip + 2;
      goto <D.27560>;
      <D.27630>:
      <D.27631>:
      <D.27632>:
      <D.27633>:
      <D.27634>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.40278>; else goto <D.40279>;
      <D.40278>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.40280>; else goto <D.40281>;
      <D.40280>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40281>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40279>:
      D.40282 = mini_get_debug_options ();
      D.40283 = D.40282->break_on_unverified;
      if (D.40283 != 0) goto <D.40284>; else goto unverified;
      <D.40284>:
      raise (5);
      <D.27635>:
      D.30709 = ip + 1;
      D.30710 = *D.30709;
      D.31040 = (int) D.30710;
      monoeg_g_log (0B, 16, "opcode 0xfe 0x%02x not handled", D.31040);
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.40285>; else goto <D.40286>;
      <D.40285>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.40287>; else goto <D.40288>;
      <D.40287>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40288>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40286>:
      D.40289 = mini_get_debug_options ();
      D.40290 = D.40289->break_on_unverified;
      if (D.40290 != 0) goto <D.40291>; else goto unverified;
      <D.40291>:
      raise (5);
      <D.27560>:
      goto <D.26808>;
      <D.27636>:
      <D.27637>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.40292>; else goto <D.40293>;
      <D.40292>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.40294>; else goto <D.40295>;
      <D.40294>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40295>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40293>:
      D.40296 = mini_get_debug_options ();
      D.40297 = D.40296->break_on_unverified;
      if (D.40297 != 0) goto <D.40298>; else goto unverified;
      <D.40298>:
      raise (5);
      <D.27638>:
      D.30562 = *ip;
      D.30563 = (int) D.30562;
      monoeg_g_log (0B, 16, "opcode 0x%02x not handled", D.30563);
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.40299>; else goto <D.40300>;
      <D.40299>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.40301>; else goto <D.40302>;
      <D.40301>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40302>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40300>:
      D.40303 = mini_get_debug_options ();
      D.40304 = D.40303->break_on_unverified;
      if (D.40304 != 0) goto <D.40305>; else goto unverified;
      <D.40305>:
      raise (5);
      <D.26808>:
      <D.26803>:
      if (ip < end) goto <D.27639>; else goto <D.27640>;
      <D.27640>:
      if (start_new_bblock != 1) goto <D.40306>; else goto <D.40307>;
      <D.40306>:
      D.29838 = cfg->gsharedvt;
      if (D.29838 != 0) goto <D.40308>; else goto <D.40309>;
      <D.40308>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.40310>; else goto <D.40311>;
      <D.40310>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40311>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40309>:
      D.40312 = mini_get_debug_options ();
      D.40313 = D.40312->break_on_unverified;
      if (D.40313 != 0) goto <D.40314>; else goto unverified;
      <D.40314>:
      raise (5);
      <D.40307>:
      bblock.77 = bblock;
      ip.82 = (int) ip;
      bblock.77 = bblock;
      D.30012 = bblock.77->cil_code;
      D.30015 = (int) D.30012;
      D.30385 = ip.82 - D.30015;
      bblock.77->cil_length = D.30385;
      bblock.77 = bblock;
      D.40315 = bblock.77->next_bb;
      if (D.40315 != 0B) goto <D.40316>; else goto <D.40317>;
      <D.40316>:
      {
        struct MonoBasicBlock * bb;

        bb = bblock;
        goto <D.27643>;
        <D.27642>:
        bb = bb->next_bb;
        <D.27643>:
        D.40318 = bb->next_bb;
        if (D.40318 != 0B) goto <D.27642>; else goto <D.27644>;
        <D.27644>:
        bb->next_bb = end_bblock;
      }
      goto <D.40319>;
      <D.40317>:
      bblock.77 = bblock;
      bblock.77->next_bb = end_bblock;
      <D.40319>:
      D.29662 = cfg->method;
      if (D.29662 == method) goto <D.40320>; else goto <D.40321>;
      <D.40320>:
      D.40322 = cfg->domainvar;
      if (D.40322 != 0B) goto <D.40323>; else goto <D.40324>;
      <D.40323>:
      {
        struct MonoInst * store;
        struct MonoInst * get_domain;

        cfg->cbb = init_localsbb;
        get_domain = mono_get_domain_intrinsic (cfg);
        if (get_domain != 0B) goto <D.40325>; else goto <D.40326>;
        <D.40325>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.40327>; else goto <D.40328>;
        <D.40327>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = get_domain;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        get_domain->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = get_domain;
        goto <D.40329>;
        <D.40328>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = get_domain;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.40329>:
        goto <D.40330>;
        <D.40326>:
        get_domain = mono_emit_jit_icall (cfg, mono_domain_get, 0B);
        <D.40330>:
        D.29691 = cfg->mempool;
        store = mono_mempool_alloc (D.29691, 56);
        store->data.op[1].const_val = 0;
        D.40331 = store->data.op[1].const_val;
        store->data.op[0].const_val = D.40331;
        store->prev = 0B;
        D.40332 = store->prev;
        store->next = D.40332;
        store->opcode = 424;
        store->flags = 0;
        store->type = 0;
        store->dreg = -1;
        store->sreg3 = -1;
        D.40333 = store->sreg3;
        store->sreg2 = D.40333;
        D.40334 = store->sreg2;
        store->sreg1 = D.40334;
        D.29910 = cfg->ip;
        store->cil_code = D.29910;
        D.30422 = cfg->varinfo;
        D.40322 = cfg->domainvar;
        D.40335 = D.40322->data.op[0].const_val;
        D.40336 = (unsigned int) D.40335;
        D.40337 = D.40336 * 4;
        D.40338 = D.30422 + D.40337;
        D.40339 = *D.40338;
        D.40340 = D.40339->data.op[1].vtype;
        D.40341 = mono_type_to_regmove (cfg, D.40340);
        D.40342 = (short unsigned int) D.40341;
        store->opcode = D.40342;
        D.30422 = cfg->varinfo;
        D.40322 = cfg->domainvar;
        D.40335 = D.40322->data.op[0].const_val;
        D.40336 = (unsigned int) D.40335;
        D.40337 = D.40336 * 4;
        D.40338 = D.30422 + D.40337;
        D.40339 = *D.40338;
        D.40343 = D.40339->klass;
        store->klass = D.40343;
        D.40344 = get_domain->dreg;
        store->sreg1 = D.40344;
        D.30422 = cfg->varinfo;
        D.40322 = cfg->domainvar;
        D.40335 = D.40322->data.op[0].const_val;
        D.40336 = (unsigned int) D.40335;
        D.40337 = D.40336 * 4;
        D.40338 = D.30422 + D.40337;
        D.40339 = *D.40338;
        D.40345 = D.40339->dreg;
        store->dreg = D.40345;
        D.40346 = store->opcode;
        if (D.40346 == 427) goto <D.40347>; else goto <D.40348>;
        <D.40347>:
        D.30422 = cfg->varinfo;
        D.40322 = cfg->domainvar;
        D.40335 = D.40322->data.op[0].const_val;
        D.40336 = (unsigned int) D.40335;
        D.40337 = D.40336 * 4;
        D.40338 = D.30422 + D.40337;
        D.40339 = *D.40338;
        D.40340 = D.40339->data.op[1].vtype;
        D.40349 = mono_class_from_mono_type (D.40340);
        store->klass = D.40349;
        <D.40348>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        if (D.29939 != 0B) goto <D.40350>; else goto <D.40351>;
        <D.40350>:
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        D.29939->next = store;
        bblock.129 = cfg->cbb;
        D.29939 = bblock.129->last_ins;
        store->prev = D.29939;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = store;
        goto <D.40352>;
        <D.40351>:
        bblock.129 = cfg->cbb;
        bblock.129 = cfg->cbb;
        bblock.129->last_ins = store;
        D.29939 = bblock.129->last_ins;
        bblock.129->code = D.29939;
        <D.40352>:
      }
      <D.40324>:
      <D.40321>:
      D.29662 = cfg->method;
      if (D.29662 == method) goto <D.40353>; else goto <D.40354>;
      <D.40353>:
      D.40355 = cfg->got_var;
      if (D.40355 != 0B) goto <D.40356>; else goto <D.40357>;
      <D.40356>:
      mono_emit_load_got_addr (cfg);
      <D.40357>:
      <D.40354>:
      if (init_locals != 0) goto <D.40358>; else goto <D.40359>;
      <D.40358>:
      cfg->cbb = init_localsbb;
      cfg->ip = 0B;
      i = 0;
      goto <D.27648>;
      <D.27647>:
      D.40360 = header->locals[i];
      emit_init_local (cfg, i, D.40360);
      i = i + 1;
      <D.27648>:
      D.30276 = header->num_locals;
      D.30277 = (int) D.30276;
      if (D.30277 > i) goto <D.27647>; else goto <D.27649>;
      <D.27649>:
      <D.40359>:
      D.30081 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.40361 = D.30081 & 536870912;
      if (D.40361 != 0) goto <D.40362>; else goto <D.40363>;
      <D.40362>:
      D.29662 = cfg->method;
      if (D.29662 == method) goto <D.40364>; else goto <D.40365>;
      <D.40364>:
      i = 0;
      goto <D.27653>;
      <D.27652>:
      {
        struct MonoInst * ins;

        D.30422 = cfg->varinfo;
        i.75 = (unsigned int) i;
        D.30418 = i.75 * 4;
        D.40366 = D.30422 + D.30418;
        ins = *D.40366;
        D.40367 = BIT_FIELD_REF <*ins, 32, 0>;
        D.40368 = D.40367 & 16777215;
        if (D.40368 == 393545) goto <D.40369>; else goto <D.40370>;
        <D.40369>:
        {
          struct MonoInst * inst;

          D.29691 = cfg->mempool;
          inst = mono_mempool_alloc (D.29691, 56);
          inst->data.op[1].const_val = 0;
          D.40371 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.40371;
          inst->prev = 0B;
          D.40372 = inst->prev;
          inst->next = D.40372;
          inst->opcode = 362;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.40373 = inst->sreg3;
          inst->sreg2 = D.40373;
          D.40374 = inst->sreg2;
          inst->sreg1 = D.40374;
          D.29910 = cfg->ip;
          inst->cil_code = D.29910;
          D.40375 = ins->dreg;
          inst->dreg = D.40375;
          inst->data.op[0].p = 0B;
          inst->type = 3;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          if (D.29939 != 0B) goto <D.40376>; else goto <D.40377>;
          <D.40376>:
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          D.29939->next = inst;
          bblock.129 = cfg->cbb;
          D.29939 = bblock.129->last_ins;
          inst->prev = D.29939;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          goto <D.40378>;
          <D.40377>:
          bblock.129 = cfg->cbb;
          bblock.129 = cfg->cbb;
          bblock.129->last_ins = inst;
          D.29939 = bblock.129->last_ins;
          bblock.129->code = D.29939;
          <D.40378>:
        }
        <D.40370>:
      }
      i = i + 1;
      <D.27653>:
      i.118 = (unsigned int) i;
      D.40379 = cfg->num_varinfo;
      if (i.118 < D.40379) goto <D.27652>; else goto <D.27654>;
      <D.27654>:
      <D.40365>:
      <D.40363>:
      D.33172 = cfg->lmf_var;
      if (D.33172 != 0B) goto <D.40380>; else goto <D.40381>;
      <D.40380>:
      D.29662 = cfg->method;
      if (D.29662 == method) goto <D.40382>; else goto <D.40383>;
      <D.40382>:
      cfg->cbb = init_localsbb;
      emit_push_lmf (cfg);
      <D.40383>:
      <D.40381>:
      if (seq_points != 0) goto <D.40384>; else goto <D.40385>;
      <D.40384>:
      {
        struct MonoBasicBlock * bb;

        bb = cfg->bb_entry;
        goto <D.27657>;
        <D.27656>:
        D.40386 = bb->code;
        if (D.40386 != 0B) goto <D.40387>; else goto <D.40388>;
        <D.40387>:
        D.40389 = bb->in_count;
        if (D.40389 > 1) goto <D.40390>; else goto <D.40391>;
        <D.40390>:
        D.40386 = bb->code;
        D.40392 = D.40386->opcode;
        if (D.40392 == 341) goto <D.40393>; else goto <D.40394>;
        <D.40393>:
        D.40386 = bb->code;
        D.40386 = bb->code;
        D.40395 = D.40386->flags;
        D.40396 = D.40395 | 1;
        D.40386->flags = D.40396;
        <D.40394>:
        <D.40391>:
        <D.40388>:
        bb = bb->next_bb;
        <D.27657>:
        if (bb != 0B) goto <D.27656>; else goto <D.27658>;
        <D.27658>:
      }
      <D.40385>:
      if (seq_points != 0) goto <D.40397>; else goto <D.40398>;
      <D.40397>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 341;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      ins->data.op[1].const_val = -1;
      ins->flags = 0;
      D.40399 = init_localsbb->last_ins;
      if (D.40399 != 0B) goto <D.40400>; else goto <D.40401>;
      <D.40400>:
      D.40399 = init_localsbb->last_ins;
      D.40399->next = ins;
      D.40399 = init_localsbb->last_ins;
      ins->prev = D.40399;
      init_localsbb->last_ins = ins;
      goto <D.40402>;
      <D.40401>:
      init_localsbb->last_ins = ins;
      D.40399 = init_localsbb->last_ins;
      init_localsbb->code = D.40399;
      <D.40402>:
      D.29691 = cfg->mempool;
      ins = mono_mempool_alloc (D.29691, 56);
      ins->data.op[1].const_val = 0;
      D.29906 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29906;
      ins->prev = 0B;
      D.29907 = ins->prev;
      ins->next = D.29907;
      ins->opcode = 341;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29908 = ins->sreg3;
      ins->sreg2 = D.29908;
      D.29909 = ins->sreg2;
      ins->sreg1 = D.29909;
      D.29910 = cfg->ip;
      ins->cil_code = D.29910;
      ins->data.op[1].const_val = 16777215;
      ins->flags = 0;
      D.40403 = cfg->bb_exit;
      D.40404 = D.40403->last_ins;
      if (D.40404 != 0B) goto <D.40405>; else goto <D.40406>;
      <D.40405>:
      D.40403 = cfg->bb_exit;
      D.40404 = D.40403->last_ins;
      D.40404->next = ins;
      D.40403 = cfg->bb_exit;
      D.40404 = D.40403->last_ins;
      ins->prev = D.40404;
      D.40403 = cfg->bb_exit;
      D.40403->last_ins = ins;
      goto <D.40407>;
      <D.40406>:
      D.40403 = cfg->bb_exit;
      D.40403 = cfg->bb_exit;
      D.40403->last_ins = ins;
      D.40404 = D.40403->last_ins;
      D.40403->code = D.40404;
      <D.40407>:
      <D.40398>:
      if (sym_seq_points != 0) goto <D.40408>; else goto <D.40409>;
      <D.40408>:
      i = 0;
      goto <D.27661>;
      <D.27660>:
      i.75 = (unsigned int) i;
      D.40410 = i.75 / 32;
      D.40411 = seq_point_locs->data[D.40410];
      D.40412 = i & 31;
      D.40413 = 1 << D.40412;
      D.40414 = D.40411 & D.40413;
      if (D.40414 != 0) goto <D.40415>; else goto <D.40416>;
      <D.40415>:
      i.75 = (unsigned int) i;
      D.40410 = i.75 / 32;
      D.40417 = seq_point_set_locs->data[D.40410];
      D.40412 = i & 31;
      D.40413 = 1 << D.40412;
      D.40418 = D.40417 & D.40413;
      if (D.40418 == 0) goto <D.40419>; else goto <D.40420>;
      <D.40419>:
      {
        struct MonoInst * ins;

        D.29691 = cfg->mempool;
        ins = mono_mempool_alloc (D.29691, 56);
        ins->data.op[1].const_val = 0;
        D.40421 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.40421;
        ins->prev = 0B;
        D.40422 = ins->prev;
        ins->next = D.40422;
        ins->opcode = 341;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.40423 = ins->sreg3;
        ins->sreg2 = D.40423;
        D.40424 = ins->sreg2;
        ins->sreg1 = D.40424;
        D.29910 = cfg->ip;
        ins->cil_code = D.29910;
        ins->data.op[1].const_val = i;
        ins->flags = 0;
        mono_add_seq_point (cfg, 0B, ins, -1);
      }
      <D.40420>:
      <D.40416>:
      i = i + 1;
      <D.27661>:
      i.396 = (unsigned int) i;
      D.29670 = header->code_size;
      if (i.396 < D.29670) goto <D.27660>; else goto <D.27662>;
      <D.27662>:
      <D.40409>:
      cfg->ip = 0B;
      D.29662 = cfg->method;
      if (D.29662 == method) goto <D.40426>; else goto <D.40427>;
      <D.40426>:
      {
        struct MonoBasicBlock * bb;

        bb = cfg->bb_entry;
        goto <D.27665>;
        <D.27664>:
        D.40428 = bb->real_offset;
        D.40429 = (int) D.40428;
        D.40430 = mono_find_block_region (cfg, D.40429);
        D.40431 = (unsigned int) D.40430;
        bb->region = D.40431;
        D.40432 = cfg->spvars;
        if (D.40432 != 0B) goto <D.40433>; else goto <D.40434>;
        <D.40433>:
        D.40435 = bb->region;
        D.40436 = (int) D.40435;
        mono_create_spvar_for_region (cfg, D.40436);
        <D.40434>:
        D.29771 = cfg->verbose_level;
        if (D.29771 > 2) goto <D.40437>; else goto <D.40438>;
        <D.40437>:
        D.40439 = bb->block_num;
        D.40428 = bb->real_offset;
        D.40435 = bb->region;
        printf ("REGION BB%d IL_%04x ID_%08X\n", D.40439, D.40428, D.40435);
        <D.40438>:
        bb = bb->next_bb;
        <D.27665>:
        if (bb != 0B) goto <D.27664>; else goto <D.27666>;
        <D.27666>:
      }
      <D.40427>:
      monoeg_g_slist_free (class_inits);
      dont_inline = monoeg_g_list_remove (dont_inline, method);
      if (inline_costs < 0) goto <D.40440>; else goto <D.40441>;
      <D.40440>:
      {
        char * mname;

        mname = mono_method_full_name (method, 1);
        mono_cfg_set_exception (cfg, 3);
        D.40442 = monoeg_g_strdup_printf ("Method %s is too complex.", mname);
        cfg->exception_message = D.40442;
        monoeg_g_free (mname);
        D.29691 = cfg->mempool;
        D.40443 = cfg->headers_to_free;
        D.40444 = g_slist_prepend_mempool (D.29691, D.40443, header);
        cfg->headers_to_free = D.40444;
        mono_basic_block_free (original_bb);
        D.40445 = -1;
        return D.40445;
      }
      <D.40441>:
      D.29771 = cfg->verbose_level;
      if (D.29771 > 2) goto <D.40446>; else goto <D.40447>;
      <D.40446>:
      D.29662 = cfg->method;
      if (D.29662 == method) goto <D.40448>; else goto <D.40449>;
      <D.40448>:
      mono_print_code (cfg, "AFTER METHOD-TO-IR");
      <D.40449>:
      <D.40447>:
      D.29691 = cfg->mempool;
      D.40443 = cfg->headers_to_free;
      D.40450 = g_slist_prepend_mempool (D.29691, D.40443, header);
      cfg->headers_to_free = D.40450;
      mono_basic_block_free (original_bb);
      D.40445 = inline_costs;
      return D.40445;
      exception_exit:
      D.30240 = cfg->exception_type;
      D.40451 = D.30240 == 0;
      D.40452 = (long int) D.40451;
      D.40453 = __builtin_expect (D.40452, 0);
      if (D.40453 != 0) goto <D.40454>; else goto <D.40455>;
      <D.40454>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12004, "cfg->exception_type != MONO_EXCEPTION_NONE");
      <D.40455>:
      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.29691 = cfg->mempool;
      D.40443 = cfg->headers_to_free;
      D.40456 = g_slist_prepend_mempool (D.29691, D.40443, header);
      cfg->headers_to_free = D.40456;
      D.40445 = -1;
      return D.40445;
    }
  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.40519;
  struct MonoImage * D.40520;
  _Bool D.40521;
  long int D.40522;
  long int D.40523;
  unsigned char D.40526;
  gboolean D.40529;
  unsigned char D.40530;
  struct MonoClass * klass.397;
  struct MonoImage * D.40534;
  struct MonoClass * klass.398;
  struct MonoMethod * D.40542;
  struct MonoClass * D.40544;
  unsigned int D.40545;
  short unsigned int D.40546;
  _Bool D.40547;
  long int D.40548;
  long int D.40549;
  short unsigned int D.40554;
  struct MonoType * D.40556;
  unsigned char D.40557;
  struct MonoType * D.40559;
  unsigned char D.40560;
  char D.40561;
  int D.40562;
  unsigned char D.40563;
  struct MonoAssembly * ass;
  struct MonoCustomAttrInfo * attrs;
  static struct MonoClass * klass;
  int i;
  gboolean val;

  D.40519 = m->klass;
  D.40520 = D.40519->image;
  ass = D.40520->assembly;
  val = 0;
  D.40521 = ass == 0B;
  D.40522 = (long int) D.40521;
  D.40523 = __builtin_expect (D.40522, 0);
  if (D.40523 != 0) goto <D.40524>; else goto <D.40525>;
  <D.40524>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6422, "ass");
  <D.40525>:
  D.40526 = ass->jit_optimizer_disabled_inited;
  if (D.40526 != 0) goto <D.40527>; else goto <D.40528>;
  <D.40527>:
  D.40530 = ass->jit_optimizer_disabled;
  D.40529 = (gboolean) D.40530;
  return D.40529;
  <D.40528>:
  klass.397 = klass;
  if (klass.397 == 0B) goto <D.40532>; else goto <D.40533>;
  <D.40532>:
  D.40534 = mono_defaults.corlib;
  klass.398 = mono_class_from_name (D.40534, "System.Diagnostics", "DebuggableAttribute");
  klass = klass.398;
  <D.40533>:
  klass.397 = klass;
  if (klass.397 == 0B) goto <D.40536>; else goto <D.40537>;
  <D.40536>:
  ass->jit_optimizer_disabled = 0;
  mono_memory_barrier ();
  ass->jit_optimizer_disabled_inited = 1;
  D.40529 = 0;
  return D.40529;
  <D.40537>:
  attrs = mono_custom_attrs_from_assembly (ass);
  if (attrs != 0B) goto <D.40538>; else goto <D.40539>;
  <D.40538>:
  i = 0;
  goto <D.26621>;
  <D.26620>:
  {
    struct MonoCustomAttrEntry * attr;
    const gchar * p;
    int len;
    struct MonoMethodSignature * sig;

    attr = &attrs->attrs[i];
    D.40542 = attr->ctor;
    if (D.40542 == 0B) goto <D.40540>; else goto <D.40543>;
    <D.40543>:
    D.40542 = attr->ctor;
    D.40544 = D.40542->klass;
    klass.397 = klass;
    if (D.40544 != klass.397) goto <D.40540>; else goto <D.40541>;
    <D.40540>:
    // predicted unlikely by continue predictor.
    goto <D.26619>;
    <D.40541>:
    D.40545 = attr->data_size;
    len = (int) D.40545;
    p = attr->data;
    D.40546 = mono_read16 (p);
    D.40547 = D.40546 != 1;
    D.40548 = (long int) D.40547;
    D.40549 = __builtin_expect (D.40548, 0);
    if (D.40549 != 0) goto <D.40550>; else goto <D.40551>;
    <D.40550>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6449, "read16 (p) == 0x0001");
    <D.40551>:
    p = p + 2;
    D.40542 = attr->ctor;
    sig = mono_method_signature (D.40542);
    D.40554 = sig->param_count;
    if (D.40554 != 2) goto <D.40552>; else goto <D.40555>;
    <D.40555>:
    D.40556 = sig->params[0];
    D.40557 = D.40556->type;
    if (D.40557 != 2) goto <D.40552>; else goto <D.40558>;
    <D.40558>:
    D.40559 = sig->params[1];
    D.40560 = D.40559->type;
    if (D.40560 != 2) goto <D.40552>; else goto <D.40553>;
    <D.40552>:
    // predicted unlikely by continue predictor.
    goto <D.26619>;
    <D.40553>:
    p = p + 1;
    D.40561 = *p;
    val = (gboolean) D.40561;
  }
  <D.26619>:
  i = i + 1;
  <D.26621>:
  D.40562 = attrs->num_attrs;
  if (D.40562 > i) goto <D.26620>; else goto <D.26622>;
  <D.26622>:
  mono_custom_attrs_free (attrs);
  <D.40539>:
  D.40563 = (unsigned char) val;
  ass->jit_optimizer_disabled = D.40563;
  mono_memory_barrier ();
  ass->jit_optimizer_disabled_inited = 1;
  D.40529 = val;
  return D.40529;
}


mono_memory_barrier ()
{
  __sync_synchronize ();
}


mono_create_exvar_for_offset (struct MonoCompile * cfg, int offset)
{
  struct GHashTable * D.40565;
  const void * offset.399;
  struct MonoInst * D.40569;
  struct MonoClass * D.40570;
  struct MonoType * D.40571;
  unsigned char D.40572;
  unsigned char D.40573;
  void * offset.400;
  struct MonoInst * var;

  D.40565 = cfg->exvars;
  offset.399 = (const void *) offset;
  var = monoeg_g_hash_table_lookup (D.40565, offset.399);
  if (var != 0B) goto <D.40567>; else goto <D.40568>;
  <D.40567>:
  D.40569 = var;
  return D.40569;
  <D.40568>:
  D.40570 = mono_defaults.object_class;
  D.40571 = &D.40570->byval_arg;
  var = mono_compile_create_var (cfg, D.40571, 329);
  D.40572 = var->flags;
  D.40573 = D.40572 | 4;
  var->flags = D.40573;
  D.40565 = cfg->exvars;
  offset.400 = (void *) offset;
  monoeg_g_hash_table_insert_replace (D.40565, offset.400, var, 0);
  D.40569 = var;
  return D.40569;
}


mono_save_args (struct MonoCompile * cfg, struct MonoMethodSignature * sig, struct MonoInst * * sp)
{
  struct MonoType * iftmp.401;
  unsigned int D.40579;
  unsigned int D.40580;
  struct MonoInst * D.40583;
  <unnamed-unsigned:1> D.40584;
  int D.40585;
  int D.40586;
  struct MonoInst * * D.40587;
  unsigned int i.402;
  unsigned int D.40589;
  struct MonoInst * * D.40590;
  struct MonoMemPool * D.40591;
  int D.40592;
  struct MonoInst * D.40593;
  int D.40594;
  int D.40595;
  const unsigned char * D.40596;
  struct MonoType * * D.40597;
  struct MonoType * * D.40598;
  struct MonoType * D.40599;
  unsigned int D.40600;
  short unsigned int D.40601;
  struct MonoInst * D.40602;
  struct MonoClass * D.40603;
  int D.40604;
  int D.40605;
  short unsigned int D.40606;
  struct MonoClass * D.40609;
  struct MonoBasicBlock * D.40610;
  struct MonoInst * D.40611;
  const unsigned char * D.40615;
  short unsigned int D.40616;
  int D.40617;
  int D.40618;
  struct MonoInst * store;
  struct MonoInst * temp;
  int i;

  i = 0;
  goto <D.26303>;
  <D.26302>:
  {
    struct MonoType * argtype;

    D.40579 = BIT_FIELD_REF <*sig, 32, 64>;
    D.40580 = D.40579 & 4194304;
    if (D.40580 != 0) goto <D.40581>; else goto <D.40577>;
    <D.40581>:
    if (i == 0) goto <D.40582>; else goto <D.40577>;
    <D.40582>:
    D.40583 = *sp;
    iftmp.401 = type_from_stack_type (D.40583);
    goto <D.40578>;
    <D.40577>:
    D.40584 = sig->hasthis;
    D.40585 = (int) D.40584;
    D.40586 = i - D.40585;
    iftmp.401 = sig->params[D.40586];
    <D.40578>:
    argtype = iftmp.401;
    temp = mono_compile_create_var (cfg, argtype, 329);
    D.40587 = cfg->args;
    i.402 = (unsigned int) i;
    D.40589 = i.402 * 4;
    D.40590 = D.40587 + D.40589;
    *D.40590 = temp;
    D.40591 = cfg->mempool;
    store = mono_mempool_alloc (D.40591, 56);
    store->data.op[1].const_val = 0;
    D.40592 = store->data.op[1].const_val;
    store->data.op[0].const_val = D.40592;
    store->prev = 0B;
    D.40593 = store->prev;
    store->next = D.40593;
    store->opcode = 424;
    store->flags = 0;
    store->type = 0;
    store->dreg = -1;
    store->sreg3 = -1;
    D.40594 = store->sreg3;
    store->sreg2 = D.40594;
    D.40595 = store->sreg2;
    store->sreg1 = D.40595;
    D.40596 = cfg->ip;
    store->cil_code = D.40596;
    D.40597 = cfg->arg_types;
    i.402 = (unsigned int) i;
    D.40589 = i.402 * 4;
    D.40598 = D.40597 + D.40589;
    D.40599 = *D.40598;
    D.40600 = mono_type_to_regmove (cfg, D.40599);
    D.40601 = (short unsigned int) D.40600;
    store->opcode = D.40601;
    D.40587 = cfg->args;
    i.402 = (unsigned int) i;
    D.40589 = i.402 * 4;
    D.40590 = D.40587 + D.40589;
    D.40602 = *D.40590;
    D.40603 = D.40602->klass;
    store->klass = D.40603;
    D.40583 = *sp;
    D.40604 = D.40583->dreg;
    store->sreg1 = D.40604;
    D.40587 = cfg->args;
    i.402 = (unsigned int) i;
    D.40589 = i.402 * 4;
    D.40590 = D.40587 + D.40589;
    D.40602 = *D.40590;
    D.40605 = D.40602->dreg;
    store->dreg = D.40605;
    D.40606 = store->opcode;
    if (D.40606 == 427) goto <D.40607>; else goto <D.40608>;
    <D.40607>:
    D.40597 = cfg->arg_types;
    i.402 = (unsigned int) i;
    D.40589 = i.402 * 4;
    D.40598 = D.40597 + D.40589;
    D.40599 = *D.40598;
    D.40609 = mono_class_from_mono_type (D.40599);
    store->klass = D.40609;
    <D.40608>:
    D.40610 = cfg->cbb;
    D.40611 = D.40610->last_ins;
    if (D.40611 != 0B) goto <D.40612>; else goto <D.40613>;
    <D.40612>:
    D.40610 = cfg->cbb;
    D.40611 = D.40610->last_ins;
    D.40611->next = store;
    D.40610 = cfg->cbb;
    D.40611 = D.40610->last_ins;
    store->prev = D.40611;
    D.40610 = cfg->cbb;
    D.40610->last_ins = store;
    goto <D.40614>;
    <D.40613>:
    D.40610 = cfg->cbb;
    D.40610 = cfg->cbb;
    D.40610->last_ins = store;
    D.40611 = D.40610->last_ins;
    D.40610->code = D.40611;
    <D.40614>:
    D.40583 = *sp;
    D.40615 = D.40583->cil_code;
    store->cil_code = D.40615;
    sp = sp + 4;
  }
  i = i + 1;
  <D.26303>:
  D.40616 = sig->param_count;
  D.40617 = (int) D.40616;
  D.40584 = sig->hasthis;
  D.40585 = (int) D.40584;
  D.40618 = D.40617 + D.40585;
  if (D.40618 > i) goto <D.26302>; else goto <D.26304>;
  <D.26304>:
}


emit_get_rgctx_gsharedvt_method (struct MonoCompile * cfg, int context_used, struct MonoMethod * cmethod, struct MonoGSharedVtMethodInfo * info)
{
  struct MonoMemPool * D.40619;
  struct MonoMethod * D.40620;
  int D.40621;
  struct MonoInst * D.40622;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.40619 = cfg->mempool;
  D.40620 = cfg->current_method;
  D.40621 = context_used & 2;
  entry = mono_patch_info_rgctx_entry_new (D.40619, D.40620, D.40621, 46, info, 20);
  D.40620 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.40620, context_used);
  D.40622 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.40622;
}


emit_throw_exception (struct MonoCompile * cfg, struct MonoException * ex)
{
  struct MonoMemPool * D.40624;
  void * D.40625;
  struct MonoInst * D.40626;
  int D.40627;
  struct MonoInst * D.40628;
  int D.40629;
  int D.40630;
  const unsigned char * D.40631;
  unsigned int D.40632;
  int D.40633;
  struct MonoBasicBlock * D.40634;
  struct MonoInst * D.40635;
  struct MonoMethod * thrower;
  struct MonoInst * args[1];

  try
    {
      thrower = throw_exception ();
      D.40624 = cfg->mempool;
      D.40625 = mono_mempool_alloc (D.40624, 56);
      args[0] = D.40625;
      D.40626 = args[0];
      D.40626 = args[0];
      D.40626->data.op[1].const_val = 0;
      D.40627 = D.40626->data.op[1].const_val;
      D.40626->data.op[0].const_val = D.40627;
      D.40626 = args[0];
      D.40626 = args[0];
      D.40626->prev = 0B;
      D.40628 = D.40626->prev;
      D.40626->next = D.40628;
      D.40626 = args[0];
      D.40626->opcode = 362;
      D.40626 = args[0];
      D.40626->flags = 0;
      D.40626 = args[0];
      D.40626->type = 0;
      D.40626 = args[0];
      D.40626->dreg = -1;
      D.40626 = args[0];
      D.40626 = args[0];
      D.40626 = args[0];
      D.40626->sreg3 = -1;
      D.40629 = D.40626->sreg3;
      D.40626->sreg2 = D.40629;
      D.40630 = D.40626->sreg2;
      D.40626->sreg1 = D.40630;
      D.40626 = args[0];
      D.40631 = cfg->ip;
      D.40626->cil_code = D.40631;
      D.40626 = args[0];
      D.40626->data.op[0].p = ex;
      D.40626 = args[0];
      D.40626->type = 3;
      D.40626 = args[0];
      D.40632 = alloc_dreg (cfg, 3);
      D.40633 = (int) D.40632;
      D.40626->dreg = D.40633;
      D.40634 = cfg->cbb;
      D.40635 = D.40634->last_ins;
      if (D.40635 != 0B) goto <D.40636>; else goto <D.40637>;
      <D.40636>:
      D.40634 = cfg->cbb;
      D.40635 = D.40634->last_ins;
      D.40626 = args[0];
      D.40635->next = D.40626;
      D.40626 = args[0];
      D.40634 = cfg->cbb;
      D.40635 = D.40634->last_ins;
      D.40626->prev = D.40635;
      D.40634 = cfg->cbb;
      D.40626 = args[0];
      D.40634->last_ins = D.40626;
      goto <D.40638>;
      <D.40637>:
      D.40634 = cfg->cbb;
      D.40634 = cfg->cbb;
      D.40626 = args[0];
      D.40634->last_ins = D.40626;
      D.40635 = D.40634->last_ins;
      D.40634->code = D.40635;
      <D.40638>:
      mono_emit_method_call (cfg, thrower, &args, 0B);
    }
  finally
    {
      args = {CLOBBER};
    }
}


throw_exception ()
{
  struct MonoMethod * method.403;
  struct MonoClass * D.40642;
  struct MonoMethod * method.404;
  _Bool D.40644;
  long int D.40645;
  long int D.40646;
  struct MonoMethod * D.40649;
  static struct MonoMethod * method = 0B;

  method.403 = method;
  if (method.403 == 0B) goto <D.40640>; else goto <D.40641>;
  <D.40640>:
  {
    struct MonoSecurityManager * secman;

    secman = mono_security_manager_get_methods ();
    D.40642 = secman->securitymanager;
    method.404 = mono_class_get_method_from_name (D.40642, "ThrowException", 1);
    method = method.404;
  }
  <D.40641>:
  method.403 = method;
  D.40644 = method.403 == 0B;
  D.40645 = (long int) D.40644;
  D.40646 = __builtin_expect (D.40645, 0);
  if (D.40646 != 0) goto <D.40647>; else goto <D.40648>;
  <D.40647>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6187, "method");
  <D.40648>:
  D.40649 = method;
  return D.40649;
}


get_basic_blocks (struct MonoCompile * cfg, struct MonoMethodHeader * header, guint real_offset, unsigned char * start, unsigned char * end, unsigned char * * pos)
{
  unsigned char * ip.405;
  int ip.406;
  int start.407;
  int D.40654;
  <unnamed type> D.40655;
  int D.40658;
  unsigned int D.40661;
  struct MonoDebugOptions * D.40664;
  int D.40665;
  unsigned char D.40667;
  int D.40668;
  unsigned char * ip.408;
  unsigned char * ip.409;
  unsigned char * ip.410;
  unsigned char * ip.411;
  unsigned char D.40673;
  signed char D.40674;
  sizetype D.40675;
  sizetype D.40676;
  sizetype D.40677;
  struct MonoBasicBlock * * D.40678;
  int target.412;
  unsigned char * D.40680;
  int D.40681;
  int D.40682;
  unsigned int D.40683;
  unsigned int D.40684;
  struct MonoBasicBlock * * D.40685;
  const unsigned char * D.40691;
  struct MonoDebugOptions * D.40696;
  int D.40697;
  struct MonoMemPool * D.40699;
  unsigned int D.40700;
  unsigned int D.40701;
  unsigned int D.40702;
  int D.40703;
  unsigned char * D.40704;
  int D.40707;
  int D.40708;
  unsigned int D.40709;
  unsigned int D.40710;
  struct MonoBasicBlock * * D.40711;
  unsigned int D.40712;
  int D.40715;
  unsigned int D.40716;
  unsigned int D.40717;
  struct MonoBasicBlock * * D.40718;
  struct MonoDebugOptions * D.40728;
  int D.40729;
  unsigned int D.40731;
  unsigned int D.40732;
  int D.40733;
  const unsigned char * D.40736;
  unsigned int D.40737;
  sizetype D.40738;
  sizetype D.40739;
  struct MonoDebugOptions * D.40749;
  int D.40750;
  unsigned int D.40752;
  unsigned int D.40753;
  int D.40754;
  struct MonoDebugOptions * D.40768;
  int D.40769;
  unsigned int D.40771;
  unsigned int D.40772;
  int D.40773;
  unsigned int D.40776;
  unsigned int D.40777;
  struct MonoDebugOptions * D.40787;
  int D.40788;
  unsigned int D.40790;
  unsigned int D.40791;
  int D.40792;
  unsigned int D.40795;
  sizetype D.40796;
  struct MonoDebugOptions * D.40806;
  int D.40807;
  unsigned int D.40809;
  unsigned int D.40810;
  int D.40811;
  unsigned char * ip.413;
  unsigned char * ip.414;
  int bb_start.415;
  int D.40819;
  unsigned int D.40820;
  unsigned int D.40821;
  struct MonoBasicBlock * * D.40822;
  int D.40826;
  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.26451>;
      <D.26450>:
      ip.405 = ip;
      ip.406 = (int) ip.405;
      start.407 = (int) start;
      D.40654 = ip.406 - start.407;
      cli_addr = (guint) D.40654;
      D.40655 = mono_opcode_value (&ip, end);
      i = (int) D.40655;
      if (i < 0) goto <D.40656>; else goto <D.40657>;
      <D.40656>:
      D.40658 = cfg->gsharedvt;
      if (D.40658 != 0) goto <D.40659>; else goto <D.40660>;
      <D.40659>:
      D.40661 = cfg->verbose_level;
      if (D.40661 > 2) goto <D.40662>; else goto <D.40663>;
      <D.40662>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40663>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40660>:
      D.40664 = mini_get_debug_options ();
      D.40665 = D.40664->break_on_unverified;
      if (D.40665 != 0) goto <D.40666>; else goto unverified;
      <D.40666>:
      raise (5);
      <D.40657>:
      opcode = &mono_opcodes[i];
      D.40667 = opcode->argument;
      D.40668 = (int) D.40667;
      switch (D.40668) <default: <D.26445>, case 0: <D.26422>, case 1: <D.26425>, case 2: <D.26426>, case 3: <D.26427>, case 4: <D.26428>, case 5: <D.26424>, case 6: <D.26429>, case 7: <D.26432>, case 8: <D.26433>, case 9: <D.26436>, case 10: <D.26435>, case 11: <D.26437>, case 12: <D.26443>, case 13: <D.26430>, case 14: <D.26431>, case 15: <D.26434>, case 16: <D.26444>>
      <D.26422>:
      ip.405 = ip;
      ip.408 = ip.405 + 1;
      ip = ip.408;
      goto <D.26423>;
      <D.26424>:
      <D.26425>:
      <D.26426>:
      <D.26427>:
      <D.26428>:
      <D.26429>:
      <D.26430>:
      <D.26431>:
      ip.405 = ip;
      ip.409 = ip.405 + 5;
      ip = ip.409;
      goto <D.26423>;
      <D.26432>:
      ip.405 = ip;
      ip.410 = ip.405 + 3;
      ip = ip.410;
      goto <D.26423>;
      <D.26433>:
      <D.26434>:
      ip.405 = ip;
      ip.411 = ip.405 + 2;
      ip = ip.411;
      goto <D.26423>;
      <D.26435>:
      ip.405 = ip;
      ip.408 = ip.405 + 1;
      D.40673 = *ip.408;
      D.40674 = (signed char) D.40673;
      D.40675 = (sizetype) D.40674;
      D.40676 = D.40675 + cli_addr;
      D.40677 = D.40676 + 2;
      target = start + D.40677;
      D.40678 = cfg->cil_offset_to_bb;
      target.412 = (int) target;
      D.40680 = cfg->cil_start;
      D.40681 = (int) D.40680;
      D.40682 = target.412 - D.40681;
      D.40683 = (unsigned int) D.40682;
      D.40684 = D.40683 * 4;
      D.40685 = D.40678 + D.40684;
      bblock = *D.40685;
      if (bblock == 0B) goto <D.40686>; else goto <D.40687>;
      <D.40686>:
      if (target >= end) goto <D.40688>; else goto <D.40690>;
      <D.40690>:
      D.40691 = header->code;
      if (D.40691 > target) goto <D.40688>; else goto <D.40689>;
      <D.40688>:
      D.40658 = cfg->gsharedvt;
      if (D.40658 != 0) goto <D.40692>; else goto <D.40693>;
      <D.40692>:
      D.40661 = cfg->verbose_level;
      if (D.40661 > 2) goto <D.40694>; else goto <D.40695>;
      <D.40694>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40695>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40693>:
      D.40696 = mini_get_debug_options ();
      D.40697 = D.40696->break_on_unverified;
      if (D.40697 != 0) goto <D.40698>; else goto unverified;
      <D.40698>:
      raise (5);
      <D.40689>:
      D.40699 = cfg->mempool;
      bblock = mono_mempool_alloc0 (D.40699, 172);
      D.40700 = cfg->num_bblocks;
      D.40701 = D.40700;
      D.40702 = D.40701 + 1;
      cfg->num_bblocks = D.40702;
      D.40703 = (int) D.40701;
      bblock->block_num = D.40703;
      bblock->cil_code = target;
      D.40704 = bblock->cil_code;
      if (D.40704 != 0B) goto <D.40705>; else goto <D.40706>;
      <D.40705>:
      D.40678 = cfg->cil_offset_to_bb;
      D.40704 = bblock->cil_code;
      D.40707 = (int) D.40704;
      D.40680 = cfg->cil_start;
      D.40681 = (int) D.40680;
      D.40708 = D.40707 - D.40681;
      D.40709 = (unsigned int) D.40708;
      D.40710 = D.40709 * 4;
      D.40711 = D.40678 + D.40710;
      *D.40711 = bblock;
      <D.40706>:
      D.40712 = cfg->real_offset;
      bblock->real_offset = D.40712;
      <D.40687>:
      ip.405 = ip;
      ip.411 = ip.405 + 2;
      ip = ip.411;
      ip.405 = ip;
      if (ip.405 < end) goto <D.40713>; else goto <D.40714>;
      <D.40713>:
      D.40678 = cfg->cil_offset_to_bb;
      ip.405 = ip;
      ip.406 = (int) ip.405;
      D.40680 = cfg->cil_start;
      D.40681 = (int) D.40680;
      D.40715 = ip.406 - D.40681;
      D.40716 = (unsigned int) D.40715;
      D.40717 = D.40716 * 4;
      D.40718 = D.40678 + D.40717;
      bblock = *D.40718;
      if (bblock == 0B) goto <D.40719>; else goto <D.40720>;
      <D.40719>:
      ip.405 = ip;
      if (ip.405 >= end) goto <D.40721>; else goto <D.40723>;
      <D.40723>:
      D.40691 = header->code;
      ip.405 = ip;
      if (D.40691 > ip.405) goto <D.40721>; else goto <D.40722>;
      <D.40721>:
      D.40658 = cfg->gsharedvt;
      if (D.40658 != 0) goto <D.40724>; else goto <D.40725>;
      <D.40724>:
      D.40661 = cfg->verbose_level;
      if (D.40661 > 2) goto <D.40726>; else goto <D.40727>;
      <D.40726>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40727>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40725>:
      D.40728 = mini_get_debug_options ();
      D.40729 = D.40728->break_on_unverified;
      if (D.40729 != 0) goto <D.40730>; else goto unverified;
      <D.40730>:
      raise (5);
      <D.40722>:
      D.40699 = cfg->mempool;
      bblock = mono_mempool_alloc0 (D.40699, 172);
      D.40700 = cfg->num_bblocks;
      D.40731 = D.40700;
      D.40732 = D.40731 + 1;
      cfg->num_bblocks = D.40732;
      D.40733 = (int) D.40731;
      bblock->block_num = D.40733;
      ip.405 = ip;
      bblock->cil_code = ip.405;
      D.40704 = bblock->cil_code;
      if (D.40704 != 0B) goto <D.40734>; else goto <D.40735>;
      <D.40734>:
      D.40678 = cfg->cil_offset_to_bb;
      D.40704 = bblock->cil_code;
      D.40707 = (int) D.40704;
      D.40680 = cfg->cil_start;
      D.40681 = (int) D.40680;
      D.40708 = D.40707 - D.40681;
      D.40709 = (unsigned int) D.40708;
      D.40710 = D.40709 * 4;
      D.40711 = D.40678 + D.40710;
      *D.40711 = bblock;
      <D.40735>:
      D.40712 = cfg->real_offset;
      bblock->real_offset = D.40712;
      <D.40720>:
      <D.40714>:
      goto <D.26423>;
      <D.26436>:
      ip.405 = ip;
      D.40736 = ip.405 + 1;
      D.40737 = mono_read32 (D.40736);
      D.40738 = D.40737 + cli_addr;
      D.40739 = D.40738 + 5;
      target = start + D.40739;
      D.40678 = cfg->cil_offset_to_bb;
      target.412 = (int) target;
      D.40680 = cfg->cil_start;
      D.40681 = (int) D.40680;
      D.40682 = target.412 - D.40681;
      D.40683 = (unsigned int) D.40682;
      D.40684 = D.40683 * 4;
      D.40685 = D.40678 + D.40684;
      bblock = *D.40685;
      if (bblock == 0B) goto <D.40740>; else goto <D.40741>;
      <D.40740>:
      if (target >= end) goto <D.40742>; else goto <D.40744>;
      <D.40744>:
      D.40691 = header->code;
      if (D.40691 > target) goto <D.40742>; else goto <D.40743>;
      <D.40742>:
      D.40658 = cfg->gsharedvt;
      if (D.40658 != 0) goto <D.40745>; else goto <D.40746>;
      <D.40745>:
      D.40661 = cfg->verbose_level;
      if (D.40661 > 2) goto <D.40747>; else goto <D.40748>;
      <D.40747>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40748>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40746>:
      D.40749 = mini_get_debug_options ();
      D.40750 = D.40749->break_on_unverified;
      if (D.40750 != 0) goto <D.40751>; else goto unverified;
      <D.40751>:
      raise (5);
      <D.40743>:
      D.40699 = cfg->mempool;
      bblock = mono_mempool_alloc0 (D.40699, 172);
      D.40700 = cfg->num_bblocks;
      D.40752 = D.40700;
      D.40753 = D.40752 + 1;
      cfg->num_bblocks = D.40753;
      D.40754 = (int) D.40752;
      bblock->block_num = D.40754;
      bblock->cil_code = target;
      D.40704 = bblock->cil_code;
      if (D.40704 != 0B) goto <D.40755>; else goto <D.40756>;
      <D.40755>:
      D.40678 = cfg->cil_offset_to_bb;
      D.40704 = bblock->cil_code;
      D.40707 = (int) D.40704;
      D.40680 = cfg->cil_start;
      D.40681 = (int) D.40680;
      D.40708 = D.40707 - D.40681;
      D.40709 = (unsigned int) D.40708;
      D.40710 = D.40709 * 4;
      D.40711 = D.40678 + D.40710;
      *D.40711 = bblock;
      <D.40756>:
      D.40712 = cfg->real_offset;
      bblock->real_offset = D.40712;
      <D.40741>:
      ip.405 = ip;
      ip.409 = ip.405 + 5;
      ip = ip.409;
      ip.405 = ip;
      if (ip.405 < end) goto <D.40757>; else goto <D.40758>;
      <D.40757>:
      D.40678 = cfg->cil_offset_to_bb;
      ip.405 = ip;
      ip.406 = (int) ip.405;
      D.40680 = cfg->cil_start;
      D.40681 = (int) D.40680;
      D.40715 = ip.406 - D.40681;
      D.40716 = (unsigned int) D.40715;
      D.40717 = D.40716 * 4;
      D.40718 = D.40678 + D.40717;
      bblock = *D.40718;
      if (bblock == 0B) goto <D.40759>; else goto <D.40760>;
      <D.40759>:
      ip.405 = ip;
      if (ip.405 >= end) goto <D.40761>; else goto <D.40763>;
      <D.40763>:
      D.40691 = header->code;
      ip.405 = ip;
      if (D.40691 > ip.405) goto <D.40761>; else goto <D.40762>;
      <D.40761>:
      D.40658 = cfg->gsharedvt;
      if (D.40658 != 0) goto <D.40764>; else goto <D.40765>;
      <D.40764>:
      D.40661 = cfg->verbose_level;
      if (D.40661 > 2) goto <D.40766>; else goto <D.40767>;
      <D.40766>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40767>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40765>:
      D.40768 = mini_get_debug_options ();
      D.40769 = D.40768->break_on_unverified;
      if (D.40769 != 0) goto <D.40770>; else goto unverified;
      <D.40770>:
      raise (5);
      <D.40762>:
      D.40699 = cfg->mempool;
      bblock = mono_mempool_alloc0 (D.40699, 172);
      D.40700 = cfg->num_bblocks;
      D.40771 = D.40700;
      D.40772 = D.40771 + 1;
      cfg->num_bblocks = D.40772;
      D.40773 = (int) D.40771;
      bblock->block_num = D.40773;
      ip.405 = ip;
      bblock->cil_code = ip.405;
      D.40704 = bblock->cil_code;
      if (D.40704 != 0B) goto <D.40774>; else goto <D.40775>;
      <D.40774>:
      D.40678 = cfg->cil_offset_to_bb;
      D.40704 = bblock->cil_code;
      D.40707 = (int) D.40704;
      D.40680 = cfg->cil_start;
      D.40681 = (int) D.40680;
      D.40708 = D.40707 - D.40681;
      D.40709 = (unsigned int) D.40708;
      D.40710 = D.40709 * 4;
      D.40711 = D.40678 + D.40710;
      *D.40711 = bblock;
      <D.40775>:
      D.40712 = cfg->real_offset;
      bblock->real_offset = D.40712;
      <D.40760>:
      <D.40758>:
      goto <D.26423>;
      <D.26437>:
      {
        guint32 n;
        guint32 j;

        ip.405 = ip;
        D.40736 = ip.405 + 1;
        n = mono_read32 (D.40736);
        ip.405 = ip;
        ip.409 = ip.405 + 5;
        ip = ip.409;
        D.40776 = n * 4;
        D.40777 = D.40776 + cli_addr;
        cli_addr = D.40777 + 5;
        target = start + cli_addr;
        D.40678 = cfg->cil_offset_to_bb;
        target.412 = (int) target;
        D.40680 = cfg->cil_start;
        D.40681 = (int) D.40680;
        D.40682 = target.412 - D.40681;
        D.40683 = (unsigned int) D.40682;
        D.40684 = D.40683 * 4;
        D.40685 = D.40678 + D.40684;
        bblock = *D.40685;
        if (bblock == 0B) goto <D.40778>; else goto <D.40779>;
        <D.40778>:
        if (target >= end) goto <D.40780>; else goto <D.40782>;
        <D.40782>:
        D.40691 = header->code;
        if (D.40691 > target) goto <D.40780>; else goto <D.40781>;
        <D.40780>:
        D.40658 = cfg->gsharedvt;
        if (D.40658 != 0) goto <D.40783>; else goto <D.40784>;
        <D.40783>:
        D.40661 = cfg->verbose_level;
        if (D.40661 > 2) goto <D.40785>; else goto <D.40786>;
        <D.40785>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40786>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40784>:
        D.40787 = mini_get_debug_options ();
        D.40788 = D.40787->break_on_unverified;
        if (D.40788 != 0) goto <D.40789>; else goto unverified;
        <D.40789>:
        raise (5);
        <D.40781>:
        D.40699 = cfg->mempool;
        bblock = mono_mempool_alloc0 (D.40699, 172);
        D.40700 = cfg->num_bblocks;
        D.40790 = D.40700;
        D.40791 = D.40790 + 1;
        cfg->num_bblocks = D.40791;
        D.40792 = (int) D.40790;
        bblock->block_num = D.40792;
        bblock->cil_code = target;
        D.40704 = bblock->cil_code;
        if (D.40704 != 0B) goto <D.40793>; else goto <D.40794>;
        <D.40793>:
        D.40678 = cfg->cil_offset_to_bb;
        D.40704 = bblock->cil_code;
        D.40707 = (int) D.40704;
        D.40680 = cfg->cil_start;
        D.40681 = (int) D.40680;
        D.40708 = D.40707 - D.40681;
        D.40709 = (unsigned int) D.40708;
        D.40710 = D.40709 * 4;
        D.40711 = D.40678 + D.40710;
        *D.40711 = bblock;
        <D.40794>:
        D.40712 = cfg->real_offset;
        bblock->real_offset = D.40712;
        <D.40779>:
        j = 0;
        goto <D.26441>;
        <D.26440>:
        ip.405 = ip;
        D.40795 = mono_read32 (ip.405);
        D.40796 = D.40795 + cli_addr;
        target = start + D.40796;
        D.40678 = cfg->cil_offset_to_bb;
        target.412 = (int) target;
        D.40680 = cfg->cil_start;
        D.40681 = (int) D.40680;
        D.40682 = target.412 - D.40681;
        D.40683 = (unsigned int) D.40682;
        D.40684 = D.40683 * 4;
        D.40685 = D.40678 + D.40684;
        bblock = *D.40685;
        if (bblock == 0B) goto <D.40797>; else goto <D.40798>;
        <D.40797>:
        if (target >= end) goto <D.40799>; else goto <D.40801>;
        <D.40801>:
        D.40691 = header->code;
        if (D.40691 > target) goto <D.40799>; else goto <D.40800>;
        <D.40799>:
        D.40658 = cfg->gsharedvt;
        if (D.40658 != 0) goto <D.40802>; else goto <D.40803>;
        <D.40802>:
        D.40661 = cfg->verbose_level;
        if (D.40661 > 2) goto <D.40804>; else goto <D.40805>;
        <D.40804>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40805>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40803>:
        D.40806 = mini_get_debug_options ();
        D.40807 = D.40806->break_on_unverified;
        if (D.40807 != 0) goto <D.40808>; else goto unverified;
        <D.40808>:
        raise (5);
        <D.40800>:
        D.40699 = cfg->mempool;
        bblock = mono_mempool_alloc0 (D.40699, 172);
        D.40700 = cfg->num_bblocks;
        D.40809 = D.40700;
        D.40810 = D.40809 + 1;
        cfg->num_bblocks = D.40810;
        D.40811 = (int) D.40809;
        bblock->block_num = D.40811;
        bblock->cil_code = target;
        D.40704 = bblock->cil_code;
        if (D.40704 != 0B) goto <D.40812>; else goto <D.40813>;
        <D.40812>:
        D.40678 = cfg->cil_offset_to_bb;
        D.40704 = bblock->cil_code;
        D.40707 = (int) D.40704;
        D.40680 = cfg->cil_start;
        D.40681 = (int) D.40680;
        D.40708 = D.40707 - D.40681;
        D.40709 = (unsigned int) D.40708;
        D.40710 = D.40709 * 4;
        D.40711 = D.40678 + D.40710;
        *D.40711 = bblock;
        <D.40813>:
        D.40712 = cfg->real_offset;
        bblock->real_offset = D.40712;
        <D.40798>:
        ip.405 = ip;
        ip.413 = ip.405 + 4;
        ip = ip.413;
        j = j + 1;
        <D.26441>:
        if (j < n) goto <D.26440>; else goto <D.26442>;
        <D.26442>:
        goto <D.26423>;
      }
      <D.26443>:
      <D.26444>:
      ip.405 = ip;
      ip.414 = ip.405 + 9;
      ip = ip.414;
      goto <D.26423>;
      <D.26445>:
      monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 6056);
      <D.26423>:
      if (i == 122) goto <D.40816>; else goto <D.40817>;
      <D.40816>:
      {
        unsigned char * bb_start;

        ip.405 = ip;
        bb_start = ip.405 + 4294967295;
        bblock = 0B;
        goto <D.26448>;
        <D.26447>:
        D.40678 = cfg->cil_offset_to_bb;
        bb_start.415 = (int) bb_start;
        start.407 = (int) start;
        D.40819 = bb_start.415 - start.407;
        D.40820 = (unsigned int) D.40819;
        D.40821 = D.40820 * 4;
        D.40822 = D.40678 + D.40821;
        bblock = *D.40822;
        bb_start = bb_start + 4294967295;
        <D.26448>:
        if (bb_start >= start) goto <D.40823>; else goto <D.26449>;
        <D.40823>:
        if (bblock == 0B) goto <D.26447>; else goto <D.26449>;
        <D.26449>:
        if (bblock != 0B) goto <D.40824>; else goto <D.40825>;
        <D.40824>:
        bblock->out_of_line = 1;
        <D.40825>:
      }
      <D.40817>:
      <D.26451>:
      ip.405 = ip;
      if (ip.405 < end) goto <D.26450>; else goto <D.26452>;
      <D.26452>:
      D.40826 = 0;
      return D.40826;
      unverified:
      exception_exit:
      ip.405 = ip;
      *pos = ip.405;
      D.40826 = 1;
      return D.40826;
    }
  finally
    {
      ip = {CLOBBER};
    }
}


should_insert_brekpoint (struct MonoMethod * method)
{
  MonoBreakPolicy (*<T340f>) (struct MonoMethod *) break_policy_func.416;
  <unnamed type> D.40830;
  gboolean D.40831;

  break_policy_func.416 = break_policy_func;
  D.40830 = break_policy_func.416 (method);
  switch (D.40830) <default: <D.25798>, case 0: <D.25795>, case 1: <D.25796>, case 2: <D.25797>>
  <D.25795>:
  D.40831 = 1;
  return D.40831;
  <D.25796>:
  D.40831 = 0;
  return D.40831;
  <D.25797>:
  monoeg_g_log (0B, 16, "mdb no longer supported");
  D.40831 = 0;
  return D.40831;
  <D.25798>:
  monoeg_g_log (0B, 16, "Incorrect value returned from break policy callback");
  D.40831 = 0;
  return D.40831;
}


mini_get_signature (struct MonoMethod * method, guint32 token, struct MonoGenericContext * context)
{
  unsigned int D.40833;
  unsigned int D.40834;
  int D.40839;
  _Bool D.40840;
  long int D.40841;
  long int D.40842;
  struct MonoClass * D.40846;
  struct MonoImage * D.40847;
  struct MonoMethodSignature * D.40848;
  struct MonoMethodSignature * fsig;

  D.40833 = BIT_FIELD_REF <*method, 32, 160>;
  D.40834 = D.40833 & 124;
  if (D.40834 != 0) goto <D.40835>; else goto <D.40836>;
  <D.40835>:
  {
    struct MonoError error;

    try
      {
        fsig = mono_method_get_wrapper_data (method, token);
        if (context != 0B) goto <D.40837>; else goto <D.40838>;
        <D.40837>:
        fsig = mono_inflate_generic_signature (fsig, context, &error);
        D.40839 = mono_error_ok (&error);
        D.40840 = D.40839 == 0;
        D.40841 = (long int) D.40840;
        D.40842 = __builtin_expect (D.40841, 0);
        if (D.40842 != 0) goto <D.40843>; else goto <D.40844>;
        <D.40843>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6135, "mono_error_ok (&error)");
        <D.40844>:
        <D.40838>:
      }
    finally
      {
        error = {CLOBBER};
      }
  }
  goto <D.40845>;
  <D.40836>:
  D.40846 = method->klass;
  D.40847 = D.40846->image;
  fsig = mono_metadata_parse_signature (D.40847, token);
  <D.40845>:
  D.40848 = fsig;
  return D.40848;
}


mini_get_method_allow_open (struct MonoMethod * m, guint32 token, struct MonoClass * klass, struct MonoGenericContext * context)
{
  unsigned int D.40850;
  unsigned int D.40851;
  struct MonoClass * D.40857;
  struct MonoImage * D.40858;
  struct MonoMethod * D.40859;
  struct MonoMethod * method;

  D.40850 = BIT_FIELD_REF <*m, 32, 160>;
  D.40851 = D.40850 & 124;
  if (D.40851 != 0) goto <D.40852>; else goto <D.40853>;
  <D.40852>:
  method = mono_method_get_wrapper_data (m, token);
  if (context != 0B) goto <D.40854>; else goto <D.40855>;
  <D.40854>:
  method = mono_class_inflate_generic_method (method, context);
  <D.40855>:
  goto <D.40856>;
  <D.40853>:
  D.40857 = m->klass;
  D.40858 = D.40857->image;
  method = mono_get_method_full (D.40858, token, klass, context);
  <D.40856>:
  D.40859 = method;
  return D.40859;
}


mini_emit_inst_for_sharable_method (struct MonoCompile * cfg, struct MonoMethod * cmethod, struct MonoMethodSignature * fsig, struct MonoInst * * args)
{
  struct MonoClass * D.40861;
  struct MonoClass * D.40862;
  int D.25952;
  int iftmp.417;
  int D.25951;
  const char[12] * D.40868;
  unsigned char D.40869;
  int D.40870;
  unsigned char D.40871;
  int D.40872;
  const unsigned char * D.40877;
  unsigned char D.40878;
  int D.40879;
  const unsigned char * D.40880;
  unsigned char D.40881;
  int D.40882;
  const unsigned char * D.40887;
  unsigned char D.40888;
  int D.40889;
  const unsigned char * D.40890;
  unsigned char D.40891;
  int D.40892;
  const unsigned char * D.40897;
  unsigned char D.40898;
  int D.40899;
  const unsigned char * D.40900;
  unsigned char D.40901;
  int D.40902;
  const char * D.40904;
  struct MonoInst * D.40907;
  int D.25961;
  int iftmp.418;
  int D.25960;
  const char[11] * D.40911;
  unsigned char D.40912;
  int D.40913;
  unsigned char D.40914;
  int D.40915;
  const unsigned char * D.40920;
  unsigned char D.40921;
  int D.40922;
  const unsigned char * D.40923;
  unsigned char D.40924;
  int D.40925;
  const unsigned char * D.40930;
  unsigned char D.40931;
  int D.40932;
  const unsigned char * D.40933;
  unsigned char D.40934;
  int D.40935;
  const unsigned char * D.40940;
  unsigned char D.40941;
  int D.40942;
  const unsigned char * D.40943;
  unsigned char D.40944;
  int D.40945;

  D.40861 = cmethod->klass;
  D.40862 = mono_defaults.array_class;
  if (D.40861 == D.40862) goto <D.40863>; else goto <D.40864>;
  <D.40863>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.40868 = "UnsafeStore";
      D.40869 = MEM[(const unsigned char *)D.40868];
      D.40870 = (int) D.40869;
      D.40871 = *__s2;
      D.40872 = (int) D.40871;
      __result = D.40870 - D.40872;
      {
        if (__s2_len != 0) goto <D.40873>; else goto <D.40874>;
        <D.40873>:
        if (__result == 0) goto <D.40875>; else goto <D.40876>;
        <D.40875>:
        D.40877 = &MEM[(void *)"UnsafeStore" + 1B];
        D.40878 = *D.40877;
        D.40879 = (int) D.40878;
        D.40880 = __s2 + 1;
        D.40881 = *D.40880;
        D.40882 = (int) D.40881;
        __result = D.40879 - D.40882;
        if (__s2_len > 1) goto <D.40883>; else goto <D.40884>;
        <D.40883>:
        if (__result == 0) goto <D.40885>; else goto <D.40886>;
        <D.40885>:
        D.40887 = &MEM[(void *)"UnsafeStore" + 2B];
        D.40888 = *D.40887;
        D.40889 = (int) D.40888;
        D.40890 = __s2 + 2;
        D.40891 = *D.40890;
        D.40892 = (int) D.40891;
        __result = D.40889 - D.40892;
        if (__s2_len > 2) goto <D.40893>; else goto <D.40894>;
        <D.40893>:
        if (__result == 0) goto <D.40895>; else goto <D.40896>;
        <D.40895>:
        D.40897 = &MEM[(void *)"UnsafeStore" + 3B];
        D.40898 = *D.40897;
        D.40899 = (int) D.40898;
        D.40900 = __s2 + 3;
        D.40901 = *D.40900;
        D.40902 = (int) D.40901;
        __result = D.40899 - D.40902;
        <D.40896>:
        <D.40894>:
        <D.40886>:
        <D.40884>:
        <D.40876>:
        <D.40874>:
      }
      D.25951 = __result;
    }
    iftmp.417 = -D.25951;
    goto <D.40903>;
    <D.40867>:
    D.40904 = cmethod->name;
    iftmp.417 = __builtin_strcmp (D.40904, "UnsafeStore");
    <D.40903>:
    D.25952 = iftmp.417;
  }
  if (D.25952 == 0) goto <D.40905>; else goto <D.40906>;
  <D.40905>:
  D.40907 = emit_array_unsafe_access (cfg, fsig, args, 1);
  return D.40907;
  <D.40906>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.40911 = "UnsafeLoad";
      D.40912 = MEM[(const unsigned char *)D.40911];
      D.40913 = (int) D.40912;
      D.40914 = *__s2;
      D.40915 = (int) D.40914;
      __result = D.40913 - D.40915;
      {
        if (__s2_len != 0) goto <D.40916>; else goto <D.40917>;
        <D.40916>:
        if (__result == 0) goto <D.40918>; else goto <D.40919>;
        <D.40918>:
        D.40920 = &MEM[(void *)"UnsafeLoad" + 1B];
        D.40921 = *D.40920;
        D.40922 = (int) D.40921;
        D.40923 = __s2 + 1;
        D.40924 = *D.40923;
        D.40925 = (int) D.40924;
        __result = D.40922 - D.40925;
        if (__s2_len > 1) goto <D.40926>; else goto <D.40927>;
        <D.40926>:
        if (__result == 0) goto <D.40928>; else goto <D.40929>;
        <D.40928>:
        D.40930 = &MEM[(void *)"UnsafeLoad" + 2B];
        D.40931 = *D.40930;
        D.40932 = (int) D.40931;
        D.40933 = __s2 + 2;
        D.40934 = *D.40933;
        D.40935 = (int) D.40934;
        __result = D.40932 - D.40935;
        if (__s2_len > 2) goto <D.40936>; else goto <D.40937>;
        <D.40936>:
        if (__result == 0) goto <D.40938>; else goto <D.40939>;
        <D.40938>:
        D.40940 = &MEM[(void *)"UnsafeLoad" + 3B];
        D.40941 = *D.40940;
        D.40942 = (int) D.40941;
        D.40943 = __s2 + 3;
        D.40944 = *D.40943;
        D.40945 = (int) D.40944;
        __result = D.40942 - D.40945;
        <D.40939>:
        <D.40937>:
        <D.40929>:
        <D.40927>:
        <D.40919>:
        <D.40917>:
      }
      D.25960 = __result;
    }
    iftmp.418 = -D.25960;
    goto <D.40946>;
    <D.40910>:
    D.40904 = cmethod->name;
    iftmp.418 = __builtin_strcmp (D.40904, "UnsafeLoad");
    <D.40946>:
    D.25961 = iftmp.418;
  }
  if (D.25961 == 0) goto <D.40947>; else goto <D.40948>;
  <D.40947>:
  D.40907 = emit_array_unsafe_access (cfg, fsig, args, 0);
  return D.40907;
  <D.40948>:
  <D.40864>:
  D.40907 = 0B;
  return D.40907;
}


emit_array_unsafe_access (struct MonoCompile * cfg, struct MonoMethodSignature * fsig, struct MonoInst * * args, int is_set)
{
  struct MonoType * D.40952;
  struct MonoType * D.40954;
  struct MonoInst * D.40957;
  struct MonoInst * D.40958;
  struct MonoInst * * D.40959;
  struct MonoInst * D.40960;
  struct MonoMemPool * D.40961;
  int D.40962;
  struct MonoInst * D.40963;
  struct MonoType * D.40964;
  unsigned int D.40965;
  short unsigned int D.40966;
  int D.40967;
  int D.40968;
  const unsigned char * D.40969;
  int D.40970;
  unsigned char D.40971;
  <unnamed type> D.40972;
  unsigned int D.40973;
  int D.40974;
  struct MonoBasicBlock * D.40975;
  struct MonoInst * D.40976;
  struct MonoClass * eklass;

  if (is_set != 0) goto <D.40950>; else goto <D.40951>;
  <D.40950>:
  D.40952 = fsig->params[2];
  eklass = mono_class_from_mono_type (D.40952);
  goto <D.40953>;
  <D.40951>:
  D.40954 = fsig->ret;
  eklass = mono_class_from_mono_type (D.40954);
  <D.40953>:
  if (is_set != 0) goto <D.40955>; else goto <D.40956>;
  <D.40955>:
  D.40957 = emit_array_store (cfg, eklass, args, 0);
  return D.40957;
  <D.40956>:
  {
    struct MonoInst * ins;
    struct MonoInst * addr;

    D.40958 = *args;
    D.40959 = args + 4;
    D.40960 = *D.40959;
    addr = mini_emit_ldelema_1_ins (cfg, eklass, D.40958, D.40960, 0);
    D.40961 = cfg->mempool;
    ins = mono_mempool_alloc (D.40961, 56);
    ins->data.op[1].const_val = 0;
    D.40962 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.40962;
    ins->prev = 0B;
    D.40963 = ins->prev;
    ins->next = D.40963;
    D.40964 = &eklass->byval_arg;
    D.40965 = mono_type_to_load_membase (cfg, D.40964);
    D.40966 = (short unsigned int) D.40965;
    ins->opcode = D.40966;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.40967 = ins->sreg3;
    ins->sreg2 = D.40967;
    D.40968 = ins->sreg2;
    ins->sreg1 = D.40968;
    D.40969 = cfg->ip;
    ins->cil_code = D.40969;
    ins->dreg = 0;
    D.40970 = addr->dreg;
    ins->sreg1 = D.40970;
    ins->data.op[0].const_val = 0;
    ins->type = 1;
    D.40964 = &eklass->byval_arg;
    type_to_eval_stack_type (cfg, D.40964, ins);
    D.40971 = ins->type;
    D.40972 = (<unnamed type>) D.40971;
    D.40973 = alloc_dreg (cfg, D.40972);
    D.40974 = (int) D.40973;
    ins->dreg = D.40974;
    D.40975 = cfg->cbb;
    D.40976 = D.40975->last_ins;
    if (D.40976 != 0B) goto <D.40977>; else goto <D.40978>;
    <D.40977>:
    D.40975 = cfg->cbb;
    D.40976 = D.40975->last_ins;
    D.40976->next = ins;
    D.40975 = cfg->cbb;
    D.40976 = D.40975->last_ins;
    ins->prev = D.40976;
    D.40975 = cfg->cbb;
    D.40975->last_ins = ins;
    goto <D.40979>;
    <D.40978>:
    D.40975 = cfg->cbb;
    D.40975 = cfg->cbb;
    D.40975->last_ins = ins;
    D.40976 = D.40975->last_ins;
    D.40975->code = D.40976;
    <D.40979>:
    D.40957 = ins;
    return D.40957;
  }
}


check_method_sharing (struct MonoCompile * cfg, struct MonoMethod * cmethod, gboolean * out_pass_vtable, gboolean * out_pass_mrgctx)
{
  short unsigned int D.40984;
  int D.40985;
  int D.40986;
  struct MonoClass * D.40988;
  unsigned int D.40989;
  unsigned int D.40990;
  struct MonoGenericClass * D.40991;
  struct MonoGenericContainer * D.40993;
  int D.40994;
  int iftmp.419;
  struct MonoGenericContext * D.41007;
  struct MonoGenericContext * D.41009;
  struct MonoGenericInst * D.41010;
  struct MonoGenericContext * D.41011;
  struct MonoGenericContext * D.41014;
  struct MonoGenericInst * D.41015;
  _Bool D.41018;
  long int D.41019;
  long int D.41020;
  int D.41023;
  int D.41031;
  struct MonoMethodSignature * D.41034;
  int D.41035;
  gboolean pass_vtable;
  gboolean pass_mrgctx;

  pass_vtable = 0;
  pass_mrgctx = 0;
  D.40984 = cmethod->flags;
  D.40985 = (int) D.40984;
  D.40986 = D.40985 & 16;
  if (D.40986 != 0) goto <D.40983>; else goto <D.40987>;
  <D.40987>:
  D.40988 = cmethod->klass;
  D.40989 = BIT_FIELD_REF <*D.40988, 32, 160>;
  D.40990 = D.40989 & 8;
  if (D.40990 != 0) goto <D.40983>; else goto <D.40982>;
  <D.40983>:
  D.40988 = cmethod->klass;
  D.40991 = D.40988->generic_class;
  if (D.40991 != 0B) goto <D.40981>; else goto <D.40992>;
  <D.40992>:
  D.40988 = cmethod->klass;
  D.40993 = D.40988->generic_container;
  if (D.40993 != 0B) goto <D.40981>; else goto <D.40982>;
  <D.40981>:
  {
    gboolean sharable;

    sharable = 0;
    D.40994 = mono_method_is_generic_sharable (cmethod, 1);
    if (D.40994 != 0) goto <D.40995>; else goto <D.40996>;
    <D.40995>:
    sharable = 1;
    goto <D.40997>;
    <D.40996>:
    {
      gboolean sharing_enabled;
      struct MonoGenericContext * context;
      gboolean context_sharable;

      D.40988 = cmethod->klass;
      sharing_enabled = mono_class_generic_sharing_enabled (D.40988);
      D.40988 = cmethod->klass;
      context = mini_class_get_context (D.40988);
      context_sharable = mono_generic_context_is_sharable (context, 1);
      if (sharing_enabled != 0) goto <D.41001>; else goto <D.40999>;
      <D.41001>:
      if (context_sharable != 0) goto <D.41002>; else goto <D.40999>;
      <D.41002>:
      iftmp.419 = 1;
      goto <D.41000>;
      <D.40999>:
      iftmp.419 = 0;
      <D.41000>:
      sharable = iftmp.419;
    }
    <D.40997>:
    if (sharable != 0) goto <D.41005>; else goto <D.41006>;
    <D.41005>:
    D.41007 = mini_method_get_context (cmethod);
    if (D.41007 == 0B) goto <D.41003>; else goto <D.41008>;
    <D.41008>:
    D.41009 = mini_method_get_context (cmethod);
    D.41010 = D.41009->method_inst;
    if (D.41010 == 0B) goto <D.41003>; else goto <D.41004>;
    <D.41003>:
    pass_vtable = 1;
    <D.41004>:
    <D.41006>:
  }
  <D.40982>:
  D.41011 = mini_method_get_context (cmethod);
  if (D.41011 != 0B) goto <D.41012>; else goto <D.41013>;
  <D.41012>:
  D.41014 = mini_method_get_context (cmethod);
  D.41015 = D.41014->method_inst;
  if (D.41015 != 0B) goto <D.41016>; else goto <D.41017>;
  <D.41016>:
  D.41018 = pass_vtable != 0;
  D.41019 = (long int) D.41018;
  D.41020 = __builtin_expect (D.41019, 0);
  if (D.41020 != 0) goto <D.41021>; else goto <D.41022>;
  <D.41021>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2418, "!pass_vtable");
  <D.41022>:
  D.41023 = mono_method_is_generic_sharable (cmethod, 1);
  if (D.41023 != 0) goto <D.41024>; else goto <D.41025>;
  <D.41024>:
  pass_mrgctx = 1;
  goto <D.41026>;
  <D.41025>:
  {
    gboolean sharing_enabled;
    struct MonoGenericContext * context;
    gboolean context_sharable;

    D.40988 = cmethod->klass;
    sharing_enabled = mono_class_generic_sharing_enabled (D.40988);
    context = mini_method_get_context (cmethod);
    context_sharable = mono_generic_context_is_sharable (context, 1);
    if (sharing_enabled != 0) goto <D.41027>; else goto <D.41028>;
    <D.41027>:
    if (context_sharable != 0) goto <D.41029>; else goto <D.41030>;
    <D.41029>:
    pass_mrgctx = 1;
    <D.41030>:
    <D.41028>:
    D.41031 = cfg->gsharedvt;
    if (D.41031 != 0) goto <D.41032>; else goto <D.41033>;
    <D.41032>:
    D.41034 = mono_method_signature (cmethod);
    D.41035 = mini_is_gsharedvt_signature (cfg, D.41034);
    if (D.41035 != 0) goto <D.41036>; else goto <D.41037>;
    <D.41036>:
    pass_mrgctx = 1;
    <D.41037>:
    <D.41033>:
  }
  <D.41026>:
  <D.41017>:
  <D.41013>:
  if (out_pass_vtable != 0B) goto <D.41038>; else goto <D.41039>;
  <D.41038>:
  *out_pass_vtable = pass_vtable;
  <D.41039>:
  if (out_pass_mrgctx != 0B) goto <D.41040>; else goto <D.41041>;
  <D.41040>:
  *out_pass_mrgctx = pass_mrgctx;
  <D.41041>:
}


type_from_stack_type (struct MonoInst * ins)
{
  unsigned char D.41042;
  int D.41043;
  struct MonoType * D.41044;
  struct MonoClass * D.41045;
  struct MonoClass * D.41046;
  struct MonoClass * D.41047;
  struct MonoClass * D.41048;
  struct MonoClass * D.41049;
  struct MonoClass * D.41050;

  D.41042 = ins->type;
  D.41043 = (int) D.41042;
  switch (D.41043) <default: <D.24341>, case 1: <D.24334>, case 2: <D.24335>, case 3: <D.24336>, case 4: <D.24337>, case 5: <D.24338>, case 6: <D.24339>, case 7: <D.24340>>
  <D.24334>:
  D.41045 = mono_defaults.int32_class;
  D.41044 = &D.41045->byval_arg;
  return D.41044;
  <D.24335>:
  D.41046 = mono_defaults.int64_class;
  D.41044 = &D.41046->byval_arg;
  return D.41044;
  <D.24336>:
  D.41047 = mono_defaults.int_class;
  D.41044 = &D.41047->byval_arg;
  return D.41044;
  <D.24337>:
  D.41048 = mono_defaults.double_class;
  D.41044 = &D.41048->byval_arg;
  return D.41044;
  <D.24338>:
  D.41049 = ins->klass;
  D.41044 = &D.41049->this_arg;
  return D.41044;
  <D.24339>:
  D.41050 = mono_defaults.object_class;
  D.41044 = &D.41050->byval_arg;
  return D.41044;
  <D.24340>:
  D.41049 = ins->klass;
  D.41044 = &D.41049->byval_arg;
  return D.41044;
  <D.24341>:
  D.41042 = ins->type;
  D.41043 = (int) D.41042;
  monoeg_g_log (0B, 4, "stack type %d to monotype not handled\n", D.41043);
  <D.24342>:
  goto <D.24342>;
  D.41044 = 0B;
  return D.41044;
}


mini_emit_inst_for_method (struct MonoCompile * cfg, struct MonoMethod * cmethod, struct MonoMethodSignature * fsig, struct MonoInst * * args)
{
  struct MonoClass * runtime_helpers_class.420;
  struct MonoImage * D.41055;
  struct MonoClass * runtime_helpers_class.421;
  struct MonoClass * D.41057;
  struct MonoClass * D.41058;
  int D.25978;
  int iftmp.422;
  int D.25977;
  const char[10] * D.41064;
  unsigned char D.41065;
  int D.41066;
  unsigned char D.41067;
  int D.41068;
  const unsigned char * D.41073;
  unsigned char D.41074;
  int D.41075;
  const unsigned char * D.41076;
  unsigned char D.41077;
  int D.41078;
  const unsigned char * D.41083;
  unsigned char D.41084;
  int D.41085;
  const unsigned char * D.41086;
  unsigned char D.41087;
  int D.41088;
  const unsigned char * D.41093;
  unsigned char D.41094;
  int D.41095;
  const unsigned char * D.41096;
  unsigned char D.41097;
  int D.41098;
  const char * D.41100;
  unsigned int D.41103;
  unsigned int D.41104;
  unsigned int D.41105;
  unsigned int D.41106;
  struct MonoInst * * D.41107;
  struct MonoInst * D.41108;
  unsigned int D.41109;
  unsigned int D.41110;
  unsigned int D.41113;
  unsigned int D.41116;
  unsigned int D.41117;
  struct MonoMemPool * D.41120;
  int D.41121;
  struct MonoInst * D.41122;
  int D.41123;
  int D.41124;
  const unsigned char * D.41125;
  struct MonoInst * D.41126;
  int D.41127;
  struct MonoBasicBlock * D.41128;
  struct MonoInst * D.41129;
  int D.41133;
  struct MonoInst * D.41134;
  int D.41135;
  int D.41136;
  unsigned int D.41143;
  int D.41146;
  int D.41151;
  struct MonoInst * D.41152;
  int D.41153;
  int D.41154;
  int D.41158;
  struct MonoInst * D.41159;
  int D.41160;
  int D.41161;
  int D.41166;
  struct MonoInst * D.41167;
  int D.41168;
  int D.41169;
  unsigned char D.41170;
  int D.41175;
  int D.41180;
  struct MonoInst * D.41181;
  int D.41182;
  int D.41183;
  int D.41187;
  struct MonoInst * D.41188;
  int D.41189;
  int D.41190;
  int D.41195;
  struct MonoInst * D.41196;
  int D.41197;
  int D.41198;
  unsigned char D.41199;
  int D.41203;
  struct MonoInst * D.41204;
  int D.41205;
  int D.41206;
  int D.41210;
  struct MonoInst * D.41211;
  int D.41212;
  int D.41213;
  unsigned int D.41218;
  int D.41221;
  int D.41226;
  struct MonoInst * D.41227;
  int D.41228;
  int D.41229;
  int D.41233;
  struct MonoInst * D.41234;
  int D.41235;
  int D.41236;
  int D.41241;
  struct MonoInst * D.41242;
  int D.41243;
  int D.41244;
  unsigned char D.41245;
  int D.41250;
  int D.41255;
  struct MonoInst * D.41256;
  int D.41257;
  int D.41258;
  int D.41262;
  struct MonoInst * D.41263;
  int D.41264;
  int D.41265;
  int D.41270;
  struct MonoInst * D.41271;
  int D.41272;
  int D.41273;
  unsigned char D.41274;
  int D.41278;
  struct MonoInst * D.41279;
  int D.41280;
  int D.41281;
  int D.41285;
  struct MonoInst * D.41286;
  int D.41287;
  int D.41288;
  int D.41293;
  struct MonoInst * D.41294;
  int D.41295;
  int D.41296;
  unsigned char D.41297;
  unsigned char D.41298;
  unsigned int D.41302;
  unsigned int D.41303;
  int D.41304;
  struct MonoInst * D.41305;
  int D.41306;
  int D.41307;
  int D.41311;
  struct MonoInst * D.41312;
  int D.41313;
  int D.41314;
  int D.41318;
  struct MonoInst * D.41319;
  int D.41320;
  int D.41321;
  struct MonoInst * D.41325;
  int D.26018;
  int iftmp.423;
  int D.26017;
  const char[11] * D.41329;
  unsigned char D.41330;
  int D.41331;
  unsigned char D.41332;
  int D.41333;
  const unsigned char * D.41338;
  unsigned char D.41339;
  int D.41340;
  const unsigned char * D.41341;
  unsigned char D.41342;
  int D.41343;
  const unsigned char * D.41348;
  unsigned char D.41349;
  int D.41350;
  const unsigned char * D.41351;
  unsigned char D.41352;
  int D.41353;
  const unsigned char * D.41358;
  unsigned char D.41359;
  int D.41360;
  const unsigned char * D.41361;
  unsigned char D.41362;
  int D.41363;
  unsigned int D.41367;
  unsigned char D.41371;
  unsigned char D.41372;
  int D.26028;
  int iftmp.424;
  int D.26027;
  const char[16] * D.41376;
  unsigned char D.41377;
  int D.41378;
  unsigned char D.41379;
  int D.41380;
  const unsigned char * D.41385;
  unsigned char D.41386;
  int D.41387;
  const unsigned char * D.41388;
  unsigned char D.41389;
  int D.41390;
  const unsigned char * D.41395;
  unsigned char D.41396;
  int D.41397;
  const unsigned char * D.41398;
  unsigned char D.41399;
  int D.41400;
  const unsigned char * D.41405;
  unsigned char D.41406;
  int D.41407;
  const unsigned char * D.41408;
  unsigned char D.41409;
  int D.41410;
  unsigned int D.41414;
  unsigned int D.41415;
  int D.41416;
  struct MonoInst * D.41417;
  int D.41418;
  int D.41419;
  int D.41420;
  int D.41424;
  struct MonoInst * D.41425;
  int D.41426;
  int D.41427;
  int D.41431;
  struct MonoInst * D.41432;
  int D.41433;
  int D.41434;
  struct MonoInst * * D.41435;
  struct MonoInst * D.41436;
  int D.41437;
  struct MonoClass * D.41441;
  int D.26042;
  int iftmp.425;
  int D.26041;
  const char[8] * D.41447;
  unsigned char D.41448;
  int D.41449;
  unsigned char D.41450;
  int D.41451;
  const unsigned char * D.41456;
  unsigned char D.41457;
  int D.41458;
  const unsigned char * D.41459;
  unsigned char D.41460;
  int D.41461;
  const unsigned char * D.41466;
  unsigned char D.41467;
  int D.41468;
  const unsigned char * D.41469;
  unsigned char D.41470;
  int D.41471;
  const unsigned char * D.41476;
  unsigned char D.41477;
  int D.41478;
  const unsigned char * D.41479;
  unsigned char D.41480;
  int D.41481;
  unsigned int D.41485;
  unsigned int D.41486;
  int D.41487;
  int D.41492;
  struct MonoInst * D.41493;
  int D.41494;
  int D.41495;
  int D.41499;
  struct MonoInst * D.41500;
  int D.41501;
  int D.41502;
  int D.41507;
  struct MonoInst * D.41508;
  int D.41509;
  int D.41510;
  unsigned char D.41511;
  int D.26057;
  int iftmp.426;
  int D.26056;
  const char[20] * D.41522;
  unsigned char D.41523;
  int D.41524;
  unsigned char D.41525;
  int D.41526;
  const unsigned char * D.41531;
  unsigned char D.41532;
  int D.41533;
  const unsigned char * D.41534;
  unsigned char D.41535;
  int D.41536;
  const unsigned char * D.41541;
  unsigned char D.41542;
  int D.41543;
  const unsigned char * D.41544;
  unsigned char D.41545;
  int D.41546;
  const unsigned char * D.41551;
  unsigned char D.41552;
  int D.41553;
  const unsigned char * D.41554;
  unsigned char D.41555;
  int D.41556;
  int D.41559;
  unsigned int D.41561;
  unsigned int D.41562;
  int D.41563;
  struct MonoInst * D.41564;
  int D.41565;
  int D.41566;
  int D.26069;
  int iftmp.427;
  int D.26068;
  const char[6] * D.41576;
  unsigned char D.41577;
  int D.41578;
  unsigned char D.41579;
  int D.41580;
  const unsigned char * D.41585;
  unsigned char D.41586;
  int D.41587;
  const unsigned char * D.41588;
  unsigned char D.41589;
  int D.41590;
  const unsigned char * D.41595;
  unsigned char D.41596;
  int D.41597;
  const unsigned char * D.41598;
  unsigned char D.41599;
  int D.41600;
  const unsigned char * D.41605;
  unsigned char D.41606;
  int D.41607;
  const unsigned char * D.41608;
  unsigned char D.41609;
  int D.41610;
  struct MonoClass * D.41617;
  int D.41620;
  int D.26078;
  int iftmp.428;
  int D.26077;
  const char[19] * D.41626;
  unsigned char D.41627;
  int D.41628;
  unsigned char D.41629;
  int D.41630;
  const unsigned char * D.41635;
  unsigned char D.41636;
  int D.41637;
  const unsigned char * D.41638;
  unsigned char D.41639;
  int D.41640;
  const unsigned char * D.41645;
  unsigned char D.41646;
  int D.41647;
  const unsigned char * D.41648;
  unsigned char D.41649;
  int D.41650;
  const unsigned char * D.41655;
  unsigned char D.41656;
  int D.41657;
  const unsigned char * D.41658;
  unsigned char D.41659;
  int D.41660;
  const char * D.41662;
  char D.41665;
  _Bool D.41666;
  int D.41667;
  int D.26087;
  int iftmp.429;
  int D.26086;
  const char[10] * D.41673;
  unsigned char D.41674;
  int D.41675;
  unsigned char D.41676;
  int D.41677;
  const unsigned char * D.41682;
  unsigned char D.41683;
  int D.41684;
  const unsigned char * D.41685;
  unsigned char D.41686;
  int D.41687;
  const unsigned char * D.41692;
  unsigned char D.41693;
  int D.41694;
  const unsigned char * D.41695;
  unsigned char D.41696;
  int D.41697;
  const unsigned char * D.41702;
  unsigned char D.41703;
  int D.41704;
  const unsigned char * D.41705;
  unsigned char D.41706;
  int D.41707;
  int D.26096;
  int iftmp.430;
  int D.26095;
  const char[14] * D.41713;
  unsigned char D.41714;
  int D.41715;
  unsigned char D.41716;
  int D.41717;
  const unsigned char * D.41722;
  unsigned char D.41723;
  int D.41724;
  const unsigned char * D.41725;
  unsigned char D.41726;
  int D.41727;
  const unsigned char * D.41732;
  unsigned char D.41733;
  int D.41734;
  const unsigned char * D.41735;
  unsigned char D.41736;
  int D.41737;
  const unsigned char * D.41742;
  unsigned char D.41743;
  int D.41744;
  const unsigned char * D.41745;
  unsigned char D.41746;
  int D.41747;
  short unsigned int D.41749;
  int D.41752;
  unsigned int D.41755;
  unsigned int D.41756;
  int D.26110;
  int iftmp.431;
  int D.26109;
  unsigned char D.41760;
  int D.41761;
  const unsigned char * D.41766;
  unsigned char D.41767;
  int D.41768;
  const unsigned char * D.41773;
  unsigned char D.41774;
  int D.41775;
  const unsigned char * D.41780;
  unsigned char D.41781;
  int D.41782;
  _Bool D.41784;
  unsigned int D.41785;
  unsigned int D.41786;
  unsigned int D.41787;
  int D.41788;
  unsigned int D.41789;
  unsigned int D.41790;
  int D.41791;
  int D.41792;
  int D.41797;
  struct MonoInst * D.41798;
  int D.41799;
  int D.41800;
  int D.41804;
  struct MonoInst * D.41805;
  int D.41806;
  int D.41807;
  unsigned char D.41812;
  int D.41816;
  struct MonoInst * D.41817;
  int D.41818;
  int D.41819;
  int D.41823;
  struct MonoInst * D.41824;
  int D.41825;
  int D.41826;
  unsigned int D.41829;
  unsigned int D.41830;
  int D.41831;
  unsigned char * D.41835;
  struct MonoBasicBlock * * D.41838;
  int D.41839;
  unsigned char * D.41840;
  int D.41841;
  int D.41842;
  unsigned int D.41843;
  unsigned int D.41844;
  struct MonoBasicBlock * * D.41845;
  unsigned int D.41846;
  short unsigned int D.41851;
  short unsigned int D.41852;
  short unsigned int D.41854;
  short unsigned int D.41856;
  struct MonoBasicBlock * * D.41857;
  struct MonoBasicBlock * * D.41858;
  struct MonoBasicBlock * D.41859;
  void * D.41869;
  struct MonoBasicBlock * * D.41870;
  struct MonoBasicBlock * * D.41871;
  unsigned int D.41875;
  unsigned int D.41876;
  unsigned int D.41879;
  unsigned int D.41880;
  int D.41881;
  int D.41908;
  struct MonoInst * D.41909;
  int D.41910;
  int D.41911;
  unsigned int D.41914;
  unsigned int D.41915;
  int D.41916;
  unsigned char * D.41920;
  int D.41923;
  int D.41924;
  unsigned int D.41925;
  unsigned int D.41926;
  struct MonoBasicBlock * * D.41927;
  void * D.41943;
  struct MonoBasicBlock * * D.41944;
  struct MonoBasicBlock * * D.41945;
  unsigned int D.41951;
  unsigned int D.41952;
  int D.41953;
  unsigned char * D.41971;
  int D.41974;
  int D.41975;
  unsigned int D.41976;
  unsigned int D.41977;
  struct MonoBasicBlock * * D.41978;
  int D.41999;
  struct MonoInst * D.42000;
  int D.42001;
  int D.42002;
  unsigned char * D.42006;
  int D.42009;
  int D.42010;
  unsigned int D.42011;
  unsigned int D.42012;
  struct MonoBasicBlock * * D.42013;
  int D.26128;
  int iftmp.432;
  int D.26127;
  const char[9] * D.42036;
  unsigned char D.42037;
  int D.42038;
  unsigned char D.42039;
  int D.42040;
  const unsigned char * D.42045;
  unsigned char D.42046;
  int D.42047;
  const unsigned char * D.42048;
  unsigned char D.42049;
  int D.42050;
  const unsigned char * D.42055;
  unsigned char D.42056;
  int D.42057;
  const unsigned char * D.42058;
  unsigned char D.42059;
  int D.42060;
  const unsigned char * D.42065;
  unsigned char D.42066;
  int D.42067;
  const unsigned char * D.42068;
  unsigned char D.42069;
  int D.42070;
  unsigned int D.42074;
  unsigned int D.42075;
  int D.42076;
  int D.42081;
  struct MonoInst * D.42082;
  int D.42083;
  int D.42084;
  int D.42088;
  struct MonoInst * D.42089;
  int D.42090;
  int D.42091;
  int D.42096;
  struct MonoInst * D.42097;
  int D.42098;
  int D.42099;
  unsigned char D.42100;
  int D.26143;
  int iftmp.433;
  int D.26142;
  unsigned char D.42110;
  int D.42111;
  const unsigned char * D.42116;
  unsigned char D.42117;
  int D.42118;
  const unsigned char * D.42123;
  unsigned char D.42124;
  int D.42125;
  const unsigned char * D.42130;
  unsigned char D.42131;
  int D.42132;
  unsigned int D.42136;
  int D.42137;
  int D.42142;
  struct MonoInst * D.42143;
  int D.42144;
  int D.42145;
  int D.42149;
  struct MonoInst * D.42150;
  int D.42151;
  int D.42152;
  unsigned char D.42157;
  int D.26156;
  int iftmp.434;
  int D.26155;
  const char[23] * D.42166;
  unsigned char D.42167;
  int D.42168;
  unsigned char D.42169;
  int D.42170;
  const unsigned char * D.42175;
  unsigned char D.42176;
  int D.42177;
  const unsigned char * D.42178;
  unsigned char D.42179;
  int D.42180;
  const unsigned char * D.42185;
  unsigned char D.42186;
  int D.42187;
  const unsigned char * D.42188;
  unsigned char D.42189;
  int D.42190;
  const unsigned char * D.42195;
  unsigned char D.42196;
  int D.42197;
  const unsigned char * D.42198;
  unsigned char D.42199;
  int D.42200;
  unsigned int D.42204;
  int D.42205;
  struct MonoClass * D.42209;
  int D.26165;
  int iftmp.435;
  int D.26164;
  const char[13] * D.42215;
  unsigned char D.42216;
  int D.42217;
  unsigned char D.42218;
  int D.42219;
  const unsigned char * D.42224;
  unsigned char D.42225;
  int D.42226;
  const unsigned char * D.42227;
  unsigned char D.42228;
  int D.42229;
  const unsigned char * D.42234;
  unsigned char D.42235;
  int D.42236;
  const unsigned char * D.42237;
  unsigned char D.42238;
  int D.42239;
  const unsigned char * D.42244;
  unsigned char D.42245;
  int D.42246;
  const unsigned char * D.42247;
  unsigned char D.42248;
  int D.42249;
  int D.26174;
  int iftmp.436;
  int D.26173;
  const char[14] * D.42259;
  unsigned char D.42260;
  int D.42261;
  unsigned char D.42262;
  int D.42263;
  const unsigned char * D.42268;
  unsigned char D.42269;
  int D.42270;
  const unsigned char * D.42271;
  unsigned char D.42272;
  int D.42273;
  const unsigned char * D.42278;
  unsigned char D.42279;
  int D.42280;
  const unsigned char * D.42281;
  unsigned char D.42282;
  int D.42283;
  const unsigned char * D.42288;
  unsigned char D.42289;
  int D.42290;
  const unsigned char * D.42291;
  unsigned char D.42292;
  int D.42293;
  struct MonoClass * D.42298;
  struct MonoImage * D.42304;
  int D.26183;
  int iftmp.437;
  int D.26182;
  const char[17] * D.42309;
  unsigned char D.42310;
  int D.42311;
  unsigned char D.42312;
  int D.42313;
  const unsigned char * D.42318;
  unsigned char D.42319;
  int D.42320;
  const unsigned char * D.42321;
  unsigned char D.42322;
  int D.42323;
  const unsigned char * D.42328;
  unsigned char D.42329;
  int D.42330;
  const unsigned char * D.42331;
  unsigned char D.42332;
  int D.42333;
  const unsigned char * D.42338;
  unsigned char D.42339;
  int D.42340;
  const unsigned char * D.42341;
  unsigned char D.42342;
  int D.42343;
  const char * D.42345;
  int D.26192;
  int iftmp.438;
  int D.26191;
  const char[12] * D.42350;
  unsigned char D.42351;
  int D.42352;
  unsigned char D.42353;
  int D.42354;
  const unsigned char * D.42359;
  unsigned char D.42360;
  int D.42361;
  const unsigned char * D.42362;
  unsigned char D.42363;
  int D.42364;
  const unsigned char * D.42369;
  unsigned char D.42370;
  int D.42371;
  const unsigned char * D.42372;
  unsigned char D.42373;
  int D.42374;
  const unsigned char * D.42379;
  unsigned char D.42380;
  int D.42381;
  const unsigned char * D.42382;
  unsigned char D.42383;
  int D.42384;
  const char * D.42386;
  int D.26201;
  int iftmp.439;
  int D.26200;
  unsigned char D.42391;
  int D.42392;
  const unsigned char * D.42397;
  unsigned char D.42398;
  int D.42399;
  const unsigned char * D.42404;
  unsigned char D.42405;
  int D.42406;
  const unsigned char * D.42411;
  unsigned char D.42412;
  int D.42413;
  int D.26210;
  int iftmp.440;
  int D.26209;
  const char[6] * D.42426;
  unsigned char D.42427;
  int D.42428;
  unsigned char D.42429;
  int D.42430;
  const unsigned char * D.42435;
  unsigned char D.42436;
  int D.42437;
  const unsigned char * D.42438;
  unsigned char D.42439;
  int D.42440;
  const unsigned char * D.42445;
  unsigned char D.42446;
  int D.42447;
  const unsigned char * D.42448;
  unsigned char D.42449;
  int D.42450;
  const unsigned char * D.42455;
  unsigned char D.42456;
  int D.42457;
  const unsigned char * D.42458;
  unsigned char D.42459;
  int D.42460;
  int D.26219;
  int iftmp.441;
  int D.26218;
  const char[9] * D.42467;
  unsigned char D.42468;
  int D.42469;
  unsigned char D.42470;
  int D.42471;
  const unsigned char * D.42476;
  unsigned char D.42477;
  int D.42478;
  const unsigned char * D.42479;
  unsigned char D.42480;
  int D.42481;
  const unsigned char * D.42486;
  unsigned char D.42487;
  int D.42488;
  const unsigned char * D.42489;
  unsigned char D.42490;
  int D.42491;
  const unsigned char * D.42496;
  unsigned char D.42497;
  int D.42498;
  const unsigned char * D.42499;
  unsigned char D.42500;
  int D.42501;
  struct MonoMethod * D.42505;
  int D.42506;
  int D.26228;
  int iftmp.442;
  int D.26227;
  const char[23] * D.42518;
  unsigned char D.42519;
  int D.42520;
  unsigned char D.42521;
  int D.42522;
  const unsigned char * D.42527;
  unsigned char D.42528;
  int D.42529;
  const unsigned char * D.42530;
  unsigned char D.42531;
  int D.42532;
  const unsigned char * D.42537;
  unsigned char D.42538;
  int D.42539;
  const unsigned char * D.42540;
  unsigned char D.42541;
  int D.42542;
  const unsigned char * D.42547;
  unsigned char D.42548;
  int D.42549;
  const unsigned char * D.42550;
  unsigned char D.42551;
  int D.42552;
  int D.26237;
  int iftmp.443;
  int D.26236;
  const char[12] * D.42559;
  unsigned char D.42560;
  int D.42561;
  unsigned char D.42562;
  int D.42563;
  const unsigned char * D.42568;
  unsigned char D.42569;
  int D.42570;
  const unsigned char * D.42571;
  unsigned char D.42572;
  int D.42573;
  const unsigned char * D.42578;
  unsigned char D.42579;
  int D.42580;
  const unsigned char * D.42581;
  unsigned char D.42582;
  int D.42583;
  const unsigned char * D.42588;
  unsigned char D.42589;
  int D.42590;
  const unsigned char * D.42591;
  unsigned char D.42592;
  int D.42593;
  unsigned int D.42597;
  int D.42598;
  struct MonoClass * D.42603;
  int D.26246;
  int iftmp.444;
  int D.26245;
  struct MonoAssembly * D.42612;
  const char[8] * D.42613;
  unsigned char D.42614;
  int D.42615;
  unsigned char D.42616;
  int D.42617;
  const unsigned char * D.42622;
  unsigned char D.42623;
  int D.42624;
  const unsigned char * D.42625;
  unsigned char D.42626;
  int D.42627;
  const unsigned char * D.42632;
  unsigned char D.42633;
  int D.42634;
  const unsigned char * D.42635;
  unsigned char D.42636;
  int D.42637;
  const unsigned char * D.42642;
  unsigned char D.42643;
  int D.42644;
  const unsigned char * D.42645;
  unsigned char D.42646;
  int D.42647;
  const char * D.42649;
  int D.26255;
  int iftmp.445;
  int D.26254;
  const char[10] * D.42654;
  unsigned char D.42655;
  int D.42656;
  unsigned char D.42657;
  int D.42658;
  const unsigned char * D.42663;
  unsigned char D.42664;
  int D.42665;
  const unsigned char * D.42666;
  unsigned char D.42667;
  int D.42668;
  const unsigned char * D.42673;
  unsigned char D.42674;
  int D.42675;
  const unsigned char * D.42676;
  unsigned char D.42677;
  int D.42678;
  const unsigned char * D.42683;
  unsigned char D.42684;
  int D.42685;
  const unsigned char * D.42686;
  unsigned char D.42687;
  int D.42688;
  int D.26264;
  int iftmp.446;
  int D.26263;
  const char[9] * D.42693;
  unsigned char D.42694;
  int D.42695;
  unsigned char D.42696;
  int D.42697;
  const unsigned char * D.42702;
  unsigned char D.42703;
  int D.42704;
  const unsigned char * D.42705;
  unsigned char D.42706;
  int D.42707;
  const unsigned char * D.42712;
  unsigned char D.42713;
  int D.42714;
  const unsigned char * D.42715;
  unsigned char D.42716;
  int D.42717;
  const unsigned char * D.42722;
  unsigned char D.42723;
  int D.42724;
  const unsigned char * D.42725;
  unsigned char D.42726;
  int D.42727;
  int D.26273;
  int iftmp.447;
  int D.26272;
  const char[10] * D.42734;
  unsigned char D.42735;
  int D.42736;
  unsigned char D.42737;
  int D.42738;
  const unsigned char * D.42743;
  unsigned char D.42744;
  int D.42745;
  const unsigned char * D.42746;
  unsigned char D.42747;
  int D.42748;
  const unsigned char * D.42753;
  unsigned char D.42754;
  int D.42755;
  const unsigned char * D.42756;
  unsigned char D.42757;
  int D.42758;
  const unsigned char * D.42763;
  unsigned char D.42764;
  int D.42765;
  const unsigned char * D.42766;
  unsigned char D.42767;
  int D.42768;
  unsigned int D.42772;
  short unsigned int D.42775;
  struct MonoInst * ins;
  static struct MonoClass * runtime_helpers_class = 0B;

  ins = 0B;
  runtime_helpers_class.420 = runtime_helpers_class;
  if (runtime_helpers_class.420 == 0B) goto <D.41053>; else goto <D.41054>;
  <D.41053>:
  D.41055 = mono_defaults.corlib;
  runtime_helpers_class.421 = mono_class_from_name (D.41055, "System.Runtime.CompilerServices", "RuntimeHelpers");
  runtime_helpers_class = runtime_helpers_class.421;
  <D.41054>:
  D.41057 = cmethod->klass;
  D.41058 = mono_defaults.string_class;
  if (D.41057 == D.41058) goto <D.41059>; else goto <D.41060>;
  <D.41059>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.41064 = "get_Chars";
      D.41065 = MEM[(const unsigned char *)D.41064];
      D.41066 = (int) D.41065;
      D.41067 = *__s2;
      D.41068 = (int) D.41067;
      __result = D.41066 - D.41068;
      {
        if (__s2_len != 0) goto <D.41069>; else goto <D.41070>;
        <D.41069>:
        if (__result == 0) goto <D.41071>; else goto <D.41072>;
        <D.41071>:
        D.41073 = &MEM[(void *)"get_Chars" + 1B];
        D.41074 = *D.41073;
        D.41075 = (int) D.41074;
        D.41076 = __s2 + 1;
        D.41077 = *D.41076;
        D.41078 = (int) D.41077;
        __result = D.41075 - D.41078;
        if (__s2_len > 1) goto <D.41079>; else goto <D.41080>;
        <D.41079>:
        if (__result == 0) goto <D.41081>; else goto <D.41082>;
        <D.41081>:
        D.41083 = &MEM[(void *)"get_Chars" + 2B];
        D.41084 = *D.41083;
        D.41085 = (int) D.41084;
        D.41086 = __s2 + 2;
        D.41087 = *D.41086;
        D.41088 = (int) D.41087;
        __result = D.41085 - D.41088;
        if (__s2_len > 2) goto <D.41089>; else goto <D.41090>;
        <D.41089>:
        if (__result == 0) goto <D.41091>; else goto <D.41092>;
        <D.41091>:
        D.41093 = &MEM[(void *)"get_Chars" + 3B];
        D.41094 = *D.41093;
        D.41095 = (int) D.41094;
        D.41096 = __s2 + 3;
        D.41097 = *D.41096;
        D.41098 = (int) D.41097;
        __result = D.41095 - D.41098;
        <D.41092>:
        <D.41090>:
        <D.41082>:
        <D.41080>:
        <D.41072>:
        <D.41070>:
      }
      D.25977 = __result;
    }
    iftmp.422 = -D.25977;
    goto <D.41099>;
    <D.41063>:
    D.41100 = cmethod->name;
    iftmp.422 = __builtin_strcmp (D.41100, "get_Chars");
    <D.41099>:
    D.25978 = iftmp.422;
  }
  if (D.25978 == 0) goto <D.41101>; else goto <D.41102>;
  <D.41101>:
  {
    int dreg;
    int index_reg;
    int mult_reg;
    int add_reg;

    D.41103 = alloc_ireg (cfg);
    dreg = (int) D.41103;
    D.41104 = alloc_preg (cfg);
    index_reg = (int) D.41104;
    D.41105 = alloc_preg (cfg);
    mult_reg = (int) D.41105;
    D.41106 = alloc_preg (cfg);
    add_reg = (int) D.41106;
    D.41107 = args + 4;
    D.41108 = *D.41107;
    index_reg = D.41108->dreg;
    D.41109 = cfg->opt;
    D.41110 = D.41109 & 134217728;
    if (D.41110 == 0) goto <D.41111>; else goto <D.41112>;
    <D.41111>:
    D.41109 = cfg->opt;
    D.41113 = D.41109 & 262144;
    if (D.41113 == 0) goto <D.41114>; else goto <D.41115>;
    <D.41114>:
    D.41116 = BIT_FIELD_REF <*cfg, 32, 3424>;
    D.41117 = D.41116 & 64;
    if (D.41117 != 0) goto <D.41118>; else goto <D.41119>;
    <D.41118>:
    {
      struct MonoInst * inst;

      D.41120 = cfg->mempool;
      inst = mono_mempool_alloc (D.41120, 56);
      inst->data.op[1].const_val = 0;
      D.41121 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.41121;
      inst->prev = 0B;
      D.41122 = inst->prev;
      inst->next = D.41122;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.41123 = inst->sreg3;
      inst->sreg2 = D.41123;
      D.41124 = inst->sreg2;
      inst->sreg1 = D.41124;
      D.41125 = cfg->ip;
      inst->cil_code = D.41125;
      inst->dreg = -1;
      D.41126 = *args;
      D.41127 = D.41126->dreg;
      inst->sreg1 = D.41127;
      inst->data.op[1].const_val = 0;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.41130>; else goto <D.41131>;
      <D.41130>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41129->next = inst;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      inst->prev = D.41129;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      goto <D.41132>;
      <D.41131>:
      D.41128 = cfg->cbb;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      D.41129 = D.41128->last_ins;
      D.41128->code = D.41129;
      <D.41132>:
    }
    {
      struct MonoInst * inst;

      D.41120 = cfg->mempool;
      inst = mono_mempool_alloc (D.41120, 56);
      inst->data.op[1].const_val = 0;
      D.41133 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.41133;
      inst->prev = 0B;
      D.41134 = inst->prev;
      inst->next = D.41134;
      inst->opcode = 451;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.41135 = inst->sreg3;
      inst->sreg2 = D.41135;
      D.41136 = inst->sreg2;
      inst->sreg1 = D.41136;
      D.41125 = cfg->ip;
      inst->cil_code = D.41125;
      inst->data.op[1].p = "NullReferenceException";
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.41137>; else goto <D.41138>;
      <D.41137>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41129->next = inst;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      inst->prev = D.41129;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      goto <D.41139>;
      <D.41138>:
      D.41128 = cfg->cbb;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      D.41129 = D.41128->last_ins;
      D.41128->code = D.41129;
      <D.41139>:
    }
    goto <D.41140>;
    <D.41119>:
    <D.41140>:
    if (0 != 0) goto <D.41141>; else goto <D.41142>;
    <D.41141>:
    {
      int _length_reg;

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

        __ins_flags = 32;
        D.41146 = __ins_flags & 32;
        if (D.41146 != 0) goto <D.41147>; else goto <D.41148>;
        <D.41147>:
        D.41116 = BIT_FIELD_REF <*cfg, 32, 3424>;
        D.41117 = D.41116 & 64;
        if (D.41117 != 0) goto <D.41149>; else goto <D.41150>;
        <D.41149>:
        {
          struct MonoInst * inst;

          D.41120 = cfg->mempool;
          inst = mono_mempool_alloc (D.41120, 56);
          inst->data.op[1].const_val = 0;
          D.41151 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.41151;
          inst->prev = 0B;
          D.41152 = inst->prev;
          inst->next = D.41152;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.41153 = inst->sreg3;
          inst->sreg2 = D.41153;
          D.41154 = inst->sreg2;
          inst->sreg1 = D.41154;
          D.41125 = cfg->ip;
          inst->cil_code = D.41125;
          inst->dreg = -1;
          D.41126 = *args;
          D.41127 = D.41126->dreg;
          inst->sreg1 = D.41127;
          inst->data.op[1].const_val = 0;
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          if (D.41129 != 0B) goto <D.41155>; else goto <D.41156>;
          <D.41155>:
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          D.41129->next = inst;
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          inst->prev = D.41129;
          D.41128 = cfg->cbb;
          D.41128->last_ins = inst;
          goto <D.41157>;
          <D.41156>:
          D.41128 = cfg->cbb;
          D.41128 = cfg->cbb;
          D.41128->last_ins = inst;
          D.41129 = D.41128->last_ins;
          D.41128->code = D.41129;
          <D.41157>:
        }
        {
          struct MonoInst * inst;

          D.41120 = cfg->mempool;
          inst = mono_mempool_alloc (D.41120, 56);
          inst->data.op[1].const_val = 0;
          D.41158 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.41158;
          inst->prev = 0B;
          D.41159 = inst->prev;
          inst->next = D.41159;
          inst->opcode = 451;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.41160 = inst->sreg3;
          inst->sreg2 = D.41160;
          D.41161 = inst->sreg2;
          inst->sreg1 = D.41161;
          D.41125 = cfg->ip;
          inst->cil_code = D.41125;
          inst->data.op[1].p = "NullReferenceException";
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          if (D.41129 != 0B) goto <D.41162>; else goto <D.41163>;
          <D.41162>:
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          D.41129->next = inst;
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          inst->prev = D.41129;
          D.41128 = cfg->cbb;
          D.41128->last_ins = inst;
          goto <D.41164>;
          <D.41163>:
          D.41128 = cfg->cbb;
          D.41128 = cfg->cbb;
          D.41128->last_ins = inst;
          D.41129 = D.41128->last_ins;
          D.41128->code = D.41129;
          <D.41164>:
        }
        goto <D.41165>;
        <D.41150>:
        <D.41165>:
        <D.41148>:
        D.41120 = cfg->mempool;
        inst = mono_mempool_alloc (D.41120, 56);
        inst->data.op[1].const_val = 0;
        D.41166 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.41166;
        inst->prev = 0B;
        D.41167 = inst->prev;
        inst->next = D.41167;
        inst->opcode = 393;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.41168 = inst->sreg3;
        inst->sreg2 = D.41168;
        D.41169 = inst->sreg2;
        inst->sreg1 = D.41169;
        D.41125 = cfg->ip;
        inst->cil_code = D.41125;
        inst->dreg = _length_reg;
        D.41126 = *args;
        D.41127 = D.41126->dreg;
        inst->sreg1 = D.41127;
        inst->data.op[0].const_val = 8;
        inst->type = 1;
        D.41170 = (unsigned char) __ins_flags;
        inst->flags = D.41170;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        if (D.41129 != 0B) goto <D.41171>; else goto <D.41172>;
        <D.41171>:
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        D.41129->next = inst;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        inst->prev = D.41129;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        goto <D.41173>;
        <D.41172>:
        D.41128 = cfg->cbb;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        D.41129 = D.41128->last_ins;
        D.41128->code = D.41129;
        <D.41173>:
      }
      goto <D.41174>;
      <D.41145>:
      {
        struct MonoInst * inst;
        int __ins_flags;

        __ins_flags = 64;
        D.41175 = __ins_flags & 32;
        if (D.41175 != 0) goto <D.41176>; else goto <D.41177>;
        <D.41176>:
        D.41116 = BIT_FIELD_REF <*cfg, 32, 3424>;
        D.41117 = D.41116 & 64;
        if (D.41117 != 0) goto <D.41178>; else goto <D.41179>;
        <D.41178>:
        {
          struct MonoInst * inst;

          D.41120 = cfg->mempool;
          inst = mono_mempool_alloc (D.41120, 56);
          inst->data.op[1].const_val = 0;
          D.41180 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.41180;
          inst->prev = 0B;
          D.41181 = inst->prev;
          inst->next = D.41181;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.41182 = inst->sreg3;
          inst->sreg2 = D.41182;
          D.41183 = inst->sreg2;
          inst->sreg1 = D.41183;
          D.41125 = cfg->ip;
          inst->cil_code = D.41125;
          inst->dreg = -1;
          D.41126 = *args;
          D.41127 = D.41126->dreg;
          inst->sreg1 = D.41127;
          inst->data.op[1].const_val = 0;
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          if (D.41129 != 0B) goto <D.41184>; else goto <D.41185>;
          <D.41184>:
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          D.41129->next = inst;
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          inst->prev = D.41129;
          D.41128 = cfg->cbb;
          D.41128->last_ins = inst;
          goto <D.41186>;
          <D.41185>:
          D.41128 = cfg->cbb;
          D.41128 = cfg->cbb;
          D.41128->last_ins = inst;
          D.41129 = D.41128->last_ins;
          D.41128->code = D.41129;
          <D.41186>:
        }
        {
          struct MonoInst * inst;

          D.41120 = cfg->mempool;
          inst = mono_mempool_alloc (D.41120, 56);
          inst->data.op[1].const_val = 0;
          D.41187 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.41187;
          inst->prev = 0B;
          D.41188 = inst->prev;
          inst->next = D.41188;
          inst->opcode = 451;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.41189 = inst->sreg3;
          inst->sreg2 = D.41189;
          D.41190 = inst->sreg2;
          inst->sreg1 = D.41190;
          D.41125 = cfg->ip;
          inst->cil_code = D.41125;
          inst->data.op[1].p = "NullReferenceException";
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          if (D.41129 != 0B) goto <D.41191>; else goto <D.41192>;
          <D.41191>:
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          D.41129->next = inst;
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          inst->prev = D.41129;
          D.41128 = cfg->cbb;
          D.41128->last_ins = inst;
          goto <D.41193>;
          <D.41192>:
          D.41128 = cfg->cbb;
          D.41128 = cfg->cbb;
          D.41128->last_ins = inst;
          D.41129 = D.41128->last_ins;
          D.41128->code = D.41129;
          <D.41193>:
        }
        goto <D.41194>;
        <D.41179>:
        <D.41194>:
        <D.41177>:
        D.41120 = cfg->mempool;
        inst = mono_mempool_alloc (D.41120, 56);
        inst->data.op[1].const_val = 0;
        D.41195 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.41195;
        inst->prev = 0B;
        D.41196 = inst->prev;
        inst->next = D.41196;
        inst->opcode = 393;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.41197 = inst->sreg3;
        inst->sreg2 = D.41197;
        D.41198 = inst->sreg2;
        inst->sreg1 = D.41198;
        D.41125 = cfg->ip;
        inst->cil_code = D.41125;
        inst->dreg = _length_reg;
        D.41126 = *args;
        D.41127 = D.41126->dreg;
        inst->sreg1 = D.41127;
        inst->data.op[0].const_val = 8;
        inst->type = 1;
        D.41199 = (unsigned char) __ins_flags;
        inst->flags = D.41199;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        if (D.41129 != 0B) goto <D.41200>; else goto <D.41201>;
        <D.41200>:
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        D.41129->next = inst;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        inst->prev = D.41129;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        goto <D.41202>;
        <D.41201>:
        D.41128 = cfg->cbb;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        D.41129 = D.41128->last_ins;
        D.41128->code = D.41129;
        <D.41202>:
      }
      <D.41174>:
      {
        struct MonoInst * inst;

        D.41120 = cfg->mempool;
        inst = mono_mempool_alloc (D.41120, 56);
        inst->data.op[1].const_val = 0;
        D.41203 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.41203;
        inst->prev = 0B;
        D.41204 = inst->prev;
        inst->next = D.41204;
        inst->opcode = 322;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.41205 = inst->sreg3;
        inst->sreg2 = D.41205;
        D.41206 = inst->sreg2;
        inst->sreg1 = D.41206;
        D.41125 = cfg->ip;
        inst->cil_code = D.41125;
        inst->dreg = -1;
        inst->sreg1 = _length_reg;
        inst->sreg2 = index_reg;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        if (D.41129 != 0B) goto <D.41207>; else goto <D.41208>;
        <D.41207>:
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        D.41129->next = inst;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        inst->prev = D.41129;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        goto <D.41209>;
        <D.41208>:
        D.41128 = cfg->cbb;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        D.41129 = D.41128->last_ins;
        D.41128->code = D.41129;
        <D.41209>:
      }
      {
        struct MonoInst * inst;

        D.41120 = cfg->mempool;
        inst = mono_mempool_alloc (D.41120, 56);
        inst->data.op[1].const_val = 0;
        D.41210 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.41210;
        inst->prev = 0B;
        D.41211 = inst->prev;
        inst->next = D.41211;
        inst->opcode = 459;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.41212 = inst->sreg3;
        inst->sreg2 = D.41212;
        D.41213 = inst->sreg2;
        inst->sreg1 = D.41213;
        D.41125 = cfg->ip;
        inst->cil_code = D.41125;
        inst->data.op[1].p = "IndexOutOfRangeException";
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        if (D.41129 != 0B) goto <D.41214>; else goto <D.41215>;
        <D.41214>:
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        D.41129->next = inst;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        inst->prev = D.41129;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        goto <D.41216>;
        <D.41215>:
        D.41128 = cfg->cbb;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        D.41129 = D.41128->last_ins;
        D.41128->code = D.41129;
        <D.41216>:
      }
    }
    goto <D.41217>;
    <D.41142>:
    {
      int _length_reg;

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

        __ins_flags = 32;
        D.41221 = __ins_flags & 32;
        if (D.41221 != 0) goto <D.41222>; else goto <D.41223>;
        <D.41222>:
        D.41116 = BIT_FIELD_REF <*cfg, 32, 3424>;
        D.41117 = D.41116 & 64;
        if (D.41117 != 0) goto <D.41224>; else goto <D.41225>;
        <D.41224>:
        {
          struct MonoInst * inst;

          D.41120 = cfg->mempool;
          inst = mono_mempool_alloc (D.41120, 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 = 323;
          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.41125 = cfg->ip;
          inst->cil_code = D.41125;
          inst->dreg = -1;
          D.41126 = *args;
          D.41127 = D.41126->dreg;
          inst->sreg1 = D.41127;
          inst->data.op[1].const_val = 0;
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          if (D.41129 != 0B) goto <D.41230>; else goto <D.41231>;
          <D.41230>:
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          D.41129->next = inst;
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          inst->prev = D.41129;
          D.41128 = cfg->cbb;
          D.41128->last_ins = inst;
          goto <D.41232>;
          <D.41231>:
          D.41128 = cfg->cbb;
          D.41128 = cfg->cbb;
          D.41128->last_ins = inst;
          D.41129 = D.41128->last_ins;
          D.41128->code = D.41129;
          <D.41232>:
        }
        {
          struct MonoInst * inst;

          D.41120 = cfg->mempool;
          inst = mono_mempool_alloc (D.41120, 56);
          inst->data.op[1].const_val = 0;
          D.41233 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.41233;
          inst->prev = 0B;
          D.41234 = inst->prev;
          inst->next = D.41234;
          inst->opcode = 451;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.41235 = inst->sreg3;
          inst->sreg2 = D.41235;
          D.41236 = inst->sreg2;
          inst->sreg1 = D.41236;
          D.41125 = cfg->ip;
          inst->cil_code = D.41125;
          inst->data.op[1].p = "NullReferenceException";
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          if (D.41129 != 0B) goto <D.41237>; else goto <D.41238>;
          <D.41237>:
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          D.41129->next = inst;
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          inst->prev = D.41129;
          D.41128 = cfg->cbb;
          D.41128->last_ins = inst;
          goto <D.41239>;
          <D.41238>:
          D.41128 = cfg->cbb;
          D.41128 = cfg->cbb;
          D.41128->last_ins = inst;
          D.41129 = D.41128->last_ins;
          D.41128->code = D.41129;
          <D.41239>:
        }
        goto <D.41240>;
        <D.41225>:
        <D.41240>:
        <D.41223>:
        D.41120 = cfg->mempool;
        inst = mono_mempool_alloc (D.41120, 56);
        inst->data.op[1].const_val = 0;
        D.41241 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.41241;
        inst->prev = 0B;
        D.41242 = inst->prev;
        inst->next = D.41242;
        inst->opcode = 393;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.41243 = inst->sreg3;
        inst->sreg2 = D.41243;
        D.41244 = inst->sreg2;
        inst->sreg1 = D.41244;
        D.41125 = cfg->ip;
        inst->cil_code = D.41125;
        inst->dreg = _length_reg;
        D.41126 = *args;
        D.41127 = D.41126->dreg;
        inst->sreg1 = D.41127;
        inst->data.op[0].const_val = 8;
        inst->type = 1;
        D.41245 = (unsigned char) __ins_flags;
        inst->flags = D.41245;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        if (D.41129 != 0B) goto <D.41246>; else goto <D.41247>;
        <D.41246>:
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        D.41129->next = inst;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        inst->prev = D.41129;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        goto <D.41248>;
        <D.41247>:
        D.41128 = cfg->cbb;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        D.41129 = D.41128->last_ins;
        D.41128->code = D.41129;
        <D.41248>:
      }
      goto <D.41249>;
      <D.41220>:
      {
        struct MonoInst * inst;
        int __ins_flags;

        __ins_flags = 64;
        D.41250 = __ins_flags & 32;
        if (D.41250 != 0) goto <D.41251>; else goto <D.41252>;
        <D.41251>:
        D.41116 = BIT_FIELD_REF <*cfg, 32, 3424>;
        D.41117 = D.41116 & 64;
        if (D.41117 != 0) goto <D.41253>; else goto <D.41254>;
        <D.41253>:
        {
          struct MonoInst * inst;

          D.41120 = cfg->mempool;
          inst = mono_mempool_alloc (D.41120, 56);
          inst->data.op[1].const_val = 0;
          D.41255 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.41255;
          inst->prev = 0B;
          D.41256 = inst->prev;
          inst->next = D.41256;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.41257 = inst->sreg3;
          inst->sreg2 = D.41257;
          D.41258 = inst->sreg2;
          inst->sreg1 = D.41258;
          D.41125 = cfg->ip;
          inst->cil_code = D.41125;
          inst->dreg = -1;
          D.41126 = *args;
          D.41127 = D.41126->dreg;
          inst->sreg1 = D.41127;
          inst->data.op[1].const_val = 0;
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          if (D.41129 != 0B) goto <D.41259>; else goto <D.41260>;
          <D.41259>:
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          D.41129->next = inst;
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          inst->prev = D.41129;
          D.41128 = cfg->cbb;
          D.41128->last_ins = inst;
          goto <D.41261>;
          <D.41260>:
          D.41128 = cfg->cbb;
          D.41128 = cfg->cbb;
          D.41128->last_ins = inst;
          D.41129 = D.41128->last_ins;
          D.41128->code = D.41129;
          <D.41261>:
        }
        {
          struct MonoInst * inst;

          D.41120 = cfg->mempool;
          inst = mono_mempool_alloc (D.41120, 56);
          inst->data.op[1].const_val = 0;
          D.41262 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.41262;
          inst->prev = 0B;
          D.41263 = inst->prev;
          inst->next = D.41263;
          inst->opcode = 451;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.41264 = inst->sreg3;
          inst->sreg2 = D.41264;
          D.41265 = inst->sreg2;
          inst->sreg1 = D.41265;
          D.41125 = cfg->ip;
          inst->cil_code = D.41125;
          inst->data.op[1].p = "NullReferenceException";
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          if (D.41129 != 0B) goto <D.41266>; else goto <D.41267>;
          <D.41266>:
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          D.41129->next = inst;
          D.41128 = cfg->cbb;
          D.41129 = D.41128->last_ins;
          inst->prev = D.41129;
          D.41128 = cfg->cbb;
          D.41128->last_ins = inst;
          goto <D.41268>;
          <D.41267>:
          D.41128 = cfg->cbb;
          D.41128 = cfg->cbb;
          D.41128->last_ins = inst;
          D.41129 = D.41128->last_ins;
          D.41128->code = D.41129;
          <D.41268>:
        }
        goto <D.41269>;
        <D.41254>:
        <D.41269>:
        <D.41252>:
        D.41120 = cfg->mempool;
        inst = mono_mempool_alloc (D.41120, 56);
        inst->data.op[1].const_val = 0;
        D.41270 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.41270;
        inst->prev = 0B;
        D.41271 = inst->prev;
        inst->next = D.41271;
        inst->opcode = 393;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.41272 = inst->sreg3;
        inst->sreg2 = D.41272;
        D.41273 = inst->sreg2;
        inst->sreg1 = D.41273;
        D.41125 = cfg->ip;
        inst->cil_code = D.41125;
        inst->dreg = _length_reg;
        D.41126 = *args;
        D.41127 = D.41126->dreg;
        inst->sreg1 = D.41127;
        inst->data.op[0].const_val = 8;
        inst->type = 1;
        D.41274 = (unsigned char) __ins_flags;
        inst->flags = D.41274;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        if (D.41129 != 0B) goto <D.41275>; else goto <D.41276>;
        <D.41275>:
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        D.41129->next = inst;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        inst->prev = D.41129;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        goto <D.41277>;
        <D.41276>:
        D.41128 = cfg->cbb;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        D.41129 = D.41128->last_ins;
        D.41128->code = D.41129;
        <D.41277>:
      }
      <D.41249>:
      {
        struct MonoInst * inst;

        D.41120 = cfg->mempool;
        inst = mono_mempool_alloc (D.41120, 56);
        inst->data.op[1].const_val = 0;
        D.41278 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.41278;
        inst->prev = 0B;
        D.41279 = inst->prev;
        inst->next = D.41279;
        inst->opcode = 322;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.41280 = inst->sreg3;
        inst->sreg2 = D.41280;
        D.41281 = inst->sreg2;
        inst->sreg1 = D.41281;
        D.41125 = cfg->ip;
        inst->cil_code = D.41125;
        inst->dreg = -1;
        inst->sreg1 = _length_reg;
        inst->sreg2 = index_reg;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        if (D.41129 != 0B) goto <D.41282>; else goto <D.41283>;
        <D.41282>:
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        D.41129->next = inst;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        inst->prev = D.41129;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        goto <D.41284>;
        <D.41283>:
        D.41128 = cfg->cbb;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        D.41129 = D.41128->last_ins;
        D.41128->code = D.41129;
        <D.41284>:
      }
      {
        struct MonoInst * inst;

        D.41120 = cfg->mempool;
        inst = mono_mempool_alloc (D.41120, 56);
        inst->data.op[1].const_val = 0;
        D.41285 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.41285;
        inst->prev = 0B;
        D.41286 = inst->prev;
        inst->next = D.41286;
        inst->opcode = 459;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.41287 = inst->sreg3;
        inst->sreg2 = D.41287;
        D.41288 = inst->sreg2;
        inst->sreg1 = D.41288;
        D.41125 = cfg->ip;
        inst->cil_code = D.41125;
        inst->data.op[1].p = "IndexOutOfRangeException";
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        if (D.41129 != 0B) goto <D.41289>; else goto <D.41290>;
        <D.41289>:
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        D.41129->next = inst;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        inst->prev = D.41129;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        goto <D.41291>;
        <D.41290>:
        D.41128 = cfg->cbb;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        D.41129 = D.41128->last_ins;
        D.41128->code = D.41129;
        <D.41291>:
      }
    }
    <D.41217>:
    goto <D.41292>;
    <D.41115>:
    {
      struct MonoInst * ins;

      D.41120 = cfg->mempool;
      ins = mono_mempool_alloc (D.41120, 56);
      ins->data.op[1].const_val = 0;
      D.41293 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.41293;
      ins->prev = 0B;
      D.41294 = ins->prev;
      ins->next = D.41294;
      ins->opcode = 784;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.41295 = ins->sreg3;
      ins->sreg2 = D.41295;
      D.41296 = ins->sreg2;
      ins->sreg1 = D.41296;
      D.41125 = cfg->ip;
      ins->cil_code = D.41125;
      D.41126 = *args;
      D.41127 = D.41126->dreg;
      ins->sreg1 = D.41127;
      ins->sreg2 = index_reg;
      ins->data.op[1].const_val = 8;
      D.41297 = ins->flags;
      D.41298 = D.41297 | 32;
      ins->flags = D.41298;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.41299>; else goto <D.41300>;
      <D.41299>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41129->next = ins;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      ins->prev = D.41129;
      D.41128 = cfg->cbb;
      D.41128->last_ins = ins;
      goto <D.41301>;
      <D.41300>:
      D.41128 = cfg->cbb;
      D.41128 = cfg->cbb;
      D.41128->last_ins = ins;
      D.41129 = D.41128->last_ins;
      D.41128->code = D.41129;
      <D.41301>:
      D.41302 = cfg->flags;
      D.41303 = D.41302 | 256;
      cfg->flags = D.41303;
      D.41128 = cfg->cbb;
      D.41128->has_array_access = 1;
    }
    <D.41292>:
    <D.41112>:
    {
      struct MonoInst * inst;

      D.41120 = cfg->mempool;
      inst = mono_mempool_alloc (D.41120, 56);
      inst->data.op[1].const_val = 0;
      D.41304 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.41304;
      inst->prev = 0B;
      D.41305 = inst->prev;
      inst->next = D.41305;
      inst->opcode = 439;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.41306 = inst->sreg3;
      inst->sreg2 = D.41306;
      D.41307 = inst->sreg2;
      inst->sreg1 = D.41307;
      D.41125 = cfg->ip;
      inst->cil_code = D.41125;
      inst->dreg = mult_reg;
      inst->sreg1 = index_reg;
      inst->data.op[1].const_val = 1;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.41308>; else goto <D.41309>;
      <D.41308>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41129->next = inst;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      inst->prev = D.41129;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      goto <D.41310>;
      <D.41309>:
      D.41128 = cfg->cbb;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      D.41129 = D.41128->last_ins;
      D.41128->code = D.41129;
      <D.41310>:
    }
    {
      struct MonoInst * inst;

      D.41120 = cfg->mempool;
      inst = mono_mempool_alloc (D.41120, 56);
      inst->data.op[1].const_val = 0;
      D.41311 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.41311;
      inst->prev = 0B;
      D.41312 = inst->prev;
      inst->next = D.41312;
      inst->opcode = 565;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.41313 = inst->sreg3;
      inst->sreg2 = D.41313;
      D.41314 = inst->sreg2;
      inst->sreg1 = D.41314;
      D.41125 = cfg->ip;
      inst->cil_code = D.41125;
      inst->dreg = add_reg;
      inst->sreg1 = mult_reg;
      D.41126 = *args;
      D.41127 = D.41126->dreg;
      inst->sreg2 = D.41127;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.41315>; else goto <D.41316>;
      <D.41315>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41129->next = inst;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      inst->prev = D.41129;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      goto <D.41317>;
      <D.41316>:
      D.41128 = cfg->cbb;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      D.41129 = D.41128->last_ins;
      D.41128->code = D.41129;
      <D.41317>:
    }
    D.41120 = cfg->mempool;
    ins = mono_mempool_alloc (D.41120, 56);
    ins->data.op[1].const_val = 0;
    D.41318 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.41318;
    ins->prev = 0B;
    D.41319 = ins->prev;
    ins->next = D.41319;
    ins->opcode = 392;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.41320 = ins->sreg3;
    ins->sreg2 = D.41320;
    D.41321 = ins->sreg2;
    ins->sreg1 = D.41321;
    D.41125 = cfg->ip;
    ins->cil_code = D.41125;
    ins->dreg = dreg;
    ins->sreg1 = add_reg;
    ins->data.op[0].const_val = 12;
    ins->type = 1;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    if (D.41129 != 0B) goto <D.41322>; else goto <D.41323>;
    <D.41322>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41129->next = ins;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    ins->prev = D.41129;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    goto <D.41324>;
    <D.41323>:
    D.41128 = cfg->cbb;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    D.41129 = D.41128->last_ins;
    D.41128->code = D.41129;
    <D.41324>:
    type_from_op (ins, 0B, 0B);
    D.41325 = ins;
    return D.41325;
  }
  <D.41102>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.41329 = "get_Length";
      D.41330 = MEM[(const unsigned char *)D.41329];
      D.41331 = (int) D.41330;
      D.41332 = *__s2;
      D.41333 = (int) D.41332;
      __result = D.41331 - D.41333;
      {
        if (__s2_len != 0) goto <D.41334>; else goto <D.41335>;
        <D.41334>:
        if (__result == 0) goto <D.41336>; else goto <D.41337>;
        <D.41336>:
        D.41338 = &MEM[(void *)"get_Length" + 1B];
        D.41339 = *D.41338;
        D.41340 = (int) D.41339;
        D.41341 = __s2 + 1;
        D.41342 = *D.41341;
        D.41343 = (int) D.41342;
        __result = D.41340 - D.41343;
        if (__s2_len > 1) goto <D.41344>; else goto <D.41345>;
        <D.41344>:
        if (__result == 0) goto <D.41346>; else goto <D.41347>;
        <D.41346>:
        D.41348 = &MEM[(void *)"get_Length" + 2B];
        D.41349 = *D.41348;
        D.41350 = (int) D.41349;
        D.41351 = __s2 + 2;
        D.41352 = *D.41351;
        D.41353 = (int) D.41352;
        __result = D.41350 - D.41353;
        if (__s2_len > 2) goto <D.41354>; else goto <D.41355>;
        <D.41354>:
        if (__result == 0) goto <D.41356>; else goto <D.41357>;
        <D.41356>:
        D.41358 = &MEM[(void *)"get_Length" + 3B];
        D.41359 = *D.41358;
        D.41360 = (int) D.41359;
        D.41361 = __s2 + 3;
        D.41362 = *D.41361;
        D.41363 = (int) D.41362;
        __result = D.41360 - D.41363;
        <D.41357>:
        <D.41355>:
        <D.41347>:
        <D.41345>:
        <D.41337>:
        <D.41335>:
      }
      D.26017 = __result;
    }
    iftmp.423 = -D.26017;
    goto <D.41364>;
    <D.41328>:
    D.41100 = cmethod->name;
    iftmp.423 = __builtin_strcmp (D.41100, "get_Length");
    <D.41364>:
    D.26018 = iftmp.423;
  }
  if (D.26018 == 0) goto <D.41365>; else goto <D.41366>;
  <D.41365>:
  {
    int dreg;

    D.41367 = alloc_ireg (cfg);
    dreg = (int) D.41367;
    D.41120 = cfg->mempool;
    ins = mono_mempool_alloc (D.41120, 56);
    ins->data.op[1].const_val = 0;
    D.41318 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.41318;
    ins->prev = 0B;
    D.41319 = ins->prev;
    ins->next = D.41319;
    ins->opcode = 781;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.41320 = ins->sreg3;
    ins->sreg2 = D.41320;
    D.41321 = ins->sreg2;
    ins->sreg1 = D.41321;
    D.41125 = cfg->ip;
    ins->cil_code = D.41125;
    ins->dreg = dreg;
    D.41126 = *args;
    D.41127 = D.41126->dreg;
    ins->sreg1 = D.41127;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    if (D.41129 != 0B) goto <D.41368>; else goto <D.41369>;
    <D.41368>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41129->next = ins;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    ins->prev = D.41129;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    goto <D.41370>;
    <D.41369>:
    D.41128 = cfg->cbb;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    D.41129 = D.41128->last_ins;
    D.41128->code = D.41129;
    <D.41370>:
    ins->type = 1;
    D.41371 = ins->flags;
    D.41372 = D.41371 | 32;
    ins->flags = D.41372;
    D.41128 = cfg->cbb;
    D.41128->has_array_access = 1;
    D.41302 = cfg->flags;
    D.41303 = D.41302 | 256;
    cfg->flags = D.41303;
    D.41325 = ins;
    return D.41325;
  }
  <D.41366>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.41376 = "InternalSetChar";
      D.41377 = MEM[(const unsigned char *)D.41376];
      D.41378 = (int) D.41377;
      D.41379 = *__s2;
      D.41380 = (int) D.41379;
      __result = D.41378 - D.41380;
      {
        if (__s2_len != 0) goto <D.41381>; else goto <D.41382>;
        <D.41381>:
        if (__result == 0) goto <D.41383>; else goto <D.41384>;
        <D.41383>:
        D.41385 = &MEM[(void *)"InternalSetChar" + 1B];
        D.41386 = *D.41385;
        D.41387 = (int) D.41386;
        D.41388 = __s2 + 1;
        D.41389 = *D.41388;
        D.41390 = (int) D.41389;
        __result = D.41387 - D.41390;
        if (__s2_len > 1) goto <D.41391>; else goto <D.41392>;
        <D.41391>:
        if (__result == 0) goto <D.41393>; else goto <D.41394>;
        <D.41393>:
        D.41395 = &MEM[(void *)"InternalSetChar" + 2B];
        D.41396 = *D.41395;
        D.41397 = (int) D.41396;
        D.41398 = __s2 + 2;
        D.41399 = *D.41398;
        D.41400 = (int) D.41399;
        __result = D.41397 - D.41400;
        if (__s2_len > 2) goto <D.41401>; else goto <D.41402>;
        <D.41401>:
        if (__result == 0) goto <D.41403>; else goto <D.41404>;
        <D.41403>:
        D.41405 = &MEM[(void *)"InternalSetChar" + 3B];
        D.41406 = *D.41405;
        D.41407 = (int) D.41406;
        D.41408 = __s2 + 3;
        D.41409 = *D.41408;
        D.41410 = (int) D.41409;
        __result = D.41407 - D.41410;
        <D.41404>:
        <D.41402>:
        <D.41394>:
        <D.41392>:
        <D.41384>:
        <D.41382>:
      }
      D.26027 = __result;
    }
    iftmp.424 = -D.26027;
    goto <D.41411>;
    <D.41375>:
    D.41100 = cmethod->name;
    iftmp.424 = __builtin_strcmp (D.41100, "InternalSetChar");
    <D.41411>:
    D.26028 = iftmp.424;
  }
  if (D.26028 == 0) goto <D.41412>; else goto <D.41413>;
  <D.41412>:
  {
    int mult_reg;
    int add_reg;

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

      D.41120 = cfg->mempool;
      inst = mono_mempool_alloc (D.41120, 56);
      inst->data.op[1].const_val = 0;
      D.41416 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.41416;
      inst->prev = 0B;
      D.41417 = inst->prev;
      inst->next = D.41417;
      inst->opcode = 439;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.41418 = inst->sreg3;
      inst->sreg2 = D.41418;
      D.41419 = inst->sreg2;
      inst->sreg1 = D.41419;
      D.41125 = cfg->ip;
      inst->cil_code = D.41125;
      inst->dreg = mult_reg;
      D.41107 = args + 4;
      D.41108 = *D.41107;
      D.41420 = D.41108->dreg;
      inst->sreg1 = D.41420;
      inst->data.op[1].const_val = 1;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.41421>; else goto <D.41422>;
      <D.41421>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41129->next = inst;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      inst->prev = D.41129;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      goto <D.41423>;
      <D.41422>:
      D.41128 = cfg->cbb;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      D.41129 = D.41128->last_ins;
      D.41128->code = D.41129;
      <D.41423>:
    }
    {
      struct MonoInst * inst;

      D.41120 = cfg->mempool;
      inst = mono_mempool_alloc (D.41120, 56);
      inst->data.op[1].const_val = 0;
      D.41424 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.41424;
      inst->prev = 0B;
      D.41425 = inst->prev;
      inst->next = D.41425;
      inst->opcode = 565;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.41426 = inst->sreg3;
      inst->sreg2 = D.41426;
      D.41427 = inst->sreg2;
      inst->sreg1 = D.41427;
      D.41125 = cfg->ip;
      inst->cil_code = D.41125;
      inst->dreg = add_reg;
      inst->sreg1 = mult_reg;
      D.41126 = *args;
      D.41127 = D.41126->dreg;
      inst->sreg2 = D.41127;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.41428>; else goto <D.41429>;
      <D.41428>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41129->next = inst;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      inst->prev = D.41129;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      goto <D.41430>;
      <D.41429>:
      D.41128 = cfg->cbb;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      D.41129 = D.41128->last_ins;
      D.41128->code = D.41129;
      <D.41430>:
    }
    {
      struct MonoInst * inst;

      D.41120 = cfg->mempool;
      inst = mono_mempool_alloc (D.41120, 56);
      inst->data.op[1].const_val = 0;
      D.41431 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.41431;
      inst->prev = 0B;
      D.41432 = inst->prev;
      inst->next = D.41432;
      inst->opcode = 376;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.41433 = inst->sreg3;
      inst->sreg2 = D.41433;
      D.41434 = inst->sreg2;
      inst->sreg1 = D.41434;
      D.41125 = cfg->ip;
      inst->cil_code = D.41125;
      D.41435 = args + 8;
      D.41436 = *D.41435;
      D.41437 = D.41436->dreg;
      inst->sreg1 = D.41437;
      inst->dreg = add_reg;
      inst->data.op[0].const_val = 12;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.41438>; else goto <D.41439>;
      <D.41438>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41129->next = inst;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      inst->prev = D.41129;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      goto <D.41440>;
      <D.41439>:
      D.41128 = cfg->cbb;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      D.41129 = D.41128->last_ins;
      D.41128->code = D.41129;
      <D.41440>:
    }
    D.41128 = cfg->cbb;
    D.41325 = D.41128->last_ins;
    return D.41325;
  }
  <D.41413>:
  D.41325 = 0B;
  return D.41325;
  <D.41060>:
  D.41057 = cmethod->klass;
  D.41441 = mono_defaults.object_class;
  if (D.41057 == D.41441) goto <D.41442>; else goto <D.41443>;
  <D.41442>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.41447 = "GetType";
      D.41448 = MEM[(const unsigned char *)D.41447];
      D.41449 = (int) D.41448;
      D.41450 = *__s2;
      D.41451 = (int) D.41450;
      __result = D.41449 - D.41451;
      {
        if (__s2_len != 0) goto <D.41452>; else goto <D.41453>;
        <D.41452>:
        if (__result == 0) goto <D.41454>; else goto <D.41455>;
        <D.41454>:
        D.41456 = &MEM[(void *)"GetType" + 1B];
        D.41457 = *D.41456;
        D.41458 = (int) D.41457;
        D.41459 = __s2 + 1;
        D.41460 = *D.41459;
        D.41461 = (int) D.41460;
        __result = D.41458 - D.41461;
        if (__s2_len > 1) goto <D.41462>; else goto <D.41463>;
        <D.41462>:
        if (__result == 0) goto <D.41464>; else goto <D.41465>;
        <D.41464>:
        D.41466 = &MEM[(void *)"GetType" + 2B];
        D.41467 = *D.41466;
        D.41468 = (int) D.41467;
        D.41469 = __s2 + 2;
        D.41470 = *D.41469;
        D.41471 = (int) D.41470;
        __result = D.41468 - D.41471;
        if (__s2_len > 2) goto <D.41472>; else goto <D.41473>;
        <D.41472>:
        if (__result == 0) goto <D.41474>; else goto <D.41475>;
        <D.41474>:
        D.41476 = &MEM[(void *)"GetType" + 3B];
        D.41477 = *D.41476;
        D.41478 = (int) D.41477;
        D.41479 = __s2 + 3;
        D.41480 = *D.41479;
        D.41481 = (int) D.41480;
        __result = D.41478 - D.41481;
        <D.41475>:
        <D.41473>:
        <D.41465>:
        <D.41463>:
        <D.41455>:
        <D.41453>:
      }
      D.26041 = __result;
    }
    iftmp.425 = -D.26041;
    goto <D.41482>;
    <D.41446>:
    D.41100 = cmethod->name;
    iftmp.425 = __builtin_strcmp (D.41100, "GetType");
    <D.41482>:
    D.26042 = iftmp.425;
  }
  if (D.26042 == 0) goto <D.41483>; else goto <D.41484>;
  <D.41483>:
  {
    int dreg;
    int vt_reg;

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

      __ins_flags = 32;
      D.41487 = __ins_flags & 32;
      if (D.41487 != 0) goto <D.41488>; else goto <D.41489>;
      <D.41488>:
      D.41116 = BIT_FIELD_REF <*cfg, 32, 3424>;
      D.41117 = D.41116 & 64;
      if (D.41117 != 0) goto <D.41490>; else goto <D.41491>;
      <D.41490>:
      {
        struct MonoInst * inst;

        D.41120 = cfg->mempool;
        inst = mono_mempool_alloc (D.41120, 56);
        inst->data.op[1].const_val = 0;
        D.41492 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.41492;
        inst->prev = 0B;
        D.41493 = inst->prev;
        inst->next = D.41493;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.41494 = inst->sreg3;
        inst->sreg2 = D.41494;
        D.41495 = inst->sreg2;
        inst->sreg1 = D.41495;
        D.41125 = cfg->ip;
        inst->cil_code = D.41125;
        inst->dreg = -1;
        D.41126 = *args;
        D.41127 = D.41126->dreg;
        inst->sreg1 = D.41127;
        inst->data.op[1].const_val = 0;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        if (D.41129 != 0B) goto <D.41496>; else goto <D.41497>;
        <D.41496>:
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        D.41129->next = inst;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        inst->prev = D.41129;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        goto <D.41498>;
        <D.41497>:
        D.41128 = cfg->cbb;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        D.41129 = D.41128->last_ins;
        D.41128->code = D.41129;
        <D.41498>:
      }
      {
        struct MonoInst * inst;

        D.41120 = cfg->mempool;
        inst = mono_mempool_alloc (D.41120, 56);
        inst->data.op[1].const_val = 0;
        D.41499 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.41499;
        inst->prev = 0B;
        D.41500 = inst->prev;
        inst->next = D.41500;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.41501 = inst->sreg3;
        inst->sreg2 = D.41501;
        D.41502 = inst->sreg2;
        inst->sreg1 = D.41502;
        D.41125 = cfg->ip;
        inst->cil_code = D.41125;
        inst->data.op[1].p = "NullReferenceException";
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        if (D.41129 != 0B) goto <D.41503>; else goto <D.41504>;
        <D.41503>:
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        D.41129->next = inst;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        inst->prev = D.41129;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        goto <D.41505>;
        <D.41504>:
        D.41128 = cfg->cbb;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        D.41129 = D.41128->last_ins;
        D.41128->code = D.41129;
        <D.41505>:
      }
      goto <D.41506>;
      <D.41491>:
      <D.41506>:
      <D.41489>:
      D.41120 = cfg->mempool;
      inst = mono_mempool_alloc (D.41120, 56);
      inst->data.op[1].const_val = 0;
      D.41507 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.41507;
      inst->prev = 0B;
      D.41508 = inst->prev;
      inst->next = D.41508;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.41509 = inst->sreg3;
      inst->sreg2 = D.41509;
      D.41510 = inst->sreg2;
      inst->sreg1 = D.41510;
      D.41125 = cfg->ip;
      inst->cil_code = D.41125;
      inst->dreg = vt_reg;
      D.41126 = *args;
      D.41127 = D.41126->dreg;
      inst->sreg1 = D.41127;
      inst->data.op[0].const_val = 0;
      inst->type = 1;
      D.41511 = (unsigned char) __ins_flags;
      inst->flags = D.41511;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.41512>; else goto <D.41513>;
      <D.41512>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41129->next = inst;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      inst->prev = D.41129;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      goto <D.41514>;
      <D.41513>:
      D.41128 = cfg->cbb;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      D.41129 = D.41128->last_ins;
      D.41128->code = D.41129;
      <D.41514>:
    }
    D.41120 = cfg->mempool;
    ins = mono_mempool_alloc (D.41120, 56);
    ins->data.op[1].const_val = 0;
    D.41318 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.41318;
    ins->prev = 0B;
    D.41319 = ins->prev;
    ins->next = D.41319;
    ins->opcode = 388;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.41320 = ins->sreg3;
    ins->sreg2 = D.41320;
    D.41321 = ins->sreg2;
    ins->sreg1 = D.41321;
    D.41125 = cfg->ip;
    ins->cil_code = D.41125;
    ins->dreg = dreg;
    ins->sreg1 = vt_reg;
    ins->data.op[0].const_val = 12;
    ins->type = 1;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    if (D.41129 != 0B) goto <D.41515>; else goto <D.41516>;
    <D.41515>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41129->next = ins;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    ins->prev = D.41129;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    goto <D.41517>;
    <D.41516>:
    D.41128 = cfg->cbb;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    D.41129 = D.41128->last_ins;
    D.41128->code = D.41129;
    <D.41517>:
    type_from_op (ins, 0B, 0B);
    D.41325 = ins;
    return D.41325;
  }
  <D.41484>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.41522 = "InternalGetHashCode";
      D.41523 = MEM[(const unsigned char *)D.41522];
      D.41524 = (int) D.41523;
      D.41525 = *__s2;
      D.41526 = (int) D.41525;
      __result = D.41524 - D.41526;
      {
        if (__s2_len != 0) goto <D.41527>; else goto <D.41528>;
        <D.41527>:
        if (__result == 0) goto <D.41529>; else goto <D.41530>;
        <D.41529>:
        D.41531 = &MEM[(void *)"InternalGetHashCode" + 1B];
        D.41532 = *D.41531;
        D.41533 = (int) D.41532;
        D.41534 = __s2 + 1;
        D.41535 = *D.41534;
        D.41536 = (int) D.41535;
        __result = D.41533 - D.41536;
        if (__s2_len > 1) goto <D.41537>; else goto <D.41538>;
        <D.41537>:
        if (__result == 0) goto <D.41539>; else goto <D.41540>;
        <D.41539>:
        D.41541 = &MEM[(void *)"InternalGetHashCode" + 2B];
        D.41542 = *D.41541;
        D.41543 = (int) D.41542;
        D.41544 = __s2 + 2;
        D.41545 = *D.41544;
        D.41546 = (int) D.41545;
        __result = D.41543 - D.41546;
        if (__s2_len > 2) goto <D.41547>; else goto <D.41548>;
        <D.41547>:
        if (__result == 0) goto <D.41549>; else goto <D.41550>;
        <D.41549>:
        D.41551 = &MEM[(void *)"InternalGetHashCode" + 3B];
        D.41552 = *D.41551;
        D.41553 = (int) D.41552;
        D.41554 = __s2 + 3;
        D.41555 = *D.41554;
        D.41556 = (int) D.41555;
        __result = D.41553 - D.41556;
        <D.41550>:
        <D.41548>:
        <D.41540>:
        <D.41538>:
        <D.41530>:
        <D.41528>:
      }
      D.26056 = __result;
    }
    iftmp.426 = -D.26056;
    goto <D.41557>;
    <D.41521>:
    D.41100 = cmethod->name;
    iftmp.426 = __builtin_strcmp (D.41100, "InternalGetHashCode");
    <D.41557>:
    D.26057 = iftmp.426;
  }
  if (D.26057 == 0) goto <D.41558>; else goto <D.41518>;
  <D.41558>:
  D.41559 = mono_gc_is_moving ();
  if (D.41559 == 0) goto <D.41560>; else goto <D.41518>;
  <D.41560>:
  {
    int dreg;
    int t1;

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

      D.41120 = cfg->mempool;
      inst = mono_mempool_alloc (D.41120, 56);
      inst->data.op[1].const_val = 0;
      D.41563 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.41563;
      inst->prev = 0B;
      D.41564 = inst->prev;
      inst->next = D.41564;
      inst->opcode = 439;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.41565 = inst->sreg3;
      inst->sreg2 = D.41565;
      D.41566 = inst->sreg2;
      inst->sreg1 = D.41566;
      D.41125 = cfg->ip;
      inst->cil_code = D.41125;
      inst->dreg = t1;
      D.41126 = *args;
      D.41127 = D.41126->dreg;
      inst->sreg1 = D.41127;
      inst->data.op[1].const_val = 3;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.41567>; else goto <D.41568>;
      <D.41567>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41129->next = inst;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      inst->prev = D.41129;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      goto <D.41569>;
      <D.41568>:
      D.41128 = cfg->cbb;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      D.41129 = D.41128->last_ins;
      D.41128->code = D.41129;
      <D.41569>:
    }
    D.41120 = cfg->mempool;
    ins = mono_mempool_alloc (D.41120, 56);
    ins->data.op[1].const_val = 0;
    D.41318 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.41318;
    ins->prev = 0B;
    D.41319 = ins->prev;
    ins->next = D.41319;
    ins->opcode = 431;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.41320 = ins->sreg3;
    ins->sreg2 = D.41320;
    D.41321 = ins->sreg2;
    ins->sreg1 = D.41321;
    D.41125 = cfg->ip;
    ins->cil_code = D.41125;
    ins->dreg = dreg;
    ins->sreg1 = t1;
    ins->data.op[1].const_val = -1640531535;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    if (D.41129 != 0B) goto <D.41570>; else goto <D.41571>;
    <D.41570>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41129->next = ins;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    ins->prev = D.41129;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    goto <D.41572>;
    <D.41571>:
    D.41128 = cfg->cbb;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    D.41129 = D.41128->last_ins;
    D.41128->code = D.41129;
    <D.41572>:
    ins->type = 1;
    D.41325 = ins;
    return D.41325;
  }
  <D.41518>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.41576 = ".ctor";
      D.41577 = MEM[(const unsigned char *)D.41576];
      D.41578 = (int) D.41577;
      D.41579 = *__s2;
      D.41580 = (int) D.41579;
      __result = D.41578 - D.41580;
      {
        if (__s2_len != 0) goto <D.41581>; else goto <D.41582>;
        <D.41581>:
        if (__result == 0) goto <D.41583>; else goto <D.41584>;
        <D.41583>:
        D.41585 = &MEM[(void *)".ctor" + 1B];
        D.41586 = *D.41585;
        D.41587 = (int) D.41586;
        D.41588 = __s2 + 1;
        D.41589 = *D.41588;
        D.41590 = (int) D.41589;
        __result = D.41587 - D.41590;
        if (__s2_len > 1) goto <D.41591>; else goto <D.41592>;
        <D.41591>:
        if (__result == 0) goto <D.41593>; else goto <D.41594>;
        <D.41593>:
        D.41595 = &MEM[(void *)".ctor" + 2B];
        D.41596 = *D.41595;
        D.41597 = (int) D.41596;
        D.41598 = __s2 + 2;
        D.41599 = *D.41598;
        D.41600 = (int) D.41599;
        __result = D.41597 - D.41600;
        if (__s2_len > 2) goto <D.41601>; else goto <D.41602>;
        <D.41601>:
        if (__result == 0) goto <D.41603>; else goto <D.41604>;
        <D.41603>:
        D.41605 = &MEM[(void *)".ctor" + 3B];
        D.41606 = *D.41605;
        D.41607 = (int) D.41606;
        D.41608 = __s2 + 3;
        D.41609 = *D.41608;
        D.41610 = (int) D.41609;
        __result = D.41607 - D.41610;
        <D.41604>:
        <D.41602>:
        <D.41594>:
        <D.41592>:
        <D.41584>:
        <D.41582>:
      }
      D.26068 = __result;
    }
    iftmp.427 = -D.26068;
    goto <D.41611>;
    <D.41575>:
    D.41100 = cmethod->name;
    iftmp.427 = __builtin_strcmp (D.41100, ".ctor");
    <D.41611>:
    D.26069 = iftmp.427;
  }
  if (D.26069 == 0) goto <D.41612>; else goto <D.41613>;
  <D.41612>:
  D.41120 = cfg->mempool;
  ins = mono_mempool_alloc (D.41120, 56);
  ins->data.op[1].const_val = 0;
  D.41318 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.41318;
  ins->prev = 0B;
  D.41319 = ins->prev;
  ins->next = D.41319;
  ins->opcode = 316;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.41320 = ins->sreg3;
  ins->sreg2 = D.41320;
  D.41321 = ins->sreg2;
  ins->sreg1 = D.41321;
  D.41125 = cfg->ip;
  ins->cil_code = D.41125;
  D.41128 = cfg->cbb;
  D.41129 = D.41128->last_ins;
  if (D.41129 != 0B) goto <D.41614>; else goto <D.41615>;
  <D.41614>:
  D.41128 = cfg->cbb;
  D.41129 = D.41128->last_ins;
  D.41129->next = ins;
  D.41128 = cfg->cbb;
  D.41129 = D.41128->last_ins;
  ins->prev = D.41129;
  D.41128 = cfg->cbb;
  D.41128->last_ins = ins;
  goto <D.41616>;
  <D.41615>:
  D.41128 = cfg->cbb;
  D.41128 = cfg->cbb;
  D.41128->last_ins = ins;
  D.41129 = D.41128->last_ins;
  D.41128->code = D.41129;
  <D.41616>:
  D.41325 = ins;
  return D.41325;
  <D.41613>:
  D.41325 = 0B;
  return D.41325;
  <D.41443>:
  D.41057 = cmethod->klass;
  D.41617 = mono_defaults.array_class;
  if (D.41057 == D.41617) goto <D.41618>; else goto <D.41619>;
  <D.41618>:
  D.41620 = cfg->gsharedvt;
  if (D.41620 == 0) goto <D.41621>; else goto <D.41622>;
  <D.41621>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.41100 = cmethod->name;
      __s2 = D.41100 + 1;
      D.41626 = "etGenericValueImpl";
      D.41627 = MEM[(const unsigned char *)D.41626];
      D.41628 = (int) D.41627;
      D.41629 = *__s2;
      D.41630 = (int) D.41629;
      __result = D.41628 - D.41630;
      {
        if (__s2_len != 0) goto <D.41631>; else goto <D.41632>;
        <D.41631>:
        if (__result == 0) goto <D.41633>; else goto <D.41634>;
        <D.41633>:
        D.41635 = &MEM[(void *)"etGenericValueImpl" + 1B];
        D.41636 = *D.41635;
        D.41637 = (int) D.41636;
        D.41638 = __s2 + 1;
        D.41639 = *D.41638;
        D.41640 = (int) D.41639;
        __result = D.41637 - D.41640;
        if (__s2_len > 1) goto <D.41641>; else goto <D.41642>;
        <D.41641>:
        if (__result == 0) goto <D.41643>; else goto <D.41644>;
        <D.41643>:
        D.41645 = &MEM[(void *)"etGenericValueImpl" + 2B];
        D.41646 = *D.41645;
        D.41647 = (int) D.41646;
        D.41648 = __s2 + 2;
        D.41649 = *D.41648;
        D.41650 = (int) D.41649;
        __result = D.41647 - D.41650;
        if (__s2_len > 2) goto <D.41651>; else goto <D.41652>;
        <D.41651>:
        if (__result == 0) goto <D.41653>; else goto <D.41654>;
        <D.41653>:
        D.41655 = &MEM[(void *)"etGenericValueImpl" + 3B];
        D.41656 = *D.41655;
        D.41657 = (int) D.41656;
        D.41658 = __s2 + 3;
        D.41659 = *D.41658;
        D.41660 = (int) D.41659;
        __result = D.41657 - D.41660;
        <D.41654>:
        <D.41652>:
        <D.41644>:
        <D.41642>:
        <D.41634>:
        <D.41632>:
      }
      D.26077 = __result;
    }
    iftmp.428 = -D.26077;
    goto <D.41661>;
    <D.41625>:
    D.41100 = cmethod->name;
    D.41662 = D.41100 + 1;
    iftmp.428 = __builtin_strcmp (D.41662, "etGenericValueImpl");
    <D.41661>:
    D.26078 = iftmp.428;
  }
  if (D.26078 == 0) goto <D.41663>; else goto <D.41664>;
  <D.41663>:
  D.41100 = cmethod->name;
  D.41665 = *D.41100;
  D.41666 = D.41665 == 83;
  D.41667 = (int) D.41666;
  D.41325 = emit_array_generic_access (cfg, fsig, args, D.41667);
  return D.41325;
  <D.41664>:
  <D.41622>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.41673 = "GetLength";
      D.41674 = MEM[(const unsigned char *)D.41673];
      D.41675 = (int) D.41674;
      D.41676 = *__s2;
      D.41677 = (int) D.41676;
      __result = D.41675 - D.41677;
      {
        if (__s2_len != 0) goto <D.41678>; else goto <D.41679>;
        <D.41678>:
        if (__result == 0) goto <D.41680>; else goto <D.41681>;
        <D.41680>:
        D.41682 = &MEM[(void *)"GetLength" + 1B];
        D.41683 = *D.41682;
        D.41684 = (int) D.41683;
        D.41685 = __s2 + 1;
        D.41686 = *D.41685;
        D.41687 = (int) D.41686;
        __result = D.41684 - D.41687;
        if (__s2_len > 1) goto <D.41688>; else goto <D.41689>;
        <D.41688>:
        if (__result == 0) goto <D.41690>; else goto <D.41691>;
        <D.41690>:
        D.41692 = &MEM[(void *)"GetLength" + 2B];
        D.41693 = *D.41692;
        D.41694 = (int) D.41693;
        D.41695 = __s2 + 2;
        D.41696 = *D.41695;
        D.41697 = (int) D.41696;
        __result = D.41694 - D.41697;
        if (__s2_len > 2) goto <D.41698>; else goto <D.41699>;
        <D.41698>:
        if (__result == 0) goto <D.41700>; else goto <D.41701>;
        <D.41700>:
        D.41702 = &MEM[(void *)"GetLength" + 3B];
        D.41703 = *D.41702;
        D.41704 = (int) D.41703;
        D.41705 = __s2 + 3;
        D.41706 = *D.41705;
        D.41707 = (int) D.41706;
        __result = D.41704 - D.41707;
        <D.41701>:
        <D.41699>:
        <D.41691>:
        <D.41689>:
        <D.41681>:
        <D.41679>:
      }
      D.26086 = __result;
    }
    iftmp.429 = -D.26086;
    goto <D.41708>;
    <D.41672>:
    D.41100 = cmethod->name;
    iftmp.429 = __builtin_strcmp (D.41100, "GetLength");
    <D.41708>:
    D.26087 = iftmp.429;
  }
  if (D.26087 == 0) goto <D.41668>; else goto <D.41709>;
  <D.41709>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.41713 = "GetLowerBound";
      D.41714 = MEM[(const unsigned char *)D.41713];
      D.41715 = (int) D.41714;
      D.41716 = *__s2;
      D.41717 = (int) D.41716;
      __result = D.41715 - D.41717;
      {
        if (__s2_len != 0) goto <D.41718>; else goto <D.41719>;
        <D.41718>:
        if (__result == 0) goto <D.41720>; else goto <D.41721>;
        <D.41720>:
        D.41722 = &MEM[(void *)"GetLowerBound" + 1B];
        D.41723 = *D.41722;
        D.41724 = (int) D.41723;
        D.41725 = __s2 + 1;
        D.41726 = *D.41725;
        D.41727 = (int) D.41726;
        __result = D.41724 - D.41727;
        if (__s2_len > 1) goto <D.41728>; else goto <D.41729>;
        <D.41728>:
        if (__result == 0) goto <D.41730>; else goto <D.41731>;
        <D.41730>:
        D.41732 = &MEM[(void *)"GetLowerBound" + 2B];
        D.41733 = *D.41732;
        D.41734 = (int) D.41733;
        D.41735 = __s2 + 2;
        D.41736 = *D.41735;
        D.41737 = (int) D.41736;
        __result = D.41734 - D.41737;
        if (__s2_len > 2) goto <D.41738>; else goto <D.41739>;
        <D.41738>:
        if (__result == 0) goto <D.41740>; else goto <D.41741>;
        <D.41740>:
        D.41742 = &MEM[(void *)"GetLowerBound" + 3B];
        D.41743 = *D.41742;
        D.41744 = (int) D.41743;
        D.41745 = __s2 + 3;
        D.41746 = *D.41745;
        D.41747 = (int) D.41746;
        __result = D.41744 - D.41747;
        <D.41741>:
        <D.41739>:
        <D.41731>:
        <D.41729>:
        <D.41721>:
        <D.41719>:
      }
      D.26095 = __result;
    }
    iftmp.430 = -D.26095;
    goto <D.41748>;
    <D.41712>:
    D.41100 = cmethod->name;
    iftmp.430 = __builtin_strcmp (D.41100, "GetLowerBound");
    <D.41748>:
    D.26096 = iftmp.430;
  }
  if (D.26096 == 0) goto <D.41668>; else goto <D.41669>;
  <D.41668>:
  D.41107 = args + 4;
  D.41108 = *D.41107;
  D.41749 = D.41108->opcode;
  if (D.41749 == 362) goto <D.41750>; else goto <D.41751>;
  <D.41750>:
  D.41107 = args + 4;
  D.41108 = *D.41107;
  D.41752 = D.41108->data.op[0].const_val;
  if (D.41752 == 0) goto <D.41753>; else goto <D.41754>;
  <D.41753>:
  {
    int dreg;
    int bounds_reg;
    struct MonoBasicBlock * end_bb;
    struct MonoBasicBlock * szarray_bb;
    gboolean get_length;

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

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

        __s2 = cmethod->name;
        D.41673 = "GetLength";
        D.41674 = MEM[(const unsigned char *)D.41673];
        D.41675 = (int) D.41674;
        D.41760 = *__s2;
        D.41761 = (int) D.41760;
        __result = D.41675 - D.41761;
        {
          if (__s2_len != 0) goto <D.41762>; else goto <D.41763>;
          <D.41762>:
          if (__result == 0) goto <D.41764>; else goto <D.41765>;
          <D.41764>:
          D.41682 = &MEM[(void *)"GetLength" + 1B];
          D.41683 = *D.41682;
          D.41684 = (int) D.41683;
          D.41766 = __s2 + 1;
          D.41767 = *D.41766;
          D.41768 = (int) D.41767;
          __result = D.41684 - D.41768;
          if (__s2_len > 1) goto <D.41769>; else goto <D.41770>;
          <D.41769>:
          if (__result == 0) goto <D.41771>; else goto <D.41772>;
          <D.41771>:
          D.41692 = &MEM[(void *)"GetLength" + 2B];
          D.41693 = *D.41692;
          D.41694 = (int) D.41693;
          D.41773 = __s2 + 2;
          D.41774 = *D.41773;
          D.41775 = (int) D.41774;
          __result = D.41694 - D.41775;
          if (__s2_len > 2) goto <D.41776>; else goto <D.41777>;
          <D.41776>:
          if (__result == 0) goto <D.41778>; else goto <D.41779>;
          <D.41778>:
          D.41702 = &MEM[(void *)"GetLength" + 3B];
          D.41703 = *D.41702;
          D.41704 = (int) D.41703;
          D.41780 = __s2 + 3;
          D.41781 = *D.41780;
          D.41782 = (int) D.41781;
          __result = D.41704 - D.41782;
          <D.41779>:
          <D.41777>:
          <D.41772>:
          <D.41770>:
          <D.41765>:
          <D.41763>:
        }
        D.26109 = __result;
      }
      iftmp.431 = -D.26109;
      goto <D.41783>;
      <D.41759>:
      D.41100 = cmethod->name;
      iftmp.431 = __builtin_strcmp (D.41100, "GetLength");
      <D.41783>:
      D.26110 = iftmp.431;
    }
    D.41784 = D.26110 == 0;
    get_length = (gboolean) D.41784;
    D.41120 = cfg->mempool;
    end_bb = mono_mempool_alloc0 (D.41120, 172);
    D.41785 = cfg->num_bblocks;
    D.41786 = D.41785;
    D.41787 = D.41786 + 1;
    cfg->num_bblocks = D.41787;
    D.41788 = (int) D.41786;
    end_bb->block_num = D.41788;
    D.41120 = cfg->mempool;
    szarray_bb = mono_mempool_alloc0 (D.41120, 172);
    D.41785 = cfg->num_bblocks;
    D.41789 = D.41785;
    D.41790 = D.41789 + 1;
    cfg->num_bblocks = D.41790;
    D.41791 = (int) D.41789;
    szarray_bb->block_num = D.41791;
    {
      int __ins_flags;

      __ins_flags = 32;
      D.41792 = __ins_flags & 32;
      if (D.41792 != 0) goto <D.41793>; else goto <D.41794>;
      <D.41793>:
      D.41116 = BIT_FIELD_REF <*cfg, 32, 3424>;
      D.41117 = D.41116 & 64;
      if (D.41117 != 0) goto <D.41795>; else goto <D.41796>;
      <D.41795>:
      {
        struct MonoInst * inst;

        D.41120 = cfg->mempool;
        inst = mono_mempool_alloc (D.41120, 56);
        inst->data.op[1].const_val = 0;
        D.41797 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.41797;
        inst->prev = 0B;
        D.41798 = inst->prev;
        inst->next = D.41798;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.41799 = inst->sreg3;
        inst->sreg2 = D.41799;
        D.41800 = inst->sreg2;
        inst->sreg1 = D.41800;
        D.41125 = cfg->ip;
        inst->cil_code = D.41125;
        inst->dreg = -1;
        D.41126 = *args;
        D.41127 = D.41126->dreg;
        inst->sreg1 = D.41127;
        inst->data.op[1].const_val = 0;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        if (D.41129 != 0B) goto <D.41801>; else goto <D.41802>;
        <D.41801>:
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        D.41129->next = inst;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        inst->prev = D.41129;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        goto <D.41803>;
        <D.41802>:
        D.41128 = cfg->cbb;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        D.41129 = D.41128->last_ins;
        D.41128->code = D.41129;
        <D.41803>:
      }
      {
        struct MonoInst * inst;

        D.41120 = cfg->mempool;
        inst = mono_mempool_alloc (D.41120, 56);
        inst->data.op[1].const_val = 0;
        D.41804 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.41804;
        inst->prev = 0B;
        D.41805 = inst->prev;
        inst->next = D.41805;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.41806 = inst->sreg3;
        inst->sreg2 = D.41806;
        D.41807 = inst->sreg2;
        inst->sreg1 = D.41807;
        D.41125 = cfg->ip;
        inst->cil_code = D.41125;
        inst->data.op[1].p = "NullReferenceException";
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        if (D.41129 != 0B) goto <D.41808>; else goto <D.41809>;
        <D.41808>:
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        D.41129->next = inst;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        inst->prev = D.41129;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        goto <D.41810>;
        <D.41809>:
        D.41128 = cfg->cbb;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        D.41129 = D.41128->last_ins;
        D.41128->code = D.41129;
        <D.41810>:
      }
      goto <D.41811>;
      <D.41796>:
      <D.41811>:
      <D.41794>:
      D.41120 = cfg->mempool;
      ins = mono_mempool_alloc (D.41120, 56);
      ins->data.op[1].const_val = 0;
      D.41318 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.41318;
      ins->prev = 0B;
      D.41319 = ins->prev;
      ins->next = D.41319;
      ins->opcode = 388;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.41320 = ins->sreg3;
      ins->sreg2 = D.41320;
      D.41321 = ins->sreg2;
      ins->sreg1 = D.41321;
      D.41125 = cfg->ip;
      ins->cil_code = D.41125;
      ins->dreg = bounds_reg;
      D.41126 = *args;
      D.41127 = D.41126->dreg;
      ins->sreg1 = D.41127;
      ins->data.op[0].const_val = 8;
      ins->type = 1;
      D.41812 = (unsigned char) __ins_flags;
      ins->flags = D.41812;
    }
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    if (D.41129 != 0B) goto <D.41813>; else goto <D.41814>;
    <D.41813>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41129->next = ins;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    ins->prev = D.41129;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    goto <D.41815>;
    <D.41814>:
    D.41128 = cfg->cbb;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    D.41129 = D.41128->last_ins;
    D.41128->code = D.41129;
    <D.41815>:
    {
      struct MonoInst * inst;

      D.41120 = cfg->mempool;
      inst = mono_mempool_alloc (D.41120, 56);
      inst->data.op[1].const_val = 0;
      D.41816 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.41816;
      inst->prev = 0B;
      D.41817 = inst->prev;
      inst->next = D.41817;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.41818 = inst->sreg3;
      inst->sreg2 = D.41818;
      D.41819 = inst->sreg2;
      inst->sreg1 = D.41819;
      D.41125 = cfg->ip;
      inst->cil_code = D.41125;
      inst->dreg = -1;
      inst->sreg1 = bounds_reg;
      inst->data.op[1].const_val = 0;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.41820>; else goto <D.41821>;
      <D.41820>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41129->next = inst;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      inst->prev = D.41129;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      goto <D.41822>;
      <D.41821>:
      D.41128 = cfg->cbb;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      D.41129 = D.41128->last_ins;
      D.41128->code = D.41129;
      <D.41822>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.41120 = cfg->mempool;
      ins = mono_mempool_alloc (D.41120, 56);
      ins->data.op[1].const_val = 0;
      D.41823 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.41823;
      ins->prev = 0B;
      D.41824 = ins->prev;
      ins->next = D.41824;
      ins->opcode = 648;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.41825 = ins->sreg3;
      ins->sreg2 = D.41825;
      D.41826 = ins->sreg2;
      ins->sreg1 = D.41826;
      D.41125 = cfg->ip;
      ins->cil_code = D.41125;
      if (0 != 0) goto <D.41827>; else goto <D.41828>;
      <D.41827>:
      D.41120 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.41120, 172);
      D.41785 = cfg->num_bblocks;
      D.41829 = D.41785;
      D.41830 = D.41829 + 1;
      cfg->num_bblocks = D.41830;
      D.41831 = (int) D.41829;
      falsebb->block_num = D.41831;
      ins->data.op[0].target_block = szarray_bb;
      D.41128 = cfg->cbb;
      mono_link_bblock (cfg, D.41128, szarray_bb);
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.41832>; else goto <D.41833>;
      <D.41832>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41129->next = ins;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      ins->prev = D.41129;
      D.41128 = cfg->cbb;
      D.41128->last_ins = ins;
      goto <D.41834>;
      <D.41833>:
      D.41128 = cfg->cbb;
      D.41128 = cfg->cbb;
      D.41128->last_ins = ins;
      D.41129 = D.41128->last_ins;
      D.41128->code = D.41129;
      <D.41834>:
      D.41835 = falsebb->cil_code;
      if (D.41835 != 0B) goto <D.41836>; else goto <D.41837>;
      <D.41836>:
      D.41838 = cfg->cil_offset_to_bb;
      D.41835 = falsebb->cil_code;
      D.41839 = (int) D.41835;
      D.41840 = cfg->cil_start;
      D.41841 = (int) D.41840;
      D.41842 = D.41839 - D.41841;
      D.41843 = (unsigned int) D.41842;
      D.41844 = D.41843 * 4;
      D.41845 = D.41838 + D.41844;
      *D.41845 = falsebb;
      <D.41837>:
      D.41846 = cfg->real_offset;
      falsebb->real_offset = D.41846;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.41850>; else goto <D.41847>;
      <D.41850>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41852 = D.41851 + 64985;
      if (D.41852 <= 9) goto <D.41848>; else goto <D.41853>;
      <D.41853>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41854 = D.41851 + 64878;
      if (D.41854 <= 9) goto <D.41848>; else goto <D.41855>;
      <D.41855>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41856 = D.41851 + 64888;
      if (D.41856 <= 9) goto <D.41848>; else goto <D.41847>;
      <D.41848>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41857 = D.41129->data.op[1].many_blocks;
      D.41858 = D.41857 + 4;
      D.41859 = *D.41858;
      if (D.41859 == 0B) goto <D.41860>; else goto <D.41847>;
      <D.41860>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41857 = D.41129->data.op[1].many_blocks;
      D.41858 = D.41857 + 4;
      *D.41858 = falsebb;
      D.41128 = cfg->cbb;
      mono_link_bblock (cfg, D.41128, falsebb);
      goto <D.41849>;
      <D.41847>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 == 0B) goto <D.41861>; else goto <D.41863>;
      <D.41863>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      if (D.41851 != 442) goto <D.41864>; else goto <D.41862>;
      <D.41864>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      if (D.41851 != 759) goto <D.41865>; else goto <D.41862>;
      <D.41865>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41852 = D.41851 + 64985;
      if (D.41852 > 9) goto <D.41866>; else goto <D.41862>;
      <D.41866>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41854 = D.41851 + 64878;
      if (D.41854 > 9) goto <D.41867>; else goto <D.41862>;
      <D.41867>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41856 = D.41851 + 64888;
      if (D.41856 > 9) goto <D.41861>; else goto <D.41862>;
      <D.41861>:
      D.41128 = cfg->cbb;
      mono_link_bblock (cfg, D.41128, falsebb);
      <D.41862>:
      <D.41849>:
      D.41128 = cfg->cbb;
      D.41128->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.41868>;
      <D.41828>:
      D.41120 = cfg->mempool;
      D.41869 = mono_mempool_alloc (D.41120, 8);
      ins->data.op[1].many_blocks = D.41869;
      D.41870 = ins->data.op[1].many_blocks;
      *D.41870 = szarray_bb;
      D.41870 = ins->data.op[1].many_blocks;
      D.41871 = D.41870 + 4;
      *D.41871 = 0B;
      D.41128 = cfg->cbb;
      mono_link_bblock (cfg, D.41128, szarray_bb);
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.41872>; else goto <D.41873>;
      <D.41872>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41129->next = ins;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      ins->prev = D.41129;
      D.41128 = cfg->cbb;
      D.41128->last_ins = ins;
      goto <D.41874>;
      <D.41873>:
      D.41128 = cfg->cbb;
      D.41128 = cfg->cbb;
      D.41128->last_ins = ins;
      D.41129 = D.41128->last_ins;
      D.41128->code = D.41129;
      <D.41874>:
      D.41875 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.41876 = D.41875 & 8;
      if (D.41876 == 0) goto <D.41877>; else goto <D.41878>;
      <D.41877>:
      D.41120 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.41120, 172);
      D.41785 = cfg->num_bblocks;
      D.41879 = D.41785;
      D.41880 = D.41879 + 1;
      cfg->num_bblocks = D.41880;
      D.41881 = (int) D.41879;
      falsebb->block_num = D.41881;
      D.41870 = ins->data.op[1].many_blocks;
      D.41871 = D.41870 + 4;
      *D.41871 = falsebb;
      D.41128 = cfg->cbb;
      mono_link_bblock (cfg, D.41128, falsebb);
      D.41835 = falsebb->cil_code;
      if (D.41835 != 0B) goto <D.41882>; else goto <D.41883>;
      <D.41882>:
      D.41838 = cfg->cil_offset_to_bb;
      D.41835 = falsebb->cil_code;
      D.41839 = (int) D.41835;
      D.41840 = cfg->cil_start;
      D.41841 = (int) D.41840;
      D.41842 = D.41839 - D.41841;
      D.41843 = (unsigned int) D.41842;
      D.41844 = D.41843 * 4;
      D.41845 = D.41838 + D.41844;
      *D.41845 = falsebb;
      <D.41883>:
      D.41846 = cfg->real_offset;
      falsebb->real_offset = D.41846;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.41887>; else goto <D.41884>;
      <D.41887>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41852 = D.41851 + 64985;
      if (D.41852 <= 9) goto <D.41885>; else goto <D.41888>;
      <D.41888>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41854 = D.41851 + 64878;
      if (D.41854 <= 9) goto <D.41885>; else goto <D.41889>;
      <D.41889>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41856 = D.41851 + 64888;
      if (D.41856 <= 9) goto <D.41885>; else goto <D.41884>;
      <D.41885>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41857 = D.41129->data.op[1].many_blocks;
      D.41858 = D.41857 + 4;
      D.41859 = *D.41858;
      if (D.41859 == 0B) goto <D.41890>; else goto <D.41884>;
      <D.41890>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41857 = D.41129->data.op[1].many_blocks;
      D.41858 = D.41857 + 4;
      *D.41858 = falsebb;
      D.41128 = cfg->cbb;
      mono_link_bblock (cfg, D.41128, falsebb);
      goto <D.41886>;
      <D.41884>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 == 0B) goto <D.41891>; else goto <D.41893>;
      <D.41893>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      if (D.41851 != 442) goto <D.41894>; else goto <D.41892>;
      <D.41894>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      if (D.41851 != 759) goto <D.41895>; else goto <D.41892>;
      <D.41895>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41852 = D.41851 + 64985;
      if (D.41852 > 9) goto <D.41896>; else goto <D.41892>;
      <D.41896>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41854 = D.41851 + 64878;
      if (D.41854 > 9) goto <D.41897>; else goto <D.41892>;
      <D.41897>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41856 = D.41851 + 64888;
      if (D.41856 > 9) goto <D.41891>; else goto <D.41892>;
      <D.41891>:
      D.41128 = cfg->cbb;
      mono_link_bblock (cfg, D.41128, falsebb);
      <D.41892>:
      <D.41886>:
      D.41128 = cfg->cbb;
      D.41128->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.41898>;
      <D.41878>:
      D.41128 = cfg->cbb;
      D.41128->extended = 1;
      <D.41898>:
      <D.41868>:
    }
    if (get_length != 0) goto <D.41899>; else goto <D.41900>;
    <D.41899>:
    D.41120 = cfg->mempool;
    ins = mono_mempool_alloc (D.41120, 56);
    ins->data.op[1].const_val = 0;
    D.41318 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.41318;
    ins->prev = 0B;
    D.41319 = ins->prev;
    ins->next = D.41319;
    ins->opcode = 393;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.41320 = ins->sreg3;
    ins->sreg2 = D.41320;
    D.41321 = ins->sreg2;
    ins->sreg1 = D.41321;
    D.41125 = cfg->ip;
    ins->cil_code = D.41125;
    ins->dreg = dreg;
    ins->sreg1 = bounds_reg;
    ins->data.op[0].const_val = 0;
    ins->type = 1;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    if (D.41129 != 0B) goto <D.41901>; else goto <D.41902>;
    <D.41901>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41129->next = ins;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    ins->prev = D.41129;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    goto <D.41903>;
    <D.41902>:
    D.41128 = cfg->cbb;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    D.41129 = D.41128->last_ins;
    D.41128->code = D.41129;
    <D.41903>:
    goto <D.41904>;
    <D.41900>:
    D.41120 = cfg->mempool;
    ins = mono_mempool_alloc (D.41120, 56);
    ins->data.op[1].const_val = 0;
    D.41318 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.41318;
    ins->prev = 0B;
    D.41319 = ins->prev;
    ins->next = D.41319;
    ins->opcode = 393;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.41320 = ins->sreg3;
    ins->sreg2 = D.41320;
    D.41321 = ins->sreg2;
    ins->sreg1 = D.41321;
    D.41125 = cfg->ip;
    ins->cil_code = D.41125;
    ins->dreg = dreg;
    ins->sreg1 = bounds_reg;
    ins->data.op[0].const_val = 4;
    ins->type = 1;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    if (D.41129 != 0B) goto <D.41905>; else goto <D.41906>;
    <D.41905>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41129->next = ins;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    ins->prev = D.41129;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    goto <D.41907>;
    <D.41906>:
    D.41128 = cfg->cbb;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    D.41129 = D.41128->last_ins;
    D.41128->code = D.41129;
    <D.41907>:
    <D.41904>:
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.41120 = cfg->mempool;
      ins = mono_mempool_alloc (D.41120, 56);
      ins->data.op[1].const_val = 0;
      D.41908 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.41908;
      ins->prev = 0B;
      D.41909 = ins->prev;
      ins->next = D.41909;
      ins->opcode = 442;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.41910 = ins->sreg3;
      ins->sreg2 = D.41910;
      D.41911 = ins->sreg2;
      ins->sreg1 = D.41911;
      D.41125 = cfg->ip;
      ins->cil_code = D.41125;
      if (1 != 0) goto <D.41912>; else goto <D.41913>;
      <D.41912>:
      D.41120 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.41120, 172);
      D.41785 = cfg->num_bblocks;
      D.41914 = D.41785;
      D.41915 = D.41914 + 1;
      cfg->num_bblocks = D.41915;
      D.41916 = (int) D.41914;
      falsebb->block_num = D.41916;
      ins->data.op[0].target_block = end_bb;
      D.41128 = cfg->cbb;
      mono_link_bblock (cfg, D.41128, end_bb);
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.41917>; else goto <D.41918>;
      <D.41917>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41129->next = ins;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      ins->prev = D.41129;
      D.41128 = cfg->cbb;
      D.41128->last_ins = ins;
      goto <D.41919>;
      <D.41918>:
      D.41128 = cfg->cbb;
      D.41128 = cfg->cbb;
      D.41128->last_ins = ins;
      D.41129 = D.41128->last_ins;
      D.41128->code = D.41129;
      <D.41919>:
      D.41920 = falsebb->cil_code;
      if (D.41920 != 0B) goto <D.41921>; else goto <D.41922>;
      <D.41921>:
      D.41838 = cfg->cil_offset_to_bb;
      D.41920 = falsebb->cil_code;
      D.41923 = (int) D.41920;
      D.41840 = cfg->cil_start;
      D.41841 = (int) D.41840;
      D.41924 = D.41923 - D.41841;
      D.41925 = (unsigned int) D.41924;
      D.41926 = D.41925 * 4;
      D.41927 = D.41838 + D.41926;
      *D.41927 = falsebb;
      <D.41922>:
      D.41846 = cfg->real_offset;
      falsebb->real_offset = D.41846;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.41931>; else goto <D.41928>;
      <D.41931>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41852 = D.41851 + 64985;
      if (D.41852 <= 9) goto <D.41929>; else goto <D.41932>;
      <D.41932>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41854 = D.41851 + 64878;
      if (D.41854 <= 9) goto <D.41929>; else goto <D.41933>;
      <D.41933>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41856 = D.41851 + 64888;
      if (D.41856 <= 9) goto <D.41929>; else goto <D.41928>;
      <D.41929>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41857 = D.41129->data.op[1].many_blocks;
      D.41858 = D.41857 + 4;
      D.41859 = *D.41858;
      if (D.41859 == 0B) goto <D.41934>; else goto <D.41928>;
      <D.41934>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41857 = D.41129->data.op[1].many_blocks;
      D.41858 = D.41857 + 4;
      *D.41858 = falsebb;
      D.41128 = cfg->cbb;
      mono_link_bblock (cfg, D.41128, falsebb);
      goto <D.41930>;
      <D.41928>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 == 0B) goto <D.41935>; else goto <D.41937>;
      <D.41937>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      if (D.41851 != 442) goto <D.41938>; else goto <D.41936>;
      <D.41938>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      if (D.41851 != 759) goto <D.41939>; else goto <D.41936>;
      <D.41939>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41852 = D.41851 + 64985;
      if (D.41852 > 9) goto <D.41940>; else goto <D.41936>;
      <D.41940>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41854 = D.41851 + 64878;
      if (D.41854 > 9) goto <D.41941>; else goto <D.41936>;
      <D.41941>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41856 = D.41851 + 64888;
      if (D.41856 > 9) goto <D.41935>; else goto <D.41936>;
      <D.41935>:
      D.41128 = cfg->cbb;
      mono_link_bblock (cfg, D.41128, falsebb);
      <D.41936>:
      <D.41930>:
      D.41128 = cfg->cbb;
      D.41128->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.41942>;
      <D.41913>:
      D.41120 = cfg->mempool;
      D.41943 = mono_mempool_alloc (D.41120, 8);
      ins->data.op[1].many_blocks = D.41943;
      D.41944 = ins->data.op[1].many_blocks;
      *D.41944 = end_bb;
      D.41944 = ins->data.op[1].many_blocks;
      D.41945 = D.41944 + 4;
      *D.41945 = 0B;
      D.41128 = cfg->cbb;
      mono_link_bblock (cfg, D.41128, end_bb);
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.41946>; else goto <D.41947>;
      <D.41946>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41129->next = ins;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      ins->prev = D.41129;
      D.41128 = cfg->cbb;
      D.41128->last_ins = ins;
      goto <D.41948>;
      <D.41947>:
      D.41128 = cfg->cbb;
      D.41128 = cfg->cbb;
      D.41128->last_ins = ins;
      D.41129 = D.41128->last_ins;
      D.41128->code = D.41129;
      <D.41948>:
      D.41875 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.41876 = D.41875 & 8;
      if (D.41876 == 0) goto <D.41949>; else goto <D.41950>;
      <D.41949>:
      D.41120 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.41120, 172);
      D.41785 = cfg->num_bblocks;
      D.41951 = D.41785;
      D.41952 = D.41951 + 1;
      cfg->num_bblocks = D.41952;
      D.41953 = (int) D.41951;
      falsebb->block_num = D.41953;
      D.41944 = ins->data.op[1].many_blocks;
      D.41945 = D.41944 + 4;
      *D.41945 = falsebb;
      D.41128 = cfg->cbb;
      mono_link_bblock (cfg, D.41128, falsebb);
      D.41920 = falsebb->cil_code;
      if (D.41920 != 0B) goto <D.41954>; else goto <D.41955>;
      <D.41954>:
      D.41838 = cfg->cil_offset_to_bb;
      D.41920 = falsebb->cil_code;
      D.41923 = (int) D.41920;
      D.41840 = cfg->cil_start;
      D.41841 = (int) D.41840;
      D.41924 = D.41923 - D.41841;
      D.41925 = (unsigned int) D.41924;
      D.41926 = D.41925 * 4;
      D.41927 = D.41838 + D.41926;
      *D.41927 = falsebb;
      <D.41955>:
      D.41846 = cfg->real_offset;
      falsebb->real_offset = D.41846;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.41959>; else goto <D.41956>;
      <D.41959>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41852 = D.41851 + 64985;
      if (D.41852 <= 9) goto <D.41957>; else goto <D.41960>;
      <D.41960>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41854 = D.41851 + 64878;
      if (D.41854 <= 9) goto <D.41957>; else goto <D.41961>;
      <D.41961>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41856 = D.41851 + 64888;
      if (D.41856 <= 9) goto <D.41957>; else goto <D.41956>;
      <D.41957>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41857 = D.41129->data.op[1].many_blocks;
      D.41858 = D.41857 + 4;
      D.41859 = *D.41858;
      if (D.41859 == 0B) goto <D.41962>; else goto <D.41956>;
      <D.41962>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41857 = D.41129->data.op[1].many_blocks;
      D.41858 = D.41857 + 4;
      *D.41858 = falsebb;
      D.41128 = cfg->cbb;
      mono_link_bblock (cfg, D.41128, falsebb);
      goto <D.41958>;
      <D.41956>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 == 0B) goto <D.41963>; else goto <D.41965>;
      <D.41965>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      if (D.41851 != 442) goto <D.41966>; else goto <D.41964>;
      <D.41966>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      if (D.41851 != 759) goto <D.41967>; else goto <D.41964>;
      <D.41967>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41852 = D.41851 + 64985;
      if (D.41852 > 9) goto <D.41968>; else goto <D.41964>;
      <D.41968>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41854 = D.41851 + 64878;
      if (D.41854 > 9) goto <D.41969>; else goto <D.41964>;
      <D.41969>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41851 = D.41129->opcode;
      D.41856 = D.41851 + 64888;
      if (D.41856 > 9) goto <D.41963>; else goto <D.41964>;
      <D.41963>:
      D.41128 = cfg->cbb;
      mono_link_bblock (cfg, D.41128, falsebb);
      <D.41964>:
      <D.41958>:
      D.41128 = cfg->cbb;
      D.41128->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.41970>;
      <D.41950>:
      D.41128 = cfg->cbb;
      D.41128->extended = 1;
      <D.41970>:
      <D.41942>:
    }
    D.41971 = szarray_bb->cil_code;
    if (D.41971 != 0B) goto <D.41972>; else goto <D.41973>;
    <D.41972>:
    D.41838 = cfg->cil_offset_to_bb;
    D.41971 = szarray_bb->cil_code;
    D.41974 = (int) D.41971;
    D.41840 = cfg->cil_start;
    D.41841 = (int) D.41840;
    D.41975 = D.41974 - D.41841;
    D.41976 = (unsigned int) D.41975;
    D.41977 = D.41976 * 4;
    D.41978 = D.41838 + D.41977;
    *D.41978 = szarray_bb;
    <D.41973>:
    D.41846 = cfg->real_offset;
    szarray_bb->real_offset = D.41846;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    if (D.41129 != 0B) goto <D.41982>; else goto <D.41979>;
    <D.41982>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41851 = D.41129->opcode;
    D.41852 = D.41851 + 64985;
    if (D.41852 <= 9) goto <D.41980>; else goto <D.41983>;
    <D.41983>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41851 = D.41129->opcode;
    D.41854 = D.41851 + 64878;
    if (D.41854 <= 9) goto <D.41980>; else goto <D.41984>;
    <D.41984>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41851 = D.41129->opcode;
    D.41856 = D.41851 + 64888;
    if (D.41856 <= 9) goto <D.41980>; else goto <D.41979>;
    <D.41980>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41857 = D.41129->data.op[1].many_blocks;
    D.41858 = D.41857 + 4;
    D.41859 = *D.41858;
    if (D.41859 == 0B) goto <D.41985>; else goto <D.41979>;
    <D.41985>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41857 = D.41129->data.op[1].many_blocks;
    D.41858 = D.41857 + 4;
    *D.41858 = szarray_bb;
    D.41128 = cfg->cbb;
    mono_link_bblock (cfg, D.41128, szarray_bb);
    goto <D.41981>;
    <D.41979>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    if (D.41129 == 0B) goto <D.41986>; else goto <D.41988>;
    <D.41988>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41851 = D.41129->opcode;
    if (D.41851 != 442) goto <D.41989>; else goto <D.41987>;
    <D.41989>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41851 = D.41129->opcode;
    if (D.41851 != 759) goto <D.41990>; else goto <D.41987>;
    <D.41990>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41851 = D.41129->opcode;
    D.41852 = D.41851 + 64985;
    if (D.41852 > 9) goto <D.41991>; else goto <D.41987>;
    <D.41991>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41851 = D.41129->opcode;
    D.41854 = D.41851 + 64878;
    if (D.41854 > 9) goto <D.41992>; else goto <D.41987>;
    <D.41992>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41851 = D.41129->opcode;
    D.41856 = D.41851 + 64888;
    if (D.41856 > 9) goto <D.41986>; else goto <D.41987>;
    <D.41986>:
    D.41128 = cfg->cbb;
    mono_link_bblock (cfg, D.41128, szarray_bb);
    <D.41987>:
    <D.41981>:
    D.41128 = cfg->cbb;
    D.41128->next_bb = szarray_bb;
    cfg->cbb = szarray_bb;
    if (get_length != 0) goto <D.41993>; else goto <D.41994>;
    <D.41993>:
    D.41120 = cfg->mempool;
    ins = mono_mempool_alloc (D.41120, 56);
    ins->data.op[1].const_val = 0;
    D.41318 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.41318;
    ins->prev = 0B;
    D.41319 = ins->prev;
    ins->next = D.41319;
    ins->opcode = 393;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.41320 = ins->sreg3;
    ins->sreg2 = D.41320;
    D.41321 = ins->sreg2;
    ins->sreg1 = D.41321;
    D.41125 = cfg->ip;
    ins->cil_code = D.41125;
    ins->dreg = dreg;
    D.41126 = *args;
    D.41127 = D.41126->dreg;
    ins->sreg1 = D.41127;
    ins->data.op[0].const_val = 12;
    ins->type = 1;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    if (D.41129 != 0B) goto <D.41995>; else goto <D.41996>;
    <D.41995>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41129->next = ins;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    ins->prev = D.41129;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    goto <D.41997>;
    <D.41996>:
    D.41128 = cfg->cbb;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    D.41129 = D.41128->last_ins;
    D.41128->code = D.41129;
    <D.41997>:
    goto <D.41998>;
    <D.41994>:
    {
      struct MonoInst * inst;

      D.41120 = cfg->mempool;
      inst = mono_mempool_alloc (D.41120, 56);
      inst->data.op[1].const_val = 0;
      D.41999 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.41999;
      inst->prev = 0B;
      D.42000 = inst->prev;
      inst->next = D.42000;
      inst->opcode = 362;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42001 = inst->sreg3;
      inst->sreg2 = D.42001;
      D.42002 = inst->sreg2;
      inst->sreg1 = D.42002;
      D.41125 = cfg->ip;
      inst->cil_code = D.41125;
      inst->dreg = dreg;
      inst->data.op[0].const_val = 0;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.42003>; else goto <D.42004>;
      <D.42003>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41129->next = inst;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      inst->prev = D.41129;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      goto <D.42005>;
      <D.42004>:
      D.41128 = cfg->cbb;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      D.41129 = D.41128->last_ins;
      D.41128->code = D.41129;
      <D.42005>:
    }
    <D.41998>:
    D.42006 = end_bb->cil_code;
    if (D.42006 != 0B) goto <D.42007>; else goto <D.42008>;
    <D.42007>:
    D.41838 = cfg->cil_offset_to_bb;
    D.42006 = end_bb->cil_code;
    D.42009 = (int) D.42006;
    D.41840 = cfg->cil_start;
    D.41841 = (int) D.41840;
    D.42010 = D.42009 - D.41841;
    D.42011 = (unsigned int) D.42010;
    D.42012 = D.42011 * 4;
    D.42013 = D.41838 + D.42012;
    *D.42013 = end_bb;
    <D.42008>:
    D.41846 = cfg->real_offset;
    end_bb->real_offset = D.41846;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    if (D.41129 != 0B) goto <D.42017>; else goto <D.42014>;
    <D.42017>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41851 = D.41129->opcode;
    D.41852 = D.41851 + 64985;
    if (D.41852 <= 9) goto <D.42015>; else goto <D.42018>;
    <D.42018>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41851 = D.41129->opcode;
    D.41854 = D.41851 + 64878;
    if (D.41854 <= 9) goto <D.42015>; else goto <D.42019>;
    <D.42019>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41851 = D.41129->opcode;
    D.41856 = D.41851 + 64888;
    if (D.41856 <= 9) goto <D.42015>; else goto <D.42014>;
    <D.42015>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41857 = D.41129->data.op[1].many_blocks;
    D.41858 = D.41857 + 4;
    D.41859 = *D.41858;
    if (D.41859 == 0B) goto <D.42020>; else goto <D.42014>;
    <D.42020>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41857 = D.41129->data.op[1].many_blocks;
    D.41858 = D.41857 + 4;
    *D.41858 = end_bb;
    D.41128 = cfg->cbb;
    mono_link_bblock (cfg, D.41128, end_bb);
    goto <D.42016>;
    <D.42014>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    if (D.41129 == 0B) goto <D.42021>; else goto <D.42023>;
    <D.42023>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41851 = D.41129->opcode;
    if (D.41851 != 442) goto <D.42024>; else goto <D.42022>;
    <D.42024>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41851 = D.41129->opcode;
    if (D.41851 != 759) goto <D.42025>; else goto <D.42022>;
    <D.42025>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41851 = D.41129->opcode;
    D.41852 = D.41851 + 64985;
    if (D.41852 > 9) goto <D.42026>; else goto <D.42022>;
    <D.42026>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41851 = D.41129->opcode;
    D.41854 = D.41851 + 64878;
    if (D.41854 > 9) goto <D.42027>; else goto <D.42022>;
    <D.42027>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41851 = D.41129->opcode;
    D.41856 = D.41851 + 64888;
    if (D.41856 > 9) goto <D.42021>; else goto <D.42022>;
    <D.42021>:
    D.41128 = cfg->cbb;
    mono_link_bblock (cfg, D.41128, end_bb);
    <D.42022>:
    <D.42016>:
    D.41128 = cfg->cbb;
    D.41128->next_bb = end_bb;
    cfg->cbb = end_bb;
    D.41120 = cfg->mempool;
    ins = mono_mempool_alloc (D.41120, 56);
    ins->data.op[1].const_val = 0;
    D.41318 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.41318;
    ins->prev = 0B;
    D.41319 = ins->prev;
    ins->next = D.41319;
    ins->opcode = 424;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.41320 = ins->sreg3;
    ins->sreg2 = D.41320;
    D.41321 = ins->sreg2;
    ins->sreg1 = D.41321;
    D.41125 = cfg->ip;
    ins->cil_code = D.41125;
    ins->dreg = dreg;
    ins->sreg1 = dreg;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    if (D.41129 != 0B) goto <D.42028>; else goto <D.42029>;
    <D.42028>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41129->next = ins;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    ins->prev = D.41129;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    goto <D.42030>;
    <D.42029>:
    D.41128 = cfg->cbb;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    D.41129 = D.41128->last_ins;
    D.41128->code = D.41129;
    <D.42030>:
    ins->type = 1;
    D.41325 = ins;
    return D.41325;
  }
  <D.41754>:
  <D.41751>:
  <D.41669>:
  D.41100 = cmethod->name;
  D.41665 = *D.41100;
  if (D.41665 != 103) goto <D.42031>; else goto <D.42032>;
  <D.42031>:
  D.41325 = 0B;
  return D.41325;
  <D.42032>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.42036 = "get_Rank";
      D.42037 = MEM[(const unsigned char *)D.42036];
      D.42038 = (int) D.42037;
      D.42039 = *__s2;
      D.42040 = (int) D.42039;
      __result = D.42038 - D.42040;
      {
        if (__s2_len != 0) goto <D.42041>; else goto <D.42042>;
        <D.42041>:
        if (__result == 0) goto <D.42043>; else goto <D.42044>;
        <D.42043>:
        D.42045 = &MEM[(void *)"get_Rank" + 1B];
        D.42046 = *D.42045;
        D.42047 = (int) D.42046;
        D.42048 = __s2 + 1;
        D.42049 = *D.42048;
        D.42050 = (int) D.42049;
        __result = D.42047 - D.42050;
        if (__s2_len > 1) goto <D.42051>; else goto <D.42052>;
        <D.42051>:
        if (__result == 0) goto <D.42053>; else goto <D.42054>;
        <D.42053>:
        D.42055 = &MEM[(void *)"get_Rank" + 2B];
        D.42056 = *D.42055;
        D.42057 = (int) D.42056;
        D.42058 = __s2 + 2;
        D.42059 = *D.42058;
        D.42060 = (int) D.42059;
        __result = D.42057 - D.42060;
        if (__s2_len > 2) goto <D.42061>; else goto <D.42062>;
        <D.42061>:
        if (__result == 0) goto <D.42063>; else goto <D.42064>;
        <D.42063>:
        D.42065 = &MEM[(void *)"get_Rank" + 3B];
        D.42066 = *D.42065;
        D.42067 = (int) D.42066;
        D.42068 = __s2 + 3;
        D.42069 = *D.42068;
        D.42070 = (int) D.42069;
        __result = D.42067 - D.42070;
        <D.42064>:
        <D.42062>:
        <D.42054>:
        <D.42052>:
        <D.42044>:
        <D.42042>:
      }
      D.26127 = __result;
    }
    iftmp.432 = -D.26127;
    goto <D.42071>;
    <D.42035>:
    D.41100 = cmethod->name;
    iftmp.432 = __builtin_strcmp (D.41100, "get_Rank");
    <D.42071>:
    D.26128 = iftmp.432;
  }
  if (D.26128 == 0) goto <D.42072>; else goto <D.42073>;
  <D.42072>:
  {
    int dreg;
    int vtable_reg;

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

      __ins_flags = 32;
      D.42076 = __ins_flags & 32;
      if (D.42076 != 0) goto <D.42077>; else goto <D.42078>;
      <D.42077>:
      D.41116 = BIT_FIELD_REF <*cfg, 32, 3424>;
      D.41117 = D.41116 & 64;
      if (D.41117 != 0) goto <D.42079>; else goto <D.42080>;
      <D.42079>:
      {
        struct MonoInst * inst;

        D.41120 = cfg->mempool;
        inst = mono_mempool_alloc (D.41120, 56);
        inst->data.op[1].const_val = 0;
        D.42081 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42081;
        inst->prev = 0B;
        D.42082 = inst->prev;
        inst->next = D.42082;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42083 = inst->sreg3;
        inst->sreg2 = D.42083;
        D.42084 = inst->sreg2;
        inst->sreg1 = D.42084;
        D.41125 = cfg->ip;
        inst->cil_code = D.41125;
        inst->dreg = -1;
        D.41126 = *args;
        D.41127 = D.41126->dreg;
        inst->sreg1 = D.41127;
        inst->data.op[1].const_val = 0;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        if (D.41129 != 0B) goto <D.42085>; else goto <D.42086>;
        <D.42085>:
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        D.41129->next = inst;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        inst->prev = D.41129;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        goto <D.42087>;
        <D.42086>:
        D.41128 = cfg->cbb;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        D.41129 = D.41128->last_ins;
        D.41128->code = D.41129;
        <D.42087>:
      }
      {
        struct MonoInst * inst;

        D.41120 = cfg->mempool;
        inst = mono_mempool_alloc (D.41120, 56);
        inst->data.op[1].const_val = 0;
        D.42088 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42088;
        inst->prev = 0B;
        D.42089 = inst->prev;
        inst->next = D.42089;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42090 = inst->sreg3;
        inst->sreg2 = D.42090;
        D.42091 = inst->sreg2;
        inst->sreg1 = D.42091;
        D.41125 = cfg->ip;
        inst->cil_code = D.41125;
        inst->data.op[1].p = "NullReferenceException";
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        if (D.41129 != 0B) goto <D.42092>; else goto <D.42093>;
        <D.42092>:
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        D.41129->next = inst;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        inst->prev = D.41129;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        goto <D.42094>;
        <D.42093>:
        D.41128 = cfg->cbb;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        D.41129 = D.41128->last_ins;
        D.41128->code = D.41129;
        <D.42094>:
      }
      goto <D.42095>;
      <D.42080>:
      <D.42095>:
      <D.42078>:
      D.41120 = cfg->mempool;
      inst = mono_mempool_alloc (D.41120, 56);
      inst->data.op[1].const_val = 0;
      D.42096 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42096;
      inst->prev = 0B;
      D.42097 = inst->prev;
      inst->next = D.42097;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42098 = inst->sreg3;
      inst->sreg2 = D.42098;
      D.42099 = inst->sreg2;
      inst->sreg1 = D.42099;
      D.41125 = cfg->ip;
      inst->cil_code = D.41125;
      inst->dreg = vtable_reg;
      D.41126 = *args;
      D.41127 = D.41126->dreg;
      inst->sreg1 = D.41127;
      inst->data.op[0].const_val = 0;
      inst->type = 1;
      D.42100 = (unsigned char) __ins_flags;
      inst->flags = D.42100;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      if (D.41129 != 0B) goto <D.42101>; else goto <D.42102>;
      <D.42101>:
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      D.41129->next = inst;
      D.41128 = cfg->cbb;
      D.41129 = D.41128->last_ins;
      inst->prev = D.41129;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      goto <D.42103>;
      <D.42102>:
      D.41128 = cfg->cbb;
      D.41128 = cfg->cbb;
      D.41128->last_ins = inst;
      D.41129 = D.41128->last_ins;
      D.41128->code = D.41129;
      <D.42103>:
    }
    D.41120 = cfg->mempool;
    ins = mono_mempool_alloc (D.41120, 56);
    ins->data.op[1].const_val = 0;
    D.41318 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.41318;
    ins->prev = 0B;
    D.41319 = ins->prev;
    ins->next = D.41319;
    ins->opcode = 390;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.41320 = ins->sreg3;
    ins->sreg2 = D.41320;
    D.41321 = ins->sreg2;
    ins->sreg1 = D.41321;
    D.41125 = cfg->ip;
    ins->cil_code = D.41125;
    ins->dreg = dreg;
    ins->sreg1 = vtable_reg;
    ins->data.op[0].const_val = 22;
    ins->type = 1;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    if (D.41129 != 0B) goto <D.42104>; else goto <D.42105>;
    <D.42104>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41129->next = ins;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    ins->prev = D.41129;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    goto <D.42106>;
    <D.42105>:
    D.41128 = cfg->cbb;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    D.41129 = D.41128->last_ins;
    D.41128->code = D.41129;
    <D.42106>:
    type_from_op (ins, 0B, 0B);
    D.41325 = ins;
    return D.41325;
  }
  <D.42073>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.41329 = "get_Length";
      D.41330 = MEM[(const unsigned char *)D.41329];
      D.41331 = (int) D.41330;
      D.42110 = *__s2;
      D.42111 = (int) D.42110;
      __result = D.41331 - D.42111;
      {
        if (__s2_len != 0) goto <D.42112>; else goto <D.42113>;
        <D.42112>:
        if (__result == 0) goto <D.42114>; else goto <D.42115>;
        <D.42114>:
        D.41338 = &MEM[(void *)"get_Length" + 1B];
        D.41339 = *D.41338;
        D.41340 = (int) D.41339;
        D.42116 = __s2 + 1;
        D.42117 = *D.42116;
        D.42118 = (int) D.42117;
        __result = D.41340 - D.42118;
        if (__s2_len > 1) goto <D.42119>; else goto <D.42120>;
        <D.42119>:
        if (__result == 0) goto <D.42121>; else goto <D.42122>;
        <D.42121>:
        D.41348 = &MEM[(void *)"get_Length" + 2B];
        D.41349 = *D.41348;
        D.41350 = (int) D.41349;
        D.42123 = __s2 + 2;
        D.42124 = *D.42123;
        D.42125 = (int) D.42124;
        __result = D.41350 - D.42125;
        if (__s2_len > 2) goto <D.42126>; else goto <D.42127>;
        <D.42126>:
        if (__result == 0) goto <D.42128>; else goto <D.42129>;
        <D.42128>:
        D.41358 = &MEM[(void *)"get_Length" + 3B];
        D.41359 = *D.41358;
        D.41360 = (int) D.41359;
        D.42130 = __s2 + 3;
        D.42131 = *D.42130;
        D.42132 = (int) D.42131;
        __result = D.41360 - D.42132;
        <D.42129>:
        <D.42127>:
        <D.42122>:
        <D.42120>:
        <D.42115>:
        <D.42113>:
      }
      D.26142 = __result;
    }
    iftmp.433 = -D.26142;
    goto <D.42133>;
    <D.42109>:
    D.41100 = cmethod->name;
    iftmp.433 = __builtin_strcmp (D.41100, "get_Length");
    <D.42133>:
    D.26143 = iftmp.433;
  }
  if (D.26143 == 0) goto <D.42134>; else goto <D.42135>;
  <D.42134>:
  {
    int dreg;

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

      __ins_flags = 32;
      D.42137 = __ins_flags & 32;
      if (D.42137 != 0) goto <D.42138>; else goto <D.42139>;
      <D.42138>:
      D.41116 = BIT_FIELD_REF <*cfg, 32, 3424>;
      D.41117 = D.41116 & 64;
      if (D.41117 != 0) goto <D.42140>; else goto <D.42141>;
      <D.42140>:
      {
        struct MonoInst * inst;

        D.41120 = cfg->mempool;
        inst = mono_mempool_alloc (D.41120, 56);
        inst->data.op[1].const_val = 0;
        D.42142 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42142;
        inst->prev = 0B;
        D.42143 = inst->prev;
        inst->next = D.42143;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42144 = inst->sreg3;
        inst->sreg2 = D.42144;
        D.42145 = inst->sreg2;
        inst->sreg1 = D.42145;
        D.41125 = cfg->ip;
        inst->cil_code = D.41125;
        inst->dreg = -1;
        D.41126 = *args;
        D.41127 = D.41126->dreg;
        inst->sreg1 = D.41127;
        inst->data.op[1].const_val = 0;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        if (D.41129 != 0B) goto <D.42146>; else goto <D.42147>;
        <D.42146>:
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        D.41129->next = inst;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        inst->prev = D.41129;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        goto <D.42148>;
        <D.42147>:
        D.41128 = cfg->cbb;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        D.41129 = D.41128->last_ins;
        D.41128->code = D.41129;
        <D.42148>:
      }
      {
        struct MonoInst * inst;

        D.41120 = cfg->mempool;
        inst = mono_mempool_alloc (D.41120, 56);
        inst->data.op[1].const_val = 0;
        D.42149 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42149;
        inst->prev = 0B;
        D.42150 = inst->prev;
        inst->next = D.42150;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42151 = inst->sreg3;
        inst->sreg2 = D.42151;
        D.42152 = inst->sreg2;
        inst->sreg1 = D.42152;
        D.41125 = cfg->ip;
        inst->cil_code = D.41125;
        inst->data.op[1].p = "NullReferenceException";
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        if (D.41129 != 0B) goto <D.42153>; else goto <D.42154>;
        <D.42153>:
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        D.41129->next = inst;
        D.41128 = cfg->cbb;
        D.41129 = D.41128->last_ins;
        inst->prev = D.41129;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        goto <D.42155>;
        <D.42154>:
        D.41128 = cfg->cbb;
        D.41128 = cfg->cbb;
        D.41128->last_ins = inst;
        D.41129 = D.41128->last_ins;
        D.41128->code = D.41129;
        <D.42155>:
      }
      goto <D.42156>;
      <D.42141>:
      <D.42156>:
      <D.42139>:
      D.41120 = cfg->mempool;
      ins = mono_mempool_alloc (D.41120, 56);
      ins->data.op[1].const_val = 0;
      D.41318 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.41318;
      ins->prev = 0B;
      D.41319 = ins->prev;
      ins->next = D.41319;
      ins->opcode = 393;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.41320 = ins->sreg3;
      ins->sreg2 = D.41320;
      D.41321 = ins->sreg2;
      ins->sreg1 = D.41321;
      D.41125 = cfg->ip;
      ins->cil_code = D.41125;
      ins->dreg = dreg;
      D.41126 = *args;
      D.41127 = D.41126->dreg;
      ins->sreg1 = D.41127;
      ins->data.op[0].const_val = 12;
      ins->type = 1;
      D.42157 = (unsigned char) __ins_flags;
      ins->flags = D.42157;
    }
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    if (D.41129 != 0B) goto <D.42158>; else goto <D.42159>;
    <D.42158>:
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    D.41129->next = ins;
    D.41128 = cfg->cbb;
    D.41129 = D.41128->last_ins;
    ins->prev = D.41129;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    goto <D.42160>;
    <D.42159>:
    D.41128 = cfg->cbb;
    D.41128 = cfg->cbb;
    D.41128->last_ins = ins;
    D.41129 = D.41128->last_ins;
    D.41128->code = D.41129;
    <D.42160>:
    type_from_op (ins, 0B, 0B);
    D.41325 = ins;
    return D.41325;
  }
  <D.42135>:
  D.41325 = 0B;
  return D.41325;
  <D.41619>:
  D.41057 = cmethod->klass;
  runtime_helpers_class.420 = runtime_helpers_class;
  if (D.41057 == runtime_helpers_class.420) goto <D.42161>; else goto <D.42162>;
  <D.42161>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.42166 = "get_OffsetToStringData";
      D.42167 = MEM[(const unsigned char *)D.42166];
      D.42168 = (int) D.42167;
      D.42169 = *__s2;
      D.42170 = (int) D.42169;
      __result = D.42168 - D.42170;
      {
        if (__s2_len != 0) goto <D.42171>; else goto <D.42172>;
        <D.42171>:
        if (__result == 0) goto <D.42173>; else goto <D.42174>;
        <D.42173>:
        D.42175 = &MEM[(void *)"get_OffsetToStringData" + 1B];
        D.42176 = *D.42175;
        D.42177 = (int) D.42176;
        D.42178 = __s2 + 1;
        D.42179 = *D.42178;
        D.42180 = (int) D.42179;
        __result = D.42177 - D.42180;
        if (__s2_len > 1) goto <D.42181>; else goto <D.42182>;
        <D.42181>:
        if (__result == 0) goto <D.42183>; else goto <D.42184>;
        <D.42183>:
        D.42185 = &MEM[(void *)"get_OffsetToStringData" + 2B];
        D.42186 = *D.42185;
        D.42187 = (int) D.42186;
        D.42188 = __s2 + 2;
        D.42189 = *D.42188;
        D.42190 = (int) D.42189;
        __result = D.42187 - D.42190;
        if (__s2_len > 2) goto <D.42191>; else goto <D.42192>;
        <D.42191>:
        if (__result == 0) goto <D.42193>; else goto <D.42194>;
        <D.42193>:
        D.42195 = &MEM[(void *)"get_OffsetToStringData" + 3B];
        D.42196 = *D.42195;
        D.42197 = (int) D.42196;
        D.42198 = __s2 + 3;
        D.42199 = *D.42198;
        D.42200 = (int) D.42199;
        __result = D.42197 - D.42200;
        <D.42194>:
        <D.42192>:
        <D.42184>:
        <D.42182>:
        <D.42174>:
        <D.42172>:
      }
      D.26155 = __result;
    }
    iftmp.434 = -D.26155;
    goto <D.42201>;
    <D.42165>:
    D.41100 = cmethod->name;
    iftmp.434 = __builtin_strcmp (D.41100, "get_OffsetToStringData");
    <D.42201>:
    D.26156 = iftmp.434;
  }
  if (D.26156 == 0) goto <D.42202>; else goto <D.42203>;
  <D.42202>:
  D.41120 = cfg->mempool;
  ins = mono_mempool_alloc (D.41120, 56);
  ins->data.op[1].const_val = 0;
  D.41318 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.41318;
  ins->prev = 0B;
  D.41319 = ins->prev;
  ins->next = D.41319;
  ins->opcode = 362;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.41320 = ins->sreg3;
  ins->sreg2 = D.41320;
  D.41321 = ins->sreg2;
  ins->sreg1 = D.41321;
  D.41125 = cfg->ip;
  ins->cil_code = D.41125;
  ins->data.op[0].const_val = 12;
  ins->type = 1;
  D.42204 = alloc_dreg (cfg, 1);
  D.42205 = (int) D.42204;
  ins->dreg = D.42205;
  D.41128 = cfg->cbb;
  D.41129 = D.41128->last_ins;
  if (D.41129 != 0B) goto <D.42206>; else goto <D.42207>;
  <D.42206>:
  D.41128 = cfg->cbb;
  D.41129 = D.41128->last_ins;
  D.41129->next = ins;
  D.41128 = cfg->cbb;
  D.41129 = D.41128->last_ins;
  ins->prev = D.41129;
  D.41128 = cfg->cbb;
  D.41128->last_ins = ins;
  goto <D.42208>;
  <D.42207>:
  D.41128 = cfg->cbb;
  D.41128 = cfg->cbb;
  D.41128->last_ins = ins;
  D.41129 = D.41128->last_ins;
  D.41128->code = D.41129;
  <D.42208>:
  D.41325 = ins;
  return D.41325;
  <D.42203>:
  D.41325 = 0B;
  return D.41325;
  <D.42162>:
  D.41057 = cmethod->klass;
  D.42209 = mono_defaults.thread_class;
  if (D.41057 == D.42209) goto <D.42210>; else goto <D.42211>;
  <D.42210>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.42215 = "SpinWait_nop";
      D.42216 = MEM[(const unsigned char *)D.42215];
      D.42217 = (int) D.42216;
      D.42218 = *__s2;
      D.42219 = (int) D.42218;
      __result = D.42217 - D.42219;
      {
        if (__s2_len != 0) goto <D.42220>; else goto <D.42221>;
        <D.42220>:
        if (__result == 0) goto <D.42222>; else goto <D.42223>;
        <D.42222>:
        D.42224 = &MEM[(void *)"SpinWait_nop" + 1B];
        D.42225 = *D.42224;
        D.42226 = (int) D.42225;
        D.42227 = __s2 + 1;
        D.42228 = *D.42227;
        D.42229 = (int) D.42228;
        __result = D.42226 - D.42229;
        if (__s2_len > 1) goto <D.42230>; else goto <D.42231>;
        <D.42230>:
        if (__result == 0) goto <D.42232>; else goto <D.42233>;
        <D.42232>:
        D.42234 = &MEM[(void *)"SpinWait_nop" + 2B];
        D.42235 = *D.42234;
        D.42236 = (int) D.42235;
        D.42237 = __s2 + 2;
        D.42238 = *D.42237;
        D.42239 = (int) D.42238;
        __result = D.42236 - D.42239;
        if (__s2_len > 2) goto <D.42240>; else goto <D.42241>;
        <D.42240>:
        if (__result == 0) goto <D.42242>; else goto <D.42243>;
        <D.42242>:
        D.42244 = &MEM[(void *)"SpinWait_nop" + 3B];
        D.42245 = *D.42244;
        D.42246 = (int) D.42245;
        D.42247 = __s2 + 3;
        D.42248 = *D.42247;
        D.42249 = (int) D.42248;
        __result = D.42246 - D.42249;
        <D.42243>:
        <D.42241>:
        <D.42233>:
        <D.42231>:
        <D.42223>:
        <D.42221>:
      }
      D.26164 = __result;
    }
    iftmp.435 = -D.26164;
    goto <D.42250>;
    <D.42214>:
    D.41100 = cmethod->name;
    iftmp.435 = __builtin_strcmp (D.41100, "SpinWait_nop");
    <D.42250>:
    D.26165 = iftmp.435;
  }
  if (D.26165 == 0) goto <D.42251>; else goto <D.42252>;
  <D.42251>:
  D.41120 = cfg->mempool;
  ins = mono_mempool_alloc (D.41120, 56);
  ins->data.op[1].const_val = 0;
  D.41318 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.41318;
  ins->prev = 0B;
  D.41319 = ins->prev;
  ins->next = D.41319;
  ins->opcode = 318;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.41320 = ins->sreg3;
  ins->sreg2 = D.41320;
  D.41321 = ins->sreg2;
  ins->sreg1 = D.41321;
  D.41125 = cfg->ip;
  ins->cil_code = D.41125;
  D.41128 = cfg->cbb;
  D.41129 = D.41128->last_ins;
  if (D.41129 != 0B) goto <D.42253>; else goto <D.42254>;
  <D.42253>:
  D.41128 = cfg->cbb;
  D.41129 = D.41128->last_ins;
  D.41129->next = ins;
  D.41128 = cfg->cbb;
  D.41129 = D.41128->last_ins;
  ins->prev = D.41129;
  D.41128 = cfg->cbb;
  D.41128->last_ins = ins;
  goto <D.42255>;
  <D.42254>:
  D.41128 = cfg->cbb;
  D.41128 = cfg->cbb;
  D.41128->last_ins = ins;
  D.41129 = D.41128->last_ins;
  D.41128->code = D.41129;
  <D.42255>:
  D.41325 = ins;
  return D.41325;
  <D.42252>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.42259 = "MemoryBarrier";
      D.42260 = MEM[(const unsigned char *)D.42259];
      D.42261 = (int) D.42260;
      D.42262 = *__s2;
      D.42263 = (int) D.42262;
      __result = D.42261 - D.42263;
      {
        if (__s2_len != 0) goto <D.42264>; else goto <D.42265>;
        <D.42264>:
        if (__result == 0) goto <D.42266>; else goto <D.42267>;
        <D.42266>:
        D.42268 = &MEM[(void *)"MemoryBarrier" + 1B];
        D.42269 = *D.42268;
        D.42270 = (int) D.42269;
        D.42271 = __s2 + 1;
        D.42272 = *D.42271;
        D.42273 = (int) D.42272;
        __result = D.42270 - D.42273;
        if (__s2_len > 1) goto <D.42274>; else goto <D.42275>;
        <D.42274>:
        if (__result == 0) goto <D.42276>; else goto <D.42277>;
        <D.42276>:
        D.42278 = &MEM[(void *)"MemoryBarrier" + 2B];
        D.42279 = *D.42278;
        D.42280 = (int) D.42279;
        D.42281 = __s2 + 2;
        D.42282 = *D.42281;
        D.42283 = (int) D.42282;
        __result = D.42280 - D.42283;
        if (__s2_len > 2) goto <D.42284>; else goto <D.42285>;
        <D.42284>:
        if (__result == 0) goto <D.42286>; else goto <D.42287>;
        <D.42286>:
        D.42288 = &MEM[(void *)"MemoryBarrier" + 3B];
        D.42289 = *D.42288;
        D.42290 = (int) D.42289;
        D.42291 = __s2 + 3;
        D.42292 = *D.42291;
        D.42293 = (int) D.42292;
        __result = D.42290 - D.42293;
        <D.42287>:
        <D.42285>:
        <D.42277>:
        <D.42275>:
        <D.42267>:
        <D.42265>:
      }
      D.26173 = __result;
    }
    iftmp.436 = -D.26173;
    goto <D.42294>;
    <D.42258>:
    D.41100 = cmethod->name;
    iftmp.436 = __builtin_strcmp (D.41100, "MemoryBarrier");
    <D.42294>:
    D.26174 = iftmp.436;
  }
  if (D.26174 == 0) goto <D.42295>; else goto <D.42296>;
  <D.42295>:
  D.41325 = emit_memory_barrier (cfg, 4);
  return D.41325;
  <D.42296>:
  goto <D.42297>;
  <D.42211>:
  D.41057 = cmethod->klass;
  D.42298 = mono_defaults.monitor_class;
  if (D.41057 == D.42298) goto <D.42299>; else goto <D.42300>;
  <D.42299>:
  goto <D.42301>;
  <D.42300>:
  D.41057 = cmethod->klass;
  D.42304 = D.41057->image;
  D.41055 = mono_defaults.corlib;
  if (D.42304 == D.41055) goto <D.42305>; else goto <D.42302>;
  <D.42305>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.41057 = cmethod->klass;
      __s2 = D.41057->name_space;
      D.42309 = "System.Threading";
      D.42310 = MEM[(const unsigned char *)D.42309];
      D.42311 = (int) D.42310;
      D.42312 = *__s2;
      D.42313 = (int) D.42312;
      __result = D.42311 - D.42313;
      {
        if (__s2_len != 0) goto <D.42314>; else goto <D.42315>;
        <D.42314>:
        if (__result == 0) goto <D.42316>; else goto <D.42317>;
        <D.42316>:
        D.42318 = &MEM[(void *)"System.Threading" + 1B];
        D.42319 = *D.42318;
        D.42320 = (int) D.42319;
        D.42321 = __s2 + 1;
        D.42322 = *D.42321;
        D.42323 = (int) D.42322;
        __result = D.42320 - D.42323;
        if (__s2_len > 1) goto <D.42324>; else goto <D.42325>;
        <D.42324>:
        if (__result == 0) goto <D.42326>; else goto <D.42327>;
        <D.42326>:
        D.42328 = &MEM[(void *)"System.Threading" + 2B];
        D.42329 = *D.42328;
        D.42330 = (int) D.42329;
        D.42331 = __s2 + 2;
        D.42332 = *D.42331;
        D.42333 = (int) D.42332;
        __result = D.42330 - D.42333;
        if (__s2_len > 2) goto <D.42334>; else goto <D.42335>;
        <D.42334>:
        if (__result == 0) goto <D.42336>; else goto <D.42337>;
        <D.42336>:
        D.42338 = &MEM[(void *)"System.Threading" + 3B];
        D.42339 = *D.42338;
        D.42340 = (int) D.42339;
        D.42341 = __s2 + 3;
        D.42342 = *D.42341;
        D.42343 = (int) D.42342;
        __result = D.42340 - D.42343;
        <D.42337>:
        <D.42335>:
        <D.42327>:
        <D.42325>:
        <D.42317>:
        <D.42315>:
      }
      D.26182 = __result;
    }
    iftmp.437 = -D.26182;
    goto <D.42344>;
    <D.42308>:
    D.41057 = cmethod->klass;
    D.42345 = D.41057->name_space;
    iftmp.437 = __builtin_strcmp (D.42345, "System.Threading");
    <D.42344>:
    D.26183 = iftmp.437;
  }
  if (D.26183 == 0) goto <D.42346>; else goto <D.42302>;
  <D.42346>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.41057 = cmethod->klass;
      __s2 = D.41057->name;
      D.42350 = "Interlocked";
      D.42351 = MEM[(const unsigned char *)D.42350];
      D.42352 = (int) D.42351;
      D.42353 = *__s2;
      D.42354 = (int) D.42353;
      __result = D.42352 - D.42354;
      {
        if (__s2_len != 0) goto <D.42355>; else goto <D.42356>;
        <D.42355>:
        if (__result == 0) goto <D.42357>; else goto <D.42358>;
        <D.42357>:
        D.42359 = &MEM[(void *)"Interlocked" + 1B];
        D.42360 = *D.42359;
        D.42361 = (int) D.42360;
        D.42362 = __s2 + 1;
        D.42363 = *D.42362;
        D.42364 = (int) D.42363;
        __result = D.42361 - D.42364;
        if (__s2_len > 1) goto <D.42365>; else goto <D.42366>;
        <D.42365>:
        if (__result == 0) goto <D.42367>; else goto <D.42368>;
        <D.42367>:
        D.42369 = &MEM[(void *)"Interlocked" + 2B];
        D.42370 = *D.42369;
        D.42371 = (int) D.42370;
        D.42372 = __s2 + 2;
        D.42373 = *D.42372;
        D.42374 = (int) D.42373;
        __result = D.42371 - D.42374;
        if (__s2_len > 2) goto <D.42375>; else goto <D.42376>;
        <D.42375>:
        if (__result == 0) goto <D.42377>; else goto <D.42378>;
        <D.42377>:
        D.42379 = &MEM[(void *)"Interlocked" + 3B];
        D.42380 = *D.42379;
        D.42381 = (int) D.42380;
        D.42382 = __s2 + 3;
        D.42383 = *D.42382;
        D.42384 = (int) D.42383;
        __result = D.42381 - D.42384;
        <D.42378>:
        <D.42376>:
        <D.42368>:
        <D.42366>:
        <D.42358>:
        <D.42356>:
      }
      D.26191 = __result;
    }
    iftmp.438 = -D.26191;
    goto <D.42385>;
    <D.42349>:
    D.41057 = cmethod->klass;
    D.42386 = D.41057->name;
    iftmp.438 = __builtin_strcmp (D.42386, "Interlocked");
    <D.42385>:
    D.26192 = iftmp.438;
  }
  if (D.26192 == 0) goto <D.42387>; else goto <D.42302>;
  <D.42387>:
  ins = 0B;
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.42259 = "MemoryBarrier";
      D.42260 = MEM[(const unsigned char *)D.42259];
      D.42261 = (int) D.42260;
      D.42391 = *__s2;
      D.42392 = (int) D.42391;
      __result = D.42261 - D.42392;
      {
        if (__s2_len != 0) goto <D.42393>; else goto <D.42394>;
        <D.42393>:
        if (__result == 0) goto <D.42395>; else goto <D.42396>;
        <D.42395>:
        D.42268 = &MEM[(void *)"MemoryBarrier" + 1B];
        D.42269 = *D.42268;
        D.42270 = (int) D.42269;
        D.42397 = __s2 + 1;
        D.42398 = *D.42397;
        D.42399 = (int) D.42398;
        __result = D.42270 - D.42399;
        if (__s2_len > 1) goto <D.42400>; else goto <D.42401>;
        <D.42400>:
        if (__result == 0) goto <D.42402>; else goto <D.42403>;
        <D.42402>:
        D.42278 = &MEM[(void *)"MemoryBarrier" + 2B];
        D.42279 = *D.42278;
        D.42280 = (int) D.42279;
        D.42404 = __s2 + 2;
        D.42405 = *D.42404;
        D.42406 = (int) D.42405;
        __result = D.42280 - D.42406;
        if (__s2_len > 2) goto <D.42407>; else goto <D.42408>;
        <D.42407>:
        if (__result == 0) goto <D.42409>; else goto <D.42410>;
        <D.42409>:
        D.42288 = &MEM[(void *)"MemoryBarrier" + 3B];
        D.42289 = *D.42288;
        D.42290 = (int) D.42289;
        D.42411 = __s2 + 3;
        D.42412 = *D.42411;
        D.42413 = (int) D.42412;
        __result = D.42290 - D.42413;
        <D.42410>:
        <D.42408>:
        <D.42403>:
        <D.42401>:
        <D.42396>:
        <D.42394>:
      }
      D.26200 = __result;
    }
    iftmp.439 = -D.26200;
    goto <D.42414>;
    <D.42390>:
    D.41100 = cmethod->name;
    iftmp.439 = __builtin_strcmp (D.41100, "MemoryBarrier");
    <D.42414>:
    D.26201 = iftmp.439;
  }
  if (D.26201 == 0) goto <D.42415>; else goto <D.42416>;
  <D.42415>:
  ins = emit_memory_barrier (cfg, 4);
  <D.42416>:
  if (ins != 0B) goto <D.42417>; else goto <D.42418>;
  <D.42417>:
  D.41325 = ins;
  return D.41325;
  <D.42418>:
  goto <D.42303>;
  <D.42302>:
  D.41057 = cmethod->klass;
  D.42304 = D.41057->image;
  D.41055 = mono_defaults.corlib;
  if (D.42304 == D.41055) goto <D.42419>; else goto <D.42420>;
  <D.42419>:
  D.41100 = cmethod->name;
  D.41665 = *D.41100;
  if (D.41665 == 66) goto <D.42421>; else goto <D.42422>;
  <D.42421>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.42426 = "Break";
      D.42427 = MEM[(const unsigned char *)D.42426];
      D.42428 = (int) D.42427;
      D.42429 = *__s2;
      D.42430 = (int) D.42429;
      __result = D.42428 - D.42430;
      {
        if (__s2_len != 0) goto <D.42431>; else goto <D.42432>;
        <D.42431>:
        if (__result == 0) goto <D.42433>; else goto <D.42434>;
        <D.42433>:
        D.42435 = &MEM[(void *)"Break" + 1B];
        D.42436 = *D.42435;
        D.42437 = (int) D.42436;
        D.42438 = __s2 + 1;
        D.42439 = *D.42438;
        D.42440 = (int) D.42439;
        __result = D.42437 - D.42440;
        if (__s2_len > 1) goto <D.42441>; else goto <D.42442>;
        <D.42441>:
        if (__result == 0) goto <D.42443>; else goto <D.42444>;
        <D.42443>:
        D.42445 = &MEM[(void *)"Break" + 2B];
        D.42446 = *D.42445;
        D.42447 = (int) D.42446;
        D.42448 = __s2 + 2;
        D.42449 = *D.42448;
        D.42450 = (int) D.42449;
        __result = D.42447 - D.42450;
        if (__s2_len > 2) goto <D.42451>; else goto <D.42452>;
        <D.42451>:
        if (__result == 0) goto <D.42453>; else goto <D.42454>;
        <D.42453>:
        D.42455 = &MEM[(void *)"Break" + 3B];
        D.42456 = *D.42455;
        D.42457 = (int) D.42456;
        D.42458 = __s2 + 3;
        D.42459 = *D.42458;
        D.42460 = (int) D.42459;
        __result = D.42457 - D.42460;
        <D.42454>:
        <D.42452>:
        <D.42444>:
        <D.42442>:
        <D.42434>:
        <D.42432>:
      }
      D.26209 = __result;
    }
    iftmp.440 = -D.26209;
    goto <D.42461>;
    <D.42425>:
    D.41100 = cmethod->name;
    iftmp.440 = __builtin_strcmp (D.41100, "Break");
    <D.42461>:
    D.26210 = iftmp.440;
  }
  if (D.26210 == 0) goto <D.42462>; else goto <D.42463>;
  <D.42462>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.41057 = cmethod->klass;
      __s2 = D.41057->name;
      D.42467 = "Debugger";
      D.42468 = MEM[(const unsigned char *)D.42467];
      D.42469 = (int) D.42468;
      D.42470 = *__s2;
      D.42471 = (int) D.42470;
      __result = D.42469 - D.42471;
      {
        if (__s2_len != 0) goto <D.42472>; else goto <D.42473>;
        <D.42472>:
        if (__result == 0) goto <D.42474>; else goto <D.42475>;
        <D.42474>:
        D.42476 = &MEM[(void *)"Debugger" + 1B];
        D.42477 = *D.42476;
        D.42478 = (int) D.42477;
        D.42479 = __s2 + 1;
        D.42480 = *D.42479;
        D.42481 = (int) D.42480;
        __result = D.42478 - D.42481;
        if (__s2_len > 1) goto <D.42482>; else goto <D.42483>;
        <D.42482>:
        if (__result == 0) goto <D.42484>; else goto <D.42485>;
        <D.42484>:
        D.42486 = &MEM[(void *)"Debugger" + 2B];
        D.42487 = *D.42486;
        D.42488 = (int) D.42487;
        D.42489 = __s2 + 2;
        D.42490 = *D.42489;
        D.42491 = (int) D.42490;
        __result = D.42488 - D.42491;
        if (__s2_len > 2) goto <D.42492>; else goto <D.42493>;
        <D.42492>:
        if (__result == 0) goto <D.42494>; else goto <D.42495>;
        <D.42494>:
        D.42496 = &MEM[(void *)"Debugger" + 3B];
        D.42497 = *D.42496;
        D.42498 = (int) D.42497;
        D.42499 = __s2 + 3;
        D.42500 = *D.42499;
        D.42501 = (int) D.42500;
        __result = D.42498 - D.42501;
        <D.42495>:
        <D.42493>:
        <D.42485>:
        <D.42483>:
        <D.42475>:
        <D.42473>:
      }
      D.26218 = __result;
    }
    iftmp.441 = -D.26218;
    goto <D.42502>;
    <D.42466>:
    D.41057 = cmethod->klass;
    D.42386 = D.41057->name;
    iftmp.441 = __builtin_strcmp (D.42386, "Debugger");
    <D.42502>:
    D.26219 = iftmp.441;
  }
  if (D.26219 == 0) goto <D.42503>; else goto <D.42504>;
  <D.42503>:
  D.42505 = cfg->method;
  D.42506 = should_insert_brekpoint (D.42505);
  if (D.42506 != 0) goto <D.42507>; else goto <D.42508>;
  <D.42507>:
  ins = mono_emit_jit_icall (cfg, mono_debugger_agent_user_break, 0B);
  goto <D.42509>;
  <D.42508>:
  D.41120 = cfg->mempool;
  ins = mono_mempool_alloc (D.41120, 56);
  ins->data.op[1].const_val = 0;
  D.41318 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.41318;
  ins->prev = 0B;
  D.41319 = ins->prev;
  ins->next = D.41319;
  ins->opcode = 316;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.41320 = ins->sreg3;
  ins->sreg2 = D.41320;
  D.41321 = ins->sreg2;
  ins->sreg1 = D.41321;
  D.41125 = cfg->ip;
  ins->cil_code = D.41125;
  D.41128 = cfg->cbb;
  D.41129 = D.41128->last_ins;
  if (D.41129 != 0B) goto <D.42510>; else goto <D.42511>;
  <D.42510>:
  D.41128 = cfg->cbb;
  D.41129 = D.41128->last_ins;
  D.41129->next = ins;
  D.41128 = cfg->cbb;
  D.41129 = D.41128->last_ins;
  ins->prev = D.41129;
  D.41128 = cfg->cbb;
  D.41128->last_ins = ins;
  goto <D.42512>;
  <D.42511>:
  D.41128 = cfg->cbb;
  D.41128 = cfg->cbb;
  D.41128->last_ins = ins;
  D.41129 = D.41128->last_ins;
  D.41128->code = D.41129;
  <D.42512>:
  <D.42509>:
  D.41325 = ins;
  return D.41325;
  <D.42504>:
  <D.42463>:
  <D.42422>:
  D.41100 = cmethod->name;
  D.41665 = *D.41100;
  if (D.41665 == 103) goto <D.42513>; else goto <D.42514>;
  <D.42513>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

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

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

      D.41057 = cmethod->klass;
      __s2 = D.41057->name;
      D.42559 = "Environment";
      D.42560 = MEM[(const unsigned char *)D.42559];
      D.42561 = (int) D.42560;
      D.42562 = *__s2;
      D.42563 = (int) D.42562;
      __result = D.42561 - D.42563;
      {
        if (__s2_len != 0) goto <D.42564>; else goto <D.42565>;
        <D.42564>:
        if (__result == 0) goto <D.42566>; else goto <D.42567>;
        <D.42566>:
        D.42568 = &MEM[(void *)"Environment" + 1B];
        D.42569 = *D.42568;
        D.42570 = (int) D.42569;
        D.42571 = __s2 + 1;
        D.42572 = *D.42571;
        D.42573 = (int) D.42572;
        __result = D.42570 - D.42573;
        if (__s2_len > 1) goto <D.42574>; else goto <D.42575>;
        <D.42574>:
        if (__result == 0) goto <D.42576>; else goto <D.42577>;
        <D.42576>:
        D.42578 = &MEM[(void *)"Environment" + 2B];
        D.42579 = *D.42578;
        D.42580 = (int) D.42579;
        D.42581 = __s2 + 2;
        D.42582 = *D.42581;
        D.42583 = (int) D.42582;
        __result = D.42580 - D.42583;
        if (__s2_len > 2) goto <D.42584>; else goto <D.42585>;
        <D.42584>:
        if (__result == 0) goto <D.42586>; else goto <D.42587>;
        <D.42586>:
        D.42588 = &MEM[(void *)"Environment" + 3B];
        D.42589 = *D.42588;
        D.42590 = (int) D.42589;
        D.42591 = __s2 + 3;
        D.42592 = *D.42591;
        D.42593 = (int) D.42592;
        __result = D.42590 - D.42593;
        <D.42587>:
        <D.42585>:
        <D.42577>:
        <D.42575>:
        <D.42567>:
        <D.42565>:
      }
      D.26236 = __result;
    }
    iftmp.443 = -D.26236;
    goto <D.42594>;
    <D.42558>:
    D.41057 = cmethod->klass;
    D.42386 = D.41057->name;
    iftmp.443 = __builtin_strcmp (D.42386, "Environment");
    <D.42594>:
    D.26237 = iftmp.443;
  }
  if (D.26237 == 0) goto <D.42595>; else goto <D.42596>;
  <D.42595>:
  D.41120 = cfg->mempool;
  ins = mono_mempool_alloc (D.41120, 56);
  ins->data.op[1].const_val = 0;
  D.41318 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.41318;
  ins->prev = 0B;
  D.41319 = ins->prev;
  ins->next = D.41319;
  ins->opcode = 362;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.41320 = ins->sreg3;
  ins->sreg2 = D.41320;
  D.41321 = ins->sreg2;
  ins->sreg1 = D.41321;
  D.41125 = cfg->ip;
  ins->cil_code = D.41125;
  ins->data.op[0].const_val = 0;
  ins->type = 1;
  D.42597 = alloc_dreg (cfg, 1);
  D.42598 = (int) D.42597;
  ins->dreg = D.42598;
  D.41128 = cfg->cbb;
  D.41129 = D.41128->last_ins;
  if (D.41129 != 0B) goto <D.42599>; else goto <D.42600>;
  <D.42599>:
  D.41128 = cfg->cbb;
  D.41129 = D.41128->last_ins;
  D.41129->next = ins;
  D.41128 = cfg->cbb;
  D.41129 = D.41128->last_ins;
  ins->prev = D.41129;
  D.41128 = cfg->cbb;
  D.41128->last_ins = ins;
  goto <D.42601>;
  <D.42600>:
  D.41128 = cfg->cbb;
  D.41128 = cfg->cbb;
  D.41128->last_ins = ins;
  D.41129 = D.41128->last_ins;
  D.41128->code = D.41129;
  <D.42601>:
  D.41325 = ins;
  return D.41325;
  <D.42596>:
  <D.42555>:
  <D.42514>:
  goto <D.42602>;
  <D.42420>:
  D.41057 = cmethod->klass;
  D.42603 = mono_defaults.math_class;
  if (D.41057 == D.42603) goto <D.42604>; else goto <D.42605>;
  <D.42604>:
  goto <D.42606>;
  <D.42605>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.41057 = cmethod->klass;
      D.42304 = D.41057->image;
      D.42612 = D.42304->assembly;
      __s2 = D.42612->aname.name;
      D.42613 = "MonoMac";
      D.42614 = MEM[(const unsigned char *)D.42613];
      D.42615 = (int) D.42614;
      D.42616 = *__s2;
      D.42617 = (int) D.42616;
      __result = D.42615 - D.42617;
      {
        if (__s2_len != 0) goto <D.42618>; else goto <D.42619>;
        <D.42618>:
        if (__result == 0) goto <D.42620>; else goto <D.42621>;
        <D.42620>:
        D.42622 = &MEM[(void *)"MonoMac" + 1B];
        D.42623 = *D.42622;
        D.42624 = (int) D.42623;
        D.42625 = __s2 + 1;
        D.42626 = *D.42625;
        D.42627 = (int) D.42626;
        __result = D.42624 - D.42627;
        if (__s2_len > 1) goto <D.42628>; else goto <D.42629>;
        <D.42628>:
        if (__result == 0) goto <D.42630>; else goto <D.42631>;
        <D.42630>:
        D.42632 = &MEM[(void *)"MonoMac" + 2B];
        D.42633 = *D.42632;
        D.42634 = (int) D.42633;
        D.42635 = __s2 + 2;
        D.42636 = *D.42635;
        D.42637 = (int) D.42636;
        __result = D.42634 - D.42637;
        if (__s2_len > 2) goto <D.42638>; else goto <D.42639>;
        <D.42638>:
        if (__result == 0) goto <D.42640>; else goto <D.42641>;
        <D.42640>:
        D.42642 = &MEM[(void *)"MonoMac" + 3B];
        D.42643 = *D.42642;
        D.42644 = (int) D.42643;
        D.42645 = __s2 + 3;
        D.42646 = *D.42645;
        D.42647 = (int) D.42646;
        __result = D.42644 - D.42647;
        <D.42641>:
        <D.42639>:
        <D.42631>:
        <D.42629>:
        <D.42621>:
        <D.42619>:
      }
      D.26245 = __result;
    }
    iftmp.444 = -D.26245;
    goto <D.42648>;
    <D.42611>:
    D.41057 = cmethod->klass;
    D.42304 = D.41057->image;
    D.42612 = D.42304->assembly;
    D.42649 = D.42612->aname.name;
    iftmp.444 = __builtin_strcmp (D.42649, "MonoMac");
    <D.42648>:
    D.26246 = iftmp.444;
  }
  if (D.26246 == 0) goto <D.42607>; else goto <D.42650>;
  <D.42650>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.41057 = cmethod->klass;
      D.42304 = D.41057->image;
      D.42612 = D.42304->assembly;
      __s2 = D.42612->aname.name;
      D.42654 = "monotouch";
      D.42655 = MEM[(const unsigned char *)D.42654];
      D.42656 = (int) D.42655;
      D.42657 = *__s2;
      D.42658 = (int) D.42657;
      __result = D.42656 - D.42658;
      {
        if (__s2_len != 0) goto <D.42659>; else goto <D.42660>;
        <D.42659>:
        if (__result == 0) goto <D.42661>; else goto <D.42662>;
        <D.42661>:
        D.42663 = &MEM[(void *)"monotouch" + 1B];
        D.42664 = *D.42663;
        D.42665 = (int) D.42664;
        D.42666 = __s2 + 1;
        D.42667 = *D.42666;
        D.42668 = (int) D.42667;
        __result = D.42665 - D.42668;
        if (__s2_len > 1) goto <D.42669>; else goto <D.42670>;
        <D.42669>:
        if (__result == 0) goto <D.42671>; else goto <D.42672>;
        <D.42671>:
        D.42673 = &MEM[(void *)"monotouch" + 2B];
        D.42674 = *D.42673;
        D.42675 = (int) D.42674;
        D.42676 = __s2 + 2;
        D.42677 = *D.42676;
        D.42678 = (int) D.42677;
        __result = D.42675 - D.42678;
        if (__s2_len > 2) goto <D.42679>; else goto <D.42680>;
        <D.42679>:
        if (__result == 0) goto <D.42681>; else goto <D.42682>;
        <D.42681>:
        D.42683 = &MEM[(void *)"monotouch" + 3B];
        D.42684 = *D.42683;
        D.42685 = (int) D.42684;
        D.42686 = __s2 + 3;
        D.42687 = *D.42686;
        D.42688 = (int) D.42687;
        __result = D.42685 - D.42688;
        <D.42682>:
        <D.42680>:
        <D.42672>:
        <D.42670>:
        <D.42662>:
        <D.42660>:
      }
      D.26254 = __result;
    }
    iftmp.445 = -D.26254;
    goto <D.42689>;
    <D.42653>:
    D.41057 = cmethod->klass;
    D.42304 = D.41057->image;
    D.42612 = D.42304->assembly;
    D.42649 = D.42612->aname.name;
    iftmp.445 = __builtin_strcmp (D.42649, "monotouch");
    <D.42689>:
    D.26255 = iftmp.445;
  }
  if (D.26255 == 0) goto <D.42607>; else goto <D.42608>;
  <D.42607>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.41057 = cmethod->klass;
      __s2 = D.41057->name;
      D.42693 = "Selector";
      D.42694 = MEM[(const unsigned char *)D.42693];
      D.42695 = (int) D.42694;
      D.42696 = *__s2;
      D.42697 = (int) D.42696;
      __result = D.42695 - D.42697;
      {
        if (__s2_len != 0) goto <D.42698>; else goto <D.42699>;
        <D.42698>:
        if (__result == 0) goto <D.42700>; else goto <D.42701>;
        <D.42700>:
        D.42702 = &MEM[(void *)"Selector" + 1B];
        D.42703 = *D.42702;
        D.42704 = (int) D.42703;
        D.42705 = __s2 + 1;
        D.42706 = *D.42705;
        D.42707 = (int) D.42706;
        __result = D.42704 - D.42707;
        if (__s2_len > 1) goto <D.42708>; else goto <D.42709>;
        <D.42708>:
        if (__result == 0) goto <D.42710>; else goto <D.42711>;
        <D.42710>:
        D.42712 = &MEM[(void *)"Selector" + 2B];
        D.42713 = *D.42712;
        D.42714 = (int) D.42713;
        D.42715 = __s2 + 2;
        D.42716 = *D.42715;
        D.42717 = (int) D.42716;
        __result = D.42714 - D.42717;
        if (__s2_len > 2) goto <D.42718>; else goto <D.42719>;
        <D.42718>:
        if (__result == 0) goto <D.42720>; else goto <D.42721>;
        <D.42720>:
        D.42722 = &MEM[(void *)"Selector" + 3B];
        D.42723 = *D.42722;
        D.42724 = (int) D.42723;
        D.42725 = __s2 + 3;
        D.42726 = *D.42725;
        D.42727 = (int) D.42726;
        __result = D.42724 - D.42727;
        <D.42721>:
        <D.42719>:
        <D.42711>:
        <D.42709>:
        <D.42701>:
        <D.42699>:
      }
      D.26263 = __result;
    }
    iftmp.446 = -D.26263;
    goto <D.42728>;
    <D.42692>:
    D.41057 = cmethod->klass;
    D.42386 = D.41057->name;
    iftmp.446 = __builtin_strcmp (D.42386, "Selector");
    <D.42728>:
    D.26264 = iftmp.446;
  }
  if (D.26264 == 0) goto <D.42729>; else goto <D.42730>;
  <D.42729>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.42734 = "GetHandle";
      D.42735 = MEM[(const unsigned char *)D.42734];
      D.42736 = (int) D.42735;
      D.42737 = *__s2;
      D.42738 = (int) D.42737;
      __result = D.42736 - D.42738;
      {
        if (__s2_len != 0) goto <D.42739>; else goto <D.42740>;
        <D.42739>:
        if (__result == 0) goto <D.42741>; else goto <D.42742>;
        <D.42741>:
        D.42743 = &MEM[(void *)"GetHandle" + 1B];
        D.42744 = *D.42743;
        D.42745 = (int) D.42744;
        D.42746 = __s2 + 1;
        D.42747 = *D.42746;
        D.42748 = (int) D.42747;
        __result = D.42745 - D.42748;
        if (__s2_len > 1) goto <D.42749>; else goto <D.42750>;
        <D.42749>:
        if (__result == 0) goto <D.42751>; else goto <D.42752>;
        <D.42751>:
        D.42753 = &MEM[(void *)"GetHandle" + 2B];
        D.42754 = *D.42753;
        D.42755 = (int) D.42754;
        D.42756 = __s2 + 2;
        D.42757 = *D.42756;
        D.42758 = (int) D.42757;
        __result = D.42755 - D.42758;
        if (__s2_len > 2) goto <D.42759>; else goto <D.42760>;
        <D.42759>:
        if (__result == 0) goto <D.42761>; else goto <D.42762>;
        <D.42761>:
        D.42763 = &MEM[(void *)"GetHandle" + 3B];
        D.42764 = *D.42763;
        D.42765 = (int) D.42764;
        D.42766 = __s2 + 3;
        D.42767 = *D.42766;
        D.42768 = (int) D.42767;
        __result = D.42765 - D.42768;
        <D.42762>:
        <D.42760>:
        <D.42752>:
        <D.42750>:
        <D.42742>:
        <D.42740>:
      }
      D.26272 = __result;
    }
    iftmp.447 = -D.26272;
    goto <D.42769>;
    <D.42733>:
    D.41100 = cmethod->name;
    iftmp.447 = __builtin_strcmp (D.41100, "GetHandle");
    <D.42769>:
    D.26273 = iftmp.447;
  }
  if (D.26273 == 0) goto <D.42770>; else goto <D.42771>;
  <D.42770>:
  D.41875 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.42772 = D.41875 & 64;
  if (D.42772 != 0) goto <D.42773>; else goto <D.42774>;
  <D.42773>:
  D.41126 = *args;
  D.42775 = D.41126->opcode;
  if (D.42775 == 734) goto <D.42776>; else goto <D.42777>;
  <D.42777>:
  D.41126 = *args;
  D.42775 = D.41126->opcode;
  if (D.42775 == 732) goto <D.42778>; else goto <D.42779>;
  <D.42778>:
  <D.42779>:
  <D.42776>:
  <D.42774>:
  <D.42771>:
  <D.42730>:
  <D.42608>:
  <D.42606>:
  <D.42602>:
  <D.42303>:
  <D.42301>:
  <D.42297>:
  if (0 != 0) goto <D.42780>; else goto <D.42781>;
  <D.42780>:
  ins = llvm_emit_inst_for_method (cfg, cmethod, fsig, args);
  if (ins != 0B) goto <D.42782>; else goto <D.42783>;
  <D.42782>:
  D.41325 = ins;
  return D.41325;
  <D.42783>:
  <D.42781>:
  D.41325 = mono_arch_emit_inst_for_method (cfg, cmethod, fsig, args);
  return D.41325;
}


emit_array_generic_access (struct MonoCompile * cfg, struct MonoMethodSignature * fsig, struct MonoInst * * args, int is_set)
{
  struct MonoType * D.42785;
  struct MonoInst * D.42786;
  struct MonoInst * * D.42787;
  struct MonoInst * D.42788;
  struct MonoMemPool * D.42791;
  int D.42792;
  struct MonoInst * D.42793;
  struct MonoType * D.42794;
  unsigned int D.42795;
  short unsigned int D.42796;
  int D.42797;
  int D.42798;
  const unsigned char * D.42799;
  struct MonoInst * * D.42800;
  struct MonoInst * D.42801;
  int D.42802;
  unsigned char D.42803;
  <unnamed type> D.42804;
  unsigned int D.42805;
  int D.42806;
  struct MonoBasicBlock * D.42807;
  struct MonoInst * D.42808;
  int D.42812;
  struct MonoInst * D.42813;
  unsigned int D.42814;
  short unsigned int D.42815;
  int D.42816;
  int D.42817;
  int D.42818;
  int D.42819;
  struct MonoClass * D.42820;
  int D.42824;
  unsigned int D.42828;
  short unsigned int D.42829;
  unsigned int D.42830;
  int D.42831;
  unsigned int D.42835;
  short unsigned int D.42836;
  struct MonoClass * D.42837;
  struct MonoInst * D.42841;
  struct MonoInst * addr;
  struct MonoInst * store;
  struct MonoInst * load;
  struct MonoClass * eklass;

  D.42785 = fsig->params[2];
  eklass = mono_class_from_mono_type (D.42785);
  D.42786 = *args;
  D.42787 = args + 4;
  D.42788 = *D.42787;
  addr = mini_emit_ldelema_1_ins (cfg, eklass, D.42786, D.42788, 0);
  if (is_set != 0) goto <D.42789>; else goto <D.42790>;
  <D.42789>:
  D.42791 = cfg->mempool;
  load = mono_mempool_alloc (D.42791, 56);
  load->data.op[1].const_val = 0;
  D.42792 = load->data.op[1].const_val;
  load->data.op[0].const_val = D.42792;
  load->prev = 0B;
  D.42793 = load->prev;
  load->next = D.42793;
  D.42794 = &eklass->byval_arg;
  D.42795 = mono_type_to_load_membase (cfg, D.42794);
  D.42796 = (short unsigned int) D.42795;
  load->opcode = D.42796;
  load->flags = 0;
  load->type = 0;
  load->dreg = -1;
  load->sreg3 = -1;
  D.42797 = load->sreg3;
  load->sreg2 = D.42797;
  D.42798 = load->sreg2;
  load->sreg1 = D.42798;
  D.42799 = cfg->ip;
  load->cil_code = D.42799;
  load->dreg = 0;
  D.42800 = args + 8;
  D.42801 = *D.42800;
  D.42802 = D.42801->dreg;
  load->sreg1 = D.42802;
  load->data.op[0].const_val = 0;
  load->type = 1;
  D.42794 = &eklass->byval_arg;
  type_to_eval_stack_type (cfg, D.42794, load);
  D.42803 = load->type;
  D.42804 = (<unnamed type>) D.42803;
  D.42805 = alloc_dreg (cfg, D.42804);
  D.42806 = (int) D.42805;
  load->dreg = D.42806;
  D.42807 = cfg->cbb;
  D.42808 = D.42807->last_ins;
  if (D.42808 != 0B) goto <D.42809>; else goto <D.42810>;
  <D.42809>:
  D.42807 = cfg->cbb;
  D.42808 = D.42807->last_ins;
  D.42808->next = load;
  D.42807 = cfg->cbb;
  D.42808 = D.42807->last_ins;
  load->prev = D.42808;
  D.42807 = cfg->cbb;
  D.42807->last_ins = load;
  goto <D.42811>;
  <D.42810>:
  D.42807 = cfg->cbb;
  D.42807 = cfg->cbb;
  D.42807->last_ins = load;
  D.42808 = D.42807->last_ins;
  D.42807->code = D.42808;
  <D.42811>:
  D.42791 = cfg->mempool;
  store = mono_mempool_alloc (D.42791, 56);
  store->data.op[1].const_val = 0;
  D.42812 = store->data.op[1].const_val;
  store->data.op[0].const_val = D.42812;
  store->prev = 0B;
  D.42813 = store->prev;
  store->next = D.42813;
  D.42794 = &eklass->byval_arg;
  D.42814 = mono_type_to_store_membase (cfg, D.42794);
  D.42815 = (short unsigned int) D.42814;
  store->opcode = D.42815;
  store->flags = 0;
  store->type = 0;
  store->dreg = -1;
  store->sreg3 = -1;
  D.42816 = store->sreg3;
  store->sreg2 = D.42816;
  D.42817 = store->sreg2;
  store->sreg1 = D.42817;
  D.42799 = cfg->ip;
  store->cil_code = D.42799;
  D.42818 = load->dreg;
  store->sreg1 = D.42818;
  D.42819 = addr->dreg;
  store->dreg = D.42819;
  store->data.op[0].const_val = 0;
  D.42794 = &eklass->byval_arg;
  type_to_eval_stack_type (cfg, D.42794, store);
  D.42794 = &eklass->byval_arg;
  D.42820 = mono_class_from_mono_type (D.42794);
  store->klass = D.42820;
  D.42807 = cfg->cbb;
  D.42808 = D.42807->last_ins;
  if (D.42808 != 0B) goto <D.42821>; else goto <D.42822>;
  <D.42821>:
  D.42807 = cfg->cbb;
  D.42808 = D.42807->last_ins;
  D.42808->next = store;
  D.42807 = cfg->cbb;
  D.42808 = D.42807->last_ins;
  store->prev = D.42808;
  D.42807 = cfg->cbb;
  D.42807->last_ins = store;
  goto <D.42823>;
  <D.42822>:
  D.42807 = cfg->cbb;
  D.42807 = cfg->cbb;
  D.42807->last_ins = store;
  D.42808 = D.42807->last_ins;
  D.42807->code = D.42808;
  <D.42823>:
  D.42785 = fsig->params[2];
  D.42824 = mini_type_is_reference (cfg, D.42785);
  if (D.42824 != 0) goto <D.42825>; else goto <D.42826>;
  <D.42825>:
  emit_write_barrier (cfg, addr, load);
  <D.42826>:
  goto <D.42827>;
  <D.42790>:
  D.42791 = cfg->mempool;
  load = mono_mempool_alloc (D.42791, 56);
  load->data.op[1].const_val = 0;
  D.42792 = load->data.op[1].const_val;
  load->data.op[0].const_val = D.42792;
  load->prev = 0B;
  D.42793 = load->prev;
  load->next = D.42793;
  D.42794 = &eklass->byval_arg;
  D.42828 = mono_type_to_load_membase (cfg, D.42794);
  D.42829 = (short unsigned int) D.42828;
  load->opcode = D.42829;
  load->flags = 0;
  load->type = 0;
  load->dreg = -1;
  load->sreg3 = -1;
  D.42797 = load->sreg3;
  load->sreg2 = D.42797;
  D.42798 = load->sreg2;
  load->sreg1 = D.42798;
  D.42799 = cfg->ip;
  load->cil_code = D.42799;
  load->dreg = 0;
  D.42819 = addr->dreg;
  load->sreg1 = D.42819;
  load->data.op[0].const_val = 0;
  load->type = 1;
  D.42794 = &eklass->byval_arg;
  type_to_eval_stack_type (cfg, D.42794, load);
  D.42803 = load->type;
  D.42804 = (<unnamed type>) D.42803;
  D.42830 = alloc_dreg (cfg, D.42804);
  D.42831 = (int) D.42830;
  load->dreg = D.42831;
  D.42807 = cfg->cbb;
  D.42808 = D.42807->last_ins;
  if (D.42808 != 0B) goto <D.42832>; else goto <D.42833>;
  <D.42832>:
  D.42807 = cfg->cbb;
  D.42808 = D.42807->last_ins;
  D.42808->next = load;
  D.42807 = cfg->cbb;
  D.42808 = D.42807->last_ins;
  load->prev = D.42808;
  D.42807 = cfg->cbb;
  D.42807->last_ins = load;
  goto <D.42834>;
  <D.42833>:
  D.42807 = cfg->cbb;
  D.42807 = cfg->cbb;
  D.42807->last_ins = load;
  D.42808 = D.42807->last_ins;
  D.42807->code = D.42808;
  <D.42834>:
  D.42791 = cfg->mempool;
  store = mono_mempool_alloc (D.42791, 56);
  store->data.op[1].const_val = 0;
  D.42812 = store->data.op[1].const_val;
  store->data.op[0].const_val = D.42812;
  store->prev = 0B;
  D.42813 = store->prev;
  store->next = D.42813;
  D.42794 = &eklass->byval_arg;
  D.42835 = mono_type_to_store_membase (cfg, D.42794);
  D.42836 = (short unsigned int) D.42835;
  store->opcode = D.42836;
  store->flags = 0;
  store->type = 0;
  store->dreg = -1;
  store->sreg3 = -1;
  D.42816 = store->sreg3;
  store->sreg2 = D.42816;
  D.42817 = store->sreg2;
  store->sreg1 = D.42817;
  D.42799 = cfg->ip;
  store->cil_code = D.42799;
  D.42818 = load->dreg;
  store->sreg1 = D.42818;
  D.42800 = args + 8;
  D.42801 = *D.42800;
  D.42802 = D.42801->dreg;
  store->dreg = D.42802;
  store->data.op[0].const_val = 0;
  D.42794 = &eklass->byval_arg;
  type_to_eval_stack_type (cfg, D.42794, store);
  D.42794 = &eklass->byval_arg;
  D.42837 = mono_class_from_mono_type (D.42794);
  store->klass = D.42837;
  D.42807 = cfg->cbb;
  D.42808 = D.42807->last_ins;
  if (D.42808 != 0B) goto <D.42838>; else goto <D.42839>;
  <D.42838>:
  D.42807 = cfg->cbb;
  D.42808 = D.42807->last_ins;
  D.42808->next = store;
  D.42807 = cfg->cbb;
  D.42808 = D.42807->last_ins;
  store->prev = D.42808;
  D.42807 = cfg->cbb;
  D.42807->last_ins = store;
  goto <D.42840>;
  <D.42839>:
  D.42807 = cfg->cbb;
  D.42807 = cfg->cbb;
  D.42807->last_ins = store;
  D.42808 = D.42807->last_ins;
  D.42807->code = D.42808;
  <D.42840>:
  <D.42827>:
  D.42841 = store;
  return D.42841;
}


emit_get_rgctx_sig (struct MonoCompile * cfg, int context_used, struct MonoMethodSignature * sig, MonoRgctxInfoType rgctx_type)
{
  struct MonoMemPool * D.42843;
  struct MonoMethod * D.42844;
  int D.42845;
  struct MonoInst * D.42846;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.42843 = cfg->mempool;
  D.42844 = cfg->current_method;
  D.42845 = context_used & 2;
  entry = mono_patch_info_rgctx_entry_new (D.42843, D.42844, D.42845, 44, sig, rgctx_type);
  D.42844 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.42844, context_used);
  D.42846 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.42846;
}


mini_emit_ldelema_ins (struct MonoCompile * cfg, struct MonoMethod * cmethod, struct MonoInst * * sp, unsigned char * ip, gboolean is_set)
{
  struct MonoMethodSignature * D.42848;
  short unsigned int D.42849;
  int D.42850;
  _Bool D.42851;
  int D.42852;
  struct MonoInst * D.42855;
  struct MonoClass * D.42856;
  struct MonoClass * D.42857;
  struct MonoInst * D.42858;
  struct MonoInst * * D.42859;
  struct MonoInst * D.42860;
  unsigned int D.42863;
  unsigned int D.42864;
  struct MonoInst * * D.42867;
  struct MonoInst * D.42868;
  int rank;
  struct MonoInst * addr;
  struct MonoMethod * addr_method;
  int element_size;

  D.42848 = mono_method_signature (cmethod);
  D.42849 = D.42848->param_count;
  D.42850 = (int) D.42849;
  D.42851 = is_set != 0;
  D.42852 = (int) D.42851;
  rank = D.42850 - D.42852;
  if (rank == 1) goto <D.42853>; else goto <D.42854>;
  <D.42853>:
  D.42856 = cmethod->klass;
  D.42857 = D.42856->element_class;
  D.42858 = *sp;
  D.42859 = sp + 4;
  D.42860 = *D.42859;
  D.42855 = mini_emit_ldelema_1_ins (cfg, D.42857, D.42858, D.42860, 1);
  return D.42855;
  <D.42854>:
  if (rank == 2) goto <D.42861>; else goto <D.42862>;
  <D.42861>:
  D.42863 = cfg->opt;
  D.42864 = D.42863 & 2048;
  if (D.42864 != 0) goto <D.42865>; else goto <D.42866>;
  <D.42865>:
  D.42856 = cmethod->klass;
  D.42857 = D.42856->element_class;
  D.42858 = *sp;
  D.42859 = sp + 4;
  D.42860 = *D.42859;
  D.42867 = sp + 8;
  D.42868 = *D.42867;
  D.42855 = mini_emit_ldelema_2_ins (cfg, D.42857, D.42858, D.42860, D.42868);
  return D.42855;
  <D.42866>:
  <D.42862>:
  D.42856 = cmethod->klass;
  D.42857 = D.42856->element_class;
  element_size = mono_class_array_element_size (D.42857);
  addr_method = mono_marshal_get_array_address (rank, element_size);
  addr = mono_emit_method_call (cfg, addr_method, sp, 0B);
  D.42855 = addr;
  return D.42855;
}


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.42870;
  unsigned int D.42871;
  unsigned int D.42872;
  unsigned int D.42873;
  unsigned int D.42874;
  unsigned int D.42875;
  unsigned int D.42876;
  unsigned int D.42877;
  unsigned int D.42878;
  unsigned int D.42879;
  unsigned int D.42880;
  int D.42881;
  struct MonoMemPool * D.42882;
  int D.42883;
  struct MonoInst * D.42884;
  int D.42885;
  int D.42886;
  const unsigned char * D.42887;
  int D.42888;
  struct MonoBasicBlock * D.42889;
  struct MonoInst * D.42890;
  int D.42894;
  struct MonoInst * D.42895;
  int D.42896;
  int D.42897;
  int D.42901;
  struct MonoInst * D.42902;
  int D.42903;
  int D.42904;
  int D.42908;
  struct MonoInst * D.42909;
  int D.42910;
  int D.42911;
  int D.42915;
  struct MonoInst * D.42916;
  int D.42917;
  int D.42918;
  int D.42922;
  struct MonoInst * D.42923;
  int D.42924;
  int D.42925;
  int D.42929;
  struct MonoInst * D.42930;
  int D.42931;
  int D.42932;
  int D.42936;
  struct MonoInst * D.42937;
  int D.42938;
  int D.42939;
  int D.42943;
  struct MonoInst * D.42944;
  int D.42945;
  int D.42946;
  int D.42950;
  struct MonoInst * D.42951;
  int D.42952;
  int D.42953;
  int D.42957;
  struct MonoInst * D.42958;
  int D.42959;
  int D.42960;
  int D.42964;
  struct MonoInst * D.42965;
  int D.42966;
  int D.42967;
  int D.42971;
  struct MonoInst * D.42972;
  int D.42973;
  int D.42974;
  int D.42978;
  struct MonoInst * D.42979;
  int D.42980;
  int D.42981;
  int size.448;
  int D.42986;
  struct MonoInst * D.42987;
  int D.42988;
  int D.42989;
  int D.42993;
  struct MonoInst * D.42994;
  int D.42995;
  int D.42996;
  struct MonoInst * D.43000;
  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.42870 = alloc_preg (cfg);
  bounds_reg = (int) D.42870;
  D.42871 = alloc_ireg_mp (cfg);
  add_reg = (int) D.42871;
  D.42872 = alloc_preg (cfg);
  mult_reg = (int) D.42872;
  D.42873 = alloc_preg (cfg);
  mult2_reg = (int) D.42873;
  D.42874 = alloc_preg (cfg);
  low1_reg = (int) D.42874;
  D.42875 = alloc_preg (cfg);
  low2_reg = (int) D.42875;
  D.42876 = alloc_preg (cfg);
  high1_reg = (int) D.42876;
  D.42877 = alloc_preg (cfg);
  high2_reg = (int) D.42877;
  D.42878 = alloc_preg (cfg);
  realidx1_reg = (int) D.42878;
  D.42879 = alloc_preg (cfg);
  realidx2_reg = (int) D.42879;
  D.42880 = alloc_preg (cfg);
  sum_reg = (int) D.42880;
  mono_class_init (klass);
  D.42881 = mono_class_array_element_size (klass);
  size = (guint32) D.42881;
  index1 = index_ins1->dreg;
  index2 = index_ins2->dreg;
  tmpreg = -1;
  {
    struct MonoInst * inst;

    D.42882 = cfg->mempool;
    inst = mono_mempool_alloc (D.42882, 56);
    inst->data.op[1].const_val = 0;
    D.42883 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.42883;
    inst->prev = 0B;
    D.42884 = inst->prev;
    inst->next = D.42884;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.42885 = inst->sreg3;
    inst->sreg2 = D.42885;
    D.42886 = inst->sreg2;
    inst->sreg1 = D.42886;
    D.42887 = cfg->ip;
    inst->cil_code = D.42887;
    inst->dreg = bounds_reg;
    D.42888 = arr->dreg;
    inst->sreg1 = D.42888;
    inst->data.op[0].const_val = 8;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    if (D.42890 != 0B) goto <D.42891>; else goto <D.42892>;
    <D.42891>:
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    D.42890->next = inst;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    inst->prev = D.42890;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    goto <D.42893>;
    <D.42892>:
    D.42889 = cfg->cbb;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    D.42890 = D.42889->last_ins;
    D.42889->code = D.42890;
    <D.42893>:
  }
  {
    struct MonoInst * inst;

    D.42882 = cfg->mempool;
    inst = mono_mempool_alloc (D.42882, 56);
    inst->data.op[1].const_val = 0;
    D.42894 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.42894;
    inst->prev = 0B;
    D.42895 = inst->prev;
    inst->next = D.42895;
    inst->opcode = 393;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.42896 = inst->sreg3;
    inst->sreg2 = D.42896;
    D.42897 = inst->sreg2;
    inst->sreg1 = D.42897;
    D.42887 = cfg->ip;
    inst->cil_code = D.42887;
    inst->dreg = low1_reg;
    inst->sreg1 = bounds_reg;
    inst->data.op[0].const_val = 4;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    if (D.42890 != 0B) goto <D.42898>; else goto <D.42899>;
    <D.42898>:
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    D.42890->next = inst;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    inst->prev = D.42890;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    goto <D.42900>;
    <D.42899>:
    D.42889 = cfg->cbb;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    D.42890 = D.42889->last_ins;
    D.42889->code = D.42890;
    <D.42900>:
  }
  {
    struct MonoInst * inst;

    D.42882 = cfg->mempool;
    inst = mono_mempool_alloc (D.42882, 56);
    inst->data.op[1].const_val = 0;
    D.42901 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.42901;
    inst->prev = 0B;
    D.42902 = inst->prev;
    inst->next = D.42902;
    inst->opcode = 566;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.42903 = inst->sreg3;
    inst->sreg2 = D.42903;
    D.42904 = inst->sreg2;
    inst->sreg1 = D.42904;
    D.42887 = cfg->ip;
    inst->cil_code = D.42887;
    inst->dreg = realidx1_reg;
    inst->sreg1 = index1;
    inst->sreg2 = low1_reg;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    if (D.42890 != 0B) goto <D.42905>; else goto <D.42906>;
    <D.42905>:
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    D.42890->next = inst;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    inst->prev = D.42890;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    goto <D.42907>;
    <D.42906>:
    D.42889 = cfg->cbb;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    D.42890 = D.42889->last_ins;
    D.42889->code = D.42890;
    <D.42907>:
  }
  {
    struct MonoInst * inst;

    D.42882 = cfg->mempool;
    inst = mono_mempool_alloc (D.42882, 56);
    inst->data.op[1].const_val = 0;
    D.42908 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.42908;
    inst->prev = 0B;
    D.42909 = inst->prev;
    inst->next = D.42909;
    inst->opcode = 393;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.42910 = inst->sreg3;
    inst->sreg2 = D.42910;
    D.42911 = inst->sreg2;
    inst->sreg1 = D.42911;
    D.42887 = cfg->ip;
    inst->cil_code = D.42887;
    inst->dreg = high1_reg;
    inst->sreg1 = bounds_reg;
    inst->data.op[0].const_val = 0;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    if (D.42890 != 0B) goto <D.42912>; else goto <D.42913>;
    <D.42912>:
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    D.42890->next = inst;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    inst->prev = D.42890;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    goto <D.42914>;
    <D.42913>:
    D.42889 = cfg->cbb;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    D.42890 = D.42889->last_ins;
    D.42889->code = D.42890;
    <D.42914>:
  }
  {
    struct MonoInst * inst;

    D.42882 = cfg->mempool;
    inst = mono_mempool_alloc (D.42882, 56);
    inst->data.op[1].const_val = 0;
    D.42915 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.42915;
    inst->prev = 0B;
    D.42916 = inst->prev;
    inst->next = D.42916;
    inst->opcode = 322;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.42917 = inst->sreg3;
    inst->sreg2 = D.42917;
    D.42918 = inst->sreg2;
    inst->sreg1 = D.42918;
    D.42887 = cfg->ip;
    inst->cil_code = D.42887;
    inst->dreg = -1;
    inst->sreg1 = high1_reg;
    inst->sreg2 = realidx1_reg;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    if (D.42890 != 0B) goto <D.42919>; else goto <D.42920>;
    <D.42919>:
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    D.42890->next = inst;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    inst->prev = D.42890;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    goto <D.42921>;
    <D.42920>:
    D.42889 = cfg->cbb;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    D.42890 = D.42889->last_ins;
    D.42889->code = D.42890;
    <D.42921>:
  }
  {
    struct MonoInst * inst;

    D.42882 = cfg->mempool;
    inst = mono_mempool_alloc (D.42882, 56);
    inst->data.op[1].const_val = 0;
    D.42922 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.42922;
    inst->prev = 0B;
    D.42923 = inst->prev;
    inst->next = D.42923;
    inst->opcode = 459;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.42924 = inst->sreg3;
    inst->sreg2 = D.42924;
    D.42925 = inst->sreg2;
    inst->sreg1 = D.42925;
    D.42887 = cfg->ip;
    inst->cil_code = D.42887;
    inst->data.op[1].p = "IndexOutOfRangeException";
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    if (D.42890 != 0B) goto <D.42926>; else goto <D.42927>;
    <D.42926>:
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    D.42890->next = inst;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    inst->prev = D.42890;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    goto <D.42928>;
    <D.42927>:
    D.42889 = cfg->cbb;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    D.42890 = D.42889->last_ins;
    D.42889->code = D.42890;
    <D.42928>:
  }
  {
    struct MonoInst * inst;

    D.42882 = cfg->mempool;
    inst = mono_mempool_alloc (D.42882, 56);
    inst->data.op[1].const_val = 0;
    D.42929 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.42929;
    inst->prev = 0B;
    D.42930 = inst->prev;
    inst->next = D.42930;
    inst->opcode = 393;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.42931 = inst->sreg3;
    inst->sreg2 = D.42931;
    D.42932 = inst->sreg2;
    inst->sreg1 = D.42932;
    D.42887 = cfg->ip;
    inst->cil_code = D.42887;
    inst->dreg = low2_reg;
    inst->sreg1 = bounds_reg;
    inst->data.op[0].const_val = 12;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    if (D.42890 != 0B) goto <D.42933>; else goto <D.42934>;
    <D.42933>:
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    D.42890->next = inst;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    inst->prev = D.42890;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    goto <D.42935>;
    <D.42934>:
    D.42889 = cfg->cbb;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    D.42890 = D.42889->last_ins;
    D.42889->code = D.42890;
    <D.42935>:
  }
  {
    struct MonoInst * inst;

    D.42882 = cfg->mempool;
    inst = mono_mempool_alloc (D.42882, 56);
    inst->data.op[1].const_val = 0;
    D.42936 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.42936;
    inst->prev = 0B;
    D.42937 = inst->prev;
    inst->next = D.42937;
    inst->opcode = 566;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.42938 = inst->sreg3;
    inst->sreg2 = D.42938;
    D.42939 = inst->sreg2;
    inst->sreg1 = D.42939;
    D.42887 = cfg->ip;
    inst->cil_code = D.42887;
    inst->dreg = realidx2_reg;
    inst->sreg1 = index2;
    inst->sreg2 = low2_reg;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    if (D.42890 != 0B) goto <D.42940>; else goto <D.42941>;
    <D.42940>:
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    D.42890->next = inst;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    inst->prev = D.42890;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    goto <D.42942>;
    <D.42941>:
    D.42889 = cfg->cbb;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    D.42890 = D.42889->last_ins;
    D.42889->code = D.42890;
    <D.42942>:
  }
  {
    struct MonoInst * inst;

    D.42882 = cfg->mempool;
    inst = mono_mempool_alloc (D.42882, 56);
    inst->data.op[1].const_val = 0;
    D.42943 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.42943;
    inst->prev = 0B;
    D.42944 = inst->prev;
    inst->next = D.42944;
    inst->opcode = 393;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.42945 = inst->sreg3;
    inst->sreg2 = D.42945;
    D.42946 = inst->sreg2;
    inst->sreg1 = D.42946;
    D.42887 = cfg->ip;
    inst->cil_code = D.42887;
    inst->dreg = high2_reg;
    inst->sreg1 = bounds_reg;
    inst->data.op[0].const_val = 8;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    if (D.42890 != 0B) goto <D.42947>; else goto <D.42948>;
    <D.42947>:
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    D.42890->next = inst;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    inst->prev = D.42890;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    goto <D.42949>;
    <D.42948>:
    D.42889 = cfg->cbb;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    D.42890 = D.42889->last_ins;
    D.42889->code = D.42890;
    <D.42949>:
  }
  {
    struct MonoInst * inst;

    D.42882 = cfg->mempool;
    inst = mono_mempool_alloc (D.42882, 56);
    inst->data.op[1].const_val = 0;
    D.42950 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.42950;
    inst->prev = 0B;
    D.42951 = inst->prev;
    inst->next = D.42951;
    inst->opcode = 322;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.42952 = inst->sreg3;
    inst->sreg2 = D.42952;
    D.42953 = inst->sreg2;
    inst->sreg1 = D.42953;
    D.42887 = cfg->ip;
    inst->cil_code = D.42887;
    inst->dreg = -1;
    inst->sreg1 = high2_reg;
    inst->sreg2 = realidx2_reg;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    if (D.42890 != 0B) goto <D.42954>; else goto <D.42955>;
    <D.42954>:
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    D.42890->next = inst;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    inst->prev = D.42890;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    goto <D.42956>;
    <D.42955>:
    D.42889 = cfg->cbb;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    D.42890 = D.42889->last_ins;
    D.42889->code = D.42890;
    <D.42956>:
  }
  {
    struct MonoInst * inst;

    D.42882 = cfg->mempool;
    inst = mono_mempool_alloc (D.42882, 56);
    inst->data.op[1].const_val = 0;
    D.42957 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.42957;
    inst->prev = 0B;
    D.42958 = inst->prev;
    inst->next = D.42958;
    inst->opcode = 459;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.42959 = inst->sreg3;
    inst->sreg2 = D.42959;
    D.42960 = inst->sreg2;
    inst->sreg1 = D.42960;
    D.42887 = cfg->ip;
    inst->cil_code = D.42887;
    inst->data.op[1].p = "IndexOutOfRangeException";
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    if (D.42890 != 0B) goto <D.42961>; else goto <D.42962>;
    <D.42961>:
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    D.42890->next = inst;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    inst->prev = D.42890;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    goto <D.42963>;
    <D.42962>:
    D.42889 = cfg->cbb;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    D.42890 = D.42889->last_ins;
    D.42889->code = D.42890;
    <D.42963>:
  }
  {
    struct MonoInst * inst;

    D.42882 = cfg->mempool;
    inst = mono_mempool_alloc (D.42882, 56);
    inst->data.op[1].const_val = 0;
    D.42964 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.42964;
    inst->prev = 0B;
    D.42965 = inst->prev;
    inst->next = D.42965;
    inst->opcode = 567;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.42966 = inst->sreg3;
    inst->sreg2 = D.42966;
    D.42967 = inst->sreg2;
    inst->sreg1 = D.42967;
    D.42887 = cfg->ip;
    inst->cil_code = D.42887;
    inst->dreg = mult_reg;
    inst->sreg1 = high2_reg;
    inst->sreg2 = realidx1_reg;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    if (D.42890 != 0B) goto <D.42968>; else goto <D.42969>;
    <D.42968>:
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    D.42890->next = inst;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    inst->prev = D.42890;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    goto <D.42970>;
    <D.42969>:
    D.42889 = cfg->cbb;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    D.42890 = D.42889->last_ins;
    D.42889->code = D.42890;
    <D.42970>:
  }
  {
    struct MonoInst * inst;

    D.42882 = cfg->mempool;
    inst = mono_mempool_alloc (D.42882, 56);
    inst->data.op[1].const_val = 0;
    D.42971 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.42971;
    inst->prev = 0B;
    D.42972 = inst->prev;
    inst->next = D.42972;
    inst->opcode = 565;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.42973 = inst->sreg3;
    inst->sreg2 = D.42973;
    D.42974 = inst->sreg2;
    inst->sreg1 = D.42974;
    D.42887 = cfg->ip;
    inst->cil_code = D.42887;
    inst->dreg = sum_reg;
    inst->sreg1 = mult_reg;
    inst->sreg2 = realidx2_reg;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    if (D.42890 != 0B) goto <D.42975>; else goto <D.42976>;
    <D.42975>:
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    D.42890->next = inst;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    inst->prev = D.42890;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    goto <D.42977>;
    <D.42976>:
    D.42889 = cfg->cbb;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    D.42890 = D.42889->last_ins;
    D.42889->code = D.42890;
    <D.42977>:
  }
  {
    struct MonoInst * inst;

    D.42882 = cfg->mempool;
    inst = mono_mempool_alloc (D.42882, 56);
    inst->data.op[1].const_val = 0;
    D.42978 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.42978;
    inst->prev = 0B;
    D.42979 = inst->prev;
    inst->next = D.42979;
    inst->opcode = 627;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.42980 = inst->sreg3;
    inst->sreg2 = D.42980;
    D.42981 = inst->sreg2;
    inst->sreg1 = D.42981;
    D.42887 = cfg->ip;
    inst->cil_code = D.42887;
    inst->dreg = mult2_reg;
    inst->sreg1 = sum_reg;
    size.448 = (int) size;
    inst->data.op[1].const_val = size.448;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    if (D.42890 != 0B) goto <D.42983>; else goto <D.42984>;
    <D.42983>:
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    D.42890->next = inst;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    inst->prev = D.42890;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    goto <D.42985>;
    <D.42984>:
    D.42889 = cfg->cbb;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    D.42890 = D.42889->last_ins;
    D.42889->code = D.42890;
    <D.42985>:
  }
  {
    struct MonoInst * inst;

    D.42882 = cfg->mempool;
    inst = mono_mempool_alloc (D.42882, 56);
    inst->data.op[1].const_val = 0;
    D.42986 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.42986;
    inst->prev = 0B;
    D.42987 = inst->prev;
    inst->next = D.42987;
    inst->opcode = 565;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.42988 = inst->sreg3;
    inst->sreg2 = D.42988;
    D.42989 = inst->sreg2;
    inst->sreg1 = D.42989;
    D.42887 = cfg->ip;
    inst->cil_code = D.42887;
    inst->dreg = add_reg;
    inst->sreg1 = mult2_reg;
    D.42888 = arr->dreg;
    inst->sreg2 = D.42888;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    if (D.42890 != 0B) goto <D.42990>; else goto <D.42991>;
    <D.42990>:
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    D.42890->next = inst;
    D.42889 = cfg->cbb;
    D.42890 = D.42889->last_ins;
    inst->prev = D.42890;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    goto <D.42992>;
    <D.42991>:
    D.42889 = cfg->cbb;
    D.42889 = cfg->cbb;
    D.42889->last_ins = inst;
    D.42890 = D.42889->last_ins;
    D.42889->code = D.42890;
    <D.42992>:
  }
  D.42882 = cfg->mempool;
  ins = mono_mempool_alloc (D.42882, 56);
  ins->data.op[1].const_val = 0;
  D.42993 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.42993;
  ins->prev = 0B;
  D.42994 = ins->prev;
  ins->next = D.42994;
  ins->opcode = 625;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.42995 = ins->sreg3;
  ins->sreg2 = D.42995;
  D.42996 = ins->sreg2;
  ins->sreg1 = D.42996;
  D.42887 = cfg->ip;
  ins->cil_code = D.42887;
  ins->dreg = add_reg;
  ins->sreg1 = add_reg;
  ins->data.op[1].const_val = 16;
  ins->type = 5;
  ins->klass = klass;
  D.42889 = cfg->cbb;
  D.42890 = D.42889->last_ins;
  if (D.42890 != 0B) goto <D.42997>; else goto <D.42998>;
  <D.42997>:
  D.42889 = cfg->cbb;
  D.42890 = D.42889->last_ins;
  D.42890->next = ins;
  D.42889 = cfg->cbb;
  D.42890 = D.42889->last_ins;
  ins->prev = D.42890;
  D.42889 = cfg->cbb;
  D.42889->last_ins = ins;
  goto <D.42999>;
  <D.42998>:
  D.42889 = cfg->cbb;
  D.42889 = cfg->cbb;
  D.42889->last_ins = ins;
  D.42890 = D.42889->last_ins;
  D.42889->code = D.42890;
  <D.42999>:
  D.43000 = ins;
  return D.43000;
}


mini_redirect_call (struct MonoCompile * cfg, struct MonoMethod * method, struct MonoMethodSignature * signature, struct MonoInst * * args, struct MonoInst * this)
{
  struct MonoClass * D.43002;
  struct MonoClass * D.43003;
  int D.26289;
  int iftmp.449;
  int D.26288;
  const char[20] * D.43009;
  unsigned char D.43010;
  int D.43011;
  unsigned char D.43012;
  int D.43013;
  const unsigned char * D.43018;
  unsigned char D.43019;
  int D.43020;
  const unsigned char * D.43021;
  unsigned char D.43022;
  int D.43023;
  const unsigned char * D.43028;
  unsigned char D.43029;
  int D.43030;
  const unsigned char * D.43031;
  unsigned char D.43032;
  int D.43033;
  const unsigned char * D.43038;
  unsigned char D.43039;
  int D.43040;
  const unsigned char * D.43041;
  unsigned char D.43042;
  int D.43043;
  const char * D.43045;
  <unnamed type> mono_profiler_events.450;
  unsigned int D.43049;
  unsigned int D.43052;
  unsigned int D.43053;
  struct MonoDomain * D.43056;
  _Bool D.43057;
  long int D.43058;
  long int D.43059;
  struct MonoInst * D.43064;
  struct MonoMemPool * D.43065;
  void * D.43066;
  struct MonoInst * D.43067;
  int D.43068;
  struct MonoInst * D.43069;
  guint16 iftmp.451;
  unsigned int D.43071;
  unsigned int D.43072;
  int D.43076;
  int D.43077;
  const unsigned char * D.43078;
  void * iftmp.452;
  unsigned int D.43083;
  int D.43084;
  struct MonoBasicBlock * D.43085;
  struct MonoInst * D.43086;
  struct MonoInst * D.43090;

  D.43002 = method->klass;
  D.43003 = mono_defaults.string_class;
  if (D.43002 == D.43003) goto <D.43004>; else goto <D.43005>;
  <D.43004>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = method->name;
      D.43009 = "InternalAllocateStr";
      D.43010 = MEM[(const unsigned char *)D.43009];
      D.43011 = (int) D.43010;
      D.43012 = *__s2;
      D.43013 = (int) D.43012;
      __result = D.43011 - D.43013;
      {
        if (__s2_len != 0) goto <D.43014>; else goto <D.43015>;
        <D.43014>:
        if (__result == 0) goto <D.43016>; else goto <D.43017>;
        <D.43016>:
        D.43018 = &MEM[(void *)"InternalAllocateStr" + 1B];
        D.43019 = *D.43018;
        D.43020 = (int) D.43019;
        D.43021 = __s2 + 1;
        D.43022 = *D.43021;
        D.43023 = (int) D.43022;
        __result = D.43020 - D.43023;
        if (__s2_len > 1) goto <D.43024>; else goto <D.43025>;
        <D.43024>:
        if (__result == 0) goto <D.43026>; else goto <D.43027>;
        <D.43026>:
        D.43028 = &MEM[(void *)"InternalAllocateStr" + 2B];
        D.43029 = *D.43028;
        D.43030 = (int) D.43029;
        D.43031 = __s2 + 2;
        D.43032 = *D.43031;
        D.43033 = (int) D.43032;
        __result = D.43030 - D.43033;
        if (__s2_len > 2) goto <D.43034>; else goto <D.43035>;
        <D.43034>:
        if (__result == 0) goto <D.43036>; else goto <D.43037>;
        <D.43036>:
        D.43038 = &MEM[(void *)"InternalAllocateStr" + 3B];
        D.43039 = *D.43038;
        D.43040 = (int) D.43039;
        D.43041 = __s2 + 3;
        D.43042 = *D.43041;
        D.43043 = (int) D.43042;
        __result = D.43040 - D.43043;
        <D.43037>:
        <D.43035>:
        <D.43027>:
        <D.43025>:
        <D.43017>:
        <D.43015>:
      }
      D.26288 = __result;
    }
    iftmp.449 = -D.26288;
    goto <D.43044>;
    <D.43008>:
    D.43045 = method->name;
    iftmp.449 = __builtin_strcmp (D.43045, "InternalAllocateStr");
    <D.43044>:
    D.26289 = iftmp.449;
  }
  if (D.26289 == 0) goto <D.43046>; else goto <D.43047>;
  <D.43046>:
  mono_profiler_events.450 = mono_profiler_events;
  D.43049 = mono_profiler_events.450 & 128;
  if (D.43049 == 0) goto <D.43050>; else goto <D.43051>;
  <D.43050>:
  D.43052 = cfg->opt;
  D.43053 = D.43052 & 512;
  if (D.43053 == 0) goto <D.43054>; else goto <D.43055>;
  <D.43054>:
  {
    struct MonoInst * iargs[2];
    struct MonoVTable * vtable;
    struct MonoMethod * managed_alloc;

    try
      {
        D.43056 = cfg->domain;
        D.43002 = method->klass;
        vtable = mono_class_vtable (D.43056, D.43002);
        managed_alloc = 0B;
        D.43057 = vtable == 0B;
        D.43058 = (long int) D.43057;
        D.43059 = __builtin_expect (D.43058, 0);
        if (D.43059 != 0) goto <D.43060>; else goto <D.43061>;
        <D.43060>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 5598, "vtable");
        <D.43061>:
        D.43002 = method->klass;
        managed_alloc = mono_gc_get_managed_allocator (D.43002, 0);
        if (managed_alloc == 0B) goto <D.43062>; else goto <D.43063>;
        <D.43062>:
        D.43064 = 0B;
        return D.43064;
        <D.43063>:
        D.43065 = cfg->mempool;
        D.43066 = mono_mempool_alloc (D.43065, 56);
        iargs[0] = D.43066;
        D.43067 = iargs[0];
        D.43067 = iargs[0];
        D.43067->data.op[1].const_val = 0;
        D.43068 = D.43067->data.op[1].const_val;
        D.43067->data.op[0].const_val = D.43068;
        D.43067 = iargs[0];
        D.43067 = iargs[0];
        D.43067->prev = 0B;
        D.43069 = D.43067->prev;
        D.43067->next = D.43069;
        D.43067 = iargs[0];
        D.43071 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.43072 = D.43071 & 64;
        if (D.43072 != 0) goto <D.43073>; else goto <D.43074>;
        <D.43073>:
        iftmp.451 = 732;
        goto <D.43075>;
        <D.43074>:
        iftmp.451 = 362;
        <D.43075>:
        D.43067->opcode = iftmp.451;
        D.43067 = iargs[0];
        D.43067->flags = 0;
        D.43067 = iargs[0];
        D.43067->type = 0;
        D.43067 = iargs[0];
        D.43067->dreg = -1;
        D.43067 = iargs[0];
        D.43067 = iargs[0];
        D.43067 = iargs[0];
        D.43067->sreg3 = -1;
        D.43076 = D.43067->sreg3;
        D.43067->sreg2 = D.43076;
        D.43077 = D.43067->sreg2;
        D.43067->sreg1 = D.43077;
        D.43067 = iargs[0];
        D.43078 = cfg->ip;
        D.43067->cil_code = D.43078;
        D.43067 = iargs[0];
        D.43071 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.43072 = D.43071 & 64;
        if (D.43072 != 0) goto <D.43080>; else goto <D.43081>;
        <D.43080>:
        iftmp.452 = vtable->klass;
        goto <D.43082>;
        <D.43081>:
        iftmp.452 = vtable;
        <D.43082>:
        D.43067->data.op[0].p = iftmp.452;
        D.43067 = iargs[0];
        D.43067->data.op[1].src = 14B;
        D.43067 = iargs[0];
        D.43067->type = 3;
        D.43067 = iargs[0];
        D.43083 = alloc_dreg (cfg, 3);
        D.43084 = (int) D.43083;
        D.43067->dreg = D.43084;
        D.43085 = cfg->cbb;
        D.43086 = D.43085->last_ins;
        if (D.43086 != 0B) goto <D.43087>; else goto <D.43088>;
        <D.43087>:
        D.43085 = cfg->cbb;
        D.43086 = D.43085->last_ins;
        D.43067 = iargs[0];
        D.43086->next = D.43067;
        D.43067 = iargs[0];
        D.43085 = cfg->cbb;
        D.43086 = D.43085->last_ins;
        D.43067->prev = D.43086;
        D.43085 = cfg->cbb;
        D.43067 = iargs[0];
        D.43085->last_ins = D.43067;
        goto <D.43089>;
        <D.43088>:
        D.43085 = cfg->cbb;
        D.43085 = cfg->cbb;
        D.43067 = iargs[0];
        D.43085->last_ins = D.43067;
        D.43086 = D.43085->last_ins;
        D.43085->code = D.43086;
        <D.43089>:
        D.43090 = *args;
        iargs[1] = D.43090;
        D.43064 = mono_emit_method_call (cfg, managed_alloc, &iargs, this);
        return D.43064;
      }
    finally
      {
        iargs = {CLOBBER};
      }
  }
  <D.43055>:
  <D.43051>:
  <D.43047>:
  <D.43005>:
  D.43064 = 0B;
  return D.43064;
}


is_supported_tail_call (struct MonoCompile * cfg, struct MonoMethod * method, struct MonoMethod * cmethod, struct MonoMethodSignature * fsig, int call_opcode)
{
  int iftmp.453;
  struct MonoMethodSignature * D.43096;
  struct MonoMethodSignature * D.43097;
  int D.43098;
  struct MonoMethodSignature * D.43100;
  struct MonoType * D.43101;
  int D.43102;
  struct MonoType * D.43106;
  unsigned int D.43107;
  unsigned int D.43108;
  unsigned char D.43110;
  short unsigned int D.43112;
  int D.43113;
  unsigned int D.43114;
  unsigned int D.43115;
  struct MonoClass * D.43118;
  unsigned int D.43119;
  unsigned int D.43120;
  short unsigned int D.43123;
  int D.43124;
  int D.43125;
  struct MonoMethod * D.43128;
  unsigned int D.43129;
  unsigned int D.43130;
  unsigned int D.43133;
  unsigned int D.43134;
  gboolean D.43141;
  gboolean supported_tail_call;
  int i;

  D.43096 = mono_method_signature (method);
  D.43097 = mono_method_signature (cmethod);
  D.43098 = mono_metadata_signature_equal (D.43096, D.43097);
  if (D.43098 != 0) goto <D.43099>; else goto <D.43094>;
  <D.43099>:
  D.43100 = mono_method_signature (cmethod);
  D.43101 = D.43100->ret;
  D.43102 = mono_type_is_struct (D.43101);
  if (D.43102 == 0) goto <D.43103>; else goto <D.43094>;
  <D.43103>:
  iftmp.453 = 1;
  goto <D.43095>;
  <D.43094>:
  iftmp.453 = 0;
  <D.43095>:
  supported_tail_call = iftmp.453;
  i = 0;
  goto <D.26633>;
  <D.26632>:
  D.43106 = fsig->params[i];
  D.43107 = BIT_FIELD_REF <*D.43106, 32, 32>;
  D.43108 = D.43107 & 1073741824;
  if (D.43108 != 0) goto <D.43104>; else goto <D.43109>;
  <D.43109>:
  D.43106 = fsig->params[i];
  D.43110 = D.43106->type;
  if (D.43110 == 15) goto <D.43104>; else goto <D.43111>;
  <D.43111>:
  D.43106 = fsig->params[i];
  D.43110 = D.43106->type;
  if (D.43110 == 27) goto <D.43104>; else goto <D.43105>;
  <D.43104>:
  supported_tail_call = 0;
  <D.43105>:
  i = i + 1;
  <D.26633>:
  D.43112 = fsig->param_count;
  D.43113 = (int) D.43112;
  if (D.43113 > i) goto <D.26632>; else goto <D.26634>;
  <D.26634>:
  D.43114 = BIT_FIELD_REF <*fsig, 32, 64>;
  D.43115 = D.43114 & 4194304;
  if (D.43115 != 0) goto <D.43116>; else goto <D.43117>;
  <D.43116>:
  D.43118 = cmethod->klass;
  D.43119 = BIT_FIELD_REF <*D.43118, 32, 160>;
  D.43120 = D.43119 & 8;
  if (D.43120 != 0) goto <D.43121>; else goto <D.43122>;
  <D.43121>:
  supported_tail_call = 0;
  <D.43122>:
  <D.43117>:
  D.43123 = cmethod->flags;
  D.43124 = (int) D.43123;
  D.43125 = D.43124 & 8192;
  if (D.43125 != 0) goto <D.43126>; else goto <D.43127>;
  <D.43126>:
  supported_tail_call = 0;
  <D.43127>:
  D.43128 = cfg->method;
  D.43129 = BIT_FIELD_REF <*D.43128, 32, 160>;
  D.43130 = D.43129 & 256;
  if (D.43130 != 0) goto <D.43131>; else goto <D.43132>;
  <D.43131>:
  supported_tail_call = 0;
  <D.43132>:
  D.43133 = BIT_FIELD_REF <*cmethod, 32, 160>;
  D.43134 = D.43133 & 124;
  if (D.43134 != 0) goto <D.43135>; else goto <D.43136>;
  <D.43135>:
  D.43133 = BIT_FIELD_REF <*cmethod, 32, 160>;
  D.43134 = D.43133 & 124;
  if (D.43134 != 68) goto <D.43137>; else goto <D.43138>;
  <D.43137>:
  supported_tail_call = 0;
  <D.43138>:
  <D.43136>:
  if (call_opcode != 40) goto <D.43139>; else goto <D.43140>;
  <D.43139>:
  supported_tail_call = 0;
  <D.43140>:
  D.43141 = supported_tail_call;
  return D.43141;
}


mono_emit_widen_call_res (struct MonoCompile * cfg, struct MonoInst * ins, struct MonoMethodSignature * fsig)
{
  struct MonoType * D.43143;
  int D.43144;
  unsigned int D.43147;
  unsigned int D.43148;
  unsigned int D.43151;
  unsigned int D.43152;
  unsigned int D.43155;
  unsigned int D.43158;
  struct MonoMemPool * D.43159;
  int D.43160;
  struct MonoInst * D.43161;
  short unsigned int D.43162;
  int D.43163;
  int D.43164;
  const unsigned char * D.43165;
  int D.43166;
  struct MonoBasicBlock * D.43167;
  struct MonoInst * D.43168;
  unsigned char D.43172;
  struct MonoInst * D.43173;

  D.43143 = fsig->ret;
  D.43144 = mono_type_is_void (D.43143);
  if (D.43144 == 0) goto <D.43145>; else goto <D.43146>;
  <D.43145>:
  D.43147 = BIT_FIELD_REF <*fsig, 32, 64>;
  D.43148 = D.43147 & 16777216;
  if (D.43148 != 0) goto <D.43149>; else goto <D.43150>;
  <D.43149>:
  D.43143 = fsig->ret;
  D.43151 = BIT_FIELD_REF <*D.43143, 32, 32>;
  D.43152 = D.43151 & 1073741824;
  if (D.43152 == 0) goto <D.43153>; else goto <D.43154>;
  <D.43153>:
  {
    int widen_op;

    widen_op = -1;
    D.43143 = fsig->ret;
    D.43155 = mono_type_to_load_membase (cfg, D.43143);
    switch (D.43155) <default: <D.25046>, case 389: <D.25041>, case 390: <D.25043>, case 391: <D.25044>, case 392: <D.25045>>
    <D.25041>:
    widen_op = 580;
    goto <D.25042>;
    <D.25043>:
    widen_op = 591;
    goto <D.25042>;
    <D.25044>:
    widen_op = 581;
    goto <D.25042>;
    <D.25045>:
    widen_op = 590;
    goto <D.25042>;
    <D.25046>:
    goto <D.25042>;
    <D.25042>:
    if (widen_op != -1) goto <D.43156>; else goto <D.43157>;
    <D.43156>:
    {
      int dreg;
      struct MonoInst * widen;

      D.43158 = alloc_preg (cfg);
      dreg = (int) D.43158;
      D.43159 = cfg->mempool;
      widen = mono_mempool_alloc (D.43159, 56);
      widen->data.op[1].const_val = 0;
      D.43160 = widen->data.op[1].const_val;
      widen->data.op[0].const_val = D.43160;
      widen->prev = 0B;
      D.43161 = widen->prev;
      widen->next = D.43161;
      D.43162 = (short unsigned int) widen_op;
      widen->opcode = D.43162;
      widen->flags = 0;
      widen->type = 0;
      widen->dreg = -1;
      widen->sreg3 = -1;
      D.43163 = widen->sreg3;
      widen->sreg2 = D.43163;
      D.43164 = widen->sreg2;
      widen->sreg1 = D.43164;
      D.43165 = cfg->ip;
      widen->cil_code = D.43165;
      widen->dreg = dreg;
      D.43166 = ins->dreg;
      widen->sreg1 = D.43166;
      D.43167 = cfg->cbb;
      D.43168 = D.43167->last_ins;
      if (D.43168 != 0B) goto <D.43169>; else goto <D.43170>;
      <D.43169>:
      D.43167 = cfg->cbb;
      D.43168 = D.43167->last_ins;
      D.43168->next = widen;
      D.43167 = cfg->cbb;
      D.43168 = D.43167->last_ins;
      widen->prev = D.43168;
      D.43167 = cfg->cbb;
      D.43167->last_ins = widen;
      goto <D.43171>;
      <D.43170>:
      D.43167 = cfg->cbb;
      D.43167 = cfg->cbb;
      D.43167->last_ins = widen;
      D.43168 = D.43167->last_ins;
      D.43167->code = D.43168;
      <D.43171>:
      D.43172 = ins->type;
      widen->type = D.43172;
      ins = widen;
    }
    <D.43157>:
  }
  <D.43154>:
  <D.43150>:
  <D.43146>:
  D.43173 = ins;
  return D.43173;
}


emit_pop_lmf (struct MonoCompile * cfg)
{
  unsigned int D.43176;
  unsigned int D.43177;
  struct MonoMemPool * D.43180;
  int D.43181;
  struct MonoInst * D.43182;
  int D.43183;
  int D.43184;
  const unsigned char * D.43185;
  struct MonoInst * D.43186;
  unsigned char D.43187;
  unsigned char D.43188;
  struct MonoClass * D.43189;
  unsigned int D.43190;
  int D.43191;
  int D.43192;
  _Bool D.43193;
  long int D.43194;
  long int D.43195;
  struct MonoType * D.43198;
  int D.43199;
  _Bool iftmp.454;
  int D.43203;
  int iftmp.455;
  unsigned char D.43210;
  struct MonoInst * iftmp.456;
  int D.43216;
  int D.43217;
  unsigned int D.43218;
  unsigned int D.43219;
  struct MonoInst * * D.43222;
  sizetype D.43223;
  sizetype D.43224;
  sizetype D.43225;
  struct MonoInst * * D.43226;
  struct MonoInst * iftmp.457;
  int D.43229;
  unsigned int D.43230;
  sizetype D.43233;
  sizetype D.43234;
  struct MonoInst * * D.43235;
  _Bool D.43237;
  long int D.43238;
  long int D.43239;
  _Bool D.43242;
  long int D.43243;
  long int D.43244;
  unsigned char D.43247;
  unsigned char D.43248;
  unsigned char D.43249;
  unsigned char D.43250;
  struct MonoBasicBlock * D.43251;
  struct MonoInst * D.43252;
  unsigned int D.43258;
  int D.43260;
  unsigned int D.43262;
  struct MonoInst * D.43266;
  struct MonoClass * D.43269;
  struct MonoType * D.43270;
  struct MonoInst * D.43271;
  unsigned int D.43272;
  int lmf_reg;
  int lmf_addr_reg;
  int prev_lmf_reg;
  struct MonoInst * ins;

  D.43176 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.43177 = D.43176 & 67108864;
  if (D.43177 == 0) goto <D.43178>; else goto <D.43179>;
  <D.43178>:
  return;
  <D.43179>:
  D.43180 = cfg->mempool;
  ins = mono_mempool_alloc (D.43180, 56);
  ins->data.op[1].const_val = 0;
  D.43181 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.43181;
  ins->prev = 0B;
  D.43182 = ins->prev;
  ins->next = D.43182;
  ins->opcode = 314;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.43183 = ins->sreg3;
  ins->sreg2 = D.43183;
  D.43184 = ins->sreg2;
  ins->sreg1 = D.43184;
  D.43185 = cfg->ip;
  ins->cil_code = D.43185;
  D.43186 = cfg->lmf_var;
  ins->data.op[0].p = D.43186;
  D.43186 = cfg->lmf_var;
  D.43186 = cfg->lmf_var;
  D.43187 = D.43186->flags;
  D.43188 = D.43187 | 16;
  D.43186->flags = D.43188;
  ins->type = 5;
  D.43186 = cfg->lmf_var;
  D.43189 = D.43186->klass;
  ins->klass = D.43189;
  D.43190 = alloc_dreg (cfg, 5);
  D.43191 = (int) D.43190;
  ins->dreg = D.43191;
  cfg->has_indirection = 1;
  D.43192 = cfg->gsharedvt;
  D.43193 = D.43192 != 0;
  D.43194 = (long int) D.43193;
  D.43195 = __builtin_expect (D.43194, 0);
  if (D.43195 != 0) goto <D.43196>; else goto <D.43197>;
  <D.43196>:
  D.43186 = cfg->lmf_var;
  D.43198 = D.43186->data.op[1].vtype;
  D.43199 = mini_is_gsharedvt_variable_type (cfg, D.43198);
  if (D.43199 != 0) goto <D.43200>; else goto <D.43201>;
  <D.43200>:
  handle_gsharedvt_ldaddr (cfg);
  <D.43201>:
  <D.43197>:
  D.43203 = mono_arch_is_soft_float ();
  if (D.43203 != 0) goto <D.43204>; else goto <D.43205>;
  <D.43204>:
  D.43186 = cfg->lmf_var;
  D.43210 = D.43186->type;
  if (D.43210 == 2) goto <D.43207>; else goto <D.43211>;
  <D.43211>:
  D.43186 = cfg->lmf_var;
  D.43210 = D.43186->type;
  if (D.43210 == 4) goto <D.43207>; else goto <D.43208>;
  <D.43207>:
  iftmp.455 = 1;
  goto <D.43209>;
  <D.43208>:
  iftmp.455 = 0;
  <D.43209>:
  iftmp.454 = (_Bool) iftmp.455;
  goto <D.43212>;
  <D.43205>:
  D.43186 = cfg->lmf_var;
  D.43210 = D.43186->type;
  iftmp.454 = D.43210 == 2;
  <D.43212>:
  if (iftmp.454 != 0) goto <D.43213>; else goto <D.43214>;
  <D.43213>:
  {
    struct MonoInst * var1;
    struct MonoInst * var2;

    D.43186 = cfg->lmf_var;
    D.43216 = D.43186->dreg;
    D.43217 = D.43216 + 1;
    D.43218 = (unsigned int) D.43217;
    D.43219 = cfg->vreg_to_inst_len;
    if (D.43218 < D.43219) goto <D.43220>; else goto <D.43221>;
    <D.43220>:
    D.43222 = cfg->vreg_to_inst;
    D.43186 = cfg->lmf_var;
    D.43216 = D.43186->dreg;
    D.43223 = (sizetype) D.43216;
    D.43224 = D.43223 + 1;
    D.43225 = D.43224 * 4;
    D.43226 = D.43222 + D.43225;
    iftmp.456 = *D.43226;
    goto <D.43227>;
    <D.43221>:
    iftmp.456 = 0B;
    <D.43227>:
    var1 = iftmp.456;
    D.43186 = cfg->lmf_var;
    D.43216 = D.43186->dreg;
    D.43229 = D.43216 + 2;
    D.43230 = (unsigned int) D.43229;
    D.43219 = cfg->vreg_to_inst_len;
    if (D.43230 < D.43219) goto <D.43231>; else goto <D.43232>;
    <D.43231>:
    D.43222 = cfg->vreg_to_inst;
    D.43186 = cfg->lmf_var;
    D.43216 = D.43186->dreg;
    D.43223 = (sizetype) D.43216;
    D.43233 = D.43223 + 2;
    D.43234 = D.43233 * 4;
    D.43235 = D.43222 + D.43234;
    iftmp.457 = *D.43235;
    goto <D.43236>;
    <D.43232>:
    iftmp.457 = 0B;
    <D.43236>:
    var2 = iftmp.457;
    D.43237 = var1 == 0B;
    D.43238 = (long int) D.43237;
    D.43239 = __builtin_expect (D.43238, 0);
    if (D.43239 != 0) goto <D.43240>; else goto <D.43241>;
    <D.43240>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1970, "var1");
    <D.43241>:
    D.43242 = var2 == 0B;
    D.43243 = (long int) D.43242;
    D.43244 = __builtin_expect (D.43243, 0);
    if (D.43244 != 0) goto <D.43245>; else goto <D.43246>;
    <D.43245>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1970, "var2");
    <D.43246>:
    D.43247 = var1->flags;
    D.43248 = D.43247 | 16;
    var1->flags = D.43248;
    D.43249 = var2->flags;
    D.43250 = D.43249 | 16;
    var2->flags = D.43250;
  }
  <D.43214>:
  D.43251 = cfg->cbb;
  D.43252 = D.43251->last_ins;
  if (D.43252 != 0B) goto <D.43253>; else goto <D.43254>;
  <D.43253>:
  D.43251 = cfg->cbb;
  D.43252 = D.43251->last_ins;
  D.43252->next = ins;
  D.43251 = cfg->cbb;
  D.43252 = D.43251->last_ins;
  ins->prev = D.43252;
  D.43251 = cfg->cbb;
  D.43251->last_ins = ins;
  goto <D.43255>;
  <D.43254>:
  D.43251 = cfg->cbb;
  D.43251 = cfg->cbb;
  D.43251->last_ins = ins;
  D.43252 = D.43251->last_ins;
  D.43251->code = D.43252;
  <D.43255>:
  lmf_reg = ins->dreg;
  D.43176 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.43258 = D.43176 & 134217728;
  if (D.43258 != 0) goto <D.43259>; else goto <D.43256>;
  <D.43259>:
  D.43260 = mini_tls_get_supported (cfg, 3);
  if (D.43260 != 0) goto <D.43261>; else goto <D.43256>;
  <D.43261>:
  D.43262 = alloc_preg (cfg);
  prev_lmf_reg = (int) D.43262;
  D.43180 = cfg->mempool;
  ins = mono_mempool_alloc (D.43180, 56);
  ins->data.op[1].const_val = 0;
  D.43181 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.43181;
  ins->prev = 0B;
  D.43182 = ins->prev;
  ins->next = D.43182;
  ins->opcode = 388;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.43183 = ins->sreg3;
  ins->sreg2 = D.43183;
  D.43184 = ins->sreg2;
  ins->sreg1 = D.43184;
  D.43185 = cfg->ip;
  ins->cil_code = D.43185;
  ins->dreg = prev_lmf_reg;
  ins->sreg1 = lmf_reg;
  ins->data.op[0].const_val = 0;
  ins->type = 1;
  D.43251 = cfg->cbb;
  D.43252 = D.43251->last_ins;
  if (D.43252 != 0B) goto <D.43263>; else goto <D.43264>;
  <D.43263>:
  D.43251 = cfg->cbb;
  D.43252 = D.43251->last_ins;
  D.43252->next = ins;
  D.43251 = cfg->cbb;
  D.43252 = D.43251->last_ins;
  ins->prev = D.43252;
  D.43251 = cfg->cbb;
  D.43251->last_ins = ins;
  goto <D.43265>;
  <D.43264>:
  D.43251 = cfg->cbb;
  D.43251 = cfg->cbb;
  D.43251->last_ins = ins;
  D.43252 = D.43251->last_ins;
  D.43251->code = D.43252;
  <D.43265>:
  emit_tls_set (cfg, prev_lmf_reg, 3);
  goto <D.43257>;
  <D.43256>:
  D.43266 = cfg->lmf_addr_var;
  if (D.43266 == 0B) goto <D.43267>; else goto <D.43268>;
  <D.43267>:
  D.43269 = mono_defaults.int_class;
  D.43270 = &D.43269->byval_arg;
  D.43271 = mono_compile_create_var (cfg, D.43270, 329);
  cfg->lmf_addr_var = D.43271;
  <D.43268>:
  D.43266 = cfg->lmf_addr_var;
  lmf_addr_reg = D.43266->dreg;
  D.43272 = alloc_preg (cfg);
  prev_lmf_reg = (int) D.43272;
  D.43180 = cfg->mempool;
  ins = mono_mempool_alloc (D.43180, 56);
  ins->data.op[1].const_val = 0;
  D.43181 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.43181;
  ins->prev = 0B;
  D.43182 = ins->prev;
  ins->next = D.43182;
  ins->opcode = 388;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.43183 = ins->sreg3;
  ins->sreg2 = D.43183;
  D.43184 = ins->sreg2;
  ins->sreg1 = D.43184;
  D.43185 = cfg->ip;
  ins->cil_code = D.43185;
  ins->dreg = prev_lmf_reg;
  ins->sreg1 = lmf_reg;
  ins->data.op[0].const_val = 0;
  ins->type = 1;
  D.43251 = cfg->cbb;
  D.43252 = D.43251->last_ins;
  if (D.43252 != 0B) goto <D.43273>; else goto <D.43274>;
  <D.43273>:
  D.43251 = cfg->cbb;
  D.43252 = D.43251->last_ins;
  D.43252->next = ins;
  D.43251 = cfg->cbb;
  D.43252 = D.43251->last_ins;
  ins->prev = D.43252;
  D.43251 = cfg->cbb;
  D.43251->last_ins = ins;
  goto <D.43275>;
  <D.43274>:
  D.43251 = cfg->cbb;
  D.43251 = cfg->cbb;
  D.43251->last_ins = ins;
  D.43252 = D.43251->last_ins;
  D.43251->code = D.43252;
  <D.43275>:
  D.43180 = cfg->mempool;
  ins = mono_mempool_alloc (D.43180, 56);
  ins->data.op[1].const_val = 0;
  D.43181 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.43181;
  ins->prev = 0B;
  D.43182 = ins->prev;
  ins->next = D.43182;
  ins->opcode = 374;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.43183 = ins->sreg3;
  ins->sreg2 = D.43183;
  D.43184 = ins->sreg2;
  ins->sreg1 = D.43184;
  D.43185 = cfg->ip;
  ins->cil_code = D.43185;
  ins->sreg1 = prev_lmf_reg;
  ins->dreg = lmf_addr_reg;
  ins->data.op[0].const_val = 0;
  D.43251 = cfg->cbb;
  D.43252 = D.43251->last_ins;
  if (D.43252 != 0B) goto <D.43276>; else goto <D.43277>;
  <D.43276>:
  D.43251 = cfg->cbb;
  D.43252 = D.43251->last_ins;
  D.43252->next = ins;
  D.43251 = cfg->cbb;
  D.43252 = D.43251->last_ins;
  ins->prev = D.43252;
  D.43251 = cfg->cbb;
  D.43251->last_ins = ins;
  goto <D.43278>;
  <D.43277>:
  D.43251 = cfg->cbb;
  D.43251 = cfg->cbb;
  D.43251->last_ins = ins;
  D.43252 = D.43251->last_ins;
  D.43251->code = D.43252;
  <D.43278>:
  <D.43257>:
}


emit_tls_set (struct MonoCompile * cfg, int sreg1, int tls_key)
{
  unsigned int D.43280;
  unsigned int D.43281;
  struct MonoMemPool * D.43286;
  int D.43287;
  struct MonoInst * D.43288;
  guint16 iftmp.458;
  int D.43293;
  int D.43294;
  const unsigned char * D.43295;
  void * tls_key.459;
  unsigned int D.43297;
  int D.43298;
  <unnamed type> tls_key.460;
  void * _offset.461;
  unsigned int D.43302;
  int D.43303;
  struct MonoBasicBlock * D.43304;
  struct MonoInst * D.43305;
  int D.43309;
  struct MonoInst * D.43310;
  int D.43311;
  int D.43312;
  int D.43313;
  int D.43318;
  struct MonoInst * ins;
  struct MonoInst * c;

  D.43280 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.43281 = D.43280 & 64;
  if (D.43281 != 0) goto <D.43282>; else goto <D.43283>;
  <D.43282>:
  D.43280 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.43281 = D.43280 & 64;
  if (D.43281 != 0) goto <D.43284>; else goto <D.43285>;
  <D.43284>:
  D.43286 = cfg->mempool;
  c = mono_mempool_alloc (D.43286, 56);
  c->data.op[1].const_val = 0;
  D.43287 = c->data.op[1].const_val;
  c->data.op[0].const_val = D.43287;
  c->prev = 0B;
  D.43288 = c->prev;
  c->next = D.43288;
  D.43280 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.43281 = D.43280 & 64;
  if (D.43281 != 0) goto <D.43290>; else goto <D.43291>;
  <D.43290>:
  iftmp.458 = 732;
  goto <D.43292>;
  <D.43291>:
  iftmp.458 = 362;
  <D.43292>:
  c->opcode = iftmp.458;
  c->flags = 0;
  c->type = 0;
  c->dreg = -1;
  c->sreg3 = -1;
  D.43293 = c->sreg3;
  c->sreg2 = D.43293;
  D.43294 = c->sreg2;
  c->sreg1 = D.43294;
  D.43295 = cfg->ip;
  c->cil_code = D.43295;
  tls_key.459 = (void *) tls_key;
  c->data.op[0].p = tls_key.459;
  c->data.op[1].src = 48B;
  c->type = 3;
  D.43297 = alloc_dreg (cfg, 3);
  D.43298 = (int) D.43297;
  c->dreg = D.43298;
  goto <D.43299>;
  <D.43285>:
  {
    int _offset;

    tls_key.460 = (<unnamed type>) tls_key;
    _offset = mini_get_tls_offset (tls_key.460);
    D.43286 = cfg->mempool;
    c = mono_mempool_alloc (D.43286, 56);
    c->data.op[1].const_val = 0;
    D.43287 = c->data.op[1].const_val;
    c->data.op[0].const_val = D.43287;
    c->prev = 0B;
    D.43288 = c->prev;
    c->next = D.43288;
    c->opcode = 362;
    c->flags = 0;
    c->type = 0;
    c->dreg = -1;
    c->sreg3 = -1;
    D.43293 = c->sreg3;
    c->sreg2 = D.43293;
    D.43294 = c->sreg2;
    c->sreg1 = D.43294;
    D.43295 = cfg->ip;
    c->cil_code = D.43295;
    _offset.461 = (void *) _offset;
    c->data.op[0].p = _offset.461;
    c->type = 3;
    D.43302 = alloc_dreg (cfg, 3);
    D.43303 = (int) D.43302;
    c->dreg = D.43303;
  }
  <D.43299>:
  D.43304 = cfg->cbb;
  D.43305 = D.43304->last_ins;
  if (D.43305 != 0B) goto <D.43306>; else goto <D.43307>;
  <D.43306>:
  D.43304 = cfg->cbb;
  D.43305 = D.43304->last_ins;
  D.43305->next = c;
  D.43304 = cfg->cbb;
  D.43305 = D.43304->last_ins;
  c->prev = D.43305;
  D.43304 = cfg->cbb;
  D.43304->last_ins = c;
  goto <D.43308>;
  <D.43307>:
  D.43304 = cfg->cbb;
  D.43304 = cfg->cbb;
  D.43304->last_ins = c;
  D.43305 = D.43304->last_ins;
  D.43304->code = D.43305;
  <D.43308>:
  D.43286 = cfg->mempool;
  ins = mono_mempool_alloc (D.43286, 56);
  ins->data.op[1].const_val = 0;
  D.43309 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.43309;
  ins->prev = 0B;
  D.43310 = ins->prev;
  ins->next = D.43310;
  ins->opcode = 794;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.43311 = ins->sreg3;
  ins->sreg2 = D.43311;
  D.43312 = ins->sreg2;
  ins->sreg1 = D.43312;
  D.43295 = cfg->ip;
  ins->cil_code = D.43295;
  ins->sreg1 = sreg1;
  D.43313 = c->dreg;
  ins->sreg2 = D.43313;
  D.43304 = cfg->cbb;
  D.43305 = D.43304->last_ins;
  if (D.43305 != 0B) goto <D.43314>; else goto <D.43315>;
  <D.43314>:
  D.43304 = cfg->cbb;
  D.43305 = D.43304->last_ins;
  D.43305->next = ins;
  D.43304 = cfg->cbb;
  D.43305 = D.43304->last_ins;
  ins->prev = D.43305;
  D.43304 = cfg->cbb;
  D.43304->last_ins = ins;
  goto <D.43316>;
  <D.43315>:
  D.43304 = cfg->cbb;
  D.43304 = cfg->cbb;
  D.43304->last_ins = ins;
  D.43305 = D.43304->last_ins;
  D.43304->code = D.43305;
  <D.43316>:
  goto <D.43317>;
  <D.43283>:
  D.43286 = cfg->mempool;
  ins = mono_mempool_alloc (D.43286, 56);
  ins->data.op[1].const_val = 0;
  D.43309 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.43309;
  ins->prev = 0B;
  D.43310 = ins->prev;
  ins->next = D.43310;
  ins->opcode = 793;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.43311 = ins->sreg3;
  ins->sreg2 = D.43311;
  D.43312 = ins->sreg2;
  ins->sreg1 = D.43312;
  D.43295 = cfg->ip;
  ins->cil_code = D.43295;
  ins->sreg1 = sreg1;
  tls_key.460 = (<unnamed type>) tls_key;
  D.43318 = mini_get_tls_offset (tls_key.460);
  ins->data.op[0].const_val = D.43318;
  D.43304 = cfg->cbb;
  D.43305 = D.43304->last_ins;
  if (D.43305 != 0B) goto <D.43319>; else goto <D.43320>;
  <D.43319>:
  D.43304 = cfg->cbb;
  D.43305 = D.43304->last_ins;
  D.43305->next = ins;
  D.43304 = cfg->cbb;
  D.43305 = D.43304->last_ins;
  ins->prev = D.43305;
  D.43304 = cfg->cbb;
  D.43304->last_ins = ins;
  goto <D.43321>;
  <D.43320>:
  D.43304 = cfg->cbb;
  D.43304 = cfg->cbb;
  D.43304->last_ins = ins;
  D.43305 = D.43304->last_ins;
  D.43304->code = D.43305;
  <D.43321>:
  <D.43317>:
}


ldind_to_load_membase (int opcode)
{
  int D.43322;

  switch (opcode) <default: <D.27728>, case 70: <D.27717>, case 71: <D.27718>, case 72: <D.27719>, case 73: <D.27720>, case 74: <D.27721>, case 75: <D.27722>, case 76: <D.27725>, case 77: <D.27723>, case 78: <D.27726>, case 79: <D.27727>, case 80: <D.27724>>
  <D.27717>:
  D.43322 = 389;
  return D.43322;
  <D.27718>:
  D.43322 = 390;
  return D.43322;
  <D.27719>:
  D.43322 = 391;
  return D.43322;
  <D.27720>:
  D.43322 = 392;
  return D.43322;
  <D.27721>:
  D.43322 = 393;
  return D.43322;
  <D.27722>:
  D.43322 = 394;
  return D.43322;
  <D.27723>:
  D.43322 = 388;
  return D.43322;
  <D.27724>:
  D.43322 = 388;
  return D.43322;
  <D.27725>:
  D.43322 = 395;
  return D.43322;
  <D.27726>:
  D.43322 = 396;
  return D.43322;
  <D.27727>:
  D.43322 = 397;
  return D.43322;
  <D.27728>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12163);
  D.43322 = -1;
  return D.43322;
}


stind_to_store_membase (int opcode)
{
  int D.43324;

  switch (opcode) <default: <D.27740>, case 81: <D.27736>, case 82: <D.27732>, case 83: <D.27733>, case 84: <D.27734>, case 85: <D.27737>, case 86: <D.27738>, case 87: <D.27739>, case 223: <D.27735>>
  <D.27732>:
  D.43324 = 375;
  return D.43324;
  <D.27733>:
  D.43324 = 376;
  return D.43324;
  <D.27734>:
  D.43324 = 377;
  return D.43324;
  <D.27735>:
  <D.27736>:
  D.43324 = 374;
  return D.43324;
  <D.27737>:
  D.43324 = 378;
  return D.43324;
  <D.27738>:
  D.43324 = 379;
  return D.43324;
  <D.27739>:
  D.43324 = 380;
  return D.43324;
  <D.27740>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12189);
  D.43324 = -1;
  return D.43324;
}


is_exception_class (struct MonoClass * class)
{
  struct MonoClass * D.43326;
  gboolean D.43329;

  goto <D.26605>;
  <D.26604>:
  D.43326 = mono_defaults.exception_class;
  if (D.43326 == class) goto <D.43327>; else goto <D.43328>;
  <D.43327>:
  D.43329 = 1;
  return D.43329;
  <D.43328>:
  class = class->parent;
  <D.26605>:
  if (class != 0B) goto <D.26604>; else goto <D.26606>;
  <D.26606>:
  D.43329 = 0;
  return D.43329;
}


check_call_signature (struct MonoCompile * cfg, struct MonoMethodSignature * sig, struct MonoInst * * args)
{
  unsigned int D.43331;
  unsigned int D.43332;
  struct MonoInst * D.43335;
  unsigned char D.43336;
  unsigned char D.43337;
  int D.43342;
  struct MonoType * D.43343;
  unsigned int D.43344;
  unsigned int D.43345;
  unsigned int i.462;
  unsigned int D.43349;
  struct MonoInst * * D.43350;
  struct MonoInst * D.43351;
  unsigned char D.43352;
  struct MonoGenericSharingContext * D.43357;
  unsigned char D.43358;
  int D.43359;
  struct MonoClass * D.43378;
  unsigned int D.43379;
  unsigned int D.43380;
  struct MonoGenericClass * D.43387;
  struct MonoClass * D.43388;
  short unsigned int D.43391;
  int D.43392;
  struct MonoType * simple_type;
  int i;
  void handle_enum = <<< error >>>;

  D.43331 = BIT_FIELD_REF <*sig, 32, 64>;
  D.43332 = D.43331 & 4194304;
  if (D.43332 != 0) goto <D.43333>; else goto <D.43334>;
  <D.43333>:
  D.43335 = *args;
  D.43336 = D.43335->type;
  D.43337 = D.43336 + 251;
  if (D.43337 > 1) goto <D.43338>; else goto <D.43339>;
  <D.43338>:
  D.43335 = *args;
  D.43336 = D.43335->type;
  if (D.43336 != 3) goto <D.43340>; else goto <D.43341>;
  <D.43340>:
  D.43342 = 1;
  return D.43342;
  <D.43341>:
  <D.43339>:
  args = args + 4;
  <D.43334>:
  i = 0;
  goto <D.24859>;
  <D.24858>:
  D.43343 = sig->params[i];
  D.43344 = BIT_FIELD_REF <*D.43343, 32, 32>;
  D.43345 = D.43344 & 1073741824;
  if (D.43345 != 0) goto <D.43346>; else goto <D.43347>;
  <D.43346>:
  i.462 = (unsigned int) i;
  D.43349 = i.462 * 4;
  D.43350 = args + D.43349;
  D.43351 = *D.43350;
  D.43352 = D.43351->type;
  if (D.43352 != 5) goto <D.43353>; else goto <D.43354>;
  <D.43353>:
  i.462 = (unsigned int) i;
  D.43349 = i.462 * 4;
  D.43350 = args + D.43349;
  D.43351 = *D.43350;
  D.43352 = D.43351->type;
  if (D.43352 != 3) goto <D.43355>; else goto <D.43356>;
  <D.43355>:
  D.43342 = 1;
  return D.43342;
  <D.43356>:
  <D.43354>:
  // predicted unlikely by continue predictor.
  goto <D.24827>;
  <D.43347>:
  simple_type = sig->params[i];
  D.43357 = cfg->generic_sharing_context;
  simple_type = mini_get_basic_type_from_generic (D.43357, simple_type);
  handle_enum:
  D.43358 = simple_type->type;
  D.43359 = (int) D.43358;
  switch (D.43359) <default: <D.24856>, case 1: <D.24829>, case 2: <D.24832>, case 3: <D.24835>, case 4: <D.24830>, case 5: <D.24831>, case 6: <D.24833>, case 7: <D.24834>, case 8: <D.24836>, case 9: <D.24837>, case 10: <D.24847>, case 11: <D.24848>, case 12: <D.24849>, case 13: <D.24850>, case 14: <D.24843>, case 15: <D.24840>, case 17: <D.24851>, case 18: <D.24842>, case 19: <D.24854>, case 20: <D.24846>, case 21: <D.24853>, case 22: <D.24852>, case 24: <D.24838>, case 25: <D.24839>, case 27: <D.24841>, case 28: <D.24844>, case 29: <D.24845>, case 30: <D.24855>>
  <D.24829>:
  D.43342 = 1;
  return D.43342;
  <D.24830>:
  <D.24831>:
  <D.24832>:
  <D.24833>:
  <D.24834>:
  <D.24835>:
  <D.24836>:
  <D.24837>:
  i.462 = (unsigned int) i;
  D.43349 = i.462 * 4;
  D.43350 = args + D.43349;
  D.43351 = *D.43350;
  D.43352 = D.43351->type;
  if (D.43352 != 1) goto <D.43360>; else goto <D.43361>;
  <D.43360>:
  i.462 = (unsigned int) i;
  D.43349 = i.462 * 4;
  D.43350 = args + D.43349;
  D.43351 = *D.43350;
  D.43352 = D.43351->type;
  if (D.43352 != 3) goto <D.43362>; else goto <D.43363>;
  <D.43362>:
  D.43342 = 1;
  return D.43342;
  <D.43363>:
  <D.43361>:
  // predicted unlikely by continue predictor.
  goto <D.24827>;
  <D.24838>:
  <D.24839>:
  <D.24840>:
  <D.24841>:
  i.462 = (unsigned int) i;
  D.43349 = i.462 * 4;
  D.43350 = args + D.43349;
  D.43351 = *D.43350;
  D.43352 = D.43351->type;
  if (D.43352 != 1) goto <D.43364>; else goto <D.43365>;
  <D.43364>:
  i.462 = (unsigned int) i;
  D.43349 = i.462 * 4;
  D.43350 = args + D.43349;
  D.43351 = *D.43350;
  D.43352 = D.43351->type;
  if (D.43352 != 3) goto <D.43366>; else goto <D.43367>;
  <D.43366>:
  i.462 = (unsigned int) i;
  D.43349 = i.462 * 4;
  D.43350 = args + D.43349;
  D.43351 = *D.43350;
  D.43352 = D.43351->type;
  if (D.43352 != 5) goto <D.43368>; else goto <D.43369>;
  <D.43368>:
  i.462 = (unsigned int) i;
  D.43349 = i.462 * 4;
  D.43350 = args + D.43349;
  D.43351 = *D.43350;
  D.43352 = D.43351->type;
  if (D.43352 != 6) goto <D.43370>; else goto <D.43371>;
  <D.43370>:
  D.43342 = 1;
  return D.43342;
  <D.43371>:
  <D.43369>:
  <D.43367>:
  <D.43365>:
  // predicted unlikely by continue predictor.
  goto <D.24827>;
  <D.24842>:
  <D.24843>:
  <D.24844>:
  <D.24845>:
  <D.24846>:
  i.462 = (unsigned int) i;
  D.43349 = i.462 * 4;
  D.43350 = args + D.43349;
  D.43351 = *D.43350;
  D.43352 = D.43351->type;
  if (D.43352 != 6) goto <D.43372>; else goto <D.43373>;
  <D.43372>:
  D.43342 = 1;
  return D.43342;
  <D.43373>:
  // predicted unlikely by continue predictor.
  goto <D.24827>;
  <D.24847>:
  <D.24848>:
  i.462 = (unsigned int) i;
  D.43349 = i.462 * 4;
  D.43350 = args + D.43349;
  D.43351 = *D.43350;
  D.43352 = D.43351->type;
  if (D.43352 != 2) goto <D.43374>; else goto <D.43375>;
  <D.43374>:
  D.43342 = 1;
  return D.43342;
  <D.43375>:
  // predicted unlikely by continue predictor.
  goto <D.24827>;
  <D.24849>:
  <D.24850>:
  i.462 = (unsigned int) i;
  D.43349 = i.462 * 4;
  D.43350 = args + D.43349;
  D.43351 = *D.43350;
  D.43352 = D.43351->type;
  if (D.43352 != 4) goto <D.43376>; else goto <D.43377>;
  <D.43376>:
  D.43342 = 1;
  return D.43342;
  <D.43377>:
  // predicted unlikely by continue predictor.
  goto <D.24827>;
  <D.24851>:
  D.43378 = simple_type->data.klass;
  D.43379 = BIT_FIELD_REF <*D.43378, 32, 160>;
  D.43380 = D.43379 & 16;
  if (D.43380 != 0) goto <D.43381>; else goto <D.43382>;
  <D.43381>:
  D.43378 = simple_type->data.klass;
  simple_type = mono_class_enum_basetype (D.43378);
  goto handle_enum;
  <D.43382>:
  i.462 = (unsigned int) i;
  D.43349 = i.462 * 4;
  D.43350 = args + D.43349;
  D.43351 = *D.43350;
  D.43352 = D.43351->type;
  if (D.43352 != 7) goto <D.43383>; else goto <D.43384>;
  <D.43383>:
  D.43342 = 1;
  return D.43342;
  <D.43384>:
  // predicted unlikely by continue predictor.
  goto <D.24827>;
  <D.24852>:
  i.462 = (unsigned int) i;
  D.43349 = i.462 * 4;
  D.43350 = args + D.43349;
  D.43351 = *D.43350;
  D.43352 = D.43351->type;
  if (D.43352 != 7) goto <D.43385>; else goto <D.43386>;
  <D.43385>:
  D.43342 = 1;
  return D.43342;
  <D.43386>:
  // predicted unlikely by continue predictor.
  goto <D.24827>;
  <D.24853>:
  D.43387 = simple_type->data.generic_class;
  D.43388 = D.43387->container_class;
  simple_type = &D.43388->byval_arg;
  goto handle_enum;
  <D.24854>:
  <D.24855>:
  i.462 = (unsigned int) i;
  D.43349 = i.462 * 4;
  D.43350 = args + D.43349;
  D.43351 = *D.43350;
  D.43352 = D.43351->type;
  if (D.43352 != 7) goto <D.43389>; else goto <D.43390>;
  <D.43389>:
  D.43342 = 1;
  return D.43342;
  <D.43390>:
  // predicted unlikely by continue predictor.
  goto <D.24827>;
  <D.24856>:
  D.43358 = simple_type->type;
  D.43359 = (int) D.43358;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in check_call_signature", D.43359);
  <D.24857>:
  goto <D.24857>;
  <D.24827>:
  i = i + 1;
  <D.24859>:
  D.43391 = sig->param_count;
  D.43392 = (int) D.43391;
  if (D.43392 > i) goto <D.24858>; else goto <D.24860>;
  <D.24860>:
  D.43342 = 0;
  return D.43342;
}


handle_array_new (struct MonoCompile * cfg, int rank, struct MonoInst * * sp, unsigned char * ip)
{
  unsigned int D.43394;
  unsigned int D.43395;
  struct MonoInst * D.43396;
  const void * D.43397;
  struct MonoMethodSignature * D.43398;
  struct MonoJitICallInfo * info;

  info = mono_get_array_new_va_icall (rank);
  D.43394 = cfg->flags;
  D.43395 = D.43394 | 8;
  cfg->flags = D.43395;
  cfg->disable_llvm = 1;
  D.43397 = mono_icall_get_wrapper (info);
  D.43398 = info->sig;
  D.43396 = mono_emit_native_call (cfg, D.43397, D.43398, sp);
  return D.43396;
}


emit_init_rvar (struct MonoCompile * cfg, int dreg, struct MonoType * rtype)
{
  unsigned char D.43400;
  unsigned int D.43401;
  unsigned int D.43402;
  struct MonoMemPool * D.43405;
  int D.43406;
  struct MonoInst * D.43407;
  int D.43408;
  int D.43409;
  const unsigned char * D.43410;
  struct MonoBasicBlock * D.43411;
  struct MonoInst * D.43412;
  unsigned int t.463;
  unsigned int D.43418;
  int D.43421;
  struct MonoInst * D.43422;
  int D.43423;
  int D.43424;
  unsigned int D.43429;
  int D.43432;
  struct MonoInst * D.43433;
  int D.43434;
  int D.43435;
  unsigned int D.43440;
  int D.43443;
  struct MonoInst * D.43444;
  int D.43445;
  int D.43446;
  int D.43457;
  int D.43458;
  struct MonoInst * D.43459;
  int D.43460;
  int D.43461;
  struct MonoClass * D.43462;
  int D.43470;
  int D.43472;
  struct MonoInst * D.43473;
  int D.43474;
  int D.43475;
  struct MonoClass * D.43476;
  int D.43480;
  struct MonoInst * D.43481;
  int D.43482;
  int D.43483;
  static double r8_0 = 0.0;
  struct MonoInst * ins;
  int t;

  rtype = mini_replace_type (rtype);
  D.43400 = rtype->type;
  t = (int) D.43400;
  D.43401 = BIT_FIELD_REF <*rtype, 32, 32>;
  D.43402 = D.43401 & 1073741824;
  if (D.43402 != 0) goto <D.43403>; else goto <D.43404>;
  <D.43403>:
  {
    struct MonoInst * inst;

    D.43405 = cfg->mempool;
    inst = mono_mempool_alloc (D.43405, 56);
    inst->data.op[1].const_val = 0;
    D.43406 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.43406;
    inst->prev = 0B;
    D.43407 = inst->prev;
    inst->next = D.43407;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.43408 = inst->sreg3;
    inst->sreg2 = D.43408;
    D.43409 = inst->sreg2;
    inst->sreg1 = D.43409;
    D.43410 = cfg->ip;
    inst->cil_code = D.43410;
    inst->dreg = dreg;
    inst->data.op[0].p = 0B;
    inst->type = 3;
    D.43411 = cfg->cbb;
    D.43412 = D.43411->last_ins;
    if (D.43412 != 0B) goto <D.43413>; else goto <D.43414>;
    <D.43413>:
    D.43411 = cfg->cbb;
    D.43412 = D.43411->last_ins;
    D.43412->next = inst;
    D.43411 = cfg->cbb;
    D.43412 = D.43411->last_ins;
    inst->prev = D.43412;
    D.43411 = cfg->cbb;
    D.43411->last_ins = inst;
    goto <D.43415>;
    <D.43414>:
    D.43411 = cfg->cbb;
    D.43411 = cfg->cbb;
    D.43411->last_ins = inst;
    D.43412 = D.43411->last_ins;
    D.43411->code = D.43412;
    <D.43415>:
  }
  goto <D.43416>;
  <D.43404>:
  t.463 = (unsigned int) t;
  D.43418 = t.463 + 4294967294;
  if (D.43418 <= 7) goto <D.43419>; else goto <D.43420>;
  <D.43419>:
  {
    struct MonoInst * inst;

    D.43405 = cfg->mempool;
    inst = mono_mempool_alloc (D.43405, 56);
    inst->data.op[1].const_val = 0;
    D.43421 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.43421;
    inst->prev = 0B;
    D.43422 = inst->prev;
    inst->next = D.43422;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.43423 = inst->sreg3;
    inst->sreg2 = D.43423;
    D.43424 = inst->sreg2;
    inst->sreg1 = D.43424;
    D.43410 = cfg->ip;
    inst->cil_code = D.43410;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 0;
    D.43411 = cfg->cbb;
    D.43412 = D.43411->last_ins;
    if (D.43412 != 0B) goto <D.43425>; else goto <D.43426>;
    <D.43425>:
    D.43411 = cfg->cbb;
    D.43412 = D.43411->last_ins;
    D.43412->next = inst;
    D.43411 = cfg->cbb;
    D.43412 = D.43411->last_ins;
    inst->prev = D.43412;
    D.43411 = cfg->cbb;
    D.43411->last_ins = inst;
    goto <D.43427>;
    <D.43426>:
    D.43411 = cfg->cbb;
    D.43411 = cfg->cbb;
    D.43411->last_ins = inst;
    D.43412 = D.43411->last_ins;
    D.43411->code = D.43412;
    <D.43427>:
  }
  goto <D.43428>;
  <D.43420>:
  t.463 = (unsigned int) t;
  D.43429 = t.463 + 4294967286;
  if (D.43429 <= 1) goto <D.43430>; else goto <D.43431>;
  <D.43430>:
  {
    struct MonoInst * inst;

    D.43405 = cfg->mempool;
    inst = mono_mempool_alloc (D.43405, 56);
    inst->data.op[1].const_val = 0;
    D.43432 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.43432;
    inst->prev = 0B;
    D.43433 = inst->prev;
    inst->next = D.43433;
    inst->opcode = 363;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.43434 = inst->sreg3;
    inst->sreg2 = D.43434;
    D.43435 = inst->sreg2;
    inst->sreg1 = D.43435;
    D.43410 = cfg->ip;
    inst->cil_code = D.43410;
    inst->dreg = dreg;
    inst->data.i8const = 0;
    D.43411 = cfg->cbb;
    D.43412 = D.43411->last_ins;
    if (D.43412 != 0B) goto <D.43436>; else goto <D.43437>;
    <D.43436>:
    D.43411 = cfg->cbb;
    D.43412 = D.43411->last_ins;
    D.43412->next = inst;
    D.43411 = cfg->cbb;
    D.43412 = D.43411->last_ins;
    inst->prev = D.43412;
    D.43411 = cfg->cbb;
    D.43411->last_ins = inst;
    goto <D.43438>;
    <D.43437>:
    D.43411 = cfg->cbb;
    D.43411 = cfg->cbb;
    D.43411->last_ins = inst;
    D.43412 = D.43411->last_ins;
    D.43411->code = D.43412;
    <D.43438>:
  }
  goto <D.43439>;
  <D.43431>:
  t.463 = (unsigned int) t;
  D.43440 = t.463 + 4294967284;
  if (D.43440 <= 1) goto <D.43441>; else goto <D.43442>;
  <D.43441>:
  D.43405 = cfg->mempool;
  ins = mono_mempool_alloc (D.43405, 56);
  ins->data.op[1].const_val = 0;
  D.43443 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.43443;
  ins->prev = 0B;
  D.43444 = ins->prev;
  ins->next = D.43444;
  ins->opcode = 365;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.43445 = ins->sreg3;
  ins->sreg2 = D.43445;
  D.43446 = ins->sreg2;
  ins->sreg1 = D.43446;
  D.43410 = cfg->ip;
  ins->cil_code = D.43410;
  ins->type = 4;
  ins->data.op[0].p = &r8_0;
  ins->dreg = dreg;
  D.43411 = cfg->cbb;
  D.43412 = D.43411->last_ins;
  if (D.43412 != 0B) goto <D.43447>; else goto <D.43448>;
  <D.43447>:
  D.43411 = cfg->cbb;
  D.43412 = D.43411->last_ins;
  D.43412->next = ins;
  D.43411 = cfg->cbb;
  D.43412 = D.43411->last_ins;
  ins->prev = D.43412;
  D.43411 = cfg->cbb;
  D.43411->last_ins = ins;
  goto <D.43449>;
  <D.43448>:
  D.43411 = cfg->cbb;
  D.43411 = cfg->cbb;
  D.43411->last_ins = ins;
  D.43412 = D.43411->last_ins;
  D.43411->code = D.43412;
  <D.43449>:
  goto <D.43450>;
  <D.43442>:
  if (t == 17) goto <D.43451>; else goto <D.43454>;
  <D.43454>:
  if (t == 22) goto <D.43451>; else goto <D.43455>;
  <D.43455>:
  if (t == 21) goto <D.43456>; else goto <D.43452>;
  <D.43456>:
  D.43457 = mono_type_generic_inst_is_valuetype (rtype);
  if (D.43457 != 0) goto <D.43451>; else goto <D.43452>;
  <D.43451>:
  {
    struct MonoInst * inst;

    D.43405 = cfg->mempool;
    inst = mono_mempool_alloc (D.43405, 56);
    inst->data.op[1].const_val = 0;
    D.43458 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.43458;
    inst->prev = 0B;
    D.43459 = inst->prev;
    inst->next = D.43459;
    inst->opcode = 428;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.43460 = inst->sreg3;
    inst->sreg2 = D.43460;
    D.43461 = inst->sreg2;
    inst->sreg1 = D.43461;
    D.43410 = cfg->ip;
    inst->cil_code = D.43410;
    inst->dreg = dreg;
    inst->type = 7;
    D.43462 = mono_class_from_mono_type (rtype);
    inst->klass = D.43462;
    D.43411 = cfg->cbb;
    D.43412 = D.43411->last_ins;
    if (D.43412 != 0B) goto <D.43463>; else goto <D.43464>;
    <D.43463>:
    D.43411 = cfg->cbb;
    D.43412 = D.43411->last_ins;
    D.43412->next = inst;
    D.43411 = cfg->cbb;
    D.43412 = D.43411->last_ins;
    inst->prev = D.43412;
    D.43411 = cfg->cbb;
    D.43411->last_ins = inst;
    goto <D.43465>;
    <D.43464>:
    D.43411 = cfg->cbb;
    D.43411 = cfg->cbb;
    D.43411->last_ins = inst;
    D.43412 = D.43411->last_ins;
    D.43411->code = D.43412;
    <D.43465>:
  }
  goto <D.43453>;
  <D.43452>:
  if (t == 19) goto <D.43466>; else goto <D.43469>;
  <D.43469>:
  if (t == 30) goto <D.43466>; else goto <D.43467>;
  <D.43466>:
  D.43470 = mini_type_var_is_vt (cfg, rtype);
  if (D.43470 != 0) goto <D.43471>; else goto <D.43467>;
  <D.43471>:
  {
    struct MonoInst * inst;

    D.43405 = cfg->mempool;
    inst = mono_mempool_alloc (D.43405, 56);
    inst->data.op[1].const_val = 0;
    D.43472 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.43472;
    inst->prev = 0B;
    D.43473 = inst->prev;
    inst->next = D.43473;
    inst->opcode = 428;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.43474 = inst->sreg3;
    inst->sreg2 = D.43474;
    D.43475 = inst->sreg2;
    inst->sreg1 = D.43475;
    D.43410 = cfg->ip;
    inst->cil_code = D.43410;
    inst->dreg = dreg;
    inst->type = 7;
    D.43476 = mono_class_from_mono_type (rtype);
    inst->klass = D.43476;
    D.43411 = cfg->cbb;
    D.43412 = D.43411->last_ins;
    if (D.43412 != 0B) goto <D.43477>; else goto <D.43478>;
    <D.43477>:
    D.43411 = cfg->cbb;
    D.43412 = D.43411->last_ins;
    D.43412->next = inst;
    D.43411 = cfg->cbb;
    D.43412 = D.43411->last_ins;
    inst->prev = D.43412;
    D.43411 = cfg->cbb;
    D.43411->last_ins = inst;
    goto <D.43479>;
    <D.43478>:
    D.43411 = cfg->cbb;
    D.43411 = cfg->cbb;
    D.43411->last_ins = inst;
    D.43412 = D.43411->last_ins;
    D.43411->code = D.43412;
    <D.43479>:
  }
  goto <D.43468>;
  <D.43467>:
  {
    struct MonoInst * inst;

    D.43405 = cfg->mempool;
    inst = mono_mempool_alloc (D.43405, 56);
    inst->data.op[1].const_val = 0;
    D.43480 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.43480;
    inst->prev = 0B;
    D.43481 = inst->prev;
    inst->next = D.43481;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.43482 = inst->sreg3;
    inst->sreg2 = D.43482;
    D.43483 = inst->sreg2;
    inst->sreg1 = D.43483;
    D.43410 = cfg->ip;
    inst->cil_code = D.43410;
    inst->dreg = dreg;
    inst->data.op[0].p = 0B;
    inst->type = 3;
    D.43411 = cfg->cbb;
    D.43412 = D.43411->last_ins;
    if (D.43412 != 0B) goto <D.43484>; else goto <D.43485>;
    <D.43484>:
    D.43411 = cfg->cbb;
    D.43412 = D.43411->last_ins;
    D.43412->next = inst;
    D.43411 = cfg->cbb;
    D.43412 = D.43411->last_ins;
    inst->prev = D.43412;
    D.43411 = cfg->cbb;
    D.43411->last_ins = inst;
    goto <D.43486>;
    <D.43485>:
    D.43411 = cfg->cbb;
    D.43411 = cfg->cbb;
    D.43411->last_ins = inst;
    D.43412 = D.43411->last_ins;
    D.43411->code = D.43412;
    <D.43486>:
  }
  <D.43468>:
  <D.43453>:
  <D.43450>:
  <D.43439>:
  <D.43428>:
  <D.43416>:
}


handle_alloc (struct MonoCompile * cfg, struct MonoClass * klass, gboolean for_box, int context_used)
{
  unsigned int D.43489;
  unsigned int D.43490;
  <unnamed type> rgctx_info.464;
  unsigned int D.43501;
  unsigned int D.43502;
  struct MonoMemPool * D.43503;
  void * D.43504;
  struct MonoInst * D.43505;
  int D.43506;
  struct MonoInst * D.43507;
  int D.43508;
  int D.43509;
  const unsigned char * D.43510;
  struct MonoInst * * D.43511;
  int D.43512;
  unsigned int D.43513;
  unsigned int D.43514;
  struct MonoInst * * D.43515;
  struct MonoInst * D.43516;
  struct MonoType * D.43517;
  unsigned int D.43518;
  short unsigned int D.43519;
  struct MonoClass * D.43520;
  int D.43521;
  unsigned char D.43522;
  <unnamed type> D.43523;
  unsigned int D.43524;
  int D.43525;
  short unsigned int D.43526;
  struct MonoClass * D.43529;
  void * D.43530;
  struct MonoDomain * D.43531;
  unsigned int D.43532;
  int D.43533;
  struct MonoBasicBlock * D.43534;
  struct MonoInst * D.43535;
  struct MonoInst * D.43544;
  void * D.43551;
  struct MonoInst * D.43552;
  int D.43553;
  struct MonoInst * D.43554;
  int D.43555;
  int D.43556;
  int D.43557;
  unsigned int D.43558;
  unsigned int D.43559;
  struct MonoInst * * D.43560;
  struct MonoInst * D.43561;
  struct MonoType * D.43562;
  unsigned int D.43563;
  short unsigned int D.43564;
  struct MonoClass * D.43565;
  int D.43566;
  unsigned char D.43567;
  <unnamed type> D.43568;
  unsigned int D.43569;
  int D.43570;
  short unsigned int D.43571;
  struct MonoClass * D.43574;
  void * D.43575;
  unsigned int D.43576;
  int D.43577;
  void * D.43581;
  struct MonoInst * D.43582;
  int D.43583;
  struct MonoInst * D.43584;
  guint16 iftmp.465;
  int D.43589;
  int D.43590;
  unsigned int D.43591;
  int D.43592;
  unsigned int D.43599;
  unsigned int D.43600;
  unsigned int D.43602;
  struct MonoImage * D.43604;
  struct MonoImage * D.43605;
  struct MonoGenericClass * D.43607;
  void * D.43609;
  int D.43610;
  int D.43611;
  unsigned int D.43612;
  int D.43613;
  void * D.43621;
  guint16 iftmp.466;
  void * iftmp.467;
  unsigned int D.43630;
  int D.43631;
  int pass_lw.468;
  struct MonoClass * D.43638;
  int D.43639;
  unsigned int D.43640;
  unsigned int D.43641;
  void * D.43642;
  int lw.469;
  unsigned int D.43644;
  int D.43645;
  void * D.43649;
  guint16 iftmp.470;
  void * iftmp.471;
  unsigned int D.43658;
  int D.43659;
  void * D.43664;
  guint16 iftmp.472;
  void * iftmp.473;
  unsigned int D.43673;
  int D.43674;
  struct MonoInst * iargs[2];
  void * alloc_ftn;

  try
    {
      if (context_used != 0) goto <D.43487>; else goto <D.43488>;
      <D.43487>:
      {
        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.43489 = cfg->opt;
            D.43490 = D.43489 & 512;
            if (D.43490 != 0) goto <D.43491>; else goto <D.43492>;
            <D.43491>:
            rgctx_info = 1;
            goto <D.43493>;
            <D.43492>:
            rgctx_info = 2;
            <D.43493>:
            rgctx_info.464 = (<unnamed type>) rgctx_info;
            data = emit_get_rgctx_klass (cfg, context_used, klass, rgctx_info.464);
            D.43489 = cfg->opt;
            D.43490 = D.43489 & 512;
            if (D.43490 != 0) goto <D.43495>; else goto <D.43496>;
            <D.43495>:
            D.43489 = cfg->opt;
            D.43490 = D.43489 & 512;
            if (D.43490 != 0) goto <D.43497>; else goto <D.43500>;
            <D.43500>:
            D.43501 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.43502 = D.43501 & 64;
            if (D.43502 != 0) goto <D.43497>; else goto <D.43498>;
            <D.43497>:
            {
              struct MonoInst * __domain_var;

              __domain_var = mono_get_domainvar (cfg);
              D.43503 = cfg->mempool;
              D.43504 = mono_mempool_alloc (D.43503, 56);
              iargs[0] = D.43504;
              D.43505 = iargs[0];
              D.43505 = iargs[0];
              D.43505->data.op[1].const_val = 0;
              D.43506 = D.43505->data.op[1].const_val;
              D.43505->data.op[0].const_val = D.43506;
              D.43505 = iargs[0];
              D.43505 = iargs[0];
              D.43505->prev = 0B;
              D.43507 = D.43505->prev;
              D.43505->next = D.43507;
              D.43505 = iargs[0];
              D.43505->opcode = 424;
              D.43505 = iargs[0];
              D.43505->flags = 0;
              D.43505 = iargs[0];
              D.43505->type = 0;
              D.43505 = iargs[0];
              D.43505->dreg = -1;
              D.43505 = iargs[0];
              D.43505 = iargs[0];
              D.43505 = iargs[0];
              D.43505->sreg3 = -1;
              D.43508 = D.43505->sreg3;
              D.43505->sreg2 = D.43508;
              D.43509 = D.43505->sreg2;
              D.43505->sreg1 = D.43509;
              D.43505 = iargs[0];
              D.43510 = cfg->ip;
              D.43505->cil_code = D.43510;
              D.43505 = iargs[0];
              D.43511 = cfg->varinfo;
              D.43512 = __domain_var->data.op[0].const_val;
              D.43513 = (unsigned int) D.43512;
              D.43514 = D.43513 * 4;
              D.43515 = D.43511 + D.43514;
              D.43516 = *D.43515;
              D.43517 = D.43516->data.op[1].vtype;
              D.43518 = mono_type_to_regmove (cfg, D.43517);
              D.43519 = (short unsigned int) D.43518;
              D.43505->opcode = D.43519;
              D.43511 = cfg->varinfo;
              D.43512 = __domain_var->data.op[0].const_val;
              D.43513 = (unsigned int) D.43512;
              D.43514 = D.43513 * 4;
              D.43515 = D.43511 + D.43514;
              D.43516 = *D.43515;
              D.43517 = D.43516->data.op[1].vtype;
              D.43505 = iargs[0];
              type_to_eval_stack_type (cfg, D.43517, D.43505);
              D.43505 = iargs[0];
              D.43511 = cfg->varinfo;
              D.43512 = __domain_var->data.op[0].const_val;
              D.43513 = (unsigned int) D.43512;
              D.43514 = D.43513 * 4;
              D.43515 = D.43511 + D.43514;
              D.43516 = *D.43515;
              D.43520 = D.43516->klass;
              D.43505->klass = D.43520;
              D.43505 = iargs[0];
              D.43511 = cfg->varinfo;
              D.43512 = __domain_var->data.op[0].const_val;
              D.43513 = (unsigned int) D.43512;
              D.43514 = D.43513 * 4;
              D.43515 = D.43511 + D.43514;
              D.43516 = *D.43515;
              D.43521 = D.43516->dreg;
              D.43505->sreg1 = D.43521;
              D.43505 = iargs[0];
              D.43505 = iargs[0];
              D.43522 = D.43505->type;
              D.43523 = (<unnamed type>) D.43522;
              D.43524 = alloc_dreg (cfg, D.43523);
              D.43525 = (int) D.43524;
              D.43505->dreg = D.43525;
              D.43505 = iargs[0];
              D.43526 = D.43505->opcode;
              if (D.43526 == 427) goto <D.43527>; else goto <D.43528>;
              <D.43527>:
              D.43505 = iargs[0];
              D.43511 = cfg->varinfo;
              D.43512 = __domain_var->data.op[0].const_val;
              D.43513 = (unsigned int) D.43512;
              D.43514 = D.43513 * 4;
              D.43515 = D.43511 + D.43514;
              D.43516 = *D.43515;
              D.43517 = D.43516->data.op[1].vtype;
              D.43529 = mono_class_from_mono_type (D.43517);
              D.43505->klass = D.43529;
              <D.43528>:
            }
            goto <D.43499>;
            <D.43498>:
            D.43503 = cfg->mempool;
            D.43530 = mono_mempool_alloc (D.43503, 56);
            iargs[0] = D.43530;
            D.43505 = iargs[0];
            D.43505 = iargs[0];
            D.43505->data.op[1].const_val = 0;
            D.43506 = D.43505->data.op[1].const_val;
            D.43505->data.op[0].const_val = D.43506;
            D.43505 = iargs[0];
            D.43505 = iargs[0];
            D.43505->prev = 0B;
            D.43507 = D.43505->prev;
            D.43505->next = D.43507;
            D.43505 = iargs[0];
            D.43505->opcode = 362;
            D.43505 = iargs[0];
            D.43505->flags = 0;
            D.43505 = iargs[0];
            D.43505->type = 0;
            D.43505 = iargs[0];
            D.43505->dreg = -1;
            D.43505 = iargs[0];
            D.43505 = iargs[0];
            D.43505 = iargs[0];
            D.43505->sreg3 = -1;
            D.43508 = D.43505->sreg3;
            D.43505->sreg2 = D.43508;
            D.43509 = D.43505->sreg2;
            D.43505->sreg1 = D.43509;
            D.43505 = iargs[0];
            D.43510 = cfg->ip;
            D.43505->cil_code = D.43510;
            D.43505 = iargs[0];
            D.43531 = cfg->domain;
            D.43505->data.op[0].p = D.43531;
            D.43505 = iargs[0];
            D.43505->type = 3;
            D.43505 = iargs[0];
            D.43532 = alloc_dreg (cfg, 3);
            D.43533 = (int) D.43532;
            D.43505->dreg = D.43533;
            <D.43499>:
            D.43534 = cfg->cbb;
            D.43535 = D.43534->last_ins;
            if (D.43535 != 0B) goto <D.43536>; else goto <D.43537>;
            <D.43536>:
            D.43534 = cfg->cbb;
            D.43535 = D.43534->last_ins;
            D.43505 = iargs[0];
            D.43535->next = D.43505;
            D.43505 = iargs[0];
            D.43534 = cfg->cbb;
            D.43535 = D.43534->last_ins;
            D.43505->prev = D.43535;
            D.43534 = cfg->cbb;
            D.43505 = iargs[0];
            D.43534->last_ins = D.43505;
            goto <D.43538>;
            <D.43537>:
            D.43534 = cfg->cbb;
            D.43534 = cfg->cbb;
            D.43505 = iargs[0];
            D.43534->last_ins = D.43505;
            D.43535 = D.43534->last_ins;
            D.43534->code = D.43535;
            <D.43538>:
            iargs[1] = data;
            alloc_ftn = mono_object_new;
            goto <D.43539>;
            <D.43496>:
            iargs[0] = data;
            alloc_ftn = mono_object_new_specific;
            <D.43539>:
            if (managed_alloc != 0B) goto <D.43540>; else goto <D.43541>;
            <D.43540>:
            D.43489 = cfg->opt;
            D.43490 = D.43489 & 512;
            if (D.43490 == 0) goto <D.43542>; else goto <D.43543>;
            <D.43542>:
            D.43544 = mono_emit_method_call (cfg, managed_alloc, &iargs, 0B);
            return D.43544;
            <D.43543>:
            <D.43541>:
            D.43544 = mono_emit_jit_icall (cfg, alloc_ftn, &iargs);
            return D.43544;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      <D.43488>:
      D.43489 = cfg->opt;
      D.43490 = D.43489 & 512;
      if (D.43490 != 0) goto <D.43545>; else goto <D.43546>;
      <D.43545>:
      D.43489 = cfg->opt;
      D.43490 = D.43489 & 512;
      if (D.43490 != 0) goto <D.43547>; else goto <D.43550>;
      <D.43550>:
      D.43501 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.43502 = D.43501 & 64;
      if (D.43502 != 0) goto <D.43547>; else goto <D.43548>;
      <D.43547>:
      {
        struct MonoInst * __domain_var;

        __domain_var = mono_get_domainvar (cfg);
        D.43503 = cfg->mempool;
        D.43551 = mono_mempool_alloc (D.43503, 56);
        iargs[0] = D.43551;
        D.43552 = iargs[0];
        D.43552 = iargs[0];
        D.43552->data.op[1].const_val = 0;
        D.43553 = D.43552->data.op[1].const_val;
        D.43552->data.op[0].const_val = D.43553;
        D.43552 = iargs[0];
        D.43552 = iargs[0];
        D.43552->prev = 0B;
        D.43554 = D.43552->prev;
        D.43552->next = D.43554;
        D.43552 = iargs[0];
        D.43552->opcode = 424;
        D.43552 = iargs[0];
        D.43552->flags = 0;
        D.43552 = iargs[0];
        D.43552->type = 0;
        D.43552 = iargs[0];
        D.43552->dreg = -1;
        D.43552 = iargs[0];
        D.43552 = iargs[0];
        D.43552 = iargs[0];
        D.43552->sreg3 = -1;
        D.43555 = D.43552->sreg3;
        D.43552->sreg2 = D.43555;
        D.43556 = D.43552->sreg2;
        D.43552->sreg1 = D.43556;
        D.43552 = iargs[0];
        D.43510 = cfg->ip;
        D.43552->cil_code = D.43510;
        D.43552 = iargs[0];
        D.43511 = cfg->varinfo;
        D.43557 = __domain_var->data.op[0].const_val;
        D.43558 = (unsigned int) D.43557;
        D.43559 = D.43558 * 4;
        D.43560 = D.43511 + D.43559;
        D.43561 = *D.43560;
        D.43562 = D.43561->data.op[1].vtype;
        D.43563 = mono_type_to_regmove (cfg, D.43562);
        D.43564 = (short unsigned int) D.43563;
        D.43552->opcode = D.43564;
        D.43511 = cfg->varinfo;
        D.43557 = __domain_var->data.op[0].const_val;
        D.43558 = (unsigned int) D.43557;
        D.43559 = D.43558 * 4;
        D.43560 = D.43511 + D.43559;
        D.43561 = *D.43560;
        D.43562 = D.43561->data.op[1].vtype;
        D.43552 = iargs[0];
        type_to_eval_stack_type (cfg, D.43562, D.43552);
        D.43552 = iargs[0];
        D.43511 = cfg->varinfo;
        D.43557 = __domain_var->data.op[0].const_val;
        D.43558 = (unsigned int) D.43557;
        D.43559 = D.43558 * 4;
        D.43560 = D.43511 + D.43559;
        D.43561 = *D.43560;
        D.43565 = D.43561->klass;
        D.43552->klass = D.43565;
        D.43552 = iargs[0];
        D.43511 = cfg->varinfo;
        D.43557 = __domain_var->data.op[0].const_val;
        D.43558 = (unsigned int) D.43557;
        D.43559 = D.43558 * 4;
        D.43560 = D.43511 + D.43559;
        D.43561 = *D.43560;
        D.43566 = D.43561->dreg;
        D.43552->sreg1 = D.43566;
        D.43552 = iargs[0];
        D.43552 = iargs[0];
        D.43567 = D.43552->type;
        D.43568 = (<unnamed type>) D.43567;
        D.43569 = alloc_dreg (cfg, D.43568);
        D.43570 = (int) D.43569;
        D.43552->dreg = D.43570;
        D.43552 = iargs[0];
        D.43571 = D.43552->opcode;
        if (D.43571 == 427) goto <D.43572>; else goto <D.43573>;
        <D.43572>:
        D.43552 = iargs[0];
        D.43511 = cfg->varinfo;
        D.43557 = __domain_var->data.op[0].const_val;
        D.43558 = (unsigned int) D.43557;
        D.43559 = D.43558 * 4;
        D.43560 = D.43511 + D.43559;
        D.43561 = *D.43560;
        D.43562 = D.43561->data.op[1].vtype;
        D.43574 = mono_class_from_mono_type (D.43562);
        D.43552->klass = D.43574;
        <D.43573>:
      }
      goto <D.43549>;
      <D.43548>:
      D.43503 = cfg->mempool;
      D.43575 = mono_mempool_alloc (D.43503, 56);
      iargs[0] = D.43575;
      D.43552 = iargs[0];
      D.43552 = iargs[0];
      D.43552->data.op[1].const_val = 0;
      D.43553 = D.43552->data.op[1].const_val;
      D.43552->data.op[0].const_val = D.43553;
      D.43552 = iargs[0];
      D.43552 = iargs[0];
      D.43552->prev = 0B;
      D.43554 = D.43552->prev;
      D.43552->next = D.43554;
      D.43552 = iargs[0];
      D.43552->opcode = 362;
      D.43552 = iargs[0];
      D.43552->flags = 0;
      D.43552 = iargs[0];
      D.43552->type = 0;
      D.43552 = iargs[0];
      D.43552->dreg = -1;
      D.43552 = iargs[0];
      D.43552 = iargs[0];
      D.43552 = iargs[0];
      D.43552->sreg3 = -1;
      D.43555 = D.43552->sreg3;
      D.43552->sreg2 = D.43555;
      D.43556 = D.43552->sreg2;
      D.43552->sreg1 = D.43556;
      D.43552 = iargs[0];
      D.43510 = cfg->ip;
      D.43552->cil_code = D.43510;
      D.43552 = iargs[0];
      D.43531 = cfg->domain;
      D.43552->data.op[0].p = D.43531;
      D.43552 = iargs[0];
      D.43552->type = 3;
      D.43552 = iargs[0];
      D.43576 = alloc_dreg (cfg, 3);
      D.43577 = (int) D.43576;
      D.43552->dreg = D.43577;
      <D.43549>:
      D.43534 = cfg->cbb;
      D.43535 = D.43534->last_ins;
      if (D.43535 != 0B) goto <D.43578>; else goto <D.43579>;
      <D.43578>:
      D.43534 = cfg->cbb;
      D.43535 = D.43534->last_ins;
      D.43552 = iargs[0];
      D.43535->next = D.43552;
      D.43552 = iargs[0];
      D.43534 = cfg->cbb;
      D.43535 = D.43534->last_ins;
      D.43552->prev = D.43535;
      D.43534 = cfg->cbb;
      D.43552 = iargs[0];
      D.43534->last_ins = D.43552;
      goto <D.43580>;
      <D.43579>:
      D.43534 = cfg->cbb;
      D.43534 = cfg->cbb;
      D.43552 = iargs[0];
      D.43534->last_ins = D.43552;
      D.43535 = D.43534->last_ins;
      D.43534->code = D.43535;
      <D.43580>:
      D.43503 = cfg->mempool;
      D.43581 = mono_mempool_alloc (D.43503, 56);
      iargs[1] = D.43581;
      D.43582 = iargs[1];
      D.43582 = iargs[1];
      D.43582->data.op[1].const_val = 0;
      D.43583 = D.43582->data.op[1].const_val;
      D.43582->data.op[0].const_val = D.43583;
      D.43582 = iargs[1];
      D.43582 = iargs[1];
      D.43582->prev = 0B;
      D.43584 = D.43582->prev;
      D.43582->next = D.43584;
      D.43582 = iargs[1];
      D.43501 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.43502 = D.43501 & 64;
      if (D.43502 != 0) goto <D.43586>; else goto <D.43587>;
      <D.43586>:
      iftmp.465 = 732;
      goto <D.43588>;
      <D.43587>:
      iftmp.465 = 362;
      <D.43588>:
      D.43582->opcode = iftmp.465;
      D.43582 = iargs[1];
      D.43582->flags = 0;
      D.43582 = iargs[1];
      D.43582->type = 0;
      D.43582 = iargs[1];
      D.43582->dreg = -1;
      D.43582 = iargs[1];
      D.43582 = iargs[1];
      D.43582 = iargs[1];
      D.43582->sreg3 = -1;
      D.43589 = D.43582->sreg3;
      D.43582->sreg2 = D.43589;
      D.43590 = D.43582->sreg2;
      D.43582->sreg1 = D.43590;
      D.43582 = iargs[1];
      D.43510 = cfg->ip;
      D.43582->cil_code = D.43510;
      D.43582 = iargs[1];
      D.43582->data.op[0].p = klass;
      D.43582 = iargs[1];
      D.43582->data.op[1].src = 11B;
      D.43582 = iargs[1];
      D.43582->type = 3;
      D.43582 = iargs[1];
      D.43591 = alloc_dreg (cfg, 3);
      D.43592 = (int) D.43591;
      D.43582->dreg = D.43592;
      D.43534 = cfg->cbb;
      D.43535 = D.43534->last_ins;
      if (D.43535 != 0B) goto <D.43593>; else goto <D.43594>;
      <D.43593>:
      D.43534 = cfg->cbb;
      D.43535 = D.43534->last_ins;
      D.43582 = iargs[1];
      D.43535->next = D.43582;
      D.43582 = iargs[1];
      D.43534 = cfg->cbb;
      D.43535 = D.43534->last_ins;
      D.43582->prev = D.43535;
      D.43534 = cfg->cbb;
      D.43582 = iargs[1];
      D.43534->last_ins = D.43582;
      goto <D.43595>;
      <D.43594>:
      D.43534 = cfg->cbb;
      D.43534 = cfg->cbb;
      D.43582 = iargs[1];
      D.43534->last_ins = D.43582;
      D.43535 = D.43534->last_ins;
      D.43534->code = D.43535;
      <D.43595>:
      alloc_ftn = mono_object_new;
      goto <D.43596>;
      <D.43546>:
      D.43501 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.43502 = D.43501 & 64;
      if (D.43502 != 0) goto <D.43598>; else goto <D.43597>;
      <D.43598>:
      D.43534 = cfg->cbb;
      D.43599 = BIT_FIELD_REF <*D.43534, 32, 896>;
      D.43600 = D.43599 & 65536;
      if (D.43600 != 0) goto <D.43601>; else goto <D.43597>;
      <D.43601>:
      D.43602 = klass->type_token;
      if (D.43602 != 0) goto <D.43603>; else goto <D.43597>;
      <D.43603>:
      D.43604 = klass->image;
      D.43605 = mono_defaults.corlib;
      if (D.43604 == D.43605) goto <D.43606>; else goto <D.43597>;
      <D.43606>:
      D.43607 = klass->generic_class;
      if (D.43607 == 0B) goto <D.43608>; else goto <D.43597>;
      <D.43608>:
      D.43503 = cfg->mempool;
      D.43609 = mono_mempool_alloc (D.43503, 56);
      iargs[0] = D.43609;
      D.43552 = iargs[0];
      D.43552 = iargs[0];
      D.43552->data.op[1].const_val = 0;
      D.43553 = D.43552->data.op[1].const_val;
      D.43552->data.op[0].const_val = D.43553;
      D.43552 = iargs[0];
      D.43552 = iargs[0];
      D.43552->prev = 0B;
      D.43554 = D.43552->prev;
      D.43552->next = D.43554;
      D.43552 = iargs[0];
      D.43552->opcode = 362;
      D.43552 = iargs[0];
      D.43552->flags = 0;
      D.43552 = iargs[0];
      D.43552->type = 0;
      D.43552 = iargs[0];
      D.43552->dreg = -1;
      D.43552 = iargs[0];
      D.43552 = iargs[0];
      D.43552 = iargs[0];
      D.43552->sreg3 = -1;
      D.43555 = D.43552->sreg3;
      D.43552->sreg2 = D.43555;
      D.43556 = D.43552->sreg2;
      D.43552->sreg1 = D.43556;
      D.43552 = iargs[0];
      D.43510 = cfg->ip;
      D.43552->cil_code = D.43510;
      D.43552 = iargs[0];
      D.43602 = klass->type_token;
      D.43610 = (int) D.43602;
      D.43611 = D.43610 & 16777215;
      D.43552->data.op[0].const_val = D.43611;
      D.43552 = iargs[0];
      D.43552->type = 1;
      D.43552 = iargs[0];
      D.43612 = alloc_dreg (cfg, 1);
      D.43613 = (int) D.43612;
      D.43552->dreg = D.43613;
      D.43534 = cfg->cbb;
      D.43535 = D.43534->last_ins;
      if (D.43535 != 0B) goto <D.43614>; else goto <D.43615>;
      <D.43614>:
      D.43534 = cfg->cbb;
      D.43535 = D.43534->last_ins;
      D.43552 = iargs[0];
      D.43535->next = D.43552;
      D.43552 = iargs[0];
      D.43534 = cfg->cbb;
      D.43535 = D.43534->last_ins;
      D.43552->prev = D.43535;
      D.43534 = cfg->cbb;
      D.43552 = iargs[0];
      D.43534->last_ins = D.43552;
      goto <D.43616>;
      <D.43615>:
      D.43534 = cfg->cbb;
      D.43534 = cfg->cbb;
      D.43552 = iargs[0];
      D.43534->last_ins = D.43552;
      D.43535 = D.43534->last_ins;
      D.43534->code = D.43535;
      <D.43616>:
      D.43544 = mono_emit_jit_icall (cfg, mono_helper_newobj_mscorlib, &iargs);
      return D.43544;
      <D.43597>:
      {
        struct MonoVTable * vtable;
        struct MonoMethod * managed_alloc;
        gboolean pass_lw;

        try
          {
            D.43531 = cfg->domain;
            vtable = mono_class_vtable (D.43531, klass);
            managed_alloc = 0B;
            if (vtable == 0B) goto <D.43617>; else goto <D.43618>;
            <D.43617>:
            mono_cfg_set_exception (cfg, 7);
            cfg->exception_ptr = klass;
            D.43544 = 0B;
            return D.43544;
            <D.43618>:
            managed_alloc = mono_gc_get_managed_allocator (klass, for_box);
            if (managed_alloc != 0B) goto <D.43619>; else goto <D.43620>;
            <D.43619>:
            D.43503 = cfg->mempool;
            D.43621 = mono_mempool_alloc (D.43503, 56);
            iargs[0] = D.43621;
            D.43552 = iargs[0];
            D.43552 = iargs[0];
            D.43552->data.op[1].const_val = 0;
            D.43553 = D.43552->data.op[1].const_val;
            D.43552->data.op[0].const_val = D.43553;
            D.43552 = iargs[0];
            D.43552 = iargs[0];
            D.43552->prev = 0B;
            D.43554 = D.43552->prev;
            D.43552->next = D.43554;
            D.43552 = iargs[0];
            D.43501 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.43502 = D.43501 & 64;
            if (D.43502 != 0) goto <D.43623>; else goto <D.43624>;
            <D.43623>:
            iftmp.466 = 732;
            goto <D.43625>;
            <D.43624>:
            iftmp.466 = 362;
            <D.43625>:
            D.43552->opcode = iftmp.466;
            D.43552 = iargs[0];
            D.43552->flags = 0;
            D.43552 = iargs[0];
            D.43552->type = 0;
            D.43552 = iargs[0];
            D.43552->dreg = -1;
            D.43552 = iargs[0];
            D.43552 = iargs[0];
            D.43552 = iargs[0];
            D.43552->sreg3 = -1;
            D.43555 = D.43552->sreg3;
            D.43552->sreg2 = D.43555;
            D.43556 = D.43552->sreg2;
            D.43552->sreg1 = D.43556;
            D.43552 = iargs[0];
            D.43510 = cfg->ip;
            D.43552->cil_code = D.43510;
            D.43552 = iargs[0];
            D.43501 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.43502 = D.43501 & 64;
            if (D.43502 != 0) goto <D.43627>; else goto <D.43628>;
            <D.43627>:
            iftmp.467 = vtable->klass;
            goto <D.43629>;
            <D.43628>:
            iftmp.467 = vtable;
            <D.43629>:
            D.43552->data.op[0].p = iftmp.467;
            D.43552 = iargs[0];
            D.43552->data.op[1].src = 14B;
            D.43552 = iargs[0];
            D.43552->type = 3;
            D.43552 = iargs[0];
            D.43630 = alloc_dreg (cfg, 3);
            D.43631 = (int) D.43630;
            D.43552->dreg = D.43631;
            D.43534 = cfg->cbb;
            D.43535 = D.43534->last_ins;
            if (D.43535 != 0B) goto <D.43632>; else goto <D.43633>;
            <D.43632>:
            D.43534 = cfg->cbb;
            D.43535 = D.43534->last_ins;
            D.43552 = iargs[0];
            D.43535->next = D.43552;
            D.43552 = iargs[0];
            D.43534 = cfg->cbb;
            D.43535 = D.43534->last_ins;
            D.43552->prev = D.43535;
            D.43534 = cfg->cbb;
            D.43552 = iargs[0];
            D.43534->last_ins = D.43552;
            goto <D.43634>;
            <D.43633>:
            D.43534 = cfg->cbb;
            D.43534 = cfg->cbb;
            D.43552 = iargs[0];
            D.43534->last_ins = D.43552;
            D.43535 = D.43534->last_ins;
            D.43534->code = D.43535;
            <D.43634>:
            D.43544 = mono_emit_method_call (cfg, managed_alloc, &iargs, 0B);
            return D.43544;
            <D.43620>:
            alloc_ftn = mono_class_get_allocation_ftn (vtable, for_box, &pass_lw);
            pass_lw.468 = pass_lw;
            if (pass_lw.468 != 0) goto <D.43636>; else goto <D.43637>;
            <D.43636>:
            {
              guint32 lw;

              D.43638 = vtable->klass;
              D.43639 = D.43638->instance_size;
              lw = (guint32) D.43639;
              D.43640 = lw + 3;
              D.43641 = D.43640 & 4294967292;
              lw = D.43641 / 4;
              D.43503 = cfg->mempool;
              D.43642 = mono_mempool_alloc (D.43503, 56);
              iargs[0] = D.43642;
              D.43552 = iargs[0];
              D.43552 = iargs[0];
              D.43552->data.op[1].const_val = 0;
              D.43553 = D.43552->data.op[1].const_val;
              D.43552->data.op[0].const_val = D.43553;
              D.43552 = iargs[0];
              D.43552 = iargs[0];
              D.43552->prev = 0B;
              D.43554 = D.43552->prev;
              D.43552->next = D.43554;
              D.43552 = iargs[0];
              D.43552->opcode = 362;
              D.43552 = iargs[0];
              D.43552->flags = 0;
              D.43552 = iargs[0];
              D.43552->type = 0;
              D.43552 = iargs[0];
              D.43552->dreg = -1;
              D.43552 = iargs[0];
              D.43552 = iargs[0];
              D.43552 = iargs[0];
              D.43552->sreg3 = -1;
              D.43555 = D.43552->sreg3;
              D.43552->sreg2 = D.43555;
              D.43556 = D.43552->sreg2;
              D.43552->sreg1 = D.43556;
              D.43552 = iargs[0];
              D.43510 = cfg->ip;
              D.43552->cil_code = D.43510;
              D.43552 = iargs[0];
              lw.469 = (int) lw;
              D.43552->data.op[0].const_val = lw.469;
              D.43552 = iargs[0];
              D.43552->type = 1;
              D.43552 = iargs[0];
              D.43644 = alloc_dreg (cfg, 1);
              D.43645 = (int) D.43644;
              D.43552->dreg = D.43645;
              D.43534 = cfg->cbb;
              D.43535 = D.43534->last_ins;
              if (D.43535 != 0B) goto <D.43646>; else goto <D.43647>;
              <D.43646>:
              D.43534 = cfg->cbb;
              D.43535 = D.43534->last_ins;
              D.43552 = iargs[0];
              D.43535->next = D.43552;
              D.43552 = iargs[0];
              D.43534 = cfg->cbb;
              D.43535 = D.43534->last_ins;
              D.43552->prev = D.43535;
              D.43534 = cfg->cbb;
              D.43552 = iargs[0];
              D.43534->last_ins = D.43552;
              goto <D.43648>;
              <D.43647>:
              D.43534 = cfg->cbb;
              D.43534 = cfg->cbb;
              D.43552 = iargs[0];
              D.43534->last_ins = D.43552;
              D.43535 = D.43534->last_ins;
              D.43534->code = D.43535;
              <D.43648>:
              D.43503 = cfg->mempool;
              D.43649 = mono_mempool_alloc (D.43503, 56);
              iargs[1] = D.43649;
              D.43582 = iargs[1];
              D.43582 = iargs[1];
              D.43582->data.op[1].const_val = 0;
              D.43583 = D.43582->data.op[1].const_val;
              D.43582->data.op[0].const_val = D.43583;
              D.43582 = iargs[1];
              D.43582 = iargs[1];
              D.43582->prev = 0B;
              D.43584 = D.43582->prev;
              D.43582->next = D.43584;
              D.43582 = iargs[1];
              D.43501 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.43502 = D.43501 & 64;
              if (D.43502 != 0) goto <D.43651>; else goto <D.43652>;
              <D.43651>:
              iftmp.470 = 732;
              goto <D.43653>;
              <D.43652>:
              iftmp.470 = 362;
              <D.43653>:
              D.43582->opcode = iftmp.470;
              D.43582 = iargs[1];
              D.43582->flags = 0;
              D.43582 = iargs[1];
              D.43582->type = 0;
              D.43582 = iargs[1];
              D.43582->dreg = -1;
              D.43582 = iargs[1];
              D.43582 = iargs[1];
              D.43582 = iargs[1];
              D.43582->sreg3 = -1;
              D.43589 = D.43582->sreg3;
              D.43582->sreg2 = D.43589;
              D.43590 = D.43582->sreg2;
              D.43582->sreg1 = D.43590;
              D.43582 = iargs[1];
              D.43510 = cfg->ip;
              D.43582->cil_code = D.43510;
              D.43582 = iargs[1];
              D.43501 = BIT_FIELD_REF <*cfg, 32, 3392>;
              D.43502 = D.43501 & 64;
              if (D.43502 != 0) goto <D.43655>; else goto <D.43656>;
              <D.43655>:
              iftmp.471 = vtable->klass;
              goto <D.43657>;
              <D.43656>:
              iftmp.471 = vtable;
              <D.43657>:
              D.43582->data.op[0].p = iftmp.471;
              D.43582 = iargs[1];
              D.43582->data.op[1].src = 14B;
              D.43582 = iargs[1];
              D.43582->type = 3;
              D.43582 = iargs[1];
              D.43658 = alloc_dreg (cfg, 3);
              D.43659 = (int) D.43658;
              D.43582->dreg = D.43659;
              D.43534 = cfg->cbb;
              D.43535 = D.43534->last_ins;
              if (D.43535 != 0B) goto <D.43660>; else goto <D.43661>;
              <D.43660>:
              D.43534 = cfg->cbb;
              D.43535 = D.43534->last_ins;
              D.43582 = iargs[1];
              D.43535->next = D.43582;
              D.43582 = iargs[1];
              D.43534 = cfg->cbb;
              D.43535 = D.43534->last_ins;
              D.43582->prev = D.43535;
              D.43534 = cfg->cbb;
              D.43582 = iargs[1];
              D.43534->last_ins = D.43582;
              goto <D.43662>;
              <D.43661>:
              D.43534 = cfg->cbb;
              D.43534 = cfg->cbb;
              D.43582 = iargs[1];
              D.43534->last_ins = D.43582;
              D.43535 = D.43534->last_ins;
              D.43534->code = D.43535;
              <D.43662>:
            }
            goto <D.43663>;
            <D.43637>:
            D.43503 = cfg->mempool;
            D.43664 = mono_mempool_alloc (D.43503, 56);
            iargs[0] = D.43664;
            D.43552 = iargs[0];
            D.43552 = iargs[0];
            D.43552->data.op[1].const_val = 0;
            D.43553 = D.43552->data.op[1].const_val;
            D.43552->data.op[0].const_val = D.43553;
            D.43552 = iargs[0];
            D.43552 = iargs[0];
            D.43552->prev = 0B;
            D.43554 = D.43552->prev;
            D.43552->next = D.43554;
            D.43552 = iargs[0];
            D.43501 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.43502 = D.43501 & 64;
            if (D.43502 != 0) goto <D.43666>; else goto <D.43667>;
            <D.43666>:
            iftmp.472 = 732;
            goto <D.43668>;
            <D.43667>:
            iftmp.472 = 362;
            <D.43668>:
            D.43552->opcode = iftmp.472;
            D.43552 = iargs[0];
            D.43552->flags = 0;
            D.43552 = iargs[0];
            D.43552->type = 0;
            D.43552 = iargs[0];
            D.43552->dreg = -1;
            D.43552 = iargs[0];
            D.43552 = iargs[0];
            D.43552 = iargs[0];
            D.43552->sreg3 = -1;
            D.43555 = D.43552->sreg3;
            D.43552->sreg2 = D.43555;
            D.43556 = D.43552->sreg2;
            D.43552->sreg1 = D.43556;
            D.43552 = iargs[0];
            D.43510 = cfg->ip;
            D.43552->cil_code = D.43510;
            D.43552 = iargs[0];
            D.43501 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.43502 = D.43501 & 64;
            if (D.43502 != 0) goto <D.43670>; else goto <D.43671>;
            <D.43670>:
            iftmp.473 = vtable->klass;
            goto <D.43672>;
            <D.43671>:
            iftmp.473 = vtable;
            <D.43672>:
            D.43552->data.op[0].p = iftmp.473;
            D.43552 = iargs[0];
            D.43552->data.op[1].src = 14B;
            D.43552 = iargs[0];
            D.43552->type = 3;
            D.43552 = iargs[0];
            D.43673 = alloc_dreg (cfg, 3);
            D.43674 = (int) D.43673;
            D.43552->dreg = D.43674;
            D.43534 = cfg->cbb;
            D.43535 = D.43534->last_ins;
            if (D.43535 != 0B) goto <D.43675>; else goto <D.43676>;
            <D.43675>:
            D.43534 = cfg->cbb;
            D.43535 = D.43534->last_ins;
            D.43552 = iargs[0];
            D.43535->next = D.43552;
            D.43552 = iargs[0];
            D.43534 = cfg->cbb;
            D.43535 = D.43534->last_ins;
            D.43552->prev = D.43535;
            D.43534 = cfg->cbb;
            D.43552 = iargs[0];
            D.43534->last_ins = D.43552;
            goto <D.43677>;
            <D.43676>:
            D.43534 = cfg->cbb;
            D.43534 = cfg->cbb;
            D.43552 = iargs[0];
            D.43534->last_ins = D.43552;
            D.43535 = D.43534->last_ins;
            D.43534->code = D.43535;
            <D.43677>:
            <D.43663>:
          }
        finally
          {
            pass_lw = {CLOBBER};
          }
      }
      <D.43596>:
      D.43544 = mono_emit_jit_icall (cfg, alloc_ftn, &iargs);
      return D.43544;
    }
  finally
    {
      iargs = {CLOBBER};
    }
}


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

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


mono_method_check_inlining (struct MonoCompile * cfg, struct MonoMethod * method)
{
  struct MonoGenericSharingContext * D.43685;
  gboolean D.43688;
  unsigned int D.43689;
  int D.43692;
  short unsigned int D.43697;
  unsigned int D.43698;
  unsigned int D.43699;
  struct MonoClass * D.43701;
  unsigned int D.43702;
  unsigned int D.43703;
  int D.43705;
  int inline_limit_inited.474;
  const gchar * D.43709;
  const gchar * D.43712;
  int inline_limit.475;
  unsigned int D.43715;
  int inline_limit.476;
  unsigned int inline_limit.477;
  int D.43720;
  int D.43721;
  unsigned int D.43724;
  unsigned int D.43725;
  struct MonoDomain * D.43730;
  unsigned int D.43733;
  unsigned int D.43734;
  int D.43737;
  unsigned int D.43741;
  unsigned int D.43742;
  unsigned int D.43745;
  unsigned int D.43748;
  struct MonoClassRuntimeInfo * D.43751;
  unsigned int D.43756;
  unsigned int D.43757;
  int D.43761;
  int D.43771;
  unsigned char D.43776;
  struct MonoMethodHeaderSummary header;
  struct MonoVTable * vtable;

  try
    {
      D.43685 = cfg->generic_sharing_context;
      if (D.43685 != 0B) goto <D.43686>; else goto <D.43687>;
      <D.43686>:
      D.43688 = 0;
      return D.43688;
      <D.43687>:
      D.43689 = cfg->inline_depth;
      if (D.43689 > 10) goto <D.43690>; else goto <D.43691>;
      <D.43690>:
      D.43688 = 0;
      return D.43688;
      <D.43691>:
      D.43692 = mono_method_get_header_summary (method, &header);
      if (D.43692 == 0) goto <D.43693>; else goto <D.43694>;
      <D.43693>:
      D.43688 = 0;
      return D.43688;
      <D.43694>:
      D.43697 = method->iflags;
      D.43698 = (unsigned int) D.43697;
      D.43699 = D.43698 & 40;
      if (D.43699 != 0) goto <D.43695>; else goto <D.43700>;
      <D.43700>:
      D.43701 = method->klass;
      D.43702 = BIT_FIELD_REF <*D.43701, 32, 160>;
      D.43703 = D.43702 & 4194304;
      if (D.43703 != 0) goto <D.43695>; else goto <D.43704>;
      <D.43704>:
      D.43705 = header.has_clauses;
      if (D.43705 != 0) goto <D.43695>; else goto <D.43696>;
      <D.43695>:
      D.43688 = 0;
      return D.43688;
      <D.43696>:
      inline_limit_inited.474 = inline_limit_inited;
      if (inline_limit_inited.474 == 0) goto <D.43707>; else goto <D.43708>;
      <D.43707>:
      D.43709 = monoeg_g_getenv ("MONO_INLINELIMIT");
      if (D.43709 != 0B) goto <D.43710>; else goto <D.43711>;
      <D.43710>:
      D.43712 = monoeg_g_getenv ("MONO_INLINELIMIT");
      inline_limit.475 = atoi (D.43712);
      inline_limit = inline_limit.475;
      goto <D.43714>;
      <D.43711>:
      inline_limit = 20;
      <D.43714>:
      inline_limit_inited = 1;
      <D.43708>:
      D.43715 = header.code_size;
      inline_limit.476 = inline_limit;
      inline_limit.477 = (unsigned int) inline_limit.476;
      if (D.43715 >= inline_limit.477) goto <D.43718>; else goto <D.43719>;
      <D.43718>:
      D.43697 = method->iflags;
      D.43720 = (int) D.43697;
      D.43721 = D.43720 & 256;
      if (D.43721 == 0) goto <D.43722>; else goto <D.43723>;
      <D.43722>:
      D.43688 = 0;
      return D.43688;
      <D.43723>:
      <D.43719>:
      D.43724 = cfg->opt;
      D.43725 = D.43724 & 512;
      if (D.43725 == 0) goto <D.43726>; else goto <D.43727>;
      <D.43726>:
      D.43697 = method->iflags;
      D.43720 = (int) D.43697;
      D.43721 = D.43720 & 256;
      if (D.43721 != 0) goto <D.43728>; else goto <D.43729>;
      <D.43728>:
      D.43730 = cfg->domain;
      D.43701 = method->klass;
      vtable = mono_class_vtable (D.43730, D.43701);
      if (vtable == 0B) goto <D.43731>; else goto <D.43732>;
      <D.43731>:
      D.43688 = 0;
      return D.43688;
      <D.43732>:
      D.43733 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.43734 = D.43733 & 64;
      if (D.43734 != 0) goto <D.43735>; else goto <D.43736>;
      <D.43735>:
      D.43701 = method->klass;
      D.43737 = mono_class_needs_cctor_run (D.43701, 0B);
      if (D.43737 != 0) goto <D.43738>; else goto <D.43739>;
      <D.43738>:
      D.43688 = 0;
      return D.43688;
      <D.43739>:
      <D.43736>:
      mono_runtime_class_init (vtable);
      goto <D.43740>;
      <D.43729>:
      D.43701 = method->klass;
      D.43741 = D.43701->flags;
      D.43742 = D.43741 & 1048576;
      if (D.43742 != 0) goto <D.43743>; else goto <D.43744>;
      <D.43743>:
      D.43733 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.43745 = D.43733 & 16;
      if (D.43745 != 0) goto <D.43746>; else goto <D.43747>;
      <D.43746>:
      D.43701 = method->klass;
      D.43702 = BIT_FIELD_REF <*D.43701, 32, 160>;
      D.43748 = D.43702 & 67108864;
      if (D.43748 != 0) goto <D.43749>; else goto <D.43750>;
      <D.43749>:
      D.43701 = method->klass;
      D.43751 = D.43701->runtime_info;
      if (D.43751 == 0B) goto <D.43752>; else goto <D.43753>;
      <D.43752>:
      D.43688 = 0;
      return D.43688;
      <D.43753>:
      D.43730 = cfg->domain;
      D.43701 = method->klass;
      vtable = mono_class_vtable (D.43730, D.43701);
      if (vtable == 0B) goto <D.43754>; else goto <D.43755>;
      <D.43754>:
      D.43688 = 0;
      return D.43688;
      <D.43755>:
      D.43756 = BIT_FIELD_REF <*vtable, 32, 160>;
      D.43757 = D.43756 & 33554432;
      if (D.43757 == 0) goto <D.43758>; else goto <D.43759>;
      <D.43758>:
      D.43688 = 0;
      return D.43688;
      <D.43759>:
      mono_runtime_class_init (vtable);
      <D.43750>:
      <D.43747>:
      goto <D.43760>;
      <D.43744>:
      D.43701 = method->klass;
      D.43761 = mono_class_needs_cctor_run (D.43701, 0B);
      if (D.43761 != 0) goto <D.43762>; else goto <D.43763>;
      <D.43762>:
      D.43701 = method->klass;
      D.43751 = D.43701->runtime_info;
      if (D.43751 == 0B) goto <D.43764>; else goto <D.43765>;
      <D.43764>:
      D.43688 = 0;
      return D.43688;
      <D.43765>:
      D.43730 = cfg->domain;
      D.43701 = method->klass;
      vtable = mono_class_vtable (D.43730, D.43701);
      if (vtable == 0B) goto <D.43766>; else goto <D.43767>;
      <D.43766>:
      D.43688 = 0;
      return D.43688;
      <D.43767>:
      D.43756 = BIT_FIELD_REF <*vtable, 32, 160>;
      D.43757 = D.43756 & 33554432;
      if (D.43757 == 0) goto <D.43768>; else goto <D.43769>;
      <D.43768>:
      D.43688 = 0;
      return D.43688;
      <D.43769>:
      <D.43763>:
      <D.43760>:
      <D.43740>:
      goto <D.43770>;
      <D.43727>:
      D.43701 = method->klass;
      D.43771 = mono_class_needs_cctor_run (D.43701, 0B);
      if (D.43771 != 0) goto <D.43772>; else goto <D.43773>;
      <D.43772>:
      D.43701 = method->klass;
      D.43741 = D.43701->flags;
      D.43742 = D.43741 & 1048576;
      if (D.43742 == 0) goto <D.43774>; else goto <D.43775>;
      <D.43774>:
      D.43688 = 0;
      return D.43688;
      <D.43775>:
      <D.43773>:
      <D.43770>:
      D.43776 = mono_method_has_declsec (method);
      if (D.43776 != 0) goto <D.43777>; else goto <D.43778>;
      <D.43777>:
      D.43688 = 0;
      return D.43688;
      <D.43778>:
      D.43688 = 1;
      return D.43688;
    }
  finally
    {
      header = {CLOBBER};
    }
}


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

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


emit_get_rgctx_gsharedvt_call (struct MonoCompile * cfg, int context_used, struct MonoMethodSignature * sig, struct MonoMethod * cmethod, MonoRgctxInfoType rgctx_type)
{
  struct MonoMemPool * D.43783;
  struct MonoMethod * D.43784;
  int D.43785;
  struct MonoInst * D.43786;
  struct MonoJumpInfoGSharedVtCall * call_info;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.43783 = cfg->mempool;
  call_info = mono_mempool_alloc0 (D.43783, 8);
  call_info->sig = sig;
  call_info->method = cmethod;
  D.43783 = cfg->mempool;
  D.43784 = cfg->current_method;
  D.43785 = context_used & 2;
  entry = mono_patch_info_rgctx_entry_new (D.43783, D.43784, D.43785, 45, call_info, rgctx_type);
  D.43784 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.43784, context_used);
  D.43786 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.43786;
}


save_cast_details (struct MonoCompile * cfg, struct MonoClass * klass, int obj_reg, gboolean null_check, struct MonoBasicBlock * * out_bblock)
{
  struct MonoDebugOptions * D.43788;
  int D.43789;
  unsigned int D.43792;
  unsigned int D.43793;
  unsigned int D.43794;
  struct MonoMemPool * D.43797;
  unsigned int D.43798;
  unsigned int D.43799;
  unsigned int D.43800;
  int D.43801;
  int D.43802;
  struct MonoInst * D.43803;
  int D.43804;
  int D.43805;
  const unsigned char * D.43806;
  struct MonoBasicBlock * D.43807;
  struct MonoInst * D.43808;
  int D.43812;
  struct MonoInst * D.43813;
  int D.43814;
  int D.43815;
  unsigned int D.43818;
  unsigned int D.43819;
  int D.43820;
  unsigned char * D.43824;
  struct MonoBasicBlock * * D.43827;
  int D.43828;
  unsigned char * D.43829;
  int D.43830;
  int D.43831;
  unsigned int D.43832;
  unsigned int D.43833;
  struct MonoBasicBlock * * D.43834;
  unsigned int D.43835;
  short unsigned int D.43840;
  short unsigned int D.43841;
  short unsigned int D.43843;
  short unsigned int D.43845;
  struct MonoBasicBlock * * D.43846;
  struct MonoBasicBlock * * D.43847;
  struct MonoBasicBlock * D.43848;
  void * D.43858;
  struct MonoBasicBlock * * D.43859;
  struct MonoBasicBlock * * D.43860;
  unsigned int D.43864;
  unsigned int D.43865;
  unsigned int D.43868;
  unsigned int D.43869;
  int D.43870;
  struct _IO_FILE * stderr.478;
  int D.43894;
  struct MonoInst * D.43895;
  int D.43896;
  int D.43897;
  int D.43901;
  struct MonoInst * D.43902;
  int D.43903;
  int D.43904;
  int D.43908;
  struct MonoInst * D.43909;
  int D.43910;
  int D.43911;
  int D.43912;
  int D.43916;
  struct MonoInst * D.43917;
  int D.43918;
  int D.43919;
  int D.43923;
  struct MonoInst * D.43924;
  int D.43925;
  int D.43926;
  unsigned char * D.43932;
  int D.43935;
  int D.43936;
  unsigned int D.43937;
  unsigned int D.43938;
  struct MonoBasicBlock * * D.43939;

  D.43788 = mini_get_debug_options ();
  D.43789 = D.43788->better_cast_details;
  if (D.43789 != 0) goto <D.43790>; else goto <D.43791>;
  <D.43790>:
  {
    int to_klass_reg;
    int vtable_reg;
    int klass_reg;
    struct MonoBasicBlock * is_null_bb;
    struct MonoInst * tls_get;

    D.43792 = alloc_preg (cfg);
    to_klass_reg = (int) D.43792;
    D.43793 = alloc_preg (cfg);
    vtable_reg = (int) D.43793;
    D.43794 = alloc_preg (cfg);
    klass_reg = (int) D.43794;
    is_null_bb = 0B;
    if (null_check != 0) goto <D.43795>; else goto <D.43796>;
    <D.43795>:
    D.43797 = cfg->mempool;
    is_null_bb = mono_mempool_alloc0 (D.43797, 172);
    D.43798 = cfg->num_bblocks;
    D.43799 = D.43798;
    D.43800 = D.43799 + 1;
    cfg->num_bblocks = D.43800;
    D.43801 = (int) D.43799;
    is_null_bb->block_num = D.43801;
    {
      struct MonoInst * inst;

      D.43797 = cfg->mempool;
      inst = mono_mempool_alloc (D.43797, 56);
      inst->data.op[1].const_val = 0;
      D.43802 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.43802;
      inst->prev = 0B;
      D.43803 = inst->prev;
      inst->next = D.43803;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.43804 = inst->sreg3;
      inst->sreg2 = D.43804;
      D.43805 = inst->sreg2;
      inst->sreg1 = D.43805;
      D.43806 = cfg->ip;
      inst->cil_code = D.43806;
      inst->dreg = -1;
      inst->sreg1 = obj_reg;
      inst->data.op[1].const_val = 0;
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      if (D.43808 != 0B) goto <D.43809>; else goto <D.43810>;
      <D.43809>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43808->next = inst;
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      inst->prev = D.43808;
      D.43807 = cfg->cbb;
      D.43807->last_ins = inst;
      goto <D.43811>;
      <D.43810>:
      D.43807 = cfg->cbb;
      D.43807 = cfg->cbb;
      D.43807->last_ins = inst;
      D.43808 = D.43807->last_ins;
      D.43807->code = D.43808;
      <D.43811>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.43797 = cfg->mempool;
      ins = mono_mempool_alloc (D.43797, 56);
      ins->data.op[1].const_val = 0;
      D.43812 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.43812;
      ins->prev = 0B;
      D.43813 = ins->prev;
      ins->next = D.43813;
      ins->opcode = 648;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.43814 = ins->sreg3;
      ins->sreg2 = D.43814;
      D.43815 = ins->sreg2;
      ins->sreg1 = D.43815;
      D.43806 = cfg->ip;
      ins->cil_code = D.43806;
      if (0 != 0) goto <D.43816>; else goto <D.43817>;
      <D.43816>:
      D.43797 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.43797, 172);
      D.43798 = cfg->num_bblocks;
      D.43818 = D.43798;
      D.43819 = D.43818 + 1;
      cfg->num_bblocks = D.43819;
      D.43820 = (int) D.43818;
      falsebb->block_num = D.43820;
      ins->data.op[0].target_block = is_null_bb;
      D.43807 = cfg->cbb;
      mono_link_bblock (cfg, D.43807, is_null_bb);
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      if (D.43808 != 0B) goto <D.43821>; else goto <D.43822>;
      <D.43821>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43808->next = ins;
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      ins->prev = D.43808;
      D.43807 = cfg->cbb;
      D.43807->last_ins = ins;
      goto <D.43823>;
      <D.43822>:
      D.43807 = cfg->cbb;
      D.43807 = cfg->cbb;
      D.43807->last_ins = ins;
      D.43808 = D.43807->last_ins;
      D.43807->code = D.43808;
      <D.43823>:
      D.43824 = falsebb->cil_code;
      if (D.43824 != 0B) goto <D.43825>; else goto <D.43826>;
      <D.43825>:
      D.43827 = cfg->cil_offset_to_bb;
      D.43824 = falsebb->cil_code;
      D.43828 = (int) D.43824;
      D.43829 = cfg->cil_start;
      D.43830 = (int) D.43829;
      D.43831 = D.43828 - D.43830;
      D.43832 = (unsigned int) D.43831;
      D.43833 = D.43832 * 4;
      D.43834 = D.43827 + D.43833;
      *D.43834 = falsebb;
      <D.43826>:
      D.43835 = cfg->real_offset;
      falsebb->real_offset = D.43835;
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      if (D.43808 != 0B) goto <D.43839>; else goto <D.43836>;
      <D.43839>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43840 = D.43808->opcode;
      D.43841 = D.43840 + 64985;
      if (D.43841 <= 9) goto <D.43837>; else goto <D.43842>;
      <D.43842>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43840 = D.43808->opcode;
      D.43843 = D.43840 + 64878;
      if (D.43843 <= 9) goto <D.43837>; else goto <D.43844>;
      <D.43844>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43840 = D.43808->opcode;
      D.43845 = D.43840 + 64888;
      if (D.43845 <= 9) goto <D.43837>; else goto <D.43836>;
      <D.43837>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43846 = D.43808->data.op[1].many_blocks;
      D.43847 = D.43846 + 4;
      D.43848 = *D.43847;
      if (D.43848 == 0B) goto <D.43849>; else goto <D.43836>;
      <D.43849>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43846 = D.43808->data.op[1].many_blocks;
      D.43847 = D.43846 + 4;
      *D.43847 = falsebb;
      D.43807 = cfg->cbb;
      mono_link_bblock (cfg, D.43807, falsebb);
      goto <D.43838>;
      <D.43836>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      if (D.43808 == 0B) goto <D.43850>; else goto <D.43852>;
      <D.43852>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43840 = D.43808->opcode;
      if (D.43840 != 442) goto <D.43853>; else goto <D.43851>;
      <D.43853>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43840 = D.43808->opcode;
      if (D.43840 != 759) goto <D.43854>; else goto <D.43851>;
      <D.43854>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43840 = D.43808->opcode;
      D.43841 = D.43840 + 64985;
      if (D.43841 > 9) goto <D.43855>; else goto <D.43851>;
      <D.43855>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43840 = D.43808->opcode;
      D.43843 = D.43840 + 64878;
      if (D.43843 > 9) goto <D.43856>; else goto <D.43851>;
      <D.43856>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43840 = D.43808->opcode;
      D.43845 = D.43840 + 64888;
      if (D.43845 > 9) goto <D.43850>; else goto <D.43851>;
      <D.43850>:
      D.43807 = cfg->cbb;
      mono_link_bblock (cfg, D.43807, falsebb);
      <D.43851>:
      <D.43838>:
      D.43807 = cfg->cbb;
      D.43807->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.43857>;
      <D.43817>:
      D.43797 = cfg->mempool;
      D.43858 = mono_mempool_alloc (D.43797, 8);
      ins->data.op[1].many_blocks = D.43858;
      D.43859 = ins->data.op[1].many_blocks;
      *D.43859 = is_null_bb;
      D.43859 = ins->data.op[1].many_blocks;
      D.43860 = D.43859 + 4;
      *D.43860 = 0B;
      D.43807 = cfg->cbb;
      mono_link_bblock (cfg, D.43807, is_null_bb);
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      if (D.43808 != 0B) goto <D.43861>; else goto <D.43862>;
      <D.43861>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43808->next = ins;
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      ins->prev = D.43808;
      D.43807 = cfg->cbb;
      D.43807->last_ins = ins;
      goto <D.43863>;
      <D.43862>:
      D.43807 = cfg->cbb;
      D.43807 = cfg->cbb;
      D.43807->last_ins = ins;
      D.43808 = D.43807->last_ins;
      D.43807->code = D.43808;
      <D.43863>:
      D.43864 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.43865 = D.43864 & 8;
      if (D.43865 == 0) goto <D.43866>; else goto <D.43867>;
      <D.43866>:
      D.43797 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.43797, 172);
      D.43798 = cfg->num_bblocks;
      D.43868 = D.43798;
      D.43869 = D.43868 + 1;
      cfg->num_bblocks = D.43869;
      D.43870 = (int) D.43868;
      falsebb->block_num = D.43870;
      D.43859 = ins->data.op[1].many_blocks;
      D.43860 = D.43859 + 4;
      *D.43860 = falsebb;
      D.43807 = cfg->cbb;
      mono_link_bblock (cfg, D.43807, falsebb);
      D.43824 = falsebb->cil_code;
      if (D.43824 != 0B) goto <D.43871>; else goto <D.43872>;
      <D.43871>:
      D.43827 = cfg->cil_offset_to_bb;
      D.43824 = falsebb->cil_code;
      D.43828 = (int) D.43824;
      D.43829 = cfg->cil_start;
      D.43830 = (int) D.43829;
      D.43831 = D.43828 - D.43830;
      D.43832 = (unsigned int) D.43831;
      D.43833 = D.43832 * 4;
      D.43834 = D.43827 + D.43833;
      *D.43834 = falsebb;
      <D.43872>:
      D.43835 = cfg->real_offset;
      falsebb->real_offset = D.43835;
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      if (D.43808 != 0B) goto <D.43876>; else goto <D.43873>;
      <D.43876>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43840 = D.43808->opcode;
      D.43841 = D.43840 + 64985;
      if (D.43841 <= 9) goto <D.43874>; else goto <D.43877>;
      <D.43877>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43840 = D.43808->opcode;
      D.43843 = D.43840 + 64878;
      if (D.43843 <= 9) goto <D.43874>; else goto <D.43878>;
      <D.43878>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43840 = D.43808->opcode;
      D.43845 = D.43840 + 64888;
      if (D.43845 <= 9) goto <D.43874>; else goto <D.43873>;
      <D.43874>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43846 = D.43808->data.op[1].many_blocks;
      D.43847 = D.43846 + 4;
      D.43848 = *D.43847;
      if (D.43848 == 0B) goto <D.43879>; else goto <D.43873>;
      <D.43879>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43846 = D.43808->data.op[1].many_blocks;
      D.43847 = D.43846 + 4;
      *D.43847 = falsebb;
      D.43807 = cfg->cbb;
      mono_link_bblock (cfg, D.43807, falsebb);
      goto <D.43875>;
      <D.43873>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      if (D.43808 == 0B) goto <D.43880>; else goto <D.43882>;
      <D.43882>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43840 = D.43808->opcode;
      if (D.43840 != 442) goto <D.43883>; else goto <D.43881>;
      <D.43883>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43840 = D.43808->opcode;
      if (D.43840 != 759) goto <D.43884>; else goto <D.43881>;
      <D.43884>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43840 = D.43808->opcode;
      D.43841 = D.43840 + 64985;
      if (D.43841 > 9) goto <D.43885>; else goto <D.43881>;
      <D.43885>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43840 = D.43808->opcode;
      D.43843 = D.43840 + 64878;
      if (D.43843 > 9) goto <D.43886>; else goto <D.43881>;
      <D.43886>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43840 = D.43808->opcode;
      D.43845 = D.43840 + 64888;
      if (D.43845 > 9) goto <D.43880>; else goto <D.43881>;
      <D.43880>:
      D.43807 = cfg->cbb;
      mono_link_bblock (cfg, D.43807, falsebb);
      <D.43881>:
      <D.43875>:
      D.43807 = cfg->cbb;
      D.43807->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.43887>;
      <D.43867>:
      D.43807 = cfg->cbb;
      D.43807->extended = 1;
      <D.43887>:
      <D.43857>:
    }
    <D.43796>:
    tls_get = mono_get_jit_tls_intrinsic (cfg);
    if (tls_get == 0B) goto <D.43888>; else goto <D.43889>;
    <D.43888>:
    stderr.478 = stderr;
    fprintf (stderr.478, "error: --debug=casts not supported on this platform.\n.");
    exit (1);
    <D.43889>:
    D.43807 = cfg->cbb;
    D.43808 = D.43807->last_ins;
    if (D.43808 != 0B) goto <D.43891>; else goto <D.43892>;
    <D.43891>:
    D.43807 = cfg->cbb;
    D.43808 = D.43807->last_ins;
    D.43808->next = tls_get;
    D.43807 = cfg->cbb;
    D.43808 = D.43807->last_ins;
    tls_get->prev = D.43808;
    D.43807 = cfg->cbb;
    D.43807->last_ins = tls_get;
    goto <D.43893>;
    <D.43892>:
    D.43807 = cfg->cbb;
    D.43807 = cfg->cbb;
    D.43807->last_ins = tls_get;
    D.43808 = D.43807->last_ins;
    D.43807->code = D.43808;
    <D.43893>:
    {
      struct MonoInst * inst;

      D.43797 = cfg->mempool;
      inst = mono_mempool_alloc (D.43797, 56);
      inst->data.op[1].const_val = 0;
      D.43894 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.43894;
      inst->prev = 0B;
      D.43895 = inst->prev;
      inst->next = D.43895;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.43896 = inst->sreg3;
      inst->sreg2 = D.43896;
      D.43897 = inst->sreg2;
      inst->sreg1 = D.43897;
      D.43806 = cfg->ip;
      inst->cil_code = D.43806;
      inst->dreg = vtable_reg;
      inst->sreg1 = obj_reg;
      inst->data.op[0].const_val = 0;
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      if (D.43808 != 0B) goto <D.43898>; else goto <D.43899>;
      <D.43898>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43808->next = inst;
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      inst->prev = D.43808;
      D.43807 = cfg->cbb;
      D.43807->last_ins = inst;
      goto <D.43900>;
      <D.43899>:
      D.43807 = cfg->cbb;
      D.43807 = cfg->cbb;
      D.43807->last_ins = inst;
      D.43808 = D.43807->last_ins;
      D.43807->code = D.43808;
      <D.43900>:
    }
    {
      struct MonoInst * inst;

      D.43797 = cfg->mempool;
      inst = mono_mempool_alloc (D.43797, 56);
      inst->data.op[1].const_val = 0;
      D.43901 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.43901;
      inst->prev = 0B;
      D.43902 = inst->prev;
      inst->next = D.43902;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.43903 = inst->sreg3;
      inst->sreg2 = D.43903;
      D.43904 = inst->sreg2;
      inst->sreg1 = D.43904;
      D.43806 = cfg->ip;
      inst->cil_code = D.43806;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      if (D.43808 != 0B) goto <D.43905>; else goto <D.43906>;
      <D.43905>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43808->next = inst;
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      inst->prev = D.43808;
      D.43807 = cfg->cbb;
      D.43807->last_ins = inst;
      goto <D.43907>;
      <D.43906>:
      D.43807 = cfg->cbb;
      D.43807 = cfg->cbb;
      D.43807->last_ins = inst;
      D.43808 = D.43807->last_ins;
      D.43807->code = D.43808;
      <D.43907>:
    }
    {
      struct MonoInst * inst;

      D.43797 = cfg->mempool;
      inst = mono_mempool_alloc (D.43797, 56);
      inst->data.op[1].const_val = 0;
      D.43908 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.43908;
      inst->prev = 0B;
      D.43909 = inst->prev;
      inst->next = D.43909;
      inst->opcode = 374;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.43910 = inst->sreg3;
      inst->sreg2 = D.43910;
      D.43911 = inst->sreg2;
      inst->sreg1 = D.43911;
      D.43806 = cfg->ip;
      inst->cil_code = D.43806;
      inst->sreg1 = klass_reg;
      D.43912 = tls_get->dreg;
      inst->dreg = D.43912;
      inst->data.op[0].const_val = 48;
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      if (D.43808 != 0B) goto <D.43913>; else goto <D.43914>;
      <D.43913>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43808->next = inst;
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      inst->prev = D.43808;
      D.43807 = cfg->cbb;
      D.43807->last_ins = inst;
      goto <D.43915>;
      <D.43914>:
      D.43807 = cfg->cbb;
      D.43807 = cfg->cbb;
      D.43807->last_ins = inst;
      D.43808 = D.43807->last_ins;
      D.43807->code = D.43808;
      <D.43915>:
    }
    {
      struct MonoInst * inst;

      D.43797 = cfg->mempool;
      inst = mono_mempool_alloc (D.43797, 56);
      inst->data.op[1].const_val = 0;
      D.43916 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.43916;
      inst->prev = 0B;
      D.43917 = inst->prev;
      inst->next = D.43917;
      inst->opcode = 362;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.43918 = inst->sreg3;
      inst->sreg2 = D.43918;
      D.43919 = inst->sreg2;
      inst->sreg1 = D.43919;
      D.43806 = cfg->ip;
      inst->cil_code = D.43806;
      inst->dreg = to_klass_reg;
      inst->data.op[0].p = klass;
      inst->type = 3;
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      if (D.43808 != 0B) goto <D.43920>; else goto <D.43921>;
      <D.43920>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43808->next = inst;
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      inst->prev = D.43808;
      D.43807 = cfg->cbb;
      D.43807->last_ins = inst;
      goto <D.43922>;
      <D.43921>:
      D.43807 = cfg->cbb;
      D.43807 = cfg->cbb;
      D.43807->last_ins = inst;
      D.43808 = D.43807->last_ins;
      D.43807->code = D.43808;
      <D.43922>:
    }
    {
      struct MonoInst * inst;

      D.43797 = cfg->mempool;
      inst = mono_mempool_alloc (D.43797, 56);
      inst->data.op[1].const_val = 0;
      D.43923 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.43923;
      inst->prev = 0B;
      D.43924 = inst->prev;
      inst->next = D.43924;
      inst->opcode = 374;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.43925 = inst->sreg3;
      inst->sreg2 = D.43925;
      D.43926 = inst->sreg2;
      inst->sreg1 = D.43926;
      D.43806 = cfg->ip;
      inst->cil_code = D.43806;
      inst->sreg1 = to_klass_reg;
      D.43912 = tls_get->dreg;
      inst->dreg = D.43912;
      inst->data.op[0].const_val = 52;
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      if (D.43808 != 0B) goto <D.43927>; else goto <D.43928>;
      <D.43927>:
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      D.43808->next = inst;
      D.43807 = cfg->cbb;
      D.43808 = D.43807->last_ins;
      inst->prev = D.43808;
      D.43807 = cfg->cbb;
      D.43807->last_ins = inst;
      goto <D.43929>;
      <D.43928>:
      D.43807 = cfg->cbb;
      D.43807 = cfg->cbb;
      D.43807->last_ins = inst;
      D.43808 = D.43807->last_ins;
      D.43807->code = D.43808;
      <D.43929>:
    }
    if (null_check != 0) goto <D.43930>; else goto <D.43931>;
    <D.43930>:
    D.43932 = is_null_bb->cil_code;
    if (D.43932 != 0B) goto <D.43933>; else goto <D.43934>;
    <D.43933>:
    D.43827 = cfg->cil_offset_to_bb;
    D.43932 = is_null_bb->cil_code;
    D.43935 = (int) D.43932;
    D.43829 = cfg->cil_start;
    D.43830 = (int) D.43829;
    D.43936 = D.43935 - D.43830;
    D.43937 = (unsigned int) D.43936;
    D.43938 = D.43937 * 4;
    D.43939 = D.43827 + D.43938;
    *D.43939 = is_null_bb;
    <D.43934>:
    D.43835 = cfg->real_offset;
    is_null_bb->real_offset = D.43835;
    D.43807 = cfg->cbb;
    D.43808 = D.43807->last_ins;
    if (D.43808 != 0B) goto <D.43943>; else goto <D.43940>;
    <D.43943>:
    D.43807 = cfg->cbb;
    D.43808 = D.43807->last_ins;
    D.43840 = D.43808->opcode;
    D.43841 = D.43840 + 64985;
    if (D.43841 <= 9) goto <D.43941>; else goto <D.43944>;
    <D.43944>:
    D.43807 = cfg->cbb;
    D.43808 = D.43807->last_ins;
    D.43840 = D.43808->opcode;
    D.43843 = D.43840 + 64878;
    if (D.43843 <= 9) goto <D.43941>; else goto <D.43945>;
    <D.43945>:
    D.43807 = cfg->cbb;
    D.43808 = D.43807->last_ins;
    D.43840 = D.43808->opcode;
    D.43845 = D.43840 + 64888;
    if (D.43845 <= 9) goto <D.43941>; else goto <D.43940>;
    <D.43941>:
    D.43807 = cfg->cbb;
    D.43808 = D.43807->last_ins;
    D.43846 = D.43808->data.op[1].many_blocks;
    D.43847 = D.43846 + 4;
    D.43848 = *D.43847;
    if (D.43848 == 0B) goto <D.43946>; else goto <D.43940>;
    <D.43946>:
    D.43807 = cfg->cbb;
    D.43808 = D.43807->last_ins;
    D.43846 = D.43808->data.op[1].many_blocks;
    D.43847 = D.43846 + 4;
    *D.43847 = is_null_bb;
    D.43807 = cfg->cbb;
    mono_link_bblock (cfg, D.43807, is_null_bb);
    goto <D.43942>;
    <D.43940>:
    D.43807 = cfg->cbb;
    D.43808 = D.43807->last_ins;
    if (D.43808 == 0B) goto <D.43947>; else goto <D.43949>;
    <D.43949>:
    D.43807 = cfg->cbb;
    D.43808 = D.43807->last_ins;
    D.43840 = D.43808->opcode;
    if (D.43840 != 442) goto <D.43950>; else goto <D.43948>;
    <D.43950>:
    D.43807 = cfg->cbb;
    D.43808 = D.43807->last_ins;
    D.43840 = D.43808->opcode;
    if (D.43840 != 759) goto <D.43951>; else goto <D.43948>;
    <D.43951>:
    D.43807 = cfg->cbb;
    D.43808 = D.43807->last_ins;
    D.43840 = D.43808->opcode;
    D.43841 = D.43840 + 64985;
    if (D.43841 > 9) goto <D.43952>; else goto <D.43948>;
    <D.43952>:
    D.43807 = cfg->cbb;
    D.43808 = D.43807->last_ins;
    D.43840 = D.43808->opcode;
    D.43843 = D.43840 + 64878;
    if (D.43843 > 9) goto <D.43953>; else goto <D.43948>;
    <D.43953>:
    D.43807 = cfg->cbb;
    D.43808 = D.43807->last_ins;
    D.43840 = D.43808->opcode;
    D.43845 = D.43840 + 64888;
    if (D.43845 > 9) goto <D.43947>; else goto <D.43948>;
    <D.43947>:
    D.43807 = cfg->cbb;
    mono_link_bblock (cfg, D.43807, is_null_bb);
    <D.43948>:
    <D.43942>:
    D.43807 = cfg->cbb;
    D.43807->next_bb = is_null_bb;
    cfg->cbb = is_null_bb;
    if (out_bblock != 0B) goto <D.43954>; else goto <D.43955>;
    <D.43954>:
    D.43807 = cfg->cbb;
    *out_bblock = D.43807;
    <D.43955>:
    <D.43931>:
  }
  <D.43791>:
}


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

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


reset_cast_details (struct MonoCompile * cfg)
{
  struct MonoDebugOptions * D.43958;
  int D.43959;
  struct MonoBasicBlock * D.43962;
  struct MonoInst * D.43963;
  struct MonoMemPool * D.43967;
  int D.43968;
  struct MonoInst * D.43969;
  int D.43970;
  int D.43971;
  const unsigned char * D.43972;
  int D.43973;

  D.43958 = mini_get_debug_options ();
  D.43959 = D.43958->better_cast_details;
  if (D.43959 != 0) goto <D.43960>; else goto <D.43961>;
  <D.43960>:
  {
    struct MonoInst * tls_get;

    tls_get = mono_get_jit_tls_intrinsic (cfg);
    D.43962 = cfg->cbb;
    D.43963 = D.43962->last_ins;
    if (D.43963 != 0B) goto <D.43964>; else goto <D.43965>;
    <D.43964>:
    D.43962 = cfg->cbb;
    D.43963 = D.43962->last_ins;
    D.43963->next = tls_get;
    D.43962 = cfg->cbb;
    D.43963 = D.43962->last_ins;
    tls_get->prev = D.43963;
    D.43962 = cfg->cbb;
    D.43962->last_ins = tls_get;
    goto <D.43966>;
    <D.43965>:
    D.43962 = cfg->cbb;
    D.43962 = cfg->cbb;
    D.43962->last_ins = tls_get;
    D.43963 = D.43962->last_ins;
    D.43962->code = D.43963;
    <D.43966>:
    {
      struct MonoInst * inst;

      D.43967 = cfg->mempool;
      inst = mono_mempool_alloc (D.43967, 56);
      inst->data.op[1].const_val = 0;
      D.43968 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.43968;
      inst->prev = 0B;
      D.43969 = inst->prev;
      inst->next = D.43969;
      inst->opcode = 381;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.43970 = inst->sreg3;
      inst->sreg2 = D.43970;
      D.43971 = inst->sreg2;
      inst->sreg1 = D.43971;
      D.43972 = cfg->ip;
      inst->cil_code = D.43972;
      D.43973 = tls_get->dreg;
      inst->dreg = D.43973;
      inst->data.op[0].const_val = 48;
      inst->data.op[1].const_val = 0;
      D.43962 = cfg->cbb;
      D.43963 = D.43962->last_ins;
      if (D.43963 != 0B) goto <D.43974>; else goto <D.43975>;
      <D.43974>:
      D.43962 = cfg->cbb;
      D.43963 = D.43962->last_ins;
      D.43963->next = inst;
      D.43962 = cfg->cbb;
      D.43963 = D.43962->last_ins;
      inst->prev = D.43963;
      D.43962 = cfg->cbb;
      D.43962->last_ins = inst;
      goto <D.43976>;
      <D.43975>:
      D.43962 = cfg->cbb;
      D.43962 = cfg->cbb;
      D.43962->last_ins = inst;
      D.43963 = D.43962->last_ins;
      D.43962->code = D.43963;
      <D.43976>:
    }
  }
  <D.43961>:
}


handle_isinst (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * src, int context_used)
{
  unsigned int D.43977;
  unsigned int D.43978;
  struct MonoMemPool * D.43983;
  void * D.43984;
  struct MonoInst * D.43985;
  int D.43986;
  struct MonoInst * D.43987;
  int D.43988;
  int D.43989;
  const unsigned char * D.43990;
  unsigned int D.43991;
  int D.43992;
  int D.43993;
  struct MonoBasicBlock * D.43994;
  struct MonoInst * D.43995;
  struct MonoInst * D.43999;
  unsigned int D.44000;
  unsigned int D.44001;
  unsigned int D.44002;
  int D.44003;
  unsigned int D.44004;
  unsigned int D.44005;
  int D.44006;
  unsigned int D.44007;
  unsigned int D.44008;
  int D.44009;
  int D.44010;
  struct MonoInst * D.44011;
  int D.44012;
  int D.44013;
  int D.44017;
  struct MonoInst * D.44018;
  int D.44019;
  int D.44020;
  int D.44024;
  struct MonoInst * D.44025;
  int D.44026;
  int D.44027;
  unsigned int D.44030;
  unsigned int D.44031;
  int D.44032;
  unsigned char * D.44036;
  struct MonoBasicBlock * * D.44039;
  int D.44040;
  unsigned char * D.44041;
  int D.44042;
  int D.44043;
  unsigned int D.44044;
  unsigned int D.44045;
  struct MonoBasicBlock * * D.44046;
  unsigned int D.44047;
  short unsigned int D.44052;
  short unsigned int D.44053;
  short unsigned int D.44055;
  short unsigned int D.44057;
  struct MonoBasicBlock * * D.44058;
  struct MonoBasicBlock * * D.44059;
  struct MonoBasicBlock * D.44060;
  void * D.44070;
  struct MonoBasicBlock * * D.44071;
  struct MonoBasicBlock * * D.44072;
  unsigned int D.44076;
  unsigned int D.44077;
  unsigned int D.44080;
  unsigned int D.44081;
  int D.44082;
  int D.44100;
  struct MonoInst * D.44101;
  int D.44102;
  int D.44103;
  unsigned int D.44107;
  unsigned int D.44108;
  _Bool D.44111;
  long int D.44112;
  long int D.44113;
  unsigned int D.44117;
  unsigned char D.44118;
  unsigned int D.44121;
  unsigned int D.44122;
  int D.44125;
  struct MonoInst * D.44126;
  int D.44127;
  int D.44128;
  int D.44132;
  struct MonoInst * D.44133;
  int D.44134;
  int D.44135;
  int D.44136;
  int D.44140;
  struct MonoInst * D.44141;
  int D.44142;
  int D.44143;
  unsigned int D.44146;
  unsigned int D.44147;
  int D.44148;
  unsigned char * D.44152;
  int D.44155;
  int D.44156;
  unsigned int D.44157;
  unsigned int D.44158;
  struct MonoBasicBlock * * D.44159;
  void * D.44175;
  struct MonoBasicBlock * * D.44176;
  struct MonoBasicBlock * * D.44177;
  unsigned int D.44183;
  unsigned int D.44184;
  int D.44185;
  int D.44203;
  struct MonoInst * D.44204;
  int D.44205;
  int D.44206;
  int D.44210;
  struct MonoInst * D.44211;
  int D.44212;
  int D.44213;
  struct MonoClass * D.44217;
  struct MonoClass * D.44218;
  unsigned int D.44221;
  int D.44222;
  struct MonoInst * D.44223;
  int D.44224;
  int D.44225;
  struct MonoClass * D.44229;
  struct MonoClass * D.44230;
  int D.44231;
  struct MonoInst * D.44232;
  int D.44233;
  int D.44234;
  unsigned int D.44237;
  unsigned int D.44238;
  int D.44239;
  unsigned char * D.44243;
  int D.44246;
  int D.44247;
  unsigned int D.44248;
  unsigned int D.44249;
  struct MonoBasicBlock * * D.44250;
  void * D.44266;
  struct MonoBasicBlock * * D.44267;
  struct MonoBasicBlock * * D.44268;
  unsigned int D.44274;
  unsigned int D.44275;
  int D.44276;
  int D.44297;
  struct MonoInst * D.44298;
  int D.44299;
  int D.44300;
  unsigned int D.44303;
  unsigned int D.44304;
  int D.44305;
  unsigned char * D.44309;
  int D.44312;
  int D.44313;
  unsigned int D.44314;
  unsigned int D.44315;
  struct MonoBasicBlock * * D.44316;
  void * D.44332;
  struct MonoBasicBlock * * D.44333;
  struct MonoBasicBlock * * D.44334;
  unsigned int D.44340;
  unsigned int D.44341;
  int D.44342;
  int D.44363;
  struct MonoInst * D.44364;
  int D.44365;
  int D.44366;
  unsigned int D.44369;
  unsigned int D.44370;
  int D.44371;
  unsigned char * D.44375;
  int D.44378;
  int D.44379;
  unsigned int D.44380;
  unsigned int D.44381;
  struct MonoBasicBlock * * D.44382;
  void * D.44398;
  struct MonoBasicBlock * * D.44399;
  struct MonoBasicBlock * * D.44400;
  unsigned int D.44406;
  unsigned int D.44407;
  int D.44408;
  unsigned int D.44427;
  unsigned int D.44428;
  unsigned char D.44434;
  unsigned int D.44437;
  int D.44438;
  struct MonoInst * D.44439;
  int D.44440;
  int D.44441;
  int D.44445;
  struct MonoInst * D.44446;
  int D.44447;
  int D.44448;
  int D.44452;
  struct MonoInst * D.44453;
  int D.44454;
  int D.44455;
  unsigned int D.44458;
  unsigned int D.44459;
  int D.44460;
  unsigned char * D.44464;
  int D.44467;
  int D.44468;
  unsigned int D.44469;
  unsigned int D.44470;
  struct MonoBasicBlock * * D.44471;
  void * D.44487;
  struct MonoBasicBlock * * D.44488;
  struct MonoBasicBlock * * D.44489;
  unsigned int D.44495;
  unsigned int D.44496;
  int D.44497;
  int D.44516;
  int D.44521;
  struct MonoInst * D.44522;
  int D.44523;
  int D.44524;
  unsigned int D.44531;
  unsigned int D.44533;
  unsigned int D.44534;
  unsigned int D.44536;
  struct MonoDomain * D.44542;
  int D.44545;
  struct MonoInst * D.44546;
  int D.44547;
  int D.44548;
  int vt.479;
  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 klass.480;
  int D.44569;
  struct MonoInst * D.44570;
  int D.44571;
  int D.44572;
  unsigned int D.44575;
  unsigned int D.44576;
  int D.44577;
  unsigned char * D.44581;
  int D.44584;
  int D.44585;
  unsigned int D.44586;
  unsigned int D.44587;
  struct MonoBasicBlock * * D.44588;
  void * D.44604;
  struct MonoBasicBlock * * D.44605;
  struct MonoBasicBlock * * D.44606;
  unsigned int D.44612;
  unsigned int D.44613;
  int D.44614;
  int D.44632;
  struct MonoInst * D.44633;
  int D.44634;
  int D.44635;
  unsigned int D.44638;
  unsigned int D.44639;
  int D.44640;
  unsigned char * D.44644;
  int D.44647;
  int D.44648;
  unsigned int D.44649;
  unsigned int D.44650;
  struct MonoBasicBlock * * D.44651;
  void * D.44667;
  struct MonoBasicBlock * * D.44668;
  struct MonoBasicBlock * * D.44669;
  unsigned int D.44675;
  unsigned int D.44676;
  int D.44677;
  int D.44695;
  struct MonoInst * D.44696;
  int D.44697;
  int D.44698;
  unsigned char * D.44702;
  int D.44705;
  int D.44706;
  unsigned int D.44707;
  unsigned int D.44708;
  struct MonoBasicBlock * * D.44709;
  int D.44724;
  struct MonoInst * D.44725;
  int D.44726;
  int D.44727;
  int D.44731;
  struct MonoInst * D.44732;
  int D.44733;
  int D.44734;
  unsigned int D.44737;
  unsigned int D.44738;
  int D.44739;
  unsigned char * D.44743;
  int D.44746;
  int D.44747;
  unsigned int D.44748;
  unsigned int D.44749;
  struct MonoBasicBlock * * D.44750;
  void * D.44766;
  struct MonoBasicBlock * * D.44767;
  struct MonoBasicBlock * * D.44768;
  unsigned int D.44774;
  unsigned int D.44775;
  int D.44776;
  unsigned char * D.44794;
  int D.44797;
  int D.44798;
  unsigned int D.44799;
  unsigned int D.44800;
  struct MonoBasicBlock * * D.44801;
  unsigned char * D.44816;
  int D.44819;
  int D.44820;
  unsigned int D.44821;
  unsigned int D.44822;
  struct MonoBasicBlock * * D.44823;
  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.43977 = alloc_preg (cfg);
  vtable_reg = (int) D.43977;
  D.43978 = alloc_ireg_ref (cfg);
  res_reg = (int) D.43978;
  klass_inst = 0B;
  if (context_used != 0) goto <D.43979>; else goto <D.43980>;
  <D.43979>:
  {
    struct MonoInst * args[3];

    try
      {
        mini_class_has_reference_variant_generic_argument (cfg, klass, context_used);
        if (1 != 0) goto <D.43981>; else goto <D.43982>;
        <D.43981>:
        {
          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.43983 = cfg->mempool;
          D.43984 = mono_mempool_alloc (D.43983, 56);
          args[1] = D.43984;
          D.43985 = args[1];
          D.43985 = args[1];
          D.43985->data.op[1].const_val = 0;
          D.43986 = D.43985->data.op[1].const_val;
          D.43985->data.op[0].const_val = D.43986;
          D.43985 = args[1];
          D.43985 = args[1];
          D.43985->prev = 0B;
          D.43987 = D.43985->prev;
          D.43985->next = D.43987;
          D.43985 = args[1];
          D.43985->opcode = 388;
          D.43985 = args[1];
          D.43985->flags = 0;
          D.43985 = args[1];
          D.43985->type = 0;
          D.43985 = args[1];
          D.43985->dreg = -1;
          D.43985 = args[1];
          D.43985 = args[1];
          D.43985 = args[1];
          D.43985->sreg3 = -1;
          D.43988 = D.43985->sreg3;
          D.43985->sreg2 = D.43988;
          D.43989 = D.43985->sreg2;
          D.43985->sreg1 = D.43989;
          D.43985 = args[1];
          D.43990 = cfg->ip;
          D.43985->cil_code = D.43990;
          D.43985 = args[1];
          D.43991 = alloc_preg (cfg);
          D.43992 = (int) D.43991;
          D.43985->dreg = D.43992;
          D.43985 = args[1];
          D.43993 = cache_ins->dreg;
          D.43985->sreg1 = D.43993;
          D.43985 = args[1];
          D.43985->data.op[0].const_val = 4;
          D.43985 = args[1];
          D.43985->type = 1;
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          if (D.43995 != 0B) goto <D.43996>; else goto <D.43997>;
          <D.43996>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.43985 = args[1];
          D.43995->next = D.43985;
          D.43985 = args[1];
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.43985->prev = D.43995;
          D.43994 = cfg->cbb;
          D.43985 = args[1];
          D.43994->last_ins = D.43985;
          goto <D.43998>;
          <D.43997>:
          D.43994 = cfg->cbb;
          D.43994 = cfg->cbb;
          D.43985 = args[1];
          D.43994->last_ins = D.43985;
          D.43995 = D.43994->last_ins;
          D.43994->code = D.43995;
          <D.43998>:
          args[2] = cache_ins;
          D.43999 = mono_emit_method_call (cfg, mono_isinst, &args, 0B);
          return D.43999;
        }
        <D.43982>:
        klass_inst = emit_get_rgctx_klass (cfg, context_used, klass, 1);
      }
    finally
      {
        args = {CLOBBER};
      }
  }
  <D.43980>:
  D.43983 = cfg->mempool;
  is_null_bb = mono_mempool_alloc0 (D.43983, 172);
  D.44000 = cfg->num_bblocks;
  D.44001 = D.44000;
  D.44002 = D.44001 + 1;
  cfg->num_bblocks = D.44002;
  D.44003 = (int) D.44001;
  is_null_bb->block_num = D.44003;
  D.43983 = cfg->mempool;
  false_bb = mono_mempool_alloc0 (D.43983, 172);
  D.44000 = cfg->num_bblocks;
  D.44004 = D.44000;
  D.44005 = D.44004 + 1;
  cfg->num_bblocks = D.44005;
  D.44006 = (int) D.44004;
  false_bb->block_num = D.44006;
  D.43983 = cfg->mempool;
  end_bb = mono_mempool_alloc0 (D.43983, 172);
  D.44000 = cfg->num_bblocks;
  D.44007 = D.44000;
  D.44008 = D.44007 + 1;
  cfg->num_bblocks = D.44008;
  D.44009 = (int) D.44007;
  end_bb->block_num = D.44009;
  D.43983 = cfg->mempool;
  ins = mono_mempool_alloc (D.43983, 56);
  ins->data.op[1].const_val = 0;
  D.44010 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.44010;
  ins->prev = 0B;
  D.44011 = ins->prev;
  ins->next = D.44011;
  ins->opcode = 424;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.44012 = ins->sreg3;
  ins->sreg2 = D.44012;
  D.44013 = ins->sreg2;
  ins->sreg1 = D.44013;
  D.43990 = cfg->ip;
  ins->cil_code = D.43990;
  ins->dreg = res_reg;
  ins->sreg1 = obj_reg;
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  if (D.43995 != 0B) goto <D.44014>; else goto <D.44015>;
  <D.44014>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.43995->next = ins;
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  ins->prev = D.43995;
  D.43994 = cfg->cbb;
  D.43994->last_ins = ins;
  goto <D.44016>;
  <D.44015>:
  D.43994 = cfg->cbb;
  D.43994 = cfg->cbb;
  D.43994->last_ins = ins;
  D.43995 = D.43994->last_ins;
  D.43994->code = D.43995;
  <D.44016>:
  ins->type = 6;
  ins->klass = klass;
  {
    struct MonoInst * inst;

    D.43983 = cfg->mempool;
    inst = mono_mempool_alloc (D.43983, 56);
    inst->data.op[1].const_val = 0;
    D.44017 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44017;
    inst->prev = 0B;
    D.44018 = inst->prev;
    inst->next = D.44018;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44019 = inst->sreg3;
    inst->sreg2 = D.44019;
    D.44020 = inst->sreg2;
    inst->sreg1 = D.44020;
    D.43990 = cfg->ip;
    inst->cil_code = D.43990;
    inst->dreg = -1;
    inst->sreg1 = obj_reg;
    inst->data.op[1].const_val = 0;
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    if (D.43995 != 0B) goto <D.44021>; else goto <D.44022>;
    <D.44021>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.43995->next = inst;
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    inst->prev = D.43995;
    D.43994 = cfg->cbb;
    D.43994->last_ins = inst;
    goto <D.44023>;
    <D.44022>:
    D.43994 = cfg->cbb;
    D.43994 = cfg->cbb;
    D.43994->last_ins = inst;
    D.43995 = D.43994->last_ins;
    D.43994->code = D.43995;
    <D.44023>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.43983 = cfg->mempool;
    ins = mono_mempool_alloc (D.43983, 56);
    ins->data.op[1].const_val = 0;
    D.44024 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.44024;
    ins->prev = 0B;
    D.44025 = ins->prev;
    ins->next = D.44025;
    ins->opcode = 648;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.44026 = ins->sreg3;
    ins->sreg2 = D.44026;
    D.44027 = ins->sreg2;
    ins->sreg1 = D.44027;
    D.43990 = cfg->ip;
    ins->cil_code = D.43990;
    if (0 != 0) goto <D.44028>; else goto <D.44029>;
    <D.44028>:
    D.43983 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.43983, 172);
    D.44000 = cfg->num_bblocks;
    D.44030 = D.44000;
    D.44031 = D.44030 + 1;
    cfg->num_bblocks = D.44031;
    D.44032 = (int) D.44030;
    falsebb->block_num = D.44032;
    ins->data.op[0].target_block = is_null_bb;
    D.43994 = cfg->cbb;
    mono_link_bblock (cfg, D.43994, is_null_bb);
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    if (D.43995 != 0B) goto <D.44033>; else goto <D.44034>;
    <D.44033>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.43995->next = ins;
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    ins->prev = D.43995;
    D.43994 = cfg->cbb;
    D.43994->last_ins = ins;
    goto <D.44035>;
    <D.44034>:
    D.43994 = cfg->cbb;
    D.43994 = cfg->cbb;
    D.43994->last_ins = ins;
    D.43995 = D.43994->last_ins;
    D.43994->code = D.43995;
    <D.44035>:
    D.44036 = falsebb->cil_code;
    if (D.44036 != 0B) goto <D.44037>; else goto <D.44038>;
    <D.44037>:
    D.44039 = cfg->cil_offset_to_bb;
    D.44036 = falsebb->cil_code;
    D.44040 = (int) D.44036;
    D.44041 = cfg->cil_start;
    D.44042 = (int) D.44041;
    D.44043 = D.44040 - D.44042;
    D.44044 = (unsigned int) D.44043;
    D.44045 = D.44044 * 4;
    D.44046 = D.44039 + D.44045;
    *D.44046 = falsebb;
    <D.44038>:
    D.44047 = cfg->real_offset;
    falsebb->real_offset = D.44047;
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    if (D.43995 != 0B) goto <D.44051>; else goto <D.44048>;
    <D.44051>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44053 = D.44052 + 64985;
    if (D.44053 <= 9) goto <D.44049>; else goto <D.44054>;
    <D.44054>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44055 = D.44052 + 64878;
    if (D.44055 <= 9) goto <D.44049>; else goto <D.44056>;
    <D.44056>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44057 = D.44052 + 64888;
    if (D.44057 <= 9) goto <D.44049>; else goto <D.44048>;
    <D.44049>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44058 = D.43995->data.op[1].many_blocks;
    D.44059 = D.44058 + 4;
    D.44060 = *D.44059;
    if (D.44060 == 0B) goto <D.44061>; else goto <D.44048>;
    <D.44061>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44058 = D.43995->data.op[1].many_blocks;
    D.44059 = D.44058 + 4;
    *D.44059 = falsebb;
    D.43994 = cfg->cbb;
    mono_link_bblock (cfg, D.43994, falsebb);
    goto <D.44050>;
    <D.44048>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    if (D.43995 == 0B) goto <D.44062>; else goto <D.44064>;
    <D.44064>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    if (D.44052 != 442) goto <D.44065>; else goto <D.44063>;
    <D.44065>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    if (D.44052 != 759) goto <D.44066>; else goto <D.44063>;
    <D.44066>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44053 = D.44052 + 64985;
    if (D.44053 > 9) goto <D.44067>; else goto <D.44063>;
    <D.44067>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44055 = D.44052 + 64878;
    if (D.44055 > 9) goto <D.44068>; else goto <D.44063>;
    <D.44068>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44057 = D.44052 + 64888;
    if (D.44057 > 9) goto <D.44062>; else goto <D.44063>;
    <D.44062>:
    D.43994 = cfg->cbb;
    mono_link_bblock (cfg, D.43994, falsebb);
    <D.44063>:
    <D.44050>:
    D.43994 = cfg->cbb;
    D.43994->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.44069>;
    <D.44029>:
    D.43983 = cfg->mempool;
    D.44070 = mono_mempool_alloc (D.43983, 8);
    ins->data.op[1].many_blocks = D.44070;
    D.44071 = ins->data.op[1].many_blocks;
    *D.44071 = is_null_bb;
    D.44071 = ins->data.op[1].many_blocks;
    D.44072 = D.44071 + 4;
    *D.44072 = 0B;
    D.43994 = cfg->cbb;
    mono_link_bblock (cfg, D.43994, is_null_bb);
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    if (D.43995 != 0B) goto <D.44073>; else goto <D.44074>;
    <D.44073>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.43995->next = ins;
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    ins->prev = D.43995;
    D.43994 = cfg->cbb;
    D.43994->last_ins = ins;
    goto <D.44075>;
    <D.44074>:
    D.43994 = cfg->cbb;
    D.43994 = cfg->cbb;
    D.43994->last_ins = ins;
    D.43995 = D.43994->last_ins;
    D.43994->code = D.43995;
    <D.44075>:
    D.44076 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.44077 = D.44076 & 8;
    if (D.44077 == 0) goto <D.44078>; else goto <D.44079>;
    <D.44078>:
    D.43983 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.43983, 172);
    D.44000 = cfg->num_bblocks;
    D.44080 = D.44000;
    D.44081 = D.44080 + 1;
    cfg->num_bblocks = D.44081;
    D.44082 = (int) D.44080;
    falsebb->block_num = D.44082;
    D.44071 = ins->data.op[1].many_blocks;
    D.44072 = D.44071 + 4;
    *D.44072 = falsebb;
    D.43994 = cfg->cbb;
    mono_link_bblock (cfg, D.43994, falsebb);
    D.44036 = falsebb->cil_code;
    if (D.44036 != 0B) goto <D.44083>; else goto <D.44084>;
    <D.44083>:
    D.44039 = cfg->cil_offset_to_bb;
    D.44036 = falsebb->cil_code;
    D.44040 = (int) D.44036;
    D.44041 = cfg->cil_start;
    D.44042 = (int) D.44041;
    D.44043 = D.44040 - D.44042;
    D.44044 = (unsigned int) D.44043;
    D.44045 = D.44044 * 4;
    D.44046 = D.44039 + D.44045;
    *D.44046 = falsebb;
    <D.44084>:
    D.44047 = cfg->real_offset;
    falsebb->real_offset = D.44047;
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    if (D.43995 != 0B) goto <D.44088>; else goto <D.44085>;
    <D.44088>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44053 = D.44052 + 64985;
    if (D.44053 <= 9) goto <D.44086>; else goto <D.44089>;
    <D.44089>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44055 = D.44052 + 64878;
    if (D.44055 <= 9) goto <D.44086>; else goto <D.44090>;
    <D.44090>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44057 = D.44052 + 64888;
    if (D.44057 <= 9) goto <D.44086>; else goto <D.44085>;
    <D.44086>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44058 = D.43995->data.op[1].many_blocks;
    D.44059 = D.44058 + 4;
    D.44060 = *D.44059;
    if (D.44060 == 0B) goto <D.44091>; else goto <D.44085>;
    <D.44091>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44058 = D.43995->data.op[1].many_blocks;
    D.44059 = D.44058 + 4;
    *D.44059 = falsebb;
    D.43994 = cfg->cbb;
    mono_link_bblock (cfg, D.43994, falsebb);
    goto <D.44087>;
    <D.44085>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    if (D.43995 == 0B) goto <D.44092>; else goto <D.44094>;
    <D.44094>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    if (D.44052 != 442) goto <D.44095>; else goto <D.44093>;
    <D.44095>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    if (D.44052 != 759) goto <D.44096>; else goto <D.44093>;
    <D.44096>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44053 = D.44052 + 64985;
    if (D.44053 > 9) goto <D.44097>; else goto <D.44093>;
    <D.44097>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44055 = D.44052 + 64878;
    if (D.44055 > 9) goto <D.44098>; else goto <D.44093>;
    <D.44098>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44057 = D.44052 + 64888;
    if (D.44057 > 9) goto <D.44092>; else goto <D.44093>;
    <D.44092>:
    D.43994 = cfg->cbb;
    mono_link_bblock (cfg, D.43994, falsebb);
    <D.44093>:
    <D.44087>:
    D.43994 = cfg->cbb;
    D.43994->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.44099>;
    <D.44079>:
    D.43994 = cfg->cbb;
    D.43994->extended = 1;
    <D.44099>:
    <D.44069>:
  }
  {
    struct MonoInst * inst;

    D.43983 = cfg->mempool;
    inst = mono_mempool_alloc (D.43983, 56);
    inst->data.op[1].const_val = 0;
    D.44100 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44100;
    inst->prev = 0B;
    D.44101 = inst->prev;
    inst->next = D.44101;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44102 = inst->sreg3;
    inst->sreg2 = D.44102;
    D.44103 = inst->sreg2;
    inst->sreg1 = D.44103;
    D.43990 = cfg->ip;
    inst->cil_code = D.43990;
    inst->dreg = vtable_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    if (D.43995 != 0B) goto <D.44104>; else goto <D.44105>;
    <D.44104>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.43995->next = inst;
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    inst->prev = D.43995;
    D.43994 = cfg->cbb;
    D.43994->last_ins = inst;
    goto <D.44106>;
    <D.44105>:
    D.43994 = cfg->cbb;
    D.43994 = cfg->cbb;
    D.43994->last_ins = inst;
    D.43995 = D.43994->last_ins;
    D.43994->code = D.43995;
    <D.44106>:
  }
  D.44107 = klass->flags;
  D.44108 = D.44107 & 32;
  if (D.44108 != 0) goto <D.44109>; else goto <D.44110>;
  <D.44109>:
  D.44111 = context_used != 0;
  D.44112 = (long int) D.44111;
  D.44113 = __builtin_expect (D.44112, 0);
  if (D.44113 != 0) goto <D.44114>; else goto <D.44115>;
  <D.44114>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4086, "!context_used");
  <D.44115>:
  mini_emit_iface_cast (cfg, vtable_reg, klass, false_bb, is_null_bb);
  goto <D.44116>;
  <D.44110>:
  {
    int klass_reg;

    D.44117 = alloc_preg (cfg);
    klass_reg = (int) D.44117;
    D.44118 = klass->rank;
    if (D.44118 != 0) goto <D.44119>; else goto <D.44120>;
    <D.44119>:
    {
      int rank_reg;
      int eclass_reg;

      D.44121 = alloc_preg (cfg);
      rank_reg = (int) D.44121;
      D.44122 = alloc_preg (cfg);
      eclass_reg = (int) D.44122;
      D.44111 = context_used != 0;
      D.44112 = (long int) D.44111;
      D.44113 = __builtin_expect (D.44112, 0);
      if (D.44113 != 0) goto <D.44123>; else goto <D.44124>;
      <D.44123>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4096, "!context_used");
      <D.44124>:
      {
        struct MonoInst * inst;

        D.43983 = cfg->mempool;
        inst = mono_mempool_alloc (D.43983, 56);
        inst->data.op[1].const_val = 0;
        D.44125 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.44125;
        inst->prev = 0B;
        D.44126 = inst->prev;
        inst->next = D.44126;
        inst->opcode = 390;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.44127 = inst->sreg3;
        inst->sreg2 = D.44127;
        D.44128 = inst->sreg2;
        inst->sreg1 = D.44128;
        D.43990 = cfg->ip;
        inst->cil_code = D.43990;
        inst->dreg = rank_reg;
        inst->sreg1 = vtable_reg;
        inst->data.op[0].const_val = 22;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 != 0B) goto <D.44129>; else goto <D.44130>;
        <D.44129>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.43995->next = inst;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        inst->prev = D.43995;
        D.43994 = cfg->cbb;
        D.43994->last_ins = inst;
        goto <D.44131>;
        <D.44130>:
        D.43994 = cfg->cbb;
        D.43994 = cfg->cbb;
        D.43994->last_ins = inst;
        D.43995 = D.43994->last_ins;
        D.43994->code = D.43995;
        <D.44131>:
      }
      {
        struct MonoInst * inst;

        D.43983 = cfg->mempool;
        inst = mono_mempool_alloc (D.43983, 56);
        inst->data.op[1].const_val = 0;
        D.44132 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.44132;
        inst->prev = 0B;
        D.44133 = inst->prev;
        inst->next = D.44133;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.44134 = inst->sreg3;
        inst->sreg2 = D.44134;
        D.44135 = inst->sreg2;
        inst->sreg1 = D.44135;
        D.43990 = cfg->ip;
        inst->cil_code = D.43990;
        inst->dreg = -1;
        inst->sreg1 = rank_reg;
        D.44118 = klass->rank;
        D.44136 = (int) D.44118;
        inst->data.op[1].const_val = D.44136;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 != 0B) goto <D.44137>; else goto <D.44138>;
        <D.44137>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.43995->next = inst;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        inst->prev = D.43995;
        D.43994 = cfg->cbb;
        D.43994->last_ins = inst;
        goto <D.44139>;
        <D.44138>:
        D.43994 = cfg->cbb;
        D.43994 = cfg->cbb;
        D.43994->last_ins = inst;
        D.43995 = D.43994->last_ins;
        D.43994->code = D.43995;
        <D.44139>:
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.43983 = cfg->mempool;
        ins = mono_mempool_alloc (D.43983, 56);
        ins->data.op[1].const_val = 0;
        D.44140 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.44140;
        ins->prev = 0B;
        D.44141 = ins->prev;
        ins->next = D.44141;
        ins->opcode = 653;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.44142 = ins->sreg3;
        ins->sreg2 = D.44142;
        D.44143 = ins->sreg2;
        ins->sreg1 = D.44143;
        D.43990 = cfg->ip;
        ins->cil_code = D.43990;
        if (0 != 0) goto <D.44144>; else goto <D.44145>;
        <D.44144>:
        D.43983 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.43983, 172);
        D.44000 = cfg->num_bblocks;
        D.44146 = D.44000;
        D.44147 = D.44146 + 1;
        cfg->num_bblocks = D.44147;
        D.44148 = (int) D.44146;
        falsebb->block_num = D.44148;
        ins->data.op[0].target_block = false_bb;
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, false_bb);
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 != 0B) goto <D.44149>; else goto <D.44150>;
        <D.44149>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.43995->next = ins;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        ins->prev = D.43995;
        D.43994 = cfg->cbb;
        D.43994->last_ins = ins;
        goto <D.44151>;
        <D.44150>:
        D.43994 = cfg->cbb;
        D.43994 = cfg->cbb;
        D.43994->last_ins = ins;
        D.43995 = D.43994->last_ins;
        D.43994->code = D.43995;
        <D.44151>:
        D.44152 = falsebb->cil_code;
        if (D.44152 != 0B) goto <D.44153>; else goto <D.44154>;
        <D.44153>:
        D.44039 = cfg->cil_offset_to_bb;
        D.44152 = falsebb->cil_code;
        D.44155 = (int) D.44152;
        D.44041 = cfg->cil_start;
        D.44042 = (int) D.44041;
        D.44156 = D.44155 - D.44042;
        D.44157 = (unsigned int) D.44156;
        D.44158 = D.44157 * 4;
        D.44159 = D.44039 + D.44158;
        *D.44159 = falsebb;
        <D.44154>:
        D.44047 = cfg->real_offset;
        falsebb->real_offset = D.44047;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 != 0B) goto <D.44163>; else goto <D.44160>;
        <D.44163>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44053 = D.44052 + 64985;
        if (D.44053 <= 9) goto <D.44161>; else goto <D.44164>;
        <D.44164>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44055 = D.44052 + 64878;
        if (D.44055 <= 9) goto <D.44161>; else goto <D.44165>;
        <D.44165>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44057 = D.44052 + 64888;
        if (D.44057 <= 9) goto <D.44161>; else goto <D.44160>;
        <D.44161>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44058 = D.43995->data.op[1].many_blocks;
        D.44059 = D.44058 + 4;
        D.44060 = *D.44059;
        if (D.44060 == 0B) goto <D.44166>; else goto <D.44160>;
        <D.44166>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44058 = D.43995->data.op[1].many_blocks;
        D.44059 = D.44058 + 4;
        *D.44059 = falsebb;
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, falsebb);
        goto <D.44162>;
        <D.44160>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 == 0B) goto <D.44167>; else goto <D.44169>;
        <D.44169>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        if (D.44052 != 442) goto <D.44170>; else goto <D.44168>;
        <D.44170>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        if (D.44052 != 759) goto <D.44171>; else goto <D.44168>;
        <D.44171>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44053 = D.44052 + 64985;
        if (D.44053 > 9) goto <D.44172>; else goto <D.44168>;
        <D.44172>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44055 = D.44052 + 64878;
        if (D.44055 > 9) goto <D.44173>; else goto <D.44168>;
        <D.44173>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44057 = D.44052 + 64888;
        if (D.44057 > 9) goto <D.44167>; else goto <D.44168>;
        <D.44167>:
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, falsebb);
        <D.44168>:
        <D.44162>:
        D.43994 = cfg->cbb;
        D.43994->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.44174>;
        <D.44145>:
        D.43983 = cfg->mempool;
        D.44175 = mono_mempool_alloc (D.43983, 8);
        ins->data.op[1].many_blocks = D.44175;
        D.44176 = ins->data.op[1].many_blocks;
        *D.44176 = false_bb;
        D.44176 = ins->data.op[1].many_blocks;
        D.44177 = D.44176 + 4;
        *D.44177 = 0B;
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, false_bb);
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 != 0B) goto <D.44178>; else goto <D.44179>;
        <D.44178>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.43995->next = ins;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        ins->prev = D.43995;
        D.43994 = cfg->cbb;
        D.43994->last_ins = ins;
        goto <D.44180>;
        <D.44179>:
        D.43994 = cfg->cbb;
        D.43994 = cfg->cbb;
        D.43994->last_ins = ins;
        D.43995 = D.43994->last_ins;
        D.43994->code = D.43995;
        <D.44180>:
        D.44076 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.44077 = D.44076 & 8;
        if (D.44077 == 0) goto <D.44181>; else goto <D.44182>;
        <D.44181>:
        D.43983 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.43983, 172);
        D.44000 = cfg->num_bblocks;
        D.44183 = D.44000;
        D.44184 = D.44183 + 1;
        cfg->num_bblocks = D.44184;
        D.44185 = (int) D.44183;
        falsebb->block_num = D.44185;
        D.44176 = ins->data.op[1].many_blocks;
        D.44177 = D.44176 + 4;
        *D.44177 = falsebb;
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, falsebb);
        D.44152 = falsebb->cil_code;
        if (D.44152 != 0B) goto <D.44186>; else goto <D.44187>;
        <D.44186>:
        D.44039 = cfg->cil_offset_to_bb;
        D.44152 = falsebb->cil_code;
        D.44155 = (int) D.44152;
        D.44041 = cfg->cil_start;
        D.44042 = (int) D.44041;
        D.44156 = D.44155 - D.44042;
        D.44157 = (unsigned int) D.44156;
        D.44158 = D.44157 * 4;
        D.44159 = D.44039 + D.44158;
        *D.44159 = falsebb;
        <D.44187>:
        D.44047 = cfg->real_offset;
        falsebb->real_offset = D.44047;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 != 0B) goto <D.44191>; else goto <D.44188>;
        <D.44191>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44053 = D.44052 + 64985;
        if (D.44053 <= 9) goto <D.44189>; else goto <D.44192>;
        <D.44192>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44055 = D.44052 + 64878;
        if (D.44055 <= 9) goto <D.44189>; else goto <D.44193>;
        <D.44193>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44057 = D.44052 + 64888;
        if (D.44057 <= 9) goto <D.44189>; else goto <D.44188>;
        <D.44189>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44058 = D.43995->data.op[1].many_blocks;
        D.44059 = D.44058 + 4;
        D.44060 = *D.44059;
        if (D.44060 == 0B) goto <D.44194>; else goto <D.44188>;
        <D.44194>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44058 = D.43995->data.op[1].many_blocks;
        D.44059 = D.44058 + 4;
        *D.44059 = falsebb;
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, falsebb);
        goto <D.44190>;
        <D.44188>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 == 0B) goto <D.44195>; else goto <D.44197>;
        <D.44197>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        if (D.44052 != 442) goto <D.44198>; else goto <D.44196>;
        <D.44198>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        if (D.44052 != 759) goto <D.44199>; else goto <D.44196>;
        <D.44199>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44053 = D.44052 + 64985;
        if (D.44053 > 9) goto <D.44200>; else goto <D.44196>;
        <D.44200>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44055 = D.44052 + 64878;
        if (D.44055 > 9) goto <D.44201>; else goto <D.44196>;
        <D.44201>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44057 = D.44052 + 64888;
        if (D.44057 > 9) goto <D.44195>; else goto <D.44196>;
        <D.44195>:
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, falsebb);
        <D.44196>:
        <D.44190>:
        D.43994 = cfg->cbb;
        D.43994->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.44202>;
        <D.44182>:
        D.43994 = cfg->cbb;
        D.43994->extended = 1;
        <D.44202>:
        <D.44174>:
      }
      {
        struct MonoInst * inst;

        D.43983 = cfg->mempool;
        inst = mono_mempool_alloc (D.43983, 56);
        inst->data.op[1].const_val = 0;
        D.44203 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.44203;
        inst->prev = 0B;
        D.44204 = inst->prev;
        inst->next = D.44204;
        inst->opcode = 388;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.44205 = inst->sreg3;
        inst->sreg2 = D.44205;
        D.44206 = inst->sreg2;
        inst->sreg1 = D.44206;
        D.43990 = cfg->ip;
        inst->cil_code = D.43990;
        inst->dreg = klass_reg;
        inst->sreg1 = vtable_reg;
        inst->data.op[0].const_val = 0;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 != 0B) goto <D.44207>; else goto <D.44208>;
        <D.44207>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.43995->next = inst;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        inst->prev = D.43995;
        D.43994 = cfg->cbb;
        D.43994->last_ins = inst;
        goto <D.44209>;
        <D.44208>:
        D.43994 = cfg->cbb;
        D.43994 = cfg->cbb;
        D.43994->last_ins = inst;
        D.43995 = D.43994->last_ins;
        D.43994->code = D.43995;
        <D.44209>:
      }
      {
        struct MonoInst * inst;

        D.43983 = cfg->mempool;
        inst = mono_mempool_alloc (D.43983, 56);
        inst->data.op[1].const_val = 0;
        D.44210 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.44210;
        inst->prev = 0B;
        D.44211 = inst->prev;
        inst->next = D.44211;
        inst->opcode = 388;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.44212 = inst->sreg3;
        inst->sreg2 = D.44212;
        D.44213 = inst->sreg2;
        inst->sreg1 = D.44213;
        D.43990 = cfg->ip;
        inst->cil_code = D.43990;
        inst->dreg = eclass_reg;
        inst->sreg1 = klass_reg;
        inst->data.op[0].const_val = 4;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 != 0B) goto <D.44214>; else goto <D.44215>;
        <D.44214>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.43995->next = inst;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        inst->prev = D.43995;
        D.43994 = cfg->cbb;
        D.43994->last_ins = inst;
        goto <D.44216>;
        <D.44215>:
        D.43994 = cfg->cbb;
        D.43994 = cfg->cbb;
        D.43994->last_ins = inst;
        D.43995 = D.43994->last_ins;
        D.43994->code = D.43995;
        <D.44216>:
      }
      D.44217 = klass->cast_class;
      D.44218 = mono_defaults.object_class;
      if (D.44217 == D.44218) goto <D.44219>; else goto <D.44220>;
      <D.44219>:
      {
        int parent_reg;

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

          D.43983 = cfg->mempool;
          inst = mono_mempool_alloc (D.43983, 56);
          inst->data.op[1].const_val = 0;
          D.44222 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.44222;
          inst->prev = 0B;
          D.44223 = inst->prev;
          inst->next = D.44223;
          inst->opcode = 388;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.44224 = inst->sreg3;
          inst->sreg2 = D.44224;
          D.44225 = inst->sreg2;
          inst->sreg1 = D.44225;
          D.43990 = cfg->ip;
          inst->cil_code = D.43990;
          inst->dreg = parent_reg;
          inst->sreg1 = eclass_reg;
          inst->data.op[0].const_val = 28;
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          if (D.43995 != 0B) goto <D.44226>; else goto <D.44227>;
          <D.44226>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.43995->next = inst;
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          inst->prev = D.43995;
          D.43994 = cfg->cbb;
          D.43994->last_ins = inst;
          goto <D.44228>;
          <D.44227>:
          D.43994 = cfg->cbb;
          D.43994 = cfg->cbb;
          D.43994->last_ins = inst;
          D.43995 = D.43994->last_ins;
          D.43994->code = D.43995;
          <D.44228>:
        }
        D.44229 = mono_defaults.enum_class;
        D.44230 = D.44229->parent;
        mini_emit_class_check_branch (cfg, parent_reg, D.44230, 653, is_null_bb);
        D.44229 = mono_defaults.enum_class;
        mini_emit_class_check_branch (cfg, eclass_reg, D.44229, 648, is_null_bb);
        {
          struct MonoInst * ins;
          struct MonoBasicBlock * falsebb;

          D.43983 = cfg->mempool;
          ins = mono_mempool_alloc (D.43983, 56);
          ins->data.op[1].const_val = 0;
          D.44231 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.44231;
          ins->prev = 0B;
          D.44232 = ins->prev;
          ins->next = D.44232;
          ins->opcode = 442;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.44233 = ins->sreg3;
          ins->sreg2 = D.44233;
          D.44234 = ins->sreg2;
          ins->sreg1 = D.44234;
          D.43990 = cfg->ip;
          ins->cil_code = D.43990;
          if (1 != 0) goto <D.44235>; else goto <D.44236>;
          <D.44235>:
          D.43983 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.43983, 172);
          D.44000 = cfg->num_bblocks;
          D.44237 = D.44000;
          D.44238 = D.44237 + 1;
          cfg->num_bblocks = D.44238;
          D.44239 = (int) D.44237;
          falsebb->block_num = D.44239;
          ins->data.op[0].target_block = false_bb;
          D.43994 = cfg->cbb;
          mono_link_bblock (cfg, D.43994, false_bb);
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          if (D.43995 != 0B) goto <D.44240>; else goto <D.44241>;
          <D.44240>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.43995->next = ins;
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          ins->prev = D.43995;
          D.43994 = cfg->cbb;
          D.43994->last_ins = ins;
          goto <D.44242>;
          <D.44241>:
          D.43994 = cfg->cbb;
          D.43994 = cfg->cbb;
          D.43994->last_ins = ins;
          D.43995 = D.43994->last_ins;
          D.43994->code = D.43995;
          <D.44242>:
          D.44243 = falsebb->cil_code;
          if (D.44243 != 0B) goto <D.44244>; else goto <D.44245>;
          <D.44244>:
          D.44039 = cfg->cil_offset_to_bb;
          D.44243 = falsebb->cil_code;
          D.44246 = (int) D.44243;
          D.44041 = cfg->cil_start;
          D.44042 = (int) D.44041;
          D.44247 = D.44246 - D.44042;
          D.44248 = (unsigned int) D.44247;
          D.44249 = D.44248 * 4;
          D.44250 = D.44039 + D.44249;
          *D.44250 = falsebb;
          <D.44245>:
          D.44047 = cfg->real_offset;
          falsebb->real_offset = D.44047;
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          if (D.43995 != 0B) goto <D.44254>; else goto <D.44251>;
          <D.44254>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44053 = D.44052 + 64985;
          if (D.44053 <= 9) goto <D.44252>; else goto <D.44255>;
          <D.44255>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44055 = D.44052 + 64878;
          if (D.44055 <= 9) goto <D.44252>; else goto <D.44256>;
          <D.44256>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44057 = D.44052 + 64888;
          if (D.44057 <= 9) goto <D.44252>; else goto <D.44251>;
          <D.44252>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44058 = D.43995->data.op[1].many_blocks;
          D.44059 = D.44058 + 4;
          D.44060 = *D.44059;
          if (D.44060 == 0B) goto <D.44257>; else goto <D.44251>;
          <D.44257>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44058 = D.43995->data.op[1].many_blocks;
          D.44059 = D.44058 + 4;
          *D.44059 = falsebb;
          D.43994 = cfg->cbb;
          mono_link_bblock (cfg, D.43994, falsebb);
          goto <D.44253>;
          <D.44251>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          if (D.43995 == 0B) goto <D.44258>; else goto <D.44260>;
          <D.44260>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          if (D.44052 != 442) goto <D.44261>; else goto <D.44259>;
          <D.44261>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          if (D.44052 != 759) goto <D.44262>; else goto <D.44259>;
          <D.44262>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44053 = D.44052 + 64985;
          if (D.44053 > 9) goto <D.44263>; else goto <D.44259>;
          <D.44263>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44055 = D.44052 + 64878;
          if (D.44055 > 9) goto <D.44264>; else goto <D.44259>;
          <D.44264>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44057 = D.44052 + 64888;
          if (D.44057 > 9) goto <D.44258>; else goto <D.44259>;
          <D.44258>:
          D.43994 = cfg->cbb;
          mono_link_bblock (cfg, D.43994, falsebb);
          <D.44259>:
          <D.44253>:
          D.43994 = cfg->cbb;
          D.43994->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.44265>;
          <D.44236>:
          D.43983 = cfg->mempool;
          D.44266 = mono_mempool_alloc (D.43983, 8);
          ins->data.op[1].many_blocks = D.44266;
          D.44267 = ins->data.op[1].many_blocks;
          *D.44267 = false_bb;
          D.44267 = ins->data.op[1].many_blocks;
          D.44268 = D.44267 + 4;
          *D.44268 = 0B;
          D.43994 = cfg->cbb;
          mono_link_bblock (cfg, D.43994, false_bb);
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          if (D.43995 != 0B) goto <D.44269>; else goto <D.44270>;
          <D.44269>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.43995->next = ins;
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          ins->prev = D.43995;
          D.43994 = cfg->cbb;
          D.43994->last_ins = ins;
          goto <D.44271>;
          <D.44270>:
          D.43994 = cfg->cbb;
          D.43994 = cfg->cbb;
          D.43994->last_ins = ins;
          D.43995 = D.43994->last_ins;
          D.43994->code = D.43995;
          <D.44271>:
          D.44076 = BIT_FIELD_REF <*cfg, 32, 3392>;
          D.44077 = D.44076 & 8;
          if (D.44077 == 0) goto <D.44272>; else goto <D.44273>;
          <D.44272>:
          D.43983 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.43983, 172);
          D.44000 = cfg->num_bblocks;
          D.44274 = D.44000;
          D.44275 = D.44274 + 1;
          cfg->num_bblocks = D.44275;
          D.44276 = (int) D.44274;
          falsebb->block_num = D.44276;
          D.44267 = ins->data.op[1].many_blocks;
          D.44268 = D.44267 + 4;
          *D.44268 = falsebb;
          D.43994 = cfg->cbb;
          mono_link_bblock (cfg, D.43994, falsebb);
          D.44243 = falsebb->cil_code;
          if (D.44243 != 0B) goto <D.44277>; else goto <D.44278>;
          <D.44277>:
          D.44039 = cfg->cil_offset_to_bb;
          D.44243 = falsebb->cil_code;
          D.44246 = (int) D.44243;
          D.44041 = cfg->cil_start;
          D.44042 = (int) D.44041;
          D.44247 = D.44246 - D.44042;
          D.44248 = (unsigned int) D.44247;
          D.44249 = D.44248 * 4;
          D.44250 = D.44039 + D.44249;
          *D.44250 = falsebb;
          <D.44278>:
          D.44047 = cfg->real_offset;
          falsebb->real_offset = D.44047;
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          if (D.43995 != 0B) goto <D.44282>; else goto <D.44279>;
          <D.44282>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44053 = D.44052 + 64985;
          if (D.44053 <= 9) goto <D.44280>; else goto <D.44283>;
          <D.44283>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44055 = D.44052 + 64878;
          if (D.44055 <= 9) goto <D.44280>; else goto <D.44284>;
          <D.44284>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44057 = D.44052 + 64888;
          if (D.44057 <= 9) goto <D.44280>; else goto <D.44279>;
          <D.44280>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44058 = D.43995->data.op[1].many_blocks;
          D.44059 = D.44058 + 4;
          D.44060 = *D.44059;
          if (D.44060 == 0B) goto <D.44285>; else goto <D.44279>;
          <D.44285>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44058 = D.43995->data.op[1].many_blocks;
          D.44059 = D.44058 + 4;
          *D.44059 = falsebb;
          D.43994 = cfg->cbb;
          mono_link_bblock (cfg, D.43994, falsebb);
          goto <D.44281>;
          <D.44279>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          if (D.43995 == 0B) goto <D.44286>; else goto <D.44288>;
          <D.44288>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          if (D.44052 != 442) goto <D.44289>; else goto <D.44287>;
          <D.44289>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          if (D.44052 != 759) goto <D.44290>; else goto <D.44287>;
          <D.44290>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44053 = D.44052 + 64985;
          if (D.44053 > 9) goto <D.44291>; else goto <D.44287>;
          <D.44291>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44055 = D.44052 + 64878;
          if (D.44055 > 9) goto <D.44292>; else goto <D.44287>;
          <D.44292>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44057 = D.44052 + 64888;
          if (D.44057 > 9) goto <D.44286>; else goto <D.44287>;
          <D.44286>:
          D.43994 = cfg->cbb;
          mono_link_bblock (cfg, D.43994, falsebb);
          <D.44287>:
          <D.44281>:
          D.43994 = cfg->cbb;
          D.43994->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.44293>;
          <D.44273>:
          D.43994 = cfg->cbb;
          D.43994->extended = 1;
          <D.44293>:
          <D.44265>:
        }
      }
      goto <D.44294>;
      <D.44220>:
      D.44217 = klass->cast_class;
      D.44229 = mono_defaults.enum_class;
      D.44230 = D.44229->parent;
      if (D.44217 == D.44230) goto <D.44295>; else goto <D.44296>;
      <D.44295>:
      D.44229 = mono_defaults.enum_class;
      D.44230 = D.44229->parent;
      mini_emit_class_check_branch (cfg, eclass_reg, D.44230, 648, is_null_bb);
      D.44229 = mono_defaults.enum_class;
      mini_emit_class_check_branch (cfg, eclass_reg, D.44229, 648, is_null_bb);
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.43983 = cfg->mempool;
        ins = mono_mempool_alloc (D.43983, 56);
        ins->data.op[1].const_val = 0;
        D.44297 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.44297;
        ins->prev = 0B;
        D.44298 = ins->prev;
        ins->next = D.44298;
        ins->opcode = 442;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.44299 = ins->sreg3;
        ins->sreg2 = D.44299;
        D.44300 = ins->sreg2;
        ins->sreg1 = D.44300;
        D.43990 = cfg->ip;
        ins->cil_code = D.43990;
        if (1 != 0) goto <D.44301>; else goto <D.44302>;
        <D.44301>:
        D.43983 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.43983, 172);
        D.44000 = cfg->num_bblocks;
        D.44303 = D.44000;
        D.44304 = D.44303 + 1;
        cfg->num_bblocks = D.44304;
        D.44305 = (int) D.44303;
        falsebb->block_num = D.44305;
        ins->data.op[0].target_block = false_bb;
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, false_bb);
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 != 0B) goto <D.44306>; else goto <D.44307>;
        <D.44306>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.43995->next = ins;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        ins->prev = D.43995;
        D.43994 = cfg->cbb;
        D.43994->last_ins = ins;
        goto <D.44308>;
        <D.44307>:
        D.43994 = cfg->cbb;
        D.43994 = cfg->cbb;
        D.43994->last_ins = ins;
        D.43995 = D.43994->last_ins;
        D.43994->code = D.43995;
        <D.44308>:
        D.44309 = falsebb->cil_code;
        if (D.44309 != 0B) goto <D.44310>; else goto <D.44311>;
        <D.44310>:
        D.44039 = cfg->cil_offset_to_bb;
        D.44309 = falsebb->cil_code;
        D.44312 = (int) D.44309;
        D.44041 = cfg->cil_start;
        D.44042 = (int) D.44041;
        D.44313 = D.44312 - D.44042;
        D.44314 = (unsigned int) D.44313;
        D.44315 = D.44314 * 4;
        D.44316 = D.44039 + D.44315;
        *D.44316 = falsebb;
        <D.44311>:
        D.44047 = cfg->real_offset;
        falsebb->real_offset = D.44047;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 != 0B) goto <D.44320>; else goto <D.44317>;
        <D.44320>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44053 = D.44052 + 64985;
        if (D.44053 <= 9) goto <D.44318>; else goto <D.44321>;
        <D.44321>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44055 = D.44052 + 64878;
        if (D.44055 <= 9) goto <D.44318>; else goto <D.44322>;
        <D.44322>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44057 = D.44052 + 64888;
        if (D.44057 <= 9) goto <D.44318>; else goto <D.44317>;
        <D.44318>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44058 = D.43995->data.op[1].many_blocks;
        D.44059 = D.44058 + 4;
        D.44060 = *D.44059;
        if (D.44060 == 0B) goto <D.44323>; else goto <D.44317>;
        <D.44323>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44058 = D.43995->data.op[1].many_blocks;
        D.44059 = D.44058 + 4;
        *D.44059 = falsebb;
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, falsebb);
        goto <D.44319>;
        <D.44317>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 == 0B) goto <D.44324>; else goto <D.44326>;
        <D.44326>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        if (D.44052 != 442) goto <D.44327>; else goto <D.44325>;
        <D.44327>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        if (D.44052 != 759) goto <D.44328>; else goto <D.44325>;
        <D.44328>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44053 = D.44052 + 64985;
        if (D.44053 > 9) goto <D.44329>; else goto <D.44325>;
        <D.44329>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44055 = D.44052 + 64878;
        if (D.44055 > 9) goto <D.44330>; else goto <D.44325>;
        <D.44330>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44057 = D.44052 + 64888;
        if (D.44057 > 9) goto <D.44324>; else goto <D.44325>;
        <D.44324>:
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, falsebb);
        <D.44325>:
        <D.44319>:
        D.43994 = cfg->cbb;
        D.43994->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.44331>;
        <D.44302>:
        D.43983 = cfg->mempool;
        D.44332 = mono_mempool_alloc (D.43983, 8);
        ins->data.op[1].many_blocks = D.44332;
        D.44333 = ins->data.op[1].many_blocks;
        *D.44333 = false_bb;
        D.44333 = ins->data.op[1].many_blocks;
        D.44334 = D.44333 + 4;
        *D.44334 = 0B;
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, false_bb);
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 != 0B) goto <D.44335>; else goto <D.44336>;
        <D.44335>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.43995->next = ins;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        ins->prev = D.43995;
        D.43994 = cfg->cbb;
        D.43994->last_ins = ins;
        goto <D.44337>;
        <D.44336>:
        D.43994 = cfg->cbb;
        D.43994 = cfg->cbb;
        D.43994->last_ins = ins;
        D.43995 = D.43994->last_ins;
        D.43994->code = D.43995;
        <D.44337>:
        D.44076 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.44077 = D.44076 & 8;
        if (D.44077 == 0) goto <D.44338>; else goto <D.44339>;
        <D.44338>:
        D.43983 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.43983, 172);
        D.44000 = cfg->num_bblocks;
        D.44340 = D.44000;
        D.44341 = D.44340 + 1;
        cfg->num_bblocks = D.44341;
        D.44342 = (int) D.44340;
        falsebb->block_num = D.44342;
        D.44333 = ins->data.op[1].many_blocks;
        D.44334 = D.44333 + 4;
        *D.44334 = falsebb;
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, falsebb);
        D.44309 = falsebb->cil_code;
        if (D.44309 != 0B) goto <D.44343>; else goto <D.44344>;
        <D.44343>:
        D.44039 = cfg->cil_offset_to_bb;
        D.44309 = falsebb->cil_code;
        D.44312 = (int) D.44309;
        D.44041 = cfg->cil_start;
        D.44042 = (int) D.44041;
        D.44313 = D.44312 - D.44042;
        D.44314 = (unsigned int) D.44313;
        D.44315 = D.44314 * 4;
        D.44316 = D.44039 + D.44315;
        *D.44316 = falsebb;
        <D.44344>:
        D.44047 = cfg->real_offset;
        falsebb->real_offset = D.44047;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 != 0B) goto <D.44348>; else goto <D.44345>;
        <D.44348>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44053 = D.44052 + 64985;
        if (D.44053 <= 9) goto <D.44346>; else goto <D.44349>;
        <D.44349>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44055 = D.44052 + 64878;
        if (D.44055 <= 9) goto <D.44346>; else goto <D.44350>;
        <D.44350>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44057 = D.44052 + 64888;
        if (D.44057 <= 9) goto <D.44346>; else goto <D.44345>;
        <D.44346>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44058 = D.43995->data.op[1].many_blocks;
        D.44059 = D.44058 + 4;
        D.44060 = *D.44059;
        if (D.44060 == 0B) goto <D.44351>; else goto <D.44345>;
        <D.44351>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44058 = D.43995->data.op[1].many_blocks;
        D.44059 = D.44058 + 4;
        *D.44059 = falsebb;
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, falsebb);
        goto <D.44347>;
        <D.44345>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 == 0B) goto <D.44352>; else goto <D.44354>;
        <D.44354>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        if (D.44052 != 442) goto <D.44355>; else goto <D.44353>;
        <D.44355>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        if (D.44052 != 759) goto <D.44356>; else goto <D.44353>;
        <D.44356>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44053 = D.44052 + 64985;
        if (D.44053 > 9) goto <D.44357>; else goto <D.44353>;
        <D.44357>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44055 = D.44052 + 64878;
        if (D.44055 > 9) goto <D.44358>; else goto <D.44353>;
        <D.44358>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44057 = D.44052 + 64888;
        if (D.44057 > 9) goto <D.44352>; else goto <D.44353>;
        <D.44352>:
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, falsebb);
        <D.44353>:
        <D.44347>:
        D.43994 = cfg->cbb;
        D.43994->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.44359>;
        <D.44339>:
        D.43994 = cfg->cbb;
        D.43994->extended = 1;
        <D.44359>:
        <D.44331>:
      }
      goto <D.44360>;
      <D.44296>:
      D.44217 = klass->cast_class;
      D.44229 = mono_defaults.enum_class;
      if (D.44217 == D.44229) goto <D.44361>; else goto <D.44362>;
      <D.44361>:
      D.44229 = mono_defaults.enum_class;
      mini_emit_class_check_branch (cfg, eclass_reg, D.44229, 648, is_null_bb);
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.43983 = cfg->mempool;
        ins = mono_mempool_alloc (D.43983, 56);
        ins->data.op[1].const_val = 0;
        D.44363 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.44363;
        ins->prev = 0B;
        D.44364 = ins->prev;
        ins->next = D.44364;
        ins->opcode = 442;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.44365 = ins->sreg3;
        ins->sreg2 = D.44365;
        D.44366 = ins->sreg2;
        ins->sreg1 = D.44366;
        D.43990 = cfg->ip;
        ins->cil_code = D.43990;
        if (1 != 0) goto <D.44367>; else goto <D.44368>;
        <D.44367>:
        D.43983 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.43983, 172);
        D.44000 = cfg->num_bblocks;
        D.44369 = D.44000;
        D.44370 = D.44369 + 1;
        cfg->num_bblocks = D.44370;
        D.44371 = (int) D.44369;
        falsebb->block_num = D.44371;
        ins->data.op[0].target_block = false_bb;
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, false_bb);
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 != 0B) goto <D.44372>; else goto <D.44373>;
        <D.44372>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.43995->next = ins;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        ins->prev = D.43995;
        D.43994 = cfg->cbb;
        D.43994->last_ins = ins;
        goto <D.44374>;
        <D.44373>:
        D.43994 = cfg->cbb;
        D.43994 = cfg->cbb;
        D.43994->last_ins = ins;
        D.43995 = D.43994->last_ins;
        D.43994->code = D.43995;
        <D.44374>:
        D.44375 = falsebb->cil_code;
        if (D.44375 != 0B) goto <D.44376>; else goto <D.44377>;
        <D.44376>:
        D.44039 = cfg->cil_offset_to_bb;
        D.44375 = falsebb->cil_code;
        D.44378 = (int) D.44375;
        D.44041 = cfg->cil_start;
        D.44042 = (int) D.44041;
        D.44379 = D.44378 - D.44042;
        D.44380 = (unsigned int) D.44379;
        D.44381 = D.44380 * 4;
        D.44382 = D.44039 + D.44381;
        *D.44382 = falsebb;
        <D.44377>:
        D.44047 = cfg->real_offset;
        falsebb->real_offset = D.44047;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 != 0B) goto <D.44386>; else goto <D.44383>;
        <D.44386>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44053 = D.44052 + 64985;
        if (D.44053 <= 9) goto <D.44384>; else goto <D.44387>;
        <D.44387>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44055 = D.44052 + 64878;
        if (D.44055 <= 9) goto <D.44384>; else goto <D.44388>;
        <D.44388>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44057 = D.44052 + 64888;
        if (D.44057 <= 9) goto <D.44384>; else goto <D.44383>;
        <D.44384>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44058 = D.43995->data.op[1].many_blocks;
        D.44059 = D.44058 + 4;
        D.44060 = *D.44059;
        if (D.44060 == 0B) goto <D.44389>; else goto <D.44383>;
        <D.44389>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44058 = D.43995->data.op[1].many_blocks;
        D.44059 = D.44058 + 4;
        *D.44059 = falsebb;
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, falsebb);
        goto <D.44385>;
        <D.44383>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 == 0B) goto <D.44390>; else goto <D.44392>;
        <D.44392>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        if (D.44052 != 442) goto <D.44393>; else goto <D.44391>;
        <D.44393>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        if (D.44052 != 759) goto <D.44394>; else goto <D.44391>;
        <D.44394>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44053 = D.44052 + 64985;
        if (D.44053 > 9) goto <D.44395>; else goto <D.44391>;
        <D.44395>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44055 = D.44052 + 64878;
        if (D.44055 > 9) goto <D.44396>; else goto <D.44391>;
        <D.44396>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44057 = D.44052 + 64888;
        if (D.44057 > 9) goto <D.44390>; else goto <D.44391>;
        <D.44390>:
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, falsebb);
        <D.44391>:
        <D.44385>:
        D.43994 = cfg->cbb;
        D.43994->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.44397>;
        <D.44368>:
        D.43983 = cfg->mempool;
        D.44398 = mono_mempool_alloc (D.43983, 8);
        ins->data.op[1].many_blocks = D.44398;
        D.44399 = ins->data.op[1].many_blocks;
        *D.44399 = false_bb;
        D.44399 = ins->data.op[1].many_blocks;
        D.44400 = D.44399 + 4;
        *D.44400 = 0B;
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, false_bb);
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 != 0B) goto <D.44401>; else goto <D.44402>;
        <D.44401>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.43995->next = ins;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        ins->prev = D.43995;
        D.43994 = cfg->cbb;
        D.43994->last_ins = ins;
        goto <D.44403>;
        <D.44402>:
        D.43994 = cfg->cbb;
        D.43994 = cfg->cbb;
        D.43994->last_ins = ins;
        D.43995 = D.43994->last_ins;
        D.43994->code = D.43995;
        <D.44403>:
        D.44076 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.44077 = D.44076 & 8;
        if (D.44077 == 0) goto <D.44404>; else goto <D.44405>;
        <D.44404>:
        D.43983 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.43983, 172);
        D.44000 = cfg->num_bblocks;
        D.44406 = D.44000;
        D.44407 = D.44406 + 1;
        cfg->num_bblocks = D.44407;
        D.44408 = (int) D.44406;
        falsebb->block_num = D.44408;
        D.44399 = ins->data.op[1].many_blocks;
        D.44400 = D.44399 + 4;
        *D.44400 = falsebb;
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, falsebb);
        D.44375 = falsebb->cil_code;
        if (D.44375 != 0B) goto <D.44409>; else goto <D.44410>;
        <D.44409>:
        D.44039 = cfg->cil_offset_to_bb;
        D.44375 = falsebb->cil_code;
        D.44378 = (int) D.44375;
        D.44041 = cfg->cil_start;
        D.44042 = (int) D.44041;
        D.44379 = D.44378 - D.44042;
        D.44380 = (unsigned int) D.44379;
        D.44381 = D.44380 * 4;
        D.44382 = D.44039 + D.44381;
        *D.44382 = falsebb;
        <D.44410>:
        D.44047 = cfg->real_offset;
        falsebb->real_offset = D.44047;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 != 0B) goto <D.44414>; else goto <D.44411>;
        <D.44414>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44053 = D.44052 + 64985;
        if (D.44053 <= 9) goto <D.44412>; else goto <D.44415>;
        <D.44415>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44055 = D.44052 + 64878;
        if (D.44055 <= 9) goto <D.44412>; else goto <D.44416>;
        <D.44416>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44057 = D.44052 + 64888;
        if (D.44057 <= 9) goto <D.44412>; else goto <D.44411>;
        <D.44412>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44058 = D.43995->data.op[1].many_blocks;
        D.44059 = D.44058 + 4;
        D.44060 = *D.44059;
        if (D.44060 == 0B) goto <D.44417>; else goto <D.44411>;
        <D.44417>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44058 = D.43995->data.op[1].many_blocks;
        D.44059 = D.44058 + 4;
        *D.44059 = falsebb;
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, falsebb);
        goto <D.44413>;
        <D.44411>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 == 0B) goto <D.44418>; else goto <D.44420>;
        <D.44420>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        if (D.44052 != 442) goto <D.44421>; else goto <D.44419>;
        <D.44421>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        if (D.44052 != 759) goto <D.44422>; else goto <D.44419>;
        <D.44422>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44053 = D.44052 + 64985;
        if (D.44053 > 9) goto <D.44423>; else goto <D.44419>;
        <D.44423>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44055 = D.44052 + 64878;
        if (D.44055 > 9) goto <D.44424>; else goto <D.44419>;
        <D.44424>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.44052 = D.43995->opcode;
        D.44057 = D.44052 + 64888;
        if (D.44057 > 9) goto <D.44418>; else goto <D.44419>;
        <D.44418>:
        D.43994 = cfg->cbb;
        mono_link_bblock (cfg, D.43994, falsebb);
        <D.44419>:
        <D.44413>:
        D.43994 = cfg->cbb;
        D.43994->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.44425>;
        <D.44405>:
        D.43994 = cfg->cbb;
        D.43994->extended = 1;
        <D.44425>:
        <D.44397>:
      }
      goto <D.44426>;
      <D.44362>:
      D.44217 = klass->cast_class;
      D.44427 = D.44217->flags;
      D.44428 = D.44427 & 32;
      if (D.44428 != 0) goto <D.44429>; else goto <D.44430>;
      <D.44429>:
      D.44217 = klass->cast_class;
      mini_emit_iface_class_cast (cfg, eclass_reg, D.44217, false_bb, is_null_bb);
      goto <D.44431>;
      <D.44430>:
      D.44118 = klass->rank;
      if (D.44118 == 1) goto <D.44432>; else goto <D.44433>;
      <D.44432>:
      D.44434 = klass->byval_arg.type;
      if (D.44434 == 29) goto <D.44435>; else goto <D.44436>;
      <D.44435>:
      {
        int bounds_reg;

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

          D.43983 = cfg->mempool;
          inst = mono_mempool_alloc (D.43983, 56);
          inst->data.op[1].const_val = 0;
          D.44438 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.44438;
          inst->prev = 0B;
          D.44439 = inst->prev;
          inst->next = D.44439;
          inst->opcode = 388;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.44440 = inst->sreg3;
          inst->sreg2 = D.44440;
          D.44441 = inst->sreg2;
          inst->sreg1 = D.44441;
          D.43990 = cfg->ip;
          inst->cil_code = D.43990;
          inst->dreg = bounds_reg;
          inst->sreg1 = obj_reg;
          inst->data.op[0].const_val = 8;
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          if (D.43995 != 0B) goto <D.44442>; else goto <D.44443>;
          <D.44442>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.43995->next = inst;
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          inst->prev = D.43995;
          D.43994 = cfg->cbb;
          D.43994->last_ins = inst;
          goto <D.44444>;
          <D.44443>:
          D.43994 = cfg->cbb;
          D.43994 = cfg->cbb;
          D.43994->last_ins = inst;
          D.43995 = D.43994->last_ins;
          D.43994->code = D.43995;
          <D.44444>:
        }
        {
          struct MonoInst * inst;

          D.43983 = cfg->mempool;
          inst = mono_mempool_alloc (D.43983, 56);
          inst->data.op[1].const_val = 0;
          D.44445 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.44445;
          inst->prev = 0B;
          D.44446 = inst->prev;
          inst->next = D.44446;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.44447 = inst->sreg3;
          inst->sreg2 = D.44447;
          D.44448 = inst->sreg2;
          inst->sreg1 = D.44448;
          D.43990 = cfg->ip;
          inst->cil_code = D.43990;
          inst->dreg = -1;
          inst->sreg1 = bounds_reg;
          inst->data.op[1].const_val = 0;
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          if (D.43995 != 0B) goto <D.44449>; else goto <D.44450>;
          <D.44449>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.43995->next = inst;
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          inst->prev = D.43995;
          D.43994 = cfg->cbb;
          D.43994->last_ins = inst;
          goto <D.44451>;
          <D.44450>:
          D.43994 = cfg->cbb;
          D.43994 = cfg->cbb;
          D.43994->last_ins = inst;
          D.43995 = D.43994->last_ins;
          D.43994->code = D.43995;
          <D.44451>:
        }
        {
          struct MonoInst * ins;
          struct MonoBasicBlock * falsebb;

          D.43983 = cfg->mempool;
          ins = mono_mempool_alloc (D.43983, 56);
          ins->data.op[1].const_val = 0;
          D.44452 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.44452;
          ins->prev = 0B;
          D.44453 = ins->prev;
          ins->next = D.44453;
          ins->opcode = 653;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.44454 = ins->sreg3;
          ins->sreg2 = D.44454;
          D.44455 = ins->sreg2;
          ins->sreg1 = D.44455;
          D.43990 = cfg->ip;
          ins->cil_code = D.43990;
          if (0 != 0) goto <D.44456>; else goto <D.44457>;
          <D.44456>:
          D.43983 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.43983, 172);
          D.44000 = cfg->num_bblocks;
          D.44458 = D.44000;
          D.44459 = D.44458 + 1;
          cfg->num_bblocks = D.44459;
          D.44460 = (int) D.44458;
          falsebb->block_num = D.44460;
          ins->data.op[0].target_block = false_bb;
          D.43994 = cfg->cbb;
          mono_link_bblock (cfg, D.43994, false_bb);
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          if (D.43995 != 0B) goto <D.44461>; else goto <D.44462>;
          <D.44461>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.43995->next = ins;
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          ins->prev = D.43995;
          D.43994 = cfg->cbb;
          D.43994->last_ins = ins;
          goto <D.44463>;
          <D.44462>:
          D.43994 = cfg->cbb;
          D.43994 = cfg->cbb;
          D.43994->last_ins = ins;
          D.43995 = D.43994->last_ins;
          D.43994->code = D.43995;
          <D.44463>:
          D.44464 = falsebb->cil_code;
          if (D.44464 != 0B) goto <D.44465>; else goto <D.44466>;
          <D.44465>:
          D.44039 = cfg->cil_offset_to_bb;
          D.44464 = falsebb->cil_code;
          D.44467 = (int) D.44464;
          D.44041 = cfg->cil_start;
          D.44042 = (int) D.44041;
          D.44468 = D.44467 - D.44042;
          D.44469 = (unsigned int) D.44468;
          D.44470 = D.44469 * 4;
          D.44471 = D.44039 + D.44470;
          *D.44471 = falsebb;
          <D.44466>:
          D.44047 = cfg->real_offset;
          falsebb->real_offset = D.44047;
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          if (D.43995 != 0B) goto <D.44475>; else goto <D.44472>;
          <D.44475>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44053 = D.44052 + 64985;
          if (D.44053 <= 9) goto <D.44473>; else goto <D.44476>;
          <D.44476>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44055 = D.44052 + 64878;
          if (D.44055 <= 9) goto <D.44473>; else goto <D.44477>;
          <D.44477>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44057 = D.44052 + 64888;
          if (D.44057 <= 9) goto <D.44473>; else goto <D.44472>;
          <D.44473>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44058 = D.43995->data.op[1].many_blocks;
          D.44059 = D.44058 + 4;
          D.44060 = *D.44059;
          if (D.44060 == 0B) goto <D.44478>; else goto <D.44472>;
          <D.44478>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44058 = D.43995->data.op[1].many_blocks;
          D.44059 = D.44058 + 4;
          *D.44059 = falsebb;
          D.43994 = cfg->cbb;
          mono_link_bblock (cfg, D.43994, falsebb);
          goto <D.44474>;
          <D.44472>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          if (D.43995 == 0B) goto <D.44479>; else goto <D.44481>;
          <D.44481>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          if (D.44052 != 442) goto <D.44482>; else goto <D.44480>;
          <D.44482>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          if (D.44052 != 759) goto <D.44483>; else goto <D.44480>;
          <D.44483>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44053 = D.44052 + 64985;
          if (D.44053 > 9) goto <D.44484>; else goto <D.44480>;
          <D.44484>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44055 = D.44052 + 64878;
          if (D.44055 > 9) goto <D.44485>; else goto <D.44480>;
          <D.44485>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44057 = D.44052 + 64888;
          if (D.44057 > 9) goto <D.44479>; else goto <D.44480>;
          <D.44479>:
          D.43994 = cfg->cbb;
          mono_link_bblock (cfg, D.43994, falsebb);
          <D.44480>:
          <D.44474>:
          D.43994 = cfg->cbb;
          D.43994->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.44486>;
          <D.44457>:
          D.43983 = cfg->mempool;
          D.44487 = mono_mempool_alloc (D.43983, 8);
          ins->data.op[1].many_blocks = D.44487;
          D.44488 = ins->data.op[1].many_blocks;
          *D.44488 = false_bb;
          D.44488 = ins->data.op[1].many_blocks;
          D.44489 = D.44488 + 4;
          *D.44489 = 0B;
          D.43994 = cfg->cbb;
          mono_link_bblock (cfg, D.43994, false_bb);
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          if (D.43995 != 0B) goto <D.44490>; else goto <D.44491>;
          <D.44490>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.43995->next = ins;
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          ins->prev = D.43995;
          D.43994 = cfg->cbb;
          D.43994->last_ins = ins;
          goto <D.44492>;
          <D.44491>:
          D.43994 = cfg->cbb;
          D.43994 = cfg->cbb;
          D.43994->last_ins = ins;
          D.43995 = D.43994->last_ins;
          D.43994->code = D.43995;
          <D.44492>:
          D.44076 = BIT_FIELD_REF <*cfg, 32, 3392>;
          D.44077 = D.44076 & 8;
          if (D.44077 == 0) goto <D.44493>; else goto <D.44494>;
          <D.44493>:
          D.43983 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.43983, 172);
          D.44000 = cfg->num_bblocks;
          D.44495 = D.44000;
          D.44496 = D.44495 + 1;
          cfg->num_bblocks = D.44496;
          D.44497 = (int) D.44495;
          falsebb->block_num = D.44497;
          D.44488 = ins->data.op[1].many_blocks;
          D.44489 = D.44488 + 4;
          *D.44489 = falsebb;
          D.43994 = cfg->cbb;
          mono_link_bblock (cfg, D.43994, falsebb);
          D.44464 = falsebb->cil_code;
          if (D.44464 != 0B) goto <D.44498>; else goto <D.44499>;
          <D.44498>:
          D.44039 = cfg->cil_offset_to_bb;
          D.44464 = falsebb->cil_code;
          D.44467 = (int) D.44464;
          D.44041 = cfg->cil_start;
          D.44042 = (int) D.44041;
          D.44468 = D.44467 - D.44042;
          D.44469 = (unsigned int) D.44468;
          D.44470 = D.44469 * 4;
          D.44471 = D.44039 + D.44470;
          *D.44471 = falsebb;
          <D.44499>:
          D.44047 = cfg->real_offset;
          falsebb->real_offset = D.44047;
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          if (D.43995 != 0B) goto <D.44503>; else goto <D.44500>;
          <D.44503>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44053 = D.44052 + 64985;
          if (D.44053 <= 9) goto <D.44501>; else goto <D.44504>;
          <D.44504>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44055 = D.44052 + 64878;
          if (D.44055 <= 9) goto <D.44501>; else goto <D.44505>;
          <D.44505>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44057 = D.44052 + 64888;
          if (D.44057 <= 9) goto <D.44501>; else goto <D.44500>;
          <D.44501>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44058 = D.43995->data.op[1].many_blocks;
          D.44059 = D.44058 + 4;
          D.44060 = *D.44059;
          if (D.44060 == 0B) goto <D.44506>; else goto <D.44500>;
          <D.44506>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44058 = D.43995->data.op[1].many_blocks;
          D.44059 = D.44058 + 4;
          *D.44059 = falsebb;
          D.43994 = cfg->cbb;
          mono_link_bblock (cfg, D.43994, falsebb);
          goto <D.44502>;
          <D.44500>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          if (D.43995 == 0B) goto <D.44507>; else goto <D.44509>;
          <D.44509>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          if (D.44052 != 442) goto <D.44510>; else goto <D.44508>;
          <D.44510>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          if (D.44052 != 759) goto <D.44511>; else goto <D.44508>;
          <D.44511>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44053 = D.44052 + 64985;
          if (D.44053 > 9) goto <D.44512>; else goto <D.44508>;
          <D.44512>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44055 = D.44052 + 64878;
          if (D.44055 > 9) goto <D.44513>; else goto <D.44508>;
          <D.44513>:
          D.43994 = cfg->cbb;
          D.43995 = D.43994->last_ins;
          D.44052 = D.43995->opcode;
          D.44057 = D.44052 + 64888;
          if (D.44057 > 9) goto <D.44507>; else goto <D.44508>;
          <D.44507>:
          D.43994 = cfg->cbb;
          mono_link_bblock (cfg, D.43994, falsebb);
          <D.44508>:
          <D.44502>:
          D.43994 = cfg->cbb;
          D.43994->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.44514>;
          <D.44494>:
          D.43994 = cfg->cbb;
          D.43994->extended = 1;
          <D.44514>:
          <D.44486>:
        }
      }
      <D.44436>:
      <D.44433>:
      D.44217 = klass->cast_class;
      mini_emit_isninst_cast (cfg, eclass_reg, D.44217, false_bb, is_null_bb);
      <D.44431>:
      <D.44426>:
      <D.44360>:
      <D.44294>:
    }
    goto <D.44515>;
    <D.44120>:
    D.44516 = mono_class_is_nullable (klass);
    if (D.44516 != 0) goto <D.44517>; else goto <D.44518>;
    <D.44517>:
    D.44111 = context_used != 0;
    D.44112 = (long int) D.44111;
    D.44113 = __builtin_expect (D.44112, 0);
    if (D.44113 != 0) goto <D.44519>; else goto <D.44520>;
    <D.44519>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4130, "!context_used");
    <D.44520>:
    {
      struct MonoInst * inst;

      D.43983 = cfg->mempool;
      inst = mono_mempool_alloc (D.43983, 56);
      inst->data.op[1].const_val = 0;
      D.44521 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.44521;
      inst->prev = 0B;
      D.44522 = inst->prev;
      inst->next = D.44522;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.44523 = inst->sreg3;
      inst->sreg2 = D.44523;
      D.44524 = inst->sreg2;
      inst->sreg1 = D.44524;
      D.43990 = cfg->ip;
      inst->cil_code = D.43990;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      if (D.43995 != 0B) goto <D.44525>; else goto <D.44526>;
      <D.44525>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.43995->next = inst;
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      inst->prev = D.43995;
      D.43994 = cfg->cbb;
      D.43994->last_ins = inst;
      goto <D.44527>;
      <D.44526>:
      D.43994 = cfg->cbb;
      D.43994 = cfg->cbb;
      D.43994->last_ins = inst;
      D.43995 = D.43994->last_ins;
      D.43994->code = D.43995;
      <D.44527>:
    }
    D.44217 = klass->cast_class;
    mini_emit_isninst_cast (cfg, klass_reg, D.44217, false_bb, is_null_bb);
    goto <D.44528>;
    <D.44518>:
    D.44076 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.44531 = D.44076 & 64;
    if (D.44531 == 0) goto <D.44532>; else goto <D.44529>;
    <D.44532>:
    D.44533 = cfg->opt;
    D.44534 = D.44533 & 512;
    if (D.44534 == 0) goto <D.44535>; else goto <D.44529>;
    <D.44535>:
    D.44107 = klass->flags;
    D.44536 = D.44107 & 256;
    if (D.44536 != 0) goto <D.44537>; else goto <D.44529>;
    <D.44537>:
    D.44111 = context_used != 0;
    D.44112 = (long int) D.44111;
    D.44113 = __builtin_expect (D.44112, 0);
    if (D.44113 != 0) goto <D.44538>; else goto <D.44539>;
    <D.44538>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4136, "!context_used");
    <D.44539>:
    if (0 != 0) goto <D.44540>; else goto <D.44541>;
    <D.44540>:
    {
      struct MonoVTable * vt;

      D.44542 = cfg->domain;
      vt = mono_class_vtable (D.44542, klass);
      if (vt == 0B) goto <D.44543>; else goto <D.44544>;
      <D.44543>:
      mono_cfg_set_exception (cfg, 7);
      cfg->exception_ptr = klass;
      D.43999 = 0B;
      return D.43999;
      <D.44544>:
      {
        struct MonoInst * inst;

        D.43983 = cfg->mempool;
        inst = mono_mempool_alloc (D.43983, 56);
        inst->data.op[1].const_val = 0;
        D.44545 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.44545;
        inst->prev = 0B;
        D.44546 = inst->prev;
        inst->next = D.44546;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.44547 = inst->sreg3;
        inst->sreg2 = D.44547;
        D.44548 = inst->sreg2;
        inst->sreg1 = D.44548;
        D.43990 = cfg->ip;
        inst->cil_code = D.43990;
        inst->dreg = -1;
        inst->sreg1 = vtable_reg;
        vt.479 = (int) vt;
        inst->data.op[1].const_val = vt.479;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        if (D.43995 != 0B) goto <D.44550>; else goto <D.44551>;
        <D.44550>:
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        D.43995->next = inst;
        D.43994 = cfg->cbb;
        D.43995 = D.43994->last_ins;
        inst->prev = D.43995;
        D.43994 = cfg->cbb;
        D.43994->last_ins = inst;
        goto <D.44552>;
        <D.44551>:
        D.43994 = cfg->cbb;
        D.43994 = cfg->cbb;
        D.43994->last_ins = inst;
        D.43995 = D.43994->last_ins;
        D.43994->code = D.43995;
        <D.44552>:
      }
    }
    goto <D.44553>;
    <D.44541>:
    {
      struct MonoInst * inst;

      D.43983 = cfg->mempool;
      inst = mono_mempool_alloc (D.43983, 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 = 388;
      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.43990 = cfg->ip;
      inst->cil_code = D.43990;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      if (D.43995 != 0B) goto <D.44558>; else goto <D.44559>;
      <D.44558>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.43995->next = inst;
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      inst->prev = D.43995;
      D.43994 = cfg->cbb;
      D.43994->last_ins = inst;
      goto <D.44560>;
      <D.44559>:
      D.43994 = cfg->cbb;
      D.43994 = cfg->cbb;
      D.43994->last_ins = inst;
      D.43995 = D.43994->last_ins;
      D.43994->code = D.43995;
      <D.44560>:
    }
    {
      struct MonoInst * inst;

      D.43983 = cfg->mempool;
      inst = mono_mempool_alloc (D.43983, 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 = 323;
      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.43990 = cfg->ip;
      inst->cil_code = D.43990;
      inst->dreg = -1;
      inst->sreg1 = klass_reg;
      klass.480 = (int) klass;
      inst->data.op[1].const_val = klass.480;
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      if (D.43995 != 0B) goto <D.44566>; else goto <D.44567>;
      <D.44566>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.43995->next = inst;
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      inst->prev = D.43995;
      D.43994 = cfg->cbb;
      D.43994->last_ins = inst;
      goto <D.44568>;
      <D.44567>:
      D.43994 = cfg->cbb;
      D.43994 = cfg->cbb;
      D.43994->last_ins = inst;
      D.43995 = D.43994->last_ins;
      D.43994->code = D.43995;
      <D.44568>:
    }
    <D.44553>:
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.43983 = cfg->mempool;
      ins = mono_mempool_alloc (D.43983, 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 = 653;
      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.43990 = cfg->ip;
      ins->cil_code = D.43990;
      if (0 != 0) goto <D.44573>; else goto <D.44574>;
      <D.44573>:
      D.43983 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.43983, 172);
      D.44000 = cfg->num_bblocks;
      D.44575 = D.44000;
      D.44576 = D.44575 + 1;
      cfg->num_bblocks = D.44576;
      D.44577 = (int) D.44575;
      falsebb->block_num = D.44577;
      ins->data.op[0].target_block = false_bb;
      D.43994 = cfg->cbb;
      mono_link_bblock (cfg, D.43994, false_bb);
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      if (D.43995 != 0B) goto <D.44578>; else goto <D.44579>;
      <D.44578>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.43995->next = ins;
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      ins->prev = D.43995;
      D.43994 = cfg->cbb;
      D.43994->last_ins = ins;
      goto <D.44580>;
      <D.44579>:
      D.43994 = cfg->cbb;
      D.43994 = cfg->cbb;
      D.43994->last_ins = ins;
      D.43995 = D.43994->last_ins;
      D.43994->code = D.43995;
      <D.44580>:
      D.44581 = falsebb->cil_code;
      if (D.44581 != 0B) goto <D.44582>; else goto <D.44583>;
      <D.44582>:
      D.44039 = cfg->cil_offset_to_bb;
      D.44581 = falsebb->cil_code;
      D.44584 = (int) D.44581;
      D.44041 = cfg->cil_start;
      D.44042 = (int) D.44041;
      D.44585 = D.44584 - D.44042;
      D.44586 = (unsigned int) D.44585;
      D.44587 = D.44586 * 4;
      D.44588 = D.44039 + D.44587;
      *D.44588 = falsebb;
      <D.44583>:
      D.44047 = cfg->real_offset;
      falsebb->real_offset = D.44047;
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      if (D.43995 != 0B) goto <D.44592>; else goto <D.44589>;
      <D.44592>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44053 = D.44052 + 64985;
      if (D.44053 <= 9) goto <D.44590>; else goto <D.44593>;
      <D.44593>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44055 = D.44052 + 64878;
      if (D.44055 <= 9) goto <D.44590>; else goto <D.44594>;
      <D.44594>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44057 = D.44052 + 64888;
      if (D.44057 <= 9) goto <D.44590>; else goto <D.44589>;
      <D.44590>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44058 = D.43995->data.op[1].many_blocks;
      D.44059 = D.44058 + 4;
      D.44060 = *D.44059;
      if (D.44060 == 0B) goto <D.44595>; else goto <D.44589>;
      <D.44595>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44058 = D.43995->data.op[1].many_blocks;
      D.44059 = D.44058 + 4;
      *D.44059 = falsebb;
      D.43994 = cfg->cbb;
      mono_link_bblock (cfg, D.43994, falsebb);
      goto <D.44591>;
      <D.44589>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      if (D.43995 == 0B) goto <D.44596>; else goto <D.44598>;
      <D.44598>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      if (D.44052 != 442) goto <D.44599>; else goto <D.44597>;
      <D.44599>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      if (D.44052 != 759) goto <D.44600>; else goto <D.44597>;
      <D.44600>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44053 = D.44052 + 64985;
      if (D.44053 > 9) goto <D.44601>; else goto <D.44597>;
      <D.44601>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44055 = D.44052 + 64878;
      if (D.44055 > 9) goto <D.44602>; else goto <D.44597>;
      <D.44602>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44057 = D.44052 + 64888;
      if (D.44057 > 9) goto <D.44596>; else goto <D.44597>;
      <D.44596>:
      D.43994 = cfg->cbb;
      mono_link_bblock (cfg, D.43994, falsebb);
      <D.44597>:
      <D.44591>:
      D.43994 = cfg->cbb;
      D.43994->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.44603>;
      <D.44574>:
      D.43983 = cfg->mempool;
      D.44604 = mono_mempool_alloc (D.43983, 8);
      ins->data.op[1].many_blocks = D.44604;
      D.44605 = ins->data.op[1].many_blocks;
      *D.44605 = false_bb;
      D.44605 = ins->data.op[1].many_blocks;
      D.44606 = D.44605 + 4;
      *D.44606 = 0B;
      D.43994 = cfg->cbb;
      mono_link_bblock (cfg, D.43994, false_bb);
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      if (D.43995 != 0B) goto <D.44607>; else goto <D.44608>;
      <D.44607>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.43995->next = ins;
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      ins->prev = D.43995;
      D.43994 = cfg->cbb;
      D.43994->last_ins = ins;
      goto <D.44609>;
      <D.44608>:
      D.43994 = cfg->cbb;
      D.43994 = cfg->cbb;
      D.43994->last_ins = ins;
      D.43995 = D.43994->last_ins;
      D.43994->code = D.43995;
      <D.44609>:
      D.44076 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.44077 = D.44076 & 8;
      if (D.44077 == 0) goto <D.44610>; else goto <D.44611>;
      <D.44610>:
      D.43983 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.43983, 172);
      D.44000 = cfg->num_bblocks;
      D.44612 = D.44000;
      D.44613 = D.44612 + 1;
      cfg->num_bblocks = D.44613;
      D.44614 = (int) D.44612;
      falsebb->block_num = D.44614;
      D.44605 = ins->data.op[1].many_blocks;
      D.44606 = D.44605 + 4;
      *D.44606 = falsebb;
      D.43994 = cfg->cbb;
      mono_link_bblock (cfg, D.43994, falsebb);
      D.44581 = falsebb->cil_code;
      if (D.44581 != 0B) goto <D.44615>; else goto <D.44616>;
      <D.44615>:
      D.44039 = cfg->cil_offset_to_bb;
      D.44581 = falsebb->cil_code;
      D.44584 = (int) D.44581;
      D.44041 = cfg->cil_start;
      D.44042 = (int) D.44041;
      D.44585 = D.44584 - D.44042;
      D.44586 = (unsigned int) D.44585;
      D.44587 = D.44586 * 4;
      D.44588 = D.44039 + D.44587;
      *D.44588 = falsebb;
      <D.44616>:
      D.44047 = cfg->real_offset;
      falsebb->real_offset = D.44047;
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      if (D.43995 != 0B) goto <D.44620>; else goto <D.44617>;
      <D.44620>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44053 = D.44052 + 64985;
      if (D.44053 <= 9) goto <D.44618>; else goto <D.44621>;
      <D.44621>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44055 = D.44052 + 64878;
      if (D.44055 <= 9) goto <D.44618>; else goto <D.44622>;
      <D.44622>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44057 = D.44052 + 64888;
      if (D.44057 <= 9) goto <D.44618>; else goto <D.44617>;
      <D.44618>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44058 = D.43995->data.op[1].many_blocks;
      D.44059 = D.44058 + 4;
      D.44060 = *D.44059;
      if (D.44060 == 0B) goto <D.44623>; else goto <D.44617>;
      <D.44623>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44058 = D.43995->data.op[1].many_blocks;
      D.44059 = D.44058 + 4;
      *D.44059 = falsebb;
      D.43994 = cfg->cbb;
      mono_link_bblock (cfg, D.43994, falsebb);
      goto <D.44619>;
      <D.44617>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      if (D.43995 == 0B) goto <D.44624>; else goto <D.44626>;
      <D.44626>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      if (D.44052 != 442) goto <D.44627>; else goto <D.44625>;
      <D.44627>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      if (D.44052 != 759) goto <D.44628>; else goto <D.44625>;
      <D.44628>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44053 = D.44052 + 64985;
      if (D.44053 > 9) goto <D.44629>; else goto <D.44625>;
      <D.44629>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44055 = D.44052 + 64878;
      if (D.44055 > 9) goto <D.44630>; else goto <D.44625>;
      <D.44630>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44057 = D.44052 + 64888;
      if (D.44057 > 9) goto <D.44624>; else goto <D.44625>;
      <D.44624>:
      D.43994 = cfg->cbb;
      mono_link_bblock (cfg, D.43994, falsebb);
      <D.44625>:
      <D.44619>:
      D.43994 = cfg->cbb;
      D.43994->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.44631>;
      <D.44611>:
      D.43994 = cfg->cbb;
      D.43994->extended = 1;
      <D.44631>:
      <D.44603>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.43983 = cfg->mempool;
      ins = mono_mempool_alloc (D.43983, 56);
      ins->data.op[1].const_val = 0;
      D.44632 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.44632;
      ins->prev = 0B;
      D.44633 = ins->prev;
      ins->next = D.44633;
      ins->opcode = 442;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.44634 = ins->sreg3;
      ins->sreg2 = D.44634;
      D.44635 = ins->sreg2;
      ins->sreg1 = D.44635;
      D.43990 = cfg->ip;
      ins->cil_code = D.43990;
      if (1 != 0) goto <D.44636>; else goto <D.44637>;
      <D.44636>:
      D.43983 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.43983, 172);
      D.44000 = cfg->num_bblocks;
      D.44638 = D.44000;
      D.44639 = D.44638 + 1;
      cfg->num_bblocks = D.44639;
      D.44640 = (int) D.44638;
      falsebb->block_num = D.44640;
      ins->data.op[0].target_block = is_null_bb;
      D.43994 = cfg->cbb;
      mono_link_bblock (cfg, D.43994, is_null_bb);
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      if (D.43995 != 0B) goto <D.44641>; else goto <D.44642>;
      <D.44641>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.43995->next = ins;
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      ins->prev = D.43995;
      D.43994 = cfg->cbb;
      D.43994->last_ins = ins;
      goto <D.44643>;
      <D.44642>:
      D.43994 = cfg->cbb;
      D.43994 = cfg->cbb;
      D.43994->last_ins = ins;
      D.43995 = D.43994->last_ins;
      D.43994->code = D.43995;
      <D.44643>:
      D.44644 = falsebb->cil_code;
      if (D.44644 != 0B) goto <D.44645>; else goto <D.44646>;
      <D.44645>:
      D.44039 = cfg->cil_offset_to_bb;
      D.44644 = falsebb->cil_code;
      D.44647 = (int) D.44644;
      D.44041 = cfg->cil_start;
      D.44042 = (int) D.44041;
      D.44648 = D.44647 - D.44042;
      D.44649 = (unsigned int) D.44648;
      D.44650 = D.44649 * 4;
      D.44651 = D.44039 + D.44650;
      *D.44651 = falsebb;
      <D.44646>:
      D.44047 = cfg->real_offset;
      falsebb->real_offset = D.44047;
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      if (D.43995 != 0B) goto <D.44655>; else goto <D.44652>;
      <D.44655>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44053 = D.44052 + 64985;
      if (D.44053 <= 9) goto <D.44653>; else goto <D.44656>;
      <D.44656>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44055 = D.44052 + 64878;
      if (D.44055 <= 9) goto <D.44653>; else goto <D.44657>;
      <D.44657>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44057 = D.44052 + 64888;
      if (D.44057 <= 9) goto <D.44653>; else goto <D.44652>;
      <D.44653>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44058 = D.43995->data.op[1].many_blocks;
      D.44059 = D.44058 + 4;
      D.44060 = *D.44059;
      if (D.44060 == 0B) goto <D.44658>; else goto <D.44652>;
      <D.44658>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44058 = D.43995->data.op[1].many_blocks;
      D.44059 = D.44058 + 4;
      *D.44059 = falsebb;
      D.43994 = cfg->cbb;
      mono_link_bblock (cfg, D.43994, falsebb);
      goto <D.44654>;
      <D.44652>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      if (D.43995 == 0B) goto <D.44659>; else goto <D.44661>;
      <D.44661>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      if (D.44052 != 442) goto <D.44662>; else goto <D.44660>;
      <D.44662>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      if (D.44052 != 759) goto <D.44663>; else goto <D.44660>;
      <D.44663>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44053 = D.44052 + 64985;
      if (D.44053 > 9) goto <D.44664>; else goto <D.44660>;
      <D.44664>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44055 = D.44052 + 64878;
      if (D.44055 > 9) goto <D.44665>; else goto <D.44660>;
      <D.44665>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44057 = D.44052 + 64888;
      if (D.44057 > 9) goto <D.44659>; else goto <D.44660>;
      <D.44659>:
      D.43994 = cfg->cbb;
      mono_link_bblock (cfg, D.43994, falsebb);
      <D.44660>:
      <D.44654>:
      D.43994 = cfg->cbb;
      D.43994->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.44666>;
      <D.44637>:
      D.43983 = cfg->mempool;
      D.44667 = mono_mempool_alloc (D.43983, 8);
      ins->data.op[1].many_blocks = D.44667;
      D.44668 = ins->data.op[1].many_blocks;
      *D.44668 = is_null_bb;
      D.44668 = ins->data.op[1].many_blocks;
      D.44669 = D.44668 + 4;
      *D.44669 = 0B;
      D.43994 = cfg->cbb;
      mono_link_bblock (cfg, D.43994, is_null_bb);
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      if (D.43995 != 0B) goto <D.44670>; else goto <D.44671>;
      <D.44670>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.43995->next = ins;
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      ins->prev = D.43995;
      D.43994 = cfg->cbb;
      D.43994->last_ins = ins;
      goto <D.44672>;
      <D.44671>:
      D.43994 = cfg->cbb;
      D.43994 = cfg->cbb;
      D.43994->last_ins = ins;
      D.43995 = D.43994->last_ins;
      D.43994->code = D.43995;
      <D.44672>:
      D.44076 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.44077 = D.44076 & 8;
      if (D.44077 == 0) goto <D.44673>; else goto <D.44674>;
      <D.44673>:
      D.43983 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.43983, 172);
      D.44000 = cfg->num_bblocks;
      D.44675 = D.44000;
      D.44676 = D.44675 + 1;
      cfg->num_bblocks = D.44676;
      D.44677 = (int) D.44675;
      falsebb->block_num = D.44677;
      D.44668 = ins->data.op[1].many_blocks;
      D.44669 = D.44668 + 4;
      *D.44669 = falsebb;
      D.43994 = cfg->cbb;
      mono_link_bblock (cfg, D.43994, falsebb);
      D.44644 = falsebb->cil_code;
      if (D.44644 != 0B) goto <D.44678>; else goto <D.44679>;
      <D.44678>:
      D.44039 = cfg->cil_offset_to_bb;
      D.44644 = falsebb->cil_code;
      D.44647 = (int) D.44644;
      D.44041 = cfg->cil_start;
      D.44042 = (int) D.44041;
      D.44648 = D.44647 - D.44042;
      D.44649 = (unsigned int) D.44648;
      D.44650 = D.44649 * 4;
      D.44651 = D.44039 + D.44650;
      *D.44651 = falsebb;
      <D.44679>:
      D.44047 = cfg->real_offset;
      falsebb->real_offset = D.44047;
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      if (D.43995 != 0B) goto <D.44683>; else goto <D.44680>;
      <D.44683>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44053 = D.44052 + 64985;
      if (D.44053 <= 9) goto <D.44681>; else goto <D.44684>;
      <D.44684>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44055 = D.44052 + 64878;
      if (D.44055 <= 9) goto <D.44681>; else goto <D.44685>;
      <D.44685>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44057 = D.44052 + 64888;
      if (D.44057 <= 9) goto <D.44681>; else goto <D.44680>;
      <D.44681>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44058 = D.43995->data.op[1].many_blocks;
      D.44059 = D.44058 + 4;
      D.44060 = *D.44059;
      if (D.44060 == 0B) goto <D.44686>; else goto <D.44680>;
      <D.44686>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44058 = D.43995->data.op[1].many_blocks;
      D.44059 = D.44058 + 4;
      *D.44059 = falsebb;
      D.43994 = cfg->cbb;
      mono_link_bblock (cfg, D.43994, falsebb);
      goto <D.44682>;
      <D.44680>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      if (D.43995 == 0B) goto <D.44687>; else goto <D.44689>;
      <D.44689>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      if (D.44052 != 442) goto <D.44690>; else goto <D.44688>;
      <D.44690>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      if (D.44052 != 759) goto <D.44691>; else goto <D.44688>;
      <D.44691>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44053 = D.44052 + 64985;
      if (D.44053 > 9) goto <D.44692>; else goto <D.44688>;
      <D.44692>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44055 = D.44052 + 64878;
      if (D.44055 > 9) goto <D.44693>; else goto <D.44688>;
      <D.44693>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.44052 = D.43995->opcode;
      D.44057 = D.44052 + 64888;
      if (D.44057 > 9) goto <D.44687>; else goto <D.44688>;
      <D.44687>:
      D.43994 = cfg->cbb;
      mono_link_bblock (cfg, D.43994, falsebb);
      <D.44688>:
      <D.44682>:
      D.43994 = cfg->cbb;
      D.43994->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.44694>;
      <D.44674>:
      D.43994 = cfg->cbb;
      D.43994->extended = 1;
      <D.44694>:
      <D.44666>:
    }
    goto <D.44530>;
    <D.44529>:
    {
      struct MonoInst * inst;

      D.43983 = cfg->mempool;
      inst = mono_mempool_alloc (D.43983, 56);
      inst->data.op[1].const_val = 0;
      D.44695 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.44695;
      inst->prev = 0B;
      D.44696 = inst->prev;
      inst->next = D.44696;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.44697 = inst->sreg3;
      inst->sreg2 = D.44697;
      D.44698 = inst->sreg2;
      inst->sreg1 = D.44698;
      D.43990 = cfg->ip;
      inst->cil_code = D.43990;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      if (D.43995 != 0B) goto <D.44699>; else goto <D.44700>;
      <D.44699>:
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      D.43995->next = inst;
      D.43994 = cfg->cbb;
      D.43995 = D.43994->last_ins;
      inst->prev = D.43995;
      D.43994 = cfg->cbb;
      D.43994->last_ins = inst;
      goto <D.44701>;
      <D.44700>:
      D.43994 = cfg->cbb;
      D.43994 = cfg->cbb;
      D.43994->last_ins = inst;
      D.43995 = D.43994->last_ins;
      D.43994->code = D.43995;
      <D.44701>:
    }
    mini_emit_isninst_cast_inst (cfg, klass_reg, klass, klass_inst, false_bb, is_null_bb);
    <D.44530>:
    <D.44528>:
    <D.44515>:
  }
  <D.44116>:
  D.44702 = false_bb->cil_code;
  if (D.44702 != 0B) goto <D.44703>; else goto <D.44704>;
  <D.44703>:
  D.44039 = cfg->cil_offset_to_bb;
  D.44702 = false_bb->cil_code;
  D.44705 = (int) D.44702;
  D.44041 = cfg->cil_start;
  D.44042 = (int) D.44041;
  D.44706 = D.44705 - D.44042;
  D.44707 = (unsigned int) D.44706;
  D.44708 = D.44707 * 4;
  D.44709 = D.44039 + D.44708;
  *D.44709 = false_bb;
  <D.44704>:
  D.44047 = cfg->real_offset;
  false_bb->real_offset = D.44047;
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  if (D.43995 != 0B) goto <D.44713>; else goto <D.44710>;
  <D.44713>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  D.44053 = D.44052 + 64985;
  if (D.44053 <= 9) goto <D.44711>; else goto <D.44714>;
  <D.44714>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  D.44055 = D.44052 + 64878;
  if (D.44055 <= 9) goto <D.44711>; else goto <D.44715>;
  <D.44715>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  D.44057 = D.44052 + 64888;
  if (D.44057 <= 9) goto <D.44711>; else goto <D.44710>;
  <D.44711>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44058 = D.43995->data.op[1].many_blocks;
  D.44059 = D.44058 + 4;
  D.44060 = *D.44059;
  if (D.44060 == 0B) goto <D.44716>; else goto <D.44710>;
  <D.44716>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44058 = D.43995->data.op[1].many_blocks;
  D.44059 = D.44058 + 4;
  *D.44059 = false_bb;
  D.43994 = cfg->cbb;
  mono_link_bblock (cfg, D.43994, false_bb);
  goto <D.44712>;
  <D.44710>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  if (D.43995 == 0B) goto <D.44717>; else goto <D.44719>;
  <D.44719>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  if (D.44052 != 442) goto <D.44720>; else goto <D.44718>;
  <D.44720>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  if (D.44052 != 759) goto <D.44721>; else goto <D.44718>;
  <D.44721>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  D.44053 = D.44052 + 64985;
  if (D.44053 > 9) goto <D.44722>; else goto <D.44718>;
  <D.44722>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  D.44055 = D.44052 + 64878;
  if (D.44055 > 9) goto <D.44723>; else goto <D.44718>;
  <D.44723>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  D.44057 = D.44052 + 64888;
  if (D.44057 > 9) goto <D.44717>; else goto <D.44718>;
  <D.44717>:
  D.43994 = cfg->cbb;
  mono_link_bblock (cfg, D.43994, false_bb);
  <D.44718>:
  <D.44712>:
  D.43994 = cfg->cbb;
  D.43994->next_bb = false_bb;
  cfg->cbb = false_bb;
  {
    struct MonoInst * inst;

    D.43983 = cfg->mempool;
    inst = mono_mempool_alloc (D.43983, 56);
    inst->data.op[1].const_val = 0;
    D.44724 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44724;
    inst->prev = 0B;
    D.44725 = inst->prev;
    inst->next = D.44725;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44726 = inst->sreg3;
    inst->sreg2 = D.44726;
    D.44727 = inst->sreg2;
    inst->sreg1 = D.44727;
    D.43990 = cfg->ip;
    inst->cil_code = D.43990;
    inst->dreg = res_reg;
    inst->data.op[0].p = 0B;
    inst->type = 3;
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    if (D.43995 != 0B) goto <D.44728>; else goto <D.44729>;
    <D.44728>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.43995->next = inst;
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    inst->prev = D.43995;
    D.43994 = cfg->cbb;
    D.43994->last_ins = inst;
    goto <D.44730>;
    <D.44729>:
    D.43994 = cfg->cbb;
    D.43994 = cfg->cbb;
    D.43994->last_ins = inst;
    D.43995 = D.43994->last_ins;
    D.43994->code = D.43995;
    <D.44730>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.43983 = cfg->mempool;
    ins = mono_mempool_alloc (D.43983, 56);
    ins->data.op[1].const_val = 0;
    D.44731 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.44731;
    ins->prev = 0B;
    D.44732 = ins->prev;
    ins->next = D.44732;
    ins->opcode = 442;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.44733 = ins->sreg3;
    ins->sreg2 = D.44733;
    D.44734 = ins->sreg2;
    ins->sreg1 = D.44734;
    D.43990 = cfg->ip;
    ins->cil_code = D.43990;
    if (1 != 0) goto <D.44735>; else goto <D.44736>;
    <D.44735>:
    D.43983 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.43983, 172);
    D.44000 = cfg->num_bblocks;
    D.44737 = D.44000;
    D.44738 = D.44737 + 1;
    cfg->num_bblocks = D.44738;
    D.44739 = (int) D.44737;
    falsebb->block_num = D.44739;
    ins->data.op[0].target_block = end_bb;
    D.43994 = cfg->cbb;
    mono_link_bblock (cfg, D.43994, end_bb);
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    if (D.43995 != 0B) goto <D.44740>; else goto <D.44741>;
    <D.44740>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.43995->next = ins;
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    ins->prev = D.43995;
    D.43994 = cfg->cbb;
    D.43994->last_ins = ins;
    goto <D.44742>;
    <D.44741>:
    D.43994 = cfg->cbb;
    D.43994 = cfg->cbb;
    D.43994->last_ins = ins;
    D.43995 = D.43994->last_ins;
    D.43994->code = D.43995;
    <D.44742>:
    D.44743 = falsebb->cil_code;
    if (D.44743 != 0B) goto <D.44744>; else goto <D.44745>;
    <D.44744>:
    D.44039 = cfg->cil_offset_to_bb;
    D.44743 = falsebb->cil_code;
    D.44746 = (int) D.44743;
    D.44041 = cfg->cil_start;
    D.44042 = (int) D.44041;
    D.44747 = D.44746 - D.44042;
    D.44748 = (unsigned int) D.44747;
    D.44749 = D.44748 * 4;
    D.44750 = D.44039 + D.44749;
    *D.44750 = falsebb;
    <D.44745>:
    D.44047 = cfg->real_offset;
    falsebb->real_offset = D.44047;
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    if (D.43995 != 0B) goto <D.44754>; else goto <D.44751>;
    <D.44754>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44053 = D.44052 + 64985;
    if (D.44053 <= 9) goto <D.44752>; else goto <D.44755>;
    <D.44755>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44055 = D.44052 + 64878;
    if (D.44055 <= 9) goto <D.44752>; else goto <D.44756>;
    <D.44756>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44057 = D.44052 + 64888;
    if (D.44057 <= 9) goto <D.44752>; else goto <D.44751>;
    <D.44752>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44058 = D.43995->data.op[1].many_blocks;
    D.44059 = D.44058 + 4;
    D.44060 = *D.44059;
    if (D.44060 == 0B) goto <D.44757>; else goto <D.44751>;
    <D.44757>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44058 = D.43995->data.op[1].many_blocks;
    D.44059 = D.44058 + 4;
    *D.44059 = falsebb;
    D.43994 = cfg->cbb;
    mono_link_bblock (cfg, D.43994, falsebb);
    goto <D.44753>;
    <D.44751>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    if (D.43995 == 0B) goto <D.44758>; else goto <D.44760>;
    <D.44760>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    if (D.44052 != 442) goto <D.44761>; else goto <D.44759>;
    <D.44761>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    if (D.44052 != 759) goto <D.44762>; else goto <D.44759>;
    <D.44762>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44053 = D.44052 + 64985;
    if (D.44053 > 9) goto <D.44763>; else goto <D.44759>;
    <D.44763>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44055 = D.44052 + 64878;
    if (D.44055 > 9) goto <D.44764>; else goto <D.44759>;
    <D.44764>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44057 = D.44052 + 64888;
    if (D.44057 > 9) goto <D.44758>; else goto <D.44759>;
    <D.44758>:
    D.43994 = cfg->cbb;
    mono_link_bblock (cfg, D.43994, falsebb);
    <D.44759>:
    <D.44753>:
    D.43994 = cfg->cbb;
    D.43994->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.44765>;
    <D.44736>:
    D.43983 = cfg->mempool;
    D.44766 = mono_mempool_alloc (D.43983, 8);
    ins->data.op[1].many_blocks = D.44766;
    D.44767 = ins->data.op[1].many_blocks;
    *D.44767 = end_bb;
    D.44767 = ins->data.op[1].many_blocks;
    D.44768 = D.44767 + 4;
    *D.44768 = 0B;
    D.43994 = cfg->cbb;
    mono_link_bblock (cfg, D.43994, end_bb);
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    if (D.43995 != 0B) goto <D.44769>; else goto <D.44770>;
    <D.44769>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.43995->next = ins;
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    ins->prev = D.43995;
    D.43994 = cfg->cbb;
    D.43994->last_ins = ins;
    goto <D.44771>;
    <D.44770>:
    D.43994 = cfg->cbb;
    D.43994 = cfg->cbb;
    D.43994->last_ins = ins;
    D.43995 = D.43994->last_ins;
    D.43994->code = D.43995;
    <D.44771>:
    D.44076 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.44077 = D.44076 & 8;
    if (D.44077 == 0) goto <D.44772>; else goto <D.44773>;
    <D.44772>:
    D.43983 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.43983, 172);
    D.44000 = cfg->num_bblocks;
    D.44774 = D.44000;
    D.44775 = D.44774 + 1;
    cfg->num_bblocks = D.44775;
    D.44776 = (int) D.44774;
    falsebb->block_num = D.44776;
    D.44767 = ins->data.op[1].many_blocks;
    D.44768 = D.44767 + 4;
    *D.44768 = falsebb;
    D.43994 = cfg->cbb;
    mono_link_bblock (cfg, D.43994, falsebb);
    D.44743 = falsebb->cil_code;
    if (D.44743 != 0B) goto <D.44777>; else goto <D.44778>;
    <D.44777>:
    D.44039 = cfg->cil_offset_to_bb;
    D.44743 = falsebb->cil_code;
    D.44746 = (int) D.44743;
    D.44041 = cfg->cil_start;
    D.44042 = (int) D.44041;
    D.44747 = D.44746 - D.44042;
    D.44748 = (unsigned int) D.44747;
    D.44749 = D.44748 * 4;
    D.44750 = D.44039 + D.44749;
    *D.44750 = falsebb;
    <D.44778>:
    D.44047 = cfg->real_offset;
    falsebb->real_offset = D.44047;
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    if (D.43995 != 0B) goto <D.44782>; else goto <D.44779>;
    <D.44782>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44053 = D.44052 + 64985;
    if (D.44053 <= 9) goto <D.44780>; else goto <D.44783>;
    <D.44783>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44055 = D.44052 + 64878;
    if (D.44055 <= 9) goto <D.44780>; else goto <D.44784>;
    <D.44784>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44057 = D.44052 + 64888;
    if (D.44057 <= 9) goto <D.44780>; else goto <D.44779>;
    <D.44780>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44058 = D.43995->data.op[1].many_blocks;
    D.44059 = D.44058 + 4;
    D.44060 = *D.44059;
    if (D.44060 == 0B) goto <D.44785>; else goto <D.44779>;
    <D.44785>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44058 = D.43995->data.op[1].many_blocks;
    D.44059 = D.44058 + 4;
    *D.44059 = falsebb;
    D.43994 = cfg->cbb;
    mono_link_bblock (cfg, D.43994, falsebb);
    goto <D.44781>;
    <D.44779>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    if (D.43995 == 0B) goto <D.44786>; else goto <D.44788>;
    <D.44788>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    if (D.44052 != 442) goto <D.44789>; else goto <D.44787>;
    <D.44789>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    if (D.44052 != 759) goto <D.44790>; else goto <D.44787>;
    <D.44790>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44053 = D.44052 + 64985;
    if (D.44053 > 9) goto <D.44791>; else goto <D.44787>;
    <D.44791>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44055 = D.44052 + 64878;
    if (D.44055 > 9) goto <D.44792>; else goto <D.44787>;
    <D.44792>:
    D.43994 = cfg->cbb;
    D.43995 = D.43994->last_ins;
    D.44052 = D.43995->opcode;
    D.44057 = D.44052 + 64888;
    if (D.44057 > 9) goto <D.44786>; else goto <D.44787>;
    <D.44786>:
    D.43994 = cfg->cbb;
    mono_link_bblock (cfg, D.43994, falsebb);
    <D.44787>:
    <D.44781>:
    D.43994 = cfg->cbb;
    D.43994->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.44793>;
    <D.44773>:
    D.43994 = cfg->cbb;
    D.43994->extended = 1;
    <D.44793>:
    <D.44765>:
  }
  D.44794 = is_null_bb->cil_code;
  if (D.44794 != 0B) goto <D.44795>; else goto <D.44796>;
  <D.44795>:
  D.44039 = cfg->cil_offset_to_bb;
  D.44794 = is_null_bb->cil_code;
  D.44797 = (int) D.44794;
  D.44041 = cfg->cil_start;
  D.44042 = (int) D.44041;
  D.44798 = D.44797 - D.44042;
  D.44799 = (unsigned int) D.44798;
  D.44800 = D.44799 * 4;
  D.44801 = D.44039 + D.44800;
  *D.44801 = is_null_bb;
  <D.44796>:
  D.44047 = cfg->real_offset;
  is_null_bb->real_offset = D.44047;
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  if (D.43995 != 0B) goto <D.44805>; else goto <D.44802>;
  <D.44805>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  D.44053 = D.44052 + 64985;
  if (D.44053 <= 9) goto <D.44803>; else goto <D.44806>;
  <D.44806>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  D.44055 = D.44052 + 64878;
  if (D.44055 <= 9) goto <D.44803>; else goto <D.44807>;
  <D.44807>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  D.44057 = D.44052 + 64888;
  if (D.44057 <= 9) goto <D.44803>; else goto <D.44802>;
  <D.44803>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44058 = D.43995->data.op[1].many_blocks;
  D.44059 = D.44058 + 4;
  D.44060 = *D.44059;
  if (D.44060 == 0B) goto <D.44808>; else goto <D.44802>;
  <D.44808>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44058 = D.43995->data.op[1].many_blocks;
  D.44059 = D.44058 + 4;
  *D.44059 = is_null_bb;
  D.43994 = cfg->cbb;
  mono_link_bblock (cfg, D.43994, is_null_bb);
  goto <D.44804>;
  <D.44802>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  if (D.43995 == 0B) goto <D.44809>; else goto <D.44811>;
  <D.44811>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  if (D.44052 != 442) goto <D.44812>; else goto <D.44810>;
  <D.44812>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  if (D.44052 != 759) goto <D.44813>; else goto <D.44810>;
  <D.44813>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  D.44053 = D.44052 + 64985;
  if (D.44053 > 9) goto <D.44814>; else goto <D.44810>;
  <D.44814>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  D.44055 = D.44052 + 64878;
  if (D.44055 > 9) goto <D.44815>; else goto <D.44810>;
  <D.44815>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  D.44057 = D.44052 + 64888;
  if (D.44057 > 9) goto <D.44809>; else goto <D.44810>;
  <D.44809>:
  D.43994 = cfg->cbb;
  mono_link_bblock (cfg, D.43994, is_null_bb);
  <D.44810>:
  <D.44804>:
  D.43994 = cfg->cbb;
  D.43994->next_bb = is_null_bb;
  cfg->cbb = is_null_bb;
  D.44816 = end_bb->cil_code;
  if (D.44816 != 0B) goto <D.44817>; else goto <D.44818>;
  <D.44817>:
  D.44039 = cfg->cil_offset_to_bb;
  D.44816 = end_bb->cil_code;
  D.44819 = (int) D.44816;
  D.44041 = cfg->cil_start;
  D.44042 = (int) D.44041;
  D.44820 = D.44819 - D.44042;
  D.44821 = (unsigned int) D.44820;
  D.44822 = D.44821 * 4;
  D.44823 = D.44039 + D.44822;
  *D.44823 = end_bb;
  <D.44818>:
  D.44047 = cfg->real_offset;
  end_bb->real_offset = D.44047;
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  if (D.43995 != 0B) goto <D.44827>; else goto <D.44824>;
  <D.44827>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  D.44053 = D.44052 + 64985;
  if (D.44053 <= 9) goto <D.44825>; else goto <D.44828>;
  <D.44828>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  D.44055 = D.44052 + 64878;
  if (D.44055 <= 9) goto <D.44825>; else goto <D.44829>;
  <D.44829>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  D.44057 = D.44052 + 64888;
  if (D.44057 <= 9) goto <D.44825>; else goto <D.44824>;
  <D.44825>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44058 = D.43995->data.op[1].many_blocks;
  D.44059 = D.44058 + 4;
  D.44060 = *D.44059;
  if (D.44060 == 0B) goto <D.44830>; else goto <D.44824>;
  <D.44830>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44058 = D.43995->data.op[1].many_blocks;
  D.44059 = D.44058 + 4;
  *D.44059 = end_bb;
  D.43994 = cfg->cbb;
  mono_link_bblock (cfg, D.43994, end_bb);
  goto <D.44826>;
  <D.44824>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  if (D.43995 == 0B) goto <D.44831>; else goto <D.44833>;
  <D.44833>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  if (D.44052 != 442) goto <D.44834>; else goto <D.44832>;
  <D.44834>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  if (D.44052 != 759) goto <D.44835>; else goto <D.44832>;
  <D.44835>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  D.44053 = D.44052 + 64985;
  if (D.44053 > 9) goto <D.44836>; else goto <D.44832>;
  <D.44836>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  D.44055 = D.44052 + 64878;
  if (D.44055 > 9) goto <D.44837>; else goto <D.44832>;
  <D.44837>:
  D.43994 = cfg->cbb;
  D.43995 = D.43994->last_ins;
  D.44052 = D.43995->opcode;
  D.44057 = D.44052 + 64888;
  if (D.44057 > 9) goto <D.44831>; else goto <D.44832>;
  <D.44831>:
  D.43994 = cfg->cbb;
  mono_link_bblock (cfg, D.43994, end_bb);
  <D.44832>:
  <D.44826>:
  D.43994 = cfg->cbb;
  D.43994->next_bb = end_bb;
  cfg->cbb = end_bb;
  D.43999 = ins;
  return D.43999;
}


mini_emit_iface_cast (struct MonoCompile * cfg, int vtable_reg, struct MonoClass * klass, struct MonoBasicBlock * false_target, struct MonoBasicBlock * true_target)
{
  unsigned int D.44841;
  struct MonoMemPool * D.44842;
  int D.44843;
  struct MonoInst * D.44844;
  int D.44845;
  int D.44846;
  const unsigned char * D.44847;
  struct MonoBasicBlock * D.44848;
  struct MonoInst * D.44849;
  int D.44855;
  struct MonoInst * D.44856;
  int D.44857;
  int D.44858;
  unsigned int D.44861;
  unsigned int D.44862;
  unsigned int D.44863;
  int D.44864;
  unsigned char * D.44868;
  struct MonoBasicBlock * * D.44871;
  int D.44872;
  unsigned char * D.44873;
  int D.44874;
  int D.44875;
  unsigned int D.44876;
  unsigned int D.44877;
  struct MonoBasicBlock * * D.44878;
  unsigned int D.44879;
  short unsigned int D.44884;
  short unsigned int D.44885;
  short unsigned int D.44887;
  short unsigned int D.44889;
  struct MonoBasicBlock * * D.44890;
  struct MonoBasicBlock * * D.44891;
  struct MonoBasicBlock * D.44892;
  void * D.44902;
  struct MonoBasicBlock * * D.44903;
  struct MonoBasicBlock * * D.44904;
  unsigned int D.44908;
  unsigned int D.44909;
  unsigned int D.44912;
  unsigned int D.44913;
  int D.44914;
  int D.44933;
  struct MonoInst * D.44934;
  int D.44935;
  int D.44936;
  int intf_reg;

  D.44841 = alloc_preg (cfg);
  intf_reg = (int) D.44841;
  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.44842 = cfg->mempool;
    inst = mono_mempool_alloc (D.44842, 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 = 323;
    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.44847 = cfg->ip;
    inst->cil_code = D.44847;
    inst->dreg = -1;
    inst->sreg1 = intf_reg;
    inst->data.op[1].const_val = 0;
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    if (D.44849 != 0B) goto <D.44850>; else goto <D.44851>;
    <D.44850>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44849->next = inst;
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    inst->prev = D.44849;
    D.44848 = cfg->cbb;
    D.44848->last_ins = inst;
    goto <D.44852>;
    <D.44851>:
    D.44848 = cfg->cbb;
    D.44848 = cfg->cbb;
    D.44848->last_ins = inst;
    D.44849 = D.44848->last_ins;
    D.44848->code = D.44849;
    <D.44852>:
  }
  if (true_target != 0B) goto <D.44853>; else goto <D.44854>;
  <D.44853>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.44842 = cfg->mempool;
    ins = mono_mempool_alloc (D.44842, 56);
    ins->data.op[1].const_val = 0;
    D.44855 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.44855;
    ins->prev = 0B;
    D.44856 = ins->prev;
    ins->next = D.44856;
    ins->opcode = 653;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.44857 = ins->sreg3;
    ins->sreg2 = D.44857;
    D.44858 = ins->sreg2;
    ins->sreg1 = D.44858;
    D.44847 = cfg->ip;
    ins->cil_code = D.44847;
    if (0 != 0) goto <D.44859>; else goto <D.44860>;
    <D.44859>:
    D.44842 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.44842, 172);
    D.44861 = cfg->num_bblocks;
    D.44862 = D.44861;
    D.44863 = D.44862 + 1;
    cfg->num_bblocks = D.44863;
    D.44864 = (int) D.44862;
    falsebb->block_num = D.44864;
    ins->data.op[0].target_block = true_target;
    D.44848 = cfg->cbb;
    mono_link_bblock (cfg, D.44848, true_target);
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    if (D.44849 != 0B) goto <D.44865>; else goto <D.44866>;
    <D.44865>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44849->next = ins;
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    ins->prev = D.44849;
    D.44848 = cfg->cbb;
    D.44848->last_ins = ins;
    goto <D.44867>;
    <D.44866>:
    D.44848 = cfg->cbb;
    D.44848 = cfg->cbb;
    D.44848->last_ins = ins;
    D.44849 = D.44848->last_ins;
    D.44848->code = D.44849;
    <D.44867>:
    D.44868 = falsebb->cil_code;
    if (D.44868 != 0B) goto <D.44869>; else goto <D.44870>;
    <D.44869>:
    D.44871 = cfg->cil_offset_to_bb;
    D.44868 = falsebb->cil_code;
    D.44872 = (int) D.44868;
    D.44873 = cfg->cil_start;
    D.44874 = (int) D.44873;
    D.44875 = D.44872 - D.44874;
    D.44876 = (unsigned int) D.44875;
    D.44877 = D.44876 * 4;
    D.44878 = D.44871 + D.44877;
    *D.44878 = falsebb;
    <D.44870>:
    D.44879 = cfg->real_offset;
    falsebb->real_offset = D.44879;
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    if (D.44849 != 0B) goto <D.44883>; else goto <D.44880>;
    <D.44883>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44884 = D.44849->opcode;
    D.44885 = D.44884 + 64985;
    if (D.44885 <= 9) goto <D.44881>; else goto <D.44886>;
    <D.44886>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44884 = D.44849->opcode;
    D.44887 = D.44884 + 64878;
    if (D.44887 <= 9) goto <D.44881>; else goto <D.44888>;
    <D.44888>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44884 = D.44849->opcode;
    D.44889 = D.44884 + 64888;
    if (D.44889 <= 9) goto <D.44881>; else goto <D.44880>;
    <D.44881>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44890 = D.44849->data.op[1].many_blocks;
    D.44891 = D.44890 + 4;
    D.44892 = *D.44891;
    if (D.44892 == 0B) goto <D.44893>; else goto <D.44880>;
    <D.44893>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44890 = D.44849->data.op[1].many_blocks;
    D.44891 = D.44890 + 4;
    *D.44891 = falsebb;
    D.44848 = cfg->cbb;
    mono_link_bblock (cfg, D.44848, falsebb);
    goto <D.44882>;
    <D.44880>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    if (D.44849 == 0B) goto <D.44894>; else goto <D.44896>;
    <D.44896>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44884 = D.44849->opcode;
    if (D.44884 != 442) goto <D.44897>; else goto <D.44895>;
    <D.44897>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44884 = D.44849->opcode;
    if (D.44884 != 759) goto <D.44898>; else goto <D.44895>;
    <D.44898>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44884 = D.44849->opcode;
    D.44885 = D.44884 + 64985;
    if (D.44885 > 9) goto <D.44899>; else goto <D.44895>;
    <D.44899>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44884 = D.44849->opcode;
    D.44887 = D.44884 + 64878;
    if (D.44887 > 9) goto <D.44900>; else goto <D.44895>;
    <D.44900>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44884 = D.44849->opcode;
    D.44889 = D.44884 + 64888;
    if (D.44889 > 9) goto <D.44894>; else goto <D.44895>;
    <D.44894>:
    D.44848 = cfg->cbb;
    mono_link_bblock (cfg, D.44848, falsebb);
    <D.44895>:
    <D.44882>:
    D.44848 = cfg->cbb;
    D.44848->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.44901>;
    <D.44860>:
    D.44842 = cfg->mempool;
    D.44902 = mono_mempool_alloc (D.44842, 8);
    ins->data.op[1].many_blocks = D.44902;
    D.44903 = ins->data.op[1].many_blocks;
    *D.44903 = true_target;
    D.44903 = ins->data.op[1].many_blocks;
    D.44904 = D.44903 + 4;
    *D.44904 = 0B;
    D.44848 = cfg->cbb;
    mono_link_bblock (cfg, D.44848, true_target);
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    if (D.44849 != 0B) goto <D.44905>; else goto <D.44906>;
    <D.44905>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44849->next = ins;
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    ins->prev = D.44849;
    D.44848 = cfg->cbb;
    D.44848->last_ins = ins;
    goto <D.44907>;
    <D.44906>:
    D.44848 = cfg->cbb;
    D.44848 = cfg->cbb;
    D.44848->last_ins = ins;
    D.44849 = D.44848->last_ins;
    D.44848->code = D.44849;
    <D.44907>:
    D.44908 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.44909 = D.44908 & 8;
    if (D.44909 == 0) goto <D.44910>; else goto <D.44911>;
    <D.44910>:
    D.44842 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.44842, 172);
    D.44861 = cfg->num_bblocks;
    D.44912 = D.44861;
    D.44913 = D.44912 + 1;
    cfg->num_bblocks = D.44913;
    D.44914 = (int) D.44912;
    falsebb->block_num = D.44914;
    D.44903 = ins->data.op[1].many_blocks;
    D.44904 = D.44903 + 4;
    *D.44904 = falsebb;
    D.44848 = cfg->cbb;
    mono_link_bblock (cfg, D.44848, falsebb);
    D.44868 = falsebb->cil_code;
    if (D.44868 != 0B) goto <D.44915>; else goto <D.44916>;
    <D.44915>:
    D.44871 = cfg->cil_offset_to_bb;
    D.44868 = falsebb->cil_code;
    D.44872 = (int) D.44868;
    D.44873 = cfg->cil_start;
    D.44874 = (int) D.44873;
    D.44875 = D.44872 - D.44874;
    D.44876 = (unsigned int) D.44875;
    D.44877 = D.44876 * 4;
    D.44878 = D.44871 + D.44877;
    *D.44878 = falsebb;
    <D.44916>:
    D.44879 = cfg->real_offset;
    falsebb->real_offset = D.44879;
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    if (D.44849 != 0B) goto <D.44920>; else goto <D.44917>;
    <D.44920>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44884 = D.44849->opcode;
    D.44885 = D.44884 + 64985;
    if (D.44885 <= 9) goto <D.44918>; else goto <D.44921>;
    <D.44921>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44884 = D.44849->opcode;
    D.44887 = D.44884 + 64878;
    if (D.44887 <= 9) goto <D.44918>; else goto <D.44922>;
    <D.44922>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44884 = D.44849->opcode;
    D.44889 = D.44884 + 64888;
    if (D.44889 <= 9) goto <D.44918>; else goto <D.44917>;
    <D.44918>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44890 = D.44849->data.op[1].many_blocks;
    D.44891 = D.44890 + 4;
    D.44892 = *D.44891;
    if (D.44892 == 0B) goto <D.44923>; else goto <D.44917>;
    <D.44923>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44890 = D.44849->data.op[1].many_blocks;
    D.44891 = D.44890 + 4;
    *D.44891 = falsebb;
    D.44848 = cfg->cbb;
    mono_link_bblock (cfg, D.44848, falsebb);
    goto <D.44919>;
    <D.44917>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    if (D.44849 == 0B) goto <D.44924>; else goto <D.44926>;
    <D.44926>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44884 = D.44849->opcode;
    if (D.44884 != 442) goto <D.44927>; else goto <D.44925>;
    <D.44927>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44884 = D.44849->opcode;
    if (D.44884 != 759) goto <D.44928>; else goto <D.44925>;
    <D.44928>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44884 = D.44849->opcode;
    D.44885 = D.44884 + 64985;
    if (D.44885 > 9) goto <D.44929>; else goto <D.44925>;
    <D.44929>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44884 = D.44849->opcode;
    D.44887 = D.44884 + 64878;
    if (D.44887 > 9) goto <D.44930>; else goto <D.44925>;
    <D.44930>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44884 = D.44849->opcode;
    D.44889 = D.44884 + 64888;
    if (D.44889 > 9) goto <D.44924>; else goto <D.44925>;
    <D.44924>:
    D.44848 = cfg->cbb;
    mono_link_bblock (cfg, D.44848, falsebb);
    <D.44925>:
    <D.44919>:
    D.44848 = cfg->cbb;
    D.44848->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.44931>;
    <D.44911>:
    D.44848 = cfg->cbb;
    D.44848->extended = 1;
    <D.44931>:
    <D.44901>:
  }
  goto <D.44932>;
  <D.44854>:
  {
    struct MonoInst * inst;

    D.44842 = cfg->mempool;
    inst = mono_mempool_alloc (D.44842, 56);
    inst->data.op[1].const_val = 0;
    D.44933 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44933;
    inst->prev = 0B;
    D.44934 = inst->prev;
    inst->next = D.44934;
    inst->opcode = 451;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44935 = inst->sreg3;
    inst->sreg2 = D.44935;
    D.44936 = inst->sreg2;
    inst->sreg1 = D.44936;
    D.44847 = cfg->ip;
    inst->cil_code = D.44847;
    inst->data.op[1].p = "InvalidCastException";
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    if (D.44849 != 0B) goto <D.44937>; else goto <D.44938>;
    <D.44937>:
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    D.44849->next = inst;
    D.44848 = cfg->cbb;
    D.44849 = D.44848->last_ins;
    inst->prev = D.44849;
    D.44848 = cfg->cbb;
    D.44848->last_ins = inst;
    goto <D.44939>;
    <D.44938>:
    D.44848 = cfg->cbb;
    D.44848 = cfg->cbb;
    D.44848->last_ins = inst;
    D.44849 = D.44848->last_ins;
    D.44848->code = D.44849;
    <D.44939>:
  }
  <D.44932>:
}


mini_emit_max_iid_check_vtable (struct MonoCompile * cfg, int vtable_reg, struct MonoClass * klass, struct MonoBasicBlock * false_target)
{
  unsigned int D.44940;
  struct MonoMemPool * D.44941;
  int D.44942;
  struct MonoInst * D.44943;
  int D.44944;
  int D.44945;
  const unsigned char * D.44946;
  struct MonoBasicBlock * D.44947;
  struct MonoInst * D.44948;
  int max_iid_reg;

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

    D.44941 = cfg->mempool;
    inst = mono_mempool_alloc (D.44941, 56);
    inst->data.op[1].const_val = 0;
    D.44942 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44942;
    inst->prev = 0B;
    D.44943 = inst->prev;
    inst->next = D.44943;
    inst->opcode = 392;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44944 = inst->sreg3;
    inst->sreg2 = D.44944;
    D.44945 = inst->sreg2;
    inst->sreg1 = D.44945;
    D.44946 = cfg->ip;
    inst->cil_code = D.44946;
    inst->dreg = max_iid_reg;
    inst->sreg1 = vtable_reg;
    inst->data.op[0].const_val = 20;
    D.44947 = cfg->cbb;
    D.44948 = D.44947->last_ins;
    if (D.44948 != 0B) goto <D.44949>; else goto <D.44950>;
    <D.44949>:
    D.44947 = cfg->cbb;
    D.44948 = D.44947->last_ins;
    D.44948->next = inst;
    D.44947 = cfg->cbb;
    D.44948 = D.44947->last_ins;
    inst->prev = D.44948;
    D.44947 = cfg->cbb;
    D.44947->last_ins = inst;
    goto <D.44951>;
    <D.44950>:
    D.44947 = cfg->cbb;
    D.44947 = cfg->cbb;
    D.44947->last_ins = inst;
    D.44948 = D.44947->last_ins;
    D.44947->code = D.44948;
    <D.44951>:
  }
  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 int D.44952;
  unsigned int D.44953;
  unsigned int D.44956;
  struct MonoMemPool * D.44957;
  int D.44958;
  struct MonoInst * D.44959;
  guint16 iftmp.481;
  int D.44964;
  int D.44965;
  const unsigned char * D.44966;
  struct MonoBasicBlock * D.44967;
  struct MonoInst * D.44968;
  int D.44972;
  struct MonoInst * D.44973;
  int D.44974;
  int D.44975;
  int D.44980;
  struct MonoInst * D.44981;
  int D.44982;
  int D.44983;
  short unsigned int D.44984;
  int D.44985;
  int D.44991;
  struct MonoInst * D.44992;
  int D.44993;
  int D.44994;
  unsigned int D.44997;
  unsigned int D.44998;
  unsigned int D.44999;
  int D.45000;
  unsigned char * D.45004;
  struct MonoBasicBlock * * D.45007;
  int D.45008;
  unsigned char * D.45009;
  int D.45010;
  int D.45011;
  unsigned int D.45012;
  unsigned int D.45013;
  struct MonoBasicBlock * * D.45014;
  unsigned int D.45015;
  short unsigned int D.45020;
  short unsigned int D.45021;
  short unsigned int D.45023;
  short unsigned int D.45025;
  struct MonoBasicBlock * * D.45026;
  struct MonoBasicBlock * * D.45027;
  struct MonoBasicBlock * D.45028;
  void * D.45038;
  struct MonoBasicBlock * * D.45039;
  struct MonoBasicBlock * * D.45040;
  unsigned int D.45044;
  unsigned int D.45047;
  unsigned int D.45048;
  int D.45049;
  int D.45068;
  struct MonoInst * D.45069;
  int D.45070;
  int D.45071;

  D.44952 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.44953 = D.44952 & 64;
  if (D.44953 != 0) goto <D.44954>; else goto <D.44955>;
  <D.44954>:
  {
    int iid_reg;

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

      D.44957 = cfg->mempool;
      inst = mono_mempool_alloc (D.44957, 56);
      inst->data.op[1].const_val = 0;
      D.44958 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.44958;
      inst->prev = 0B;
      D.44959 = inst->prev;
      inst->next = D.44959;
      D.44952 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.44953 = D.44952 & 64;
      if (D.44953 != 0) goto <D.44961>; else goto <D.44962>;
      <D.44961>:
      iftmp.481 = 732;
      goto <D.44963>;
      <D.44962>:
      iftmp.481 = 362;
      <D.44963>:
      inst->opcode = iftmp.481;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.44964 = inst->sreg3;
      inst->sreg2 = D.44964;
      D.44965 = inst->sreg2;
      inst->sreg1 = D.44965;
      D.44966 = cfg->ip;
      inst->cil_code = D.44966;
      inst->dreg = iid_reg;
      inst->data.op[0].p = klass;
      inst->data.op[1].const_val = 23;
      D.44967 = cfg->cbb;
      D.44968 = D.44967->last_ins;
      if (D.44968 != 0B) goto <D.44969>; else goto <D.44970>;
      <D.44969>:
      D.44967 = cfg->cbb;
      D.44968 = D.44967->last_ins;
      D.44968->next = inst;
      D.44967 = cfg->cbb;
      D.44968 = D.44967->last_ins;
      inst->prev = D.44968;
      D.44967 = cfg->cbb;
      D.44967->last_ins = inst;
      goto <D.44971>;
      <D.44970>:
      D.44967 = cfg->cbb;
      D.44967 = cfg->cbb;
      D.44967->last_ins = inst;
      D.44968 = D.44967->last_ins;
      D.44967->code = D.44968;
      <D.44971>:
    }
    {
      struct MonoInst * inst;

      D.44957 = cfg->mempool;
      inst = mono_mempool_alloc (D.44957, 56);
      inst->data.op[1].const_val = 0;
      D.44972 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.44972;
      inst->prev = 0B;
      D.44973 = inst->prev;
      inst->next = D.44973;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.44974 = inst->sreg3;
      inst->sreg2 = D.44974;
      D.44975 = inst->sreg2;
      inst->sreg1 = D.44975;
      D.44966 = cfg->ip;
      inst->cil_code = D.44966;
      inst->dreg = -1;
      inst->sreg1 = max_iid_reg;
      inst->sreg2 = iid_reg;
      D.44967 = cfg->cbb;
      D.44968 = D.44967->last_ins;
      if (D.44968 != 0B) goto <D.44976>; else goto <D.44977>;
      <D.44976>:
      D.44967 = cfg->cbb;
      D.44968 = D.44967->last_ins;
      D.44968->next = inst;
      D.44967 = cfg->cbb;
      D.44968 = D.44967->last_ins;
      inst->prev = D.44968;
      D.44967 = cfg->cbb;
      D.44967->last_ins = inst;
      goto <D.44978>;
      <D.44977>:
      D.44967 = cfg->cbb;
      D.44967 = cfg->cbb;
      D.44967->last_ins = inst;
      D.44968 = D.44967->last_ins;
      D.44967->code = D.44968;
      <D.44978>:
    }
  }
  goto <D.44979>;
  <D.44955>:
  {
    struct MonoInst * inst;

    D.44957 = cfg->mempool;
    inst = mono_mempool_alloc (D.44957, 56);
    inst->data.op[1].const_val = 0;
    D.44980 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44980;
    inst->prev = 0B;
    D.44981 = inst->prev;
    inst->next = D.44981;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44982 = inst->sreg3;
    inst->sreg2 = D.44982;
    D.44983 = inst->sreg2;
    inst->sreg1 = D.44983;
    D.44966 = cfg->ip;
    inst->cil_code = D.44966;
    inst->dreg = -1;
    inst->sreg1 = max_iid_reg;
    D.44984 = klass->interface_id;
    D.44985 = (int) D.44984;
    inst->data.op[1].const_val = D.44985;
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    if (D.44968 != 0B) goto <D.44986>; else goto <D.44987>;
    <D.44986>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.44968->next = inst;
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    inst->prev = D.44968;
    D.44967 = cfg->cbb;
    D.44967->last_ins = inst;
    goto <D.44988>;
    <D.44987>:
    D.44967 = cfg->cbb;
    D.44967 = cfg->cbb;
    D.44967->last_ins = inst;
    D.44968 = D.44967->last_ins;
    D.44967->code = D.44968;
    <D.44988>:
  }
  <D.44979>:
  if (false_target != 0B) goto <D.44989>; else goto <D.44990>;
  <D.44989>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.44957 = cfg->mempool;
    ins = mono_mempool_alloc (D.44957, 56);
    ins->data.op[1].const_val = 0;
    D.44991 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.44991;
    ins->prev = 0B;
    D.44992 = ins->prev;
    ins->next = D.44992;
    ins->opcode = 657;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.44993 = ins->sreg3;
    ins->sreg2 = D.44993;
    D.44994 = ins->sreg2;
    ins->sreg1 = D.44994;
    D.44966 = cfg->ip;
    ins->cil_code = D.44966;
    if (0 != 0) goto <D.44995>; else goto <D.44996>;
    <D.44995>:
    D.44957 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.44957, 172);
    D.44997 = cfg->num_bblocks;
    D.44998 = D.44997;
    D.44999 = D.44998 + 1;
    cfg->num_bblocks = D.44999;
    D.45000 = (int) D.44998;
    falsebb->block_num = D.45000;
    ins->data.op[0].target_block = false_target;
    D.44967 = cfg->cbb;
    mono_link_bblock (cfg, D.44967, false_target);
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    if (D.44968 != 0B) goto <D.45001>; else goto <D.45002>;
    <D.45001>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.44968->next = ins;
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    ins->prev = D.44968;
    D.44967 = cfg->cbb;
    D.44967->last_ins = ins;
    goto <D.45003>;
    <D.45002>:
    D.44967 = cfg->cbb;
    D.44967 = cfg->cbb;
    D.44967->last_ins = ins;
    D.44968 = D.44967->last_ins;
    D.44967->code = D.44968;
    <D.45003>:
    D.45004 = falsebb->cil_code;
    if (D.45004 != 0B) goto <D.45005>; else goto <D.45006>;
    <D.45005>:
    D.45007 = cfg->cil_offset_to_bb;
    D.45004 = falsebb->cil_code;
    D.45008 = (int) D.45004;
    D.45009 = cfg->cil_start;
    D.45010 = (int) D.45009;
    D.45011 = D.45008 - D.45010;
    D.45012 = (unsigned int) D.45011;
    D.45013 = D.45012 * 4;
    D.45014 = D.45007 + D.45013;
    *D.45014 = falsebb;
    <D.45006>:
    D.45015 = cfg->real_offset;
    falsebb->real_offset = D.45015;
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    if (D.44968 != 0B) goto <D.45019>; else goto <D.45016>;
    <D.45019>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45020 = D.44968->opcode;
    D.45021 = D.45020 + 64985;
    if (D.45021 <= 9) goto <D.45017>; else goto <D.45022>;
    <D.45022>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45020 = D.44968->opcode;
    D.45023 = D.45020 + 64878;
    if (D.45023 <= 9) goto <D.45017>; else goto <D.45024>;
    <D.45024>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45020 = D.44968->opcode;
    D.45025 = D.45020 + 64888;
    if (D.45025 <= 9) goto <D.45017>; else goto <D.45016>;
    <D.45017>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45026 = D.44968->data.op[1].many_blocks;
    D.45027 = D.45026 + 4;
    D.45028 = *D.45027;
    if (D.45028 == 0B) goto <D.45029>; else goto <D.45016>;
    <D.45029>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45026 = D.44968->data.op[1].many_blocks;
    D.45027 = D.45026 + 4;
    *D.45027 = falsebb;
    D.44967 = cfg->cbb;
    mono_link_bblock (cfg, D.44967, falsebb);
    goto <D.45018>;
    <D.45016>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    if (D.44968 == 0B) goto <D.45030>; else goto <D.45032>;
    <D.45032>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45020 = D.44968->opcode;
    if (D.45020 != 442) goto <D.45033>; else goto <D.45031>;
    <D.45033>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45020 = D.44968->opcode;
    if (D.45020 != 759) goto <D.45034>; else goto <D.45031>;
    <D.45034>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45020 = D.44968->opcode;
    D.45021 = D.45020 + 64985;
    if (D.45021 > 9) goto <D.45035>; else goto <D.45031>;
    <D.45035>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45020 = D.44968->opcode;
    D.45023 = D.45020 + 64878;
    if (D.45023 > 9) goto <D.45036>; else goto <D.45031>;
    <D.45036>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45020 = D.44968->opcode;
    D.45025 = D.45020 + 64888;
    if (D.45025 > 9) goto <D.45030>; else goto <D.45031>;
    <D.45030>:
    D.44967 = cfg->cbb;
    mono_link_bblock (cfg, D.44967, falsebb);
    <D.45031>:
    <D.45018>:
    D.44967 = cfg->cbb;
    D.44967->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.45037>;
    <D.44996>:
    D.44957 = cfg->mempool;
    D.45038 = mono_mempool_alloc (D.44957, 8);
    ins->data.op[1].many_blocks = D.45038;
    D.45039 = ins->data.op[1].many_blocks;
    *D.45039 = false_target;
    D.45039 = ins->data.op[1].many_blocks;
    D.45040 = D.45039 + 4;
    *D.45040 = 0B;
    D.44967 = cfg->cbb;
    mono_link_bblock (cfg, D.44967, false_target);
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    if (D.44968 != 0B) goto <D.45041>; else goto <D.45042>;
    <D.45041>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.44968->next = ins;
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    ins->prev = D.44968;
    D.44967 = cfg->cbb;
    D.44967->last_ins = ins;
    goto <D.45043>;
    <D.45042>:
    D.44967 = cfg->cbb;
    D.44967 = cfg->cbb;
    D.44967->last_ins = ins;
    D.44968 = D.44967->last_ins;
    D.44967->code = D.44968;
    <D.45043>:
    D.44952 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.45044 = D.44952 & 8;
    if (D.45044 == 0) goto <D.45045>; else goto <D.45046>;
    <D.45045>:
    D.44957 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.44957, 172);
    D.44997 = cfg->num_bblocks;
    D.45047 = D.44997;
    D.45048 = D.45047 + 1;
    cfg->num_bblocks = D.45048;
    D.45049 = (int) D.45047;
    falsebb->block_num = D.45049;
    D.45039 = ins->data.op[1].many_blocks;
    D.45040 = D.45039 + 4;
    *D.45040 = falsebb;
    D.44967 = cfg->cbb;
    mono_link_bblock (cfg, D.44967, falsebb);
    D.45004 = falsebb->cil_code;
    if (D.45004 != 0B) goto <D.45050>; else goto <D.45051>;
    <D.45050>:
    D.45007 = cfg->cil_offset_to_bb;
    D.45004 = falsebb->cil_code;
    D.45008 = (int) D.45004;
    D.45009 = cfg->cil_start;
    D.45010 = (int) D.45009;
    D.45011 = D.45008 - D.45010;
    D.45012 = (unsigned int) D.45011;
    D.45013 = D.45012 * 4;
    D.45014 = D.45007 + D.45013;
    *D.45014 = falsebb;
    <D.45051>:
    D.45015 = cfg->real_offset;
    falsebb->real_offset = D.45015;
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    if (D.44968 != 0B) goto <D.45055>; else goto <D.45052>;
    <D.45055>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45020 = D.44968->opcode;
    D.45021 = D.45020 + 64985;
    if (D.45021 <= 9) goto <D.45053>; else goto <D.45056>;
    <D.45056>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45020 = D.44968->opcode;
    D.45023 = D.45020 + 64878;
    if (D.45023 <= 9) goto <D.45053>; else goto <D.45057>;
    <D.45057>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45020 = D.44968->opcode;
    D.45025 = D.45020 + 64888;
    if (D.45025 <= 9) goto <D.45053>; else goto <D.45052>;
    <D.45053>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45026 = D.44968->data.op[1].many_blocks;
    D.45027 = D.45026 + 4;
    D.45028 = *D.45027;
    if (D.45028 == 0B) goto <D.45058>; else goto <D.45052>;
    <D.45058>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45026 = D.44968->data.op[1].many_blocks;
    D.45027 = D.45026 + 4;
    *D.45027 = falsebb;
    D.44967 = cfg->cbb;
    mono_link_bblock (cfg, D.44967, falsebb);
    goto <D.45054>;
    <D.45052>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    if (D.44968 == 0B) goto <D.45059>; else goto <D.45061>;
    <D.45061>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45020 = D.44968->opcode;
    if (D.45020 != 442) goto <D.45062>; else goto <D.45060>;
    <D.45062>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45020 = D.44968->opcode;
    if (D.45020 != 759) goto <D.45063>; else goto <D.45060>;
    <D.45063>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45020 = D.44968->opcode;
    D.45021 = D.45020 + 64985;
    if (D.45021 > 9) goto <D.45064>; else goto <D.45060>;
    <D.45064>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45020 = D.44968->opcode;
    D.45023 = D.45020 + 64878;
    if (D.45023 > 9) goto <D.45065>; else goto <D.45060>;
    <D.45065>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.45020 = D.44968->opcode;
    D.45025 = D.45020 + 64888;
    if (D.45025 > 9) goto <D.45059>; else goto <D.45060>;
    <D.45059>:
    D.44967 = cfg->cbb;
    mono_link_bblock (cfg, D.44967, falsebb);
    <D.45060>:
    <D.45054>:
    D.44967 = cfg->cbb;
    D.44967->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.45066>;
    <D.45046>:
    D.44967 = cfg->cbb;
    D.44967->extended = 1;
    <D.45066>:
    <D.45037>:
  }
  goto <D.45067>;
  <D.44990>:
  {
    struct MonoInst * inst;

    D.44957 = cfg->mempool;
    inst = mono_mempool_alloc (D.44957, 56);
    inst->data.op[1].const_val = 0;
    D.45068 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45068;
    inst->prev = 0B;
    D.45069 = inst->prev;
    inst->next = D.45069;
    inst->opcode = 460;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45070 = inst->sreg3;
    inst->sreg2 = D.45070;
    D.45071 = inst->sreg2;
    inst->sreg1 = D.45071;
    D.44966 = cfg->ip;
    inst->cil_code = D.44966;
    inst->data.op[1].p = "InvalidCastException";
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    if (D.44968 != 0B) goto <D.45072>; else goto <D.45073>;
    <D.45072>:
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    D.44968->next = inst;
    D.44967 = cfg->cbb;
    D.44968 = D.44967->last_ins;
    inst->prev = D.44968;
    D.44967 = cfg->cbb;
    D.44967->last_ins = inst;
    goto <D.45074>;
    <D.45073>:
    D.44967 = cfg->cbb;
    D.44967 = cfg->cbb;
    D.44967->last_ins = inst;
    D.44968 = D.44967->last_ins;
    D.44967->code = D.44968;
    <D.45074>:
  }
  <D.45067>:
}


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.45075;
  unsigned int D.45076;
  struct MonoMemPool * D.45077;
  int D.45078;
  struct MonoInst * D.45079;
  int D.45080;
  int D.45081;
  const unsigned char * D.45082;
  struct MonoBasicBlock * D.45083;
  struct MonoInst * D.45084;
  unsigned int D.45088;
  unsigned int D.45089;
  unsigned int D.45092;
  unsigned int D.45093;
  unsigned int D.45094;
  unsigned int D.45095;
  unsigned int D.45096;
  unsigned int D.45097;
  int D.45098;
  struct MonoInst * D.45099;
  guint16 iftmp.482;
  int D.45104;
  int D.45105;
  int D.45109;
  struct MonoInst * D.45110;
  int D.45111;
  int D.45112;
  int D.45116;
  struct MonoInst * D.45117;
  int D.45118;
  int D.45119;
  int D.45123;
  struct MonoInst * D.45124;
  int D.45125;
  int D.45126;
  int D.45130;
  struct MonoInst * D.45131;
  int D.45132;
  int D.45133;
  int D.45137;
  struct MonoInst * D.45138;
  int D.45139;
  int D.45140;
  int D.45144;
  struct MonoInst * D.45145;
  int D.45146;
  int D.45147;
  int D.45151;
  struct MonoInst * D.45152;
  int D.45153;
  int D.45154;
  int D.45159;
  struct MonoInst * D.45160;
  int D.45161;
  int D.45162;
  short unsigned int D.45163;
  short unsigned int D.45164;
  int D.45165;
  int D.45169;
  struct MonoInst * D.45170;
  int D.45171;
  int D.45172;
  int D.45173;
  int D.45174;
  int D.45175;
  int ibitmap_reg;
  int ibitmap_byte_reg;

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

    D.45077 = cfg->mempool;
    inst = mono_mempool_alloc (D.45077, 56);
    inst->data.op[1].const_val = 0;
    D.45078 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45078;
    inst->prev = 0B;
    D.45079 = inst->prev;
    inst->next = D.45079;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45080 = inst->sreg3;
    inst->sreg2 = D.45080;
    D.45081 = inst->sreg2;
    inst->sreg1 = D.45081;
    D.45082 = cfg->ip;
    inst->cil_code = D.45082;
    inst->dreg = ibitmap_reg;
    inst->sreg1 = base_reg;
    inst->data.op[0].const_val = offset;
    D.45083 = cfg->cbb;
    D.45084 = D.45083->last_ins;
    if (D.45084 != 0B) goto <D.45085>; else goto <D.45086>;
    <D.45085>:
    D.45083 = cfg->cbb;
    D.45084 = D.45083->last_ins;
    D.45084->next = inst;
    D.45083 = cfg->cbb;
    D.45084 = D.45083->last_ins;
    inst->prev = D.45084;
    D.45083 = cfg->cbb;
    D.45083->last_ins = inst;
    goto <D.45087>;
    <D.45086>:
    D.45083 = cfg->cbb;
    D.45083 = cfg->cbb;
    D.45083->last_ins = inst;
    D.45084 = D.45083->last_ins;
    D.45083->code = D.45084;
    <D.45087>:
  }
  D.45088 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.45089 = D.45088 & 64;
  if (D.45089 != 0) goto <D.45090>; else goto <D.45091>;
  <D.45090>:
  {
    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.45092 = alloc_preg (cfg);
    iid_reg = (int) D.45092;
    D.45093 = alloc_preg (cfg);
    shifted_iid_reg = (int) D.45093;
    D.45094 = alloc_preg (cfg);
    ibitmap_byte_address_reg = (int) D.45094;
    D.45095 = alloc_preg (cfg);
    masked_iid_reg = (int) D.45095;
    D.45096 = alloc_preg (cfg);
    iid_one_bit_reg = (int) D.45096;
    D.45097 = alloc_preg (cfg);
    iid_bit_reg = (int) D.45097;
    {
      struct MonoInst * inst;

      D.45077 = cfg->mempool;
      inst = mono_mempool_alloc (D.45077, 56);
      inst->data.op[1].const_val = 0;
      D.45098 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45098;
      inst->prev = 0B;
      D.45099 = inst->prev;
      inst->next = D.45099;
      D.45088 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.45089 = D.45088 & 64;
      if (D.45089 != 0) goto <D.45101>; else goto <D.45102>;
      <D.45101>:
      iftmp.482 = 732;
      goto <D.45103>;
      <D.45102>:
      iftmp.482 = 362;
      <D.45103>:
      inst->opcode = iftmp.482;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45104 = inst->sreg3;
      inst->sreg2 = D.45104;
      D.45105 = inst->sreg2;
      inst->sreg1 = D.45105;
      D.45082 = cfg->ip;
      inst->cil_code = D.45082;
      inst->dreg = iid_reg;
      inst->data.op[0].p = klass;
      inst->data.op[1].const_val = 23;
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      if (D.45084 != 0B) goto <D.45106>; else goto <D.45107>;
      <D.45106>:
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      D.45084->next = inst;
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      inst->prev = D.45084;
      D.45083 = cfg->cbb;
      D.45083->last_ins = inst;
      goto <D.45108>;
      <D.45107>:
      D.45083 = cfg->cbb;
      D.45083 = cfg->cbb;
      D.45083->last_ins = inst;
      D.45084 = D.45083->last_ins;
      D.45083->code = D.45084;
      <D.45108>:
    }
    {
      struct MonoInst * inst;

      D.45077 = cfg->mempool;
      inst = mono_mempool_alloc (D.45077, 56);
      inst->data.op[1].const_val = 0;
      D.45109 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45109;
      inst->prev = 0B;
      D.45110 = inst->prev;
      inst->next = D.45110;
      inst->opcode = 440;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45111 = inst->sreg3;
      inst->sreg2 = D.45111;
      D.45112 = inst->sreg2;
      inst->sreg1 = D.45112;
      D.45082 = cfg->ip;
      inst->cil_code = D.45082;
      inst->dreg = shifted_iid_reg;
      inst->sreg1 = iid_reg;
      inst->data.op[1].const_val = 3;
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      if (D.45084 != 0B) goto <D.45113>; else goto <D.45114>;
      <D.45113>:
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      D.45084->next = inst;
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      inst->prev = D.45084;
      D.45083 = cfg->cbb;
      D.45083->last_ins = inst;
      goto <D.45115>;
      <D.45114>:
      D.45083 = cfg->cbb;
      D.45083 = cfg->cbb;
      D.45083->last_ins = inst;
      D.45084 = D.45083->last_ins;
      D.45083->code = D.45084;
      <D.45115>:
    }
    {
      struct MonoInst * inst;

      D.45077 = cfg->mempool;
      inst = mono_mempool_alloc (D.45077, 56);
      inst->data.op[1].const_val = 0;
      D.45116 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45116;
      inst->prev = 0B;
      D.45117 = inst->prev;
      inst->next = D.45117;
      inst->opcode = 565;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45118 = inst->sreg3;
      inst->sreg2 = D.45118;
      D.45119 = inst->sreg2;
      inst->sreg1 = D.45119;
      D.45082 = cfg->ip;
      inst->cil_code = D.45082;
      inst->dreg = ibitmap_byte_address_reg;
      inst->sreg1 = ibitmap_reg;
      inst->sreg2 = shifted_iid_reg;
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      if (D.45084 != 0B) goto <D.45120>; else goto <D.45121>;
      <D.45120>:
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      D.45084->next = inst;
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      inst->prev = D.45084;
      D.45083 = cfg->cbb;
      D.45083->last_ins = inst;
      goto <D.45122>;
      <D.45121>:
      D.45083 = cfg->cbb;
      D.45083 = cfg->cbb;
      D.45083->last_ins = inst;
      D.45084 = D.45083->last_ins;
      D.45083->code = D.45084;
      <D.45122>:
    }
    {
      struct MonoInst * inst;

      D.45077 = cfg->mempool;
      inst = mono_mempool_alloc (D.45077, 56);
      inst->data.op[1].const_val = 0;
      D.45123 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45123;
      inst->prev = 0B;
      D.45124 = inst->prev;
      inst->next = D.45124;
      inst->opcode = 390;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45125 = inst->sreg3;
      inst->sreg2 = D.45125;
      D.45126 = inst->sreg2;
      inst->sreg1 = D.45126;
      D.45082 = cfg->ip;
      inst->cil_code = D.45082;
      inst->dreg = ibitmap_byte_reg;
      inst->sreg1 = ibitmap_byte_address_reg;
      inst->data.op[0].const_val = 0;
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      if (D.45084 != 0B) goto <D.45127>; else goto <D.45128>;
      <D.45127>:
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      D.45084->next = inst;
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      inst->prev = D.45084;
      D.45083 = cfg->cbb;
      D.45083->last_ins = inst;
      goto <D.45129>;
      <D.45128>:
      D.45083 = cfg->cbb;
      D.45083 = cfg->cbb;
      D.45083->last_ins = inst;
      D.45084 = D.45083->last_ins;
      D.45083->code = D.45084;
      <D.45129>:
    }
    {
      struct MonoInst * inst;

      D.45077 = cfg->mempool;
      inst = mono_mempool_alloc (D.45077, 56);
      inst->data.op[1].const_val = 0;
      D.45130 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45130;
      inst->prev = 0B;
      D.45131 = inst->prev;
      inst->next = D.45131;
      inst->opcode = 632;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45132 = inst->sreg3;
      inst->sreg2 = D.45132;
      D.45133 = inst->sreg2;
      inst->sreg1 = D.45133;
      D.45082 = cfg->ip;
      inst->cil_code = D.45082;
      inst->dreg = masked_iid_reg;
      inst->sreg1 = iid_reg;
      inst->data.op[1].const_val = 7;
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      if (D.45084 != 0B) goto <D.45134>; else goto <D.45135>;
      <D.45134>:
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      D.45084->next = inst;
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      inst->prev = D.45084;
      D.45083 = cfg->cbb;
      D.45083->last_ins = inst;
      goto <D.45136>;
      <D.45135>:
      D.45083 = cfg->cbb;
      D.45083 = cfg->cbb;
      D.45083->last_ins = inst;
      D.45084 = D.45083->last_ins;
      D.45083->code = D.45084;
      <D.45136>:
    }
    {
      struct MonoInst * inst;

      D.45077 = cfg->mempool;
      inst = mono_mempool_alloc (D.45077, 56);
      inst->data.op[1].const_val = 0;
      D.45137 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45137;
      inst->prev = 0B;
      D.45138 = inst->prev;
      inst->next = D.45138;
      inst->opcode = 362;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45139 = inst->sreg3;
      inst->sreg2 = D.45139;
      D.45140 = inst->sreg2;
      inst->sreg1 = D.45140;
      D.45082 = cfg->ip;
      inst->cil_code = D.45082;
      inst->dreg = iid_one_bit_reg;
      inst->data.op[0].const_val = 1;
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      if (D.45084 != 0B) goto <D.45141>; else goto <D.45142>;
      <D.45141>:
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      D.45084->next = inst;
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      inst->prev = D.45084;
      D.45083 = cfg->cbb;
      D.45083->last_ins = inst;
      goto <D.45143>;
      <D.45142>:
      D.45083 = cfg->cbb;
      D.45083 = cfg->cbb;
      D.45083->last_ins = inst;
      D.45084 = D.45083->last_ins;
      D.45083->code = D.45084;
      <D.45143>:
    }
    {
      struct MonoInst * inst;

      D.45077 = cfg->mempool;
      inst = mono_mempool_alloc (D.45077, 56);
      inst->data.op[1].const_val = 0;
      D.45144 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45144;
      inst->prev = 0B;
      D.45145 = inst->prev;
      inst->next = D.45145;
      inst->opcode = 575;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45146 = inst->sreg3;
      inst->sreg2 = D.45146;
      D.45147 = inst->sreg2;
      inst->sreg1 = D.45147;
      D.45082 = cfg->ip;
      inst->cil_code = D.45082;
      inst->dreg = iid_bit_reg;
      inst->sreg1 = iid_one_bit_reg;
      inst->sreg2 = masked_iid_reg;
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      if (D.45084 != 0B) goto <D.45148>; else goto <D.45149>;
      <D.45148>:
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      D.45084->next = inst;
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      inst->prev = D.45084;
      D.45083 = cfg->cbb;
      D.45083->last_ins = inst;
      goto <D.45150>;
      <D.45149>:
      D.45083 = cfg->cbb;
      D.45083 = cfg->cbb;
      D.45083->last_ins = inst;
      D.45084 = D.45083->last_ins;
      D.45083->code = D.45084;
      <D.45150>:
    }
    {
      struct MonoInst * inst;

      D.45077 = cfg->mempool;
      inst = mono_mempool_alloc (D.45077, 56);
      inst->data.op[1].const_val = 0;
      D.45151 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45151;
      inst->prev = 0B;
      D.45152 = inst->prev;
      inst->next = D.45152;
      inst->opcode = 572;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45153 = inst->sreg3;
      inst->sreg2 = D.45153;
      D.45154 = inst->sreg2;
      inst->sreg1 = D.45154;
      D.45082 = cfg->ip;
      inst->cil_code = D.45082;
      inst->dreg = intf_bit_reg;
      inst->sreg1 = ibitmap_byte_reg;
      inst->sreg2 = iid_bit_reg;
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      if (D.45084 != 0B) goto <D.45155>; else goto <D.45156>;
      <D.45155>:
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      D.45084->next = inst;
      D.45083 = cfg->cbb;
      D.45084 = D.45083->last_ins;
      inst->prev = D.45084;
      D.45083 = cfg->cbb;
      D.45083->last_ins = inst;
      goto <D.45157>;
      <D.45156>:
      D.45083 = cfg->cbb;
      D.45083 = cfg->cbb;
      D.45083->last_ins = inst;
      D.45084 = D.45083->last_ins;
      D.45083->code = D.45084;
      <D.45157>:
    }
  }
  goto <D.45158>;
  <D.45091>:
  {
    struct MonoInst * inst;

    D.45077 = cfg->mempool;
    inst = mono_mempool_alloc (D.45077, 56);
    inst->data.op[1].const_val = 0;
    D.45159 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45159;
    inst->prev = 0B;
    D.45160 = inst->prev;
    inst->next = D.45160;
    inst->opcode = 389;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45161 = inst->sreg3;
    inst->sreg2 = D.45161;
    D.45162 = inst->sreg2;
    inst->sreg1 = D.45162;
    D.45082 = cfg->ip;
    inst->cil_code = D.45082;
    inst->dreg = ibitmap_byte_reg;
    inst->sreg1 = ibitmap_reg;
    D.45163 = klass->interface_id;
    D.45164 = D.45163 >> 3;
    D.45165 = (int) D.45164;
    inst->data.op[0].const_val = D.45165;
    D.45083 = cfg->cbb;
    D.45084 = D.45083->last_ins;
    if (D.45084 != 0B) goto <D.45166>; else goto <D.45167>;
    <D.45166>:
    D.45083 = cfg->cbb;
    D.45084 = D.45083->last_ins;
    D.45084->next = inst;
    D.45083 = cfg->cbb;
    D.45084 = D.45083->last_ins;
    inst->prev = D.45084;
    D.45083 = cfg->cbb;
    D.45083->last_ins = inst;
    goto <D.45168>;
    <D.45167>:
    D.45083 = cfg->cbb;
    D.45083 = cfg->cbb;
    D.45083->last_ins = inst;
    D.45084 = D.45083->last_ins;
    D.45083->code = D.45084;
    <D.45168>:
  }
  {
    struct MonoInst * inst;

    D.45077 = cfg->mempool;
    inst = mono_mempool_alloc (D.45077, 56);
    inst->data.op[1].const_val = 0;
    D.45169 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45169;
    inst->prev = 0B;
    D.45170 = inst->prev;
    inst->next = D.45170;
    inst->opcode = 436;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45171 = inst->sreg3;
    inst->sreg2 = D.45171;
    D.45172 = inst->sreg2;
    inst->sreg1 = D.45172;
    D.45082 = cfg->ip;
    inst->cil_code = D.45082;
    inst->dreg = intf_bit_reg;
    inst->sreg1 = ibitmap_byte_reg;
    D.45163 = klass->interface_id;
    D.45173 = (int) D.45163;
    D.45174 = D.45173 & 7;
    D.45175 = 1 << D.45174;
    inst->data.op[1].const_val = D.45175;
    D.45083 = cfg->cbb;
    D.45084 = D.45083->last_ins;
    if (D.45084 != 0B) goto <D.45176>; else goto <D.45177>;
    <D.45176>:
    D.45083 = cfg->cbb;
    D.45084 = D.45083->last_ins;
    D.45084->next = inst;
    D.45083 = cfg->cbb;
    D.45084 = D.45083->last_ins;
    inst->prev = D.45084;
    D.45083 = cfg->cbb;
    D.45083->last_ins = inst;
    goto <D.45178>;
    <D.45177>:
    D.45083 = cfg->cbb;
    D.45083 = cfg->cbb;
    D.45083->last_ins = inst;
    D.45084 = D.45083->last_ins;
    D.45083->code = D.45084;
    <D.45178>:
  }
  <D.45158>:
}


mini_emit_class_check_branch (struct MonoCompile * cfg, int klass_reg, struct MonoClass * klass, int branch_op, struct MonoBasicBlock * target)
{
  unsigned int D.45179;
  unsigned int D.45180;
  unsigned int D.45183;
  struct MonoMemPool * D.45184;
  int D.45185;
  struct MonoInst * D.45186;
  guint16 iftmp.483;
  int D.45191;
  int D.45192;
  const unsigned char * D.45193;
  struct MonoBasicBlock * D.45194;
  struct MonoInst * D.45195;
  int D.45199;
  struct MonoInst * D.45200;
  int D.45201;
  int D.45202;
  int D.45207;
  struct MonoInst * D.45208;
  int D.45209;
  int D.45210;
  int klass.484;
  int D.45215;
  struct MonoInst * D.45216;
  short unsigned int D.45217;
  int D.45218;
  int D.45219;
  unsigned int D.45222;
  unsigned int D.45223;
  unsigned int D.45224;
  int D.45225;
  unsigned char * D.45229;
  struct MonoBasicBlock * * D.45232;
  int D.45233;
  unsigned char * D.45234;
  int D.45235;
  int D.45236;
  unsigned int D.45237;
  unsigned int D.45238;
  struct MonoBasicBlock * * D.45239;
  unsigned int D.45240;
  short unsigned int D.45245;
  short unsigned int D.45246;
  short unsigned int D.45248;
  short unsigned int D.45250;
  struct MonoBasicBlock * * D.45251;
  struct MonoBasicBlock * * D.45252;
  struct MonoBasicBlock * D.45253;
  void * D.45263;
  struct MonoBasicBlock * * D.45264;
  struct MonoBasicBlock * * D.45265;
  unsigned int D.45269;
  unsigned int D.45272;
  unsigned int D.45273;
  int D.45274;

  D.45179 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.45180 = D.45179 & 64;
  if (D.45180 != 0) goto <D.45181>; else goto <D.45182>;
  <D.45181>:
  {
    int const_reg;

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

      D.45184 = cfg->mempool;
      inst = mono_mempool_alloc (D.45184, 56);
      inst->data.op[1].const_val = 0;
      D.45185 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45185;
      inst->prev = 0B;
      D.45186 = inst->prev;
      inst->next = D.45186;
      D.45179 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.45180 = D.45179 & 64;
      if (D.45180 != 0) goto <D.45188>; else goto <D.45189>;
      <D.45188>:
      iftmp.483 = 732;
      goto <D.45190>;
      <D.45189>:
      iftmp.483 = 362;
      <D.45190>:
      inst->opcode = iftmp.483;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45191 = inst->sreg3;
      inst->sreg2 = D.45191;
      D.45192 = inst->sreg2;
      inst->sreg1 = D.45192;
      D.45193 = cfg->ip;
      inst->cil_code = D.45193;
      inst->dreg = const_reg;
      inst->data.op[0].p = klass;
      inst->data.op[1].const_val = 11;
      D.45194 = cfg->cbb;
      D.45195 = D.45194->last_ins;
      if (D.45195 != 0B) goto <D.45196>; else goto <D.45197>;
      <D.45196>:
      D.45194 = cfg->cbb;
      D.45195 = D.45194->last_ins;
      D.45195->next = inst;
      D.45194 = cfg->cbb;
      D.45195 = D.45194->last_ins;
      inst->prev = D.45195;
      D.45194 = cfg->cbb;
      D.45194->last_ins = inst;
      goto <D.45198>;
      <D.45197>:
      D.45194 = cfg->cbb;
      D.45194 = cfg->cbb;
      D.45194->last_ins = inst;
      D.45195 = D.45194->last_ins;
      D.45194->code = D.45195;
      <D.45198>:
    }
    {
      struct MonoInst * inst;

      D.45184 = cfg->mempool;
      inst = mono_mempool_alloc (D.45184, 56);
      inst->data.op[1].const_val = 0;
      D.45199 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45199;
      inst->prev = 0B;
      D.45200 = inst->prev;
      inst->next = D.45200;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45201 = inst->sreg3;
      inst->sreg2 = D.45201;
      D.45202 = inst->sreg2;
      inst->sreg1 = D.45202;
      D.45193 = cfg->ip;
      inst->cil_code = D.45193;
      inst->dreg = -1;
      inst->sreg1 = klass_reg;
      inst->sreg2 = const_reg;
      D.45194 = cfg->cbb;
      D.45195 = D.45194->last_ins;
      if (D.45195 != 0B) goto <D.45203>; else goto <D.45204>;
      <D.45203>:
      D.45194 = cfg->cbb;
      D.45195 = D.45194->last_ins;
      D.45195->next = inst;
      D.45194 = cfg->cbb;
      D.45195 = D.45194->last_ins;
      inst->prev = D.45195;
      D.45194 = cfg->cbb;
      D.45194->last_ins = inst;
      goto <D.45205>;
      <D.45204>:
      D.45194 = cfg->cbb;
      D.45194 = cfg->cbb;
      D.45194->last_ins = inst;
      D.45195 = D.45194->last_ins;
      D.45194->code = D.45195;
      <D.45205>:
    }
  }
  goto <D.45206>;
  <D.45182>:
  {
    struct MonoInst * inst;

    D.45184 = cfg->mempool;
    inst = mono_mempool_alloc (D.45184, 56);
    inst->data.op[1].const_val = 0;
    D.45207 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45207;
    inst->prev = 0B;
    D.45208 = inst->prev;
    inst->next = D.45208;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45209 = inst->sreg3;
    inst->sreg2 = D.45209;
    D.45210 = inst->sreg2;
    inst->sreg1 = D.45210;
    D.45193 = cfg->ip;
    inst->cil_code = D.45193;
    inst->dreg = -1;
    inst->sreg1 = klass_reg;
    klass.484 = (int) klass;
    inst->data.op[1].const_val = klass.484;
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    if (D.45195 != 0B) goto <D.45212>; else goto <D.45213>;
    <D.45212>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45195->next = inst;
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    inst->prev = D.45195;
    D.45194 = cfg->cbb;
    D.45194->last_ins = inst;
    goto <D.45214>;
    <D.45213>:
    D.45194 = cfg->cbb;
    D.45194 = cfg->cbb;
    D.45194->last_ins = inst;
    D.45195 = D.45194->last_ins;
    D.45194->code = D.45195;
    <D.45214>:
  }
  <D.45206>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.45184 = cfg->mempool;
    ins = mono_mempool_alloc (D.45184, 56);
    ins->data.op[1].const_val = 0;
    D.45215 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.45215;
    ins->prev = 0B;
    D.45216 = ins->prev;
    ins->next = D.45216;
    D.45217 = (short unsigned int) branch_op;
    ins->opcode = D.45217;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.45218 = ins->sreg3;
    ins->sreg2 = D.45218;
    D.45219 = ins->sreg2;
    ins->sreg1 = D.45219;
    D.45193 = cfg->ip;
    ins->cil_code = D.45193;
    if (branch_op == 442) goto <D.45220>; else goto <D.45221>;
    <D.45220>:
    D.45184 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.45184, 172);
    D.45222 = cfg->num_bblocks;
    D.45223 = D.45222;
    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 = target;
    D.45194 = cfg->cbb;
    mono_link_bblock (cfg, D.45194, target);
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    if (D.45195 != 0B) goto <D.45226>; else goto <D.45227>;
    <D.45226>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45195->next = ins;
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    ins->prev = D.45195;
    D.45194 = cfg->cbb;
    D.45194->last_ins = ins;
    goto <D.45228>;
    <D.45227>:
    D.45194 = cfg->cbb;
    D.45194 = cfg->cbb;
    D.45194->last_ins = ins;
    D.45195 = D.45194->last_ins;
    D.45194->code = D.45195;
    <D.45228>:
    D.45229 = falsebb->cil_code;
    if (D.45229 != 0B) goto <D.45230>; else goto <D.45231>;
    <D.45230>:
    D.45232 = cfg->cil_offset_to_bb;
    D.45229 = falsebb->cil_code;
    D.45233 = (int) D.45229;
    D.45234 = cfg->cil_start;
    D.45235 = (int) D.45234;
    D.45236 = D.45233 - D.45235;
    D.45237 = (unsigned int) D.45236;
    D.45238 = D.45237 * 4;
    D.45239 = D.45232 + D.45238;
    *D.45239 = falsebb;
    <D.45231>:
    D.45240 = cfg->real_offset;
    falsebb->real_offset = D.45240;
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    if (D.45195 != 0B) goto <D.45244>; else goto <D.45241>;
    <D.45244>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45245 = D.45195->opcode;
    D.45246 = D.45245 + 64985;
    if (D.45246 <= 9) goto <D.45242>; else goto <D.45247>;
    <D.45247>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45245 = D.45195->opcode;
    D.45248 = D.45245 + 64878;
    if (D.45248 <= 9) goto <D.45242>; else goto <D.45249>;
    <D.45249>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45245 = D.45195->opcode;
    D.45250 = D.45245 + 64888;
    if (D.45250 <= 9) goto <D.45242>; else goto <D.45241>;
    <D.45242>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45251 = D.45195->data.op[1].many_blocks;
    D.45252 = D.45251 + 4;
    D.45253 = *D.45252;
    if (D.45253 == 0B) goto <D.45254>; else goto <D.45241>;
    <D.45254>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45251 = D.45195->data.op[1].many_blocks;
    D.45252 = D.45251 + 4;
    *D.45252 = falsebb;
    D.45194 = cfg->cbb;
    mono_link_bblock (cfg, D.45194, falsebb);
    goto <D.45243>;
    <D.45241>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    if (D.45195 == 0B) goto <D.45255>; else goto <D.45257>;
    <D.45257>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45245 = D.45195->opcode;
    if (D.45245 != 442) goto <D.45258>; else goto <D.45256>;
    <D.45258>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45245 = D.45195->opcode;
    if (D.45245 != 759) goto <D.45259>; else goto <D.45256>;
    <D.45259>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45245 = D.45195->opcode;
    D.45246 = D.45245 + 64985;
    if (D.45246 > 9) goto <D.45260>; else goto <D.45256>;
    <D.45260>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45245 = D.45195->opcode;
    D.45248 = D.45245 + 64878;
    if (D.45248 > 9) goto <D.45261>; else goto <D.45256>;
    <D.45261>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45245 = D.45195->opcode;
    D.45250 = D.45245 + 64888;
    if (D.45250 > 9) goto <D.45255>; else goto <D.45256>;
    <D.45255>:
    D.45194 = cfg->cbb;
    mono_link_bblock (cfg, D.45194, falsebb);
    <D.45256>:
    <D.45243>:
    D.45194 = cfg->cbb;
    D.45194->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.45262>;
    <D.45221>:
    D.45184 = cfg->mempool;
    D.45263 = mono_mempool_alloc (D.45184, 8);
    ins->data.op[1].many_blocks = D.45263;
    D.45264 = ins->data.op[1].many_blocks;
    *D.45264 = target;
    D.45264 = ins->data.op[1].many_blocks;
    D.45265 = D.45264 + 4;
    *D.45265 = 0B;
    D.45194 = cfg->cbb;
    mono_link_bblock (cfg, D.45194, target);
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    if (D.45195 != 0B) goto <D.45266>; else goto <D.45267>;
    <D.45266>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45195->next = ins;
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    ins->prev = D.45195;
    D.45194 = cfg->cbb;
    D.45194->last_ins = ins;
    goto <D.45268>;
    <D.45267>:
    D.45194 = cfg->cbb;
    D.45194 = cfg->cbb;
    D.45194->last_ins = ins;
    D.45195 = D.45194->last_ins;
    D.45194->code = D.45195;
    <D.45268>:
    D.45179 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.45269 = D.45179 & 8;
    if (D.45269 == 0) goto <D.45270>; else goto <D.45271>;
    <D.45270>:
    D.45184 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.45184, 172);
    D.45222 = cfg->num_bblocks;
    D.45272 = D.45222;
    D.45273 = D.45272 + 1;
    cfg->num_bblocks = D.45273;
    D.45274 = (int) D.45272;
    falsebb->block_num = D.45274;
    D.45264 = ins->data.op[1].many_blocks;
    D.45265 = D.45264 + 4;
    *D.45265 = falsebb;
    D.45194 = cfg->cbb;
    mono_link_bblock (cfg, D.45194, falsebb);
    D.45229 = falsebb->cil_code;
    if (D.45229 != 0B) goto <D.45275>; else goto <D.45276>;
    <D.45275>:
    D.45232 = cfg->cil_offset_to_bb;
    D.45229 = falsebb->cil_code;
    D.45233 = (int) D.45229;
    D.45234 = cfg->cil_start;
    D.45235 = (int) D.45234;
    D.45236 = D.45233 - D.45235;
    D.45237 = (unsigned int) D.45236;
    D.45238 = D.45237 * 4;
    D.45239 = D.45232 + D.45238;
    *D.45239 = falsebb;
    <D.45276>:
    D.45240 = cfg->real_offset;
    falsebb->real_offset = D.45240;
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    if (D.45195 != 0B) goto <D.45280>; else goto <D.45277>;
    <D.45280>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45245 = D.45195->opcode;
    D.45246 = D.45245 + 64985;
    if (D.45246 <= 9) goto <D.45278>; else goto <D.45281>;
    <D.45281>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45245 = D.45195->opcode;
    D.45248 = D.45245 + 64878;
    if (D.45248 <= 9) goto <D.45278>; else goto <D.45282>;
    <D.45282>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45245 = D.45195->opcode;
    D.45250 = D.45245 + 64888;
    if (D.45250 <= 9) goto <D.45278>; else goto <D.45277>;
    <D.45278>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45251 = D.45195->data.op[1].many_blocks;
    D.45252 = D.45251 + 4;
    D.45253 = *D.45252;
    if (D.45253 == 0B) goto <D.45283>; else goto <D.45277>;
    <D.45283>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45251 = D.45195->data.op[1].many_blocks;
    D.45252 = D.45251 + 4;
    *D.45252 = falsebb;
    D.45194 = cfg->cbb;
    mono_link_bblock (cfg, D.45194, falsebb);
    goto <D.45279>;
    <D.45277>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    if (D.45195 == 0B) goto <D.45284>; else goto <D.45286>;
    <D.45286>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45245 = D.45195->opcode;
    if (D.45245 != 442) goto <D.45287>; else goto <D.45285>;
    <D.45287>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45245 = D.45195->opcode;
    if (D.45245 != 759) goto <D.45288>; else goto <D.45285>;
    <D.45288>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45245 = D.45195->opcode;
    D.45246 = D.45245 + 64985;
    if (D.45246 > 9) goto <D.45289>; else goto <D.45285>;
    <D.45289>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45245 = D.45195->opcode;
    D.45248 = D.45245 + 64878;
    if (D.45248 > 9) goto <D.45290>; else goto <D.45285>;
    <D.45290>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45245 = D.45195->opcode;
    D.45250 = D.45245 + 64888;
    if (D.45250 > 9) goto <D.45284>; else goto <D.45285>;
    <D.45284>:
    D.45194 = cfg->cbb;
    mono_link_bblock (cfg, D.45194, falsebb);
    <D.45285>:
    <D.45279>:
    D.45194 = cfg->cbb;
    D.45194->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.45291>;
    <D.45271>:
    D.45194 = cfg->cbb;
    D.45194->extended = 1;
    <D.45291>:
    <D.45262>:
  }
}


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.45292;
  struct MonoMemPool * D.45293;
  int D.45294;
  struct MonoInst * D.45295;
  int D.45296;
  int D.45297;
  const unsigned char * D.45298;
  struct MonoBasicBlock * D.45299;
  struct MonoInst * D.45300;
  int D.45306;
  struct MonoInst * D.45307;
  int D.45308;
  int D.45309;
  unsigned int D.45312;
  unsigned int D.45313;
  unsigned int D.45314;
  int D.45315;
  unsigned char * D.45319;
  struct MonoBasicBlock * * D.45322;
  int D.45323;
  unsigned char * D.45324;
  int D.45325;
  int D.45326;
  unsigned int D.45327;
  unsigned int D.45328;
  struct MonoBasicBlock * * D.45329;
  unsigned int D.45330;
  short unsigned int D.45335;
  short unsigned int D.45336;
  short unsigned int D.45338;
  short unsigned int D.45340;
  struct MonoBasicBlock * * D.45341;
  struct MonoBasicBlock * * D.45342;
  struct MonoBasicBlock * D.45343;
  void * D.45353;
  struct MonoBasicBlock * * D.45354;
  struct MonoBasicBlock * * D.45355;
  unsigned int D.45359;
  unsigned int D.45360;
  unsigned int D.45363;
  unsigned int D.45364;
  int D.45365;
  int D.45384;
  struct MonoInst * D.45385;
  int D.45386;
  int D.45387;
  int intf_bit_reg;

  D.45292 = alloc_preg (cfg);
  intf_bit_reg = (int) D.45292;
  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.45293 = cfg->mempool;
    inst = mono_mempool_alloc (D.45293, 56);
    inst->data.op[1].const_val = 0;
    D.45294 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45294;
    inst->prev = 0B;
    D.45295 = inst->prev;
    inst->next = D.45295;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45296 = inst->sreg3;
    inst->sreg2 = D.45296;
    D.45297 = inst->sreg2;
    inst->sreg1 = D.45297;
    D.45298 = cfg->ip;
    inst->cil_code = D.45298;
    inst->dreg = -1;
    inst->sreg1 = intf_bit_reg;
    inst->data.op[1].const_val = 0;
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    if (D.45300 != 0B) goto <D.45301>; else goto <D.45302>;
    <D.45301>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45300->next = inst;
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    inst->prev = D.45300;
    D.45299 = cfg->cbb;
    D.45299->last_ins = inst;
    goto <D.45303>;
    <D.45302>:
    D.45299 = cfg->cbb;
    D.45299 = cfg->cbb;
    D.45299->last_ins = inst;
    D.45300 = D.45299->last_ins;
    D.45299->code = D.45300;
    <D.45303>:
  }
  if (true_target != 0B) goto <D.45304>; else goto <D.45305>;
  <D.45304>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.45293 = cfg->mempool;
    ins = mono_mempool_alloc (D.45293, 56);
    ins->data.op[1].const_val = 0;
    D.45306 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.45306;
    ins->prev = 0B;
    D.45307 = ins->prev;
    ins->next = D.45307;
    ins->opcode = 653;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.45308 = ins->sreg3;
    ins->sreg2 = D.45308;
    D.45309 = ins->sreg2;
    ins->sreg1 = D.45309;
    D.45298 = cfg->ip;
    ins->cil_code = D.45298;
    if (0 != 0) goto <D.45310>; else goto <D.45311>;
    <D.45310>:
    D.45293 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.45293, 172);
    D.45312 = cfg->num_bblocks;
    D.45313 = D.45312;
    D.45314 = D.45313 + 1;
    cfg->num_bblocks = D.45314;
    D.45315 = (int) D.45313;
    falsebb->block_num = D.45315;
    ins->data.op[0].target_block = true_target;
    D.45299 = cfg->cbb;
    mono_link_bblock (cfg, D.45299, true_target);
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    if (D.45300 != 0B) goto <D.45316>; else goto <D.45317>;
    <D.45316>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45300->next = ins;
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    ins->prev = D.45300;
    D.45299 = cfg->cbb;
    D.45299->last_ins = ins;
    goto <D.45318>;
    <D.45317>:
    D.45299 = cfg->cbb;
    D.45299 = cfg->cbb;
    D.45299->last_ins = ins;
    D.45300 = D.45299->last_ins;
    D.45299->code = D.45300;
    <D.45318>:
    D.45319 = falsebb->cil_code;
    if (D.45319 != 0B) goto <D.45320>; else goto <D.45321>;
    <D.45320>:
    D.45322 = cfg->cil_offset_to_bb;
    D.45319 = falsebb->cil_code;
    D.45323 = (int) D.45319;
    D.45324 = cfg->cil_start;
    D.45325 = (int) D.45324;
    D.45326 = D.45323 - D.45325;
    D.45327 = (unsigned int) D.45326;
    D.45328 = D.45327 * 4;
    D.45329 = D.45322 + D.45328;
    *D.45329 = falsebb;
    <D.45321>:
    D.45330 = cfg->real_offset;
    falsebb->real_offset = D.45330;
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    if (D.45300 != 0B) goto <D.45334>; else goto <D.45331>;
    <D.45334>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45335 = D.45300->opcode;
    D.45336 = D.45335 + 64985;
    if (D.45336 <= 9) goto <D.45332>; else goto <D.45337>;
    <D.45337>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45335 = D.45300->opcode;
    D.45338 = D.45335 + 64878;
    if (D.45338 <= 9) goto <D.45332>; else goto <D.45339>;
    <D.45339>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45335 = D.45300->opcode;
    D.45340 = D.45335 + 64888;
    if (D.45340 <= 9) goto <D.45332>; else goto <D.45331>;
    <D.45332>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45341 = D.45300->data.op[1].many_blocks;
    D.45342 = D.45341 + 4;
    D.45343 = *D.45342;
    if (D.45343 == 0B) goto <D.45344>; else goto <D.45331>;
    <D.45344>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45341 = D.45300->data.op[1].many_blocks;
    D.45342 = D.45341 + 4;
    *D.45342 = falsebb;
    D.45299 = cfg->cbb;
    mono_link_bblock (cfg, D.45299, falsebb);
    goto <D.45333>;
    <D.45331>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    if (D.45300 == 0B) goto <D.45345>; else goto <D.45347>;
    <D.45347>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45335 = D.45300->opcode;
    if (D.45335 != 442) goto <D.45348>; else goto <D.45346>;
    <D.45348>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45335 = D.45300->opcode;
    if (D.45335 != 759) goto <D.45349>; else goto <D.45346>;
    <D.45349>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45335 = D.45300->opcode;
    D.45336 = D.45335 + 64985;
    if (D.45336 > 9) goto <D.45350>; else goto <D.45346>;
    <D.45350>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45335 = D.45300->opcode;
    D.45338 = D.45335 + 64878;
    if (D.45338 > 9) goto <D.45351>; else goto <D.45346>;
    <D.45351>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45335 = D.45300->opcode;
    D.45340 = D.45335 + 64888;
    if (D.45340 > 9) goto <D.45345>; else goto <D.45346>;
    <D.45345>:
    D.45299 = cfg->cbb;
    mono_link_bblock (cfg, D.45299, falsebb);
    <D.45346>:
    <D.45333>:
    D.45299 = cfg->cbb;
    D.45299->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.45352>;
    <D.45311>:
    D.45293 = cfg->mempool;
    D.45353 = mono_mempool_alloc (D.45293, 8);
    ins->data.op[1].many_blocks = D.45353;
    D.45354 = ins->data.op[1].many_blocks;
    *D.45354 = true_target;
    D.45354 = ins->data.op[1].many_blocks;
    D.45355 = D.45354 + 4;
    *D.45355 = 0B;
    D.45299 = cfg->cbb;
    mono_link_bblock (cfg, D.45299, true_target);
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    if (D.45300 != 0B) goto <D.45356>; else goto <D.45357>;
    <D.45356>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45300->next = ins;
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    ins->prev = D.45300;
    D.45299 = cfg->cbb;
    D.45299->last_ins = ins;
    goto <D.45358>;
    <D.45357>:
    D.45299 = cfg->cbb;
    D.45299 = cfg->cbb;
    D.45299->last_ins = ins;
    D.45300 = D.45299->last_ins;
    D.45299->code = D.45300;
    <D.45358>:
    D.45359 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.45360 = D.45359 & 8;
    if (D.45360 == 0) goto <D.45361>; else goto <D.45362>;
    <D.45361>:
    D.45293 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.45293, 172);
    D.45312 = cfg->num_bblocks;
    D.45363 = D.45312;
    D.45364 = D.45363 + 1;
    cfg->num_bblocks = D.45364;
    D.45365 = (int) D.45363;
    falsebb->block_num = D.45365;
    D.45354 = ins->data.op[1].many_blocks;
    D.45355 = D.45354 + 4;
    *D.45355 = falsebb;
    D.45299 = cfg->cbb;
    mono_link_bblock (cfg, D.45299, falsebb);
    D.45319 = falsebb->cil_code;
    if (D.45319 != 0B) goto <D.45366>; else goto <D.45367>;
    <D.45366>:
    D.45322 = cfg->cil_offset_to_bb;
    D.45319 = falsebb->cil_code;
    D.45323 = (int) D.45319;
    D.45324 = cfg->cil_start;
    D.45325 = (int) D.45324;
    D.45326 = D.45323 - D.45325;
    D.45327 = (unsigned int) D.45326;
    D.45328 = D.45327 * 4;
    D.45329 = D.45322 + D.45328;
    *D.45329 = falsebb;
    <D.45367>:
    D.45330 = cfg->real_offset;
    falsebb->real_offset = D.45330;
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    if (D.45300 != 0B) goto <D.45371>; else goto <D.45368>;
    <D.45371>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45335 = D.45300->opcode;
    D.45336 = D.45335 + 64985;
    if (D.45336 <= 9) goto <D.45369>; else goto <D.45372>;
    <D.45372>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45335 = D.45300->opcode;
    D.45338 = D.45335 + 64878;
    if (D.45338 <= 9) goto <D.45369>; else goto <D.45373>;
    <D.45373>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45335 = D.45300->opcode;
    D.45340 = D.45335 + 64888;
    if (D.45340 <= 9) goto <D.45369>; else goto <D.45368>;
    <D.45369>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45341 = D.45300->data.op[1].many_blocks;
    D.45342 = D.45341 + 4;
    D.45343 = *D.45342;
    if (D.45343 == 0B) goto <D.45374>; else goto <D.45368>;
    <D.45374>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45341 = D.45300->data.op[1].many_blocks;
    D.45342 = D.45341 + 4;
    *D.45342 = falsebb;
    D.45299 = cfg->cbb;
    mono_link_bblock (cfg, D.45299, falsebb);
    goto <D.45370>;
    <D.45368>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    if (D.45300 == 0B) goto <D.45375>; else goto <D.45377>;
    <D.45377>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45335 = D.45300->opcode;
    if (D.45335 != 442) goto <D.45378>; else goto <D.45376>;
    <D.45378>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45335 = D.45300->opcode;
    if (D.45335 != 759) goto <D.45379>; else goto <D.45376>;
    <D.45379>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45335 = D.45300->opcode;
    D.45336 = D.45335 + 64985;
    if (D.45336 > 9) goto <D.45380>; else goto <D.45376>;
    <D.45380>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45335 = D.45300->opcode;
    D.45338 = D.45335 + 64878;
    if (D.45338 > 9) goto <D.45381>; else goto <D.45376>;
    <D.45381>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45335 = D.45300->opcode;
    D.45340 = D.45335 + 64888;
    if (D.45340 > 9) goto <D.45375>; else goto <D.45376>;
    <D.45375>:
    D.45299 = cfg->cbb;
    mono_link_bblock (cfg, D.45299, falsebb);
    <D.45376>:
    <D.45370>:
    D.45299 = cfg->cbb;
    D.45299->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.45382>;
    <D.45362>:
    D.45299 = cfg->cbb;
    D.45299->extended = 1;
    <D.45382>:
    <D.45352>:
  }
  goto <D.45383>;
  <D.45305>:
  {
    struct MonoInst * inst;

    D.45293 = cfg->mempool;
    inst = mono_mempool_alloc (D.45293, 56);
    inst->data.op[1].const_val = 0;
    D.45384 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45384;
    inst->prev = 0B;
    D.45385 = inst->prev;
    inst->next = D.45385;
    inst->opcode = 451;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45386 = inst->sreg3;
    inst->sreg2 = D.45386;
    D.45387 = inst->sreg2;
    inst->sreg1 = D.45387;
    D.45298 = cfg->ip;
    inst->cil_code = D.45298;
    inst->data.op[1].p = "InvalidCastException";
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    if (D.45300 != 0B) goto <D.45388>; else goto <D.45389>;
    <D.45388>:
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    D.45300->next = inst;
    D.45299 = cfg->cbb;
    D.45300 = D.45299->last_ins;
    inst->prev = D.45300;
    D.45299 = cfg->cbb;
    D.45299->last_ins = inst;
    goto <D.45390>;
    <D.45389>:
    D.45299 = cfg->cbb;
    D.45299 = cfg->cbb;
    D.45299->last_ins = inst;
    D.45300 = D.45299->last_ins;
    D.45299->code = D.45300;
    <D.45390>:
  }
  <D.45383>:
}


mini_emit_max_iid_check_class (struct MonoCompile * cfg, int klass_reg, struct MonoClass * klass, struct MonoBasicBlock * false_target)
{
  unsigned int D.45391;
  struct MonoMemPool * D.45392;
  int D.45393;
  struct MonoInst * D.45394;
  int D.45395;
  int D.45396;
  const unsigned char * D.45397;
  struct MonoBasicBlock * D.45398;
  struct MonoInst * D.45399;
  int max_iid_reg;

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

    D.45392 = cfg->mempool;
    inst = mono_mempool_alloc (D.45392, 56);
    inst->data.op[1].const_val = 0;
    D.45393 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45393;
    inst->prev = 0B;
    D.45394 = inst->prev;
    inst->next = D.45394;
    inst->opcode = 392;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45395 = inst->sreg3;
    inst->sreg2 = D.45395;
    D.45396 = inst->sreg2;
    inst->sreg1 = D.45396;
    D.45397 = cfg->ip;
    inst->cil_code = D.45397;
    inst->dreg = max_iid_reg;
    inst->sreg1 = klass_reg;
    inst->data.op[0].const_val = 60;
    D.45398 = cfg->cbb;
    D.45399 = D.45398->last_ins;
    if (D.45399 != 0B) goto <D.45400>; else goto <D.45401>;
    <D.45400>:
    D.45398 = cfg->cbb;
    D.45399 = D.45398->last_ins;
    D.45399->next = inst;
    D.45398 = cfg->cbb;
    D.45399 = D.45398->last_ins;
    inst->prev = D.45399;
    D.45398 = cfg->cbb;
    D.45398->last_ins = inst;
    goto <D.45402>;
    <D.45401>:
    D.45398 = cfg->cbb;
    D.45398 = cfg->cbb;
    D.45398->last_ins = inst;
    D.45399 = D.45398->last_ins;
    D.45398->code = D.45399;
    <D.45402>:
  }
  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.45403;
  unsigned int D.45404;
  unsigned int D.45405;
  short unsigned int D.45406;
  struct MonoMemPool * D.45409;
  int D.45410;
  struct MonoInst * D.45411;
  int D.45412;
  int D.45413;
  const unsigned char * D.45414;
  struct MonoBasicBlock * D.45415;
  struct MonoInst * D.45416;
  int D.45420;
  struct MonoInst * D.45421;
  int D.45422;
  int D.45423;
  int D.45424;
  int D.45428;
  struct MonoInst * D.45429;
  int D.45430;
  int D.45431;
  unsigned int D.45434;
  unsigned int D.45435;
  unsigned int D.45436;
  int D.45437;
  unsigned char * D.45441;
  struct MonoBasicBlock * * D.45444;
  int D.45445;
  unsigned char * D.45446;
  int D.45447;
  int D.45448;
  unsigned int D.45449;
  unsigned int D.45450;
  struct MonoBasicBlock * * D.45451;
  unsigned int D.45452;
  short unsigned int D.45457;
  short unsigned int D.45458;
  short unsigned int D.45460;
  short unsigned int D.45462;
  struct MonoBasicBlock * * D.45463;
  struct MonoBasicBlock * * D.45464;
  struct MonoBasicBlock * D.45465;
  void * D.45475;
  struct MonoBasicBlock * * D.45476;
  struct MonoBasicBlock * * D.45477;
  unsigned int D.45481;
  unsigned int D.45482;
  unsigned int D.45485;
  unsigned int D.45486;
  int D.45487;
  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;
  int D.45516;
  int D.45517;
  int D.45523;
  struct MonoInst * D.45524;
  int D.45525;
  int D.45526;
  int D.45527;
  unsigned int D.45532;
  unsigned int D.45535;
  int D.45536;
  struct MonoInst * D.45537;
  guint16 iftmp.485;
  int D.45542;
  int D.45543;
  int D.45547;
  struct MonoInst * D.45548;
  int D.45549;
  int D.45550;
  int D.45555;
  struct MonoInst * D.45556;
  int D.45557;
  int D.45558;
  int klass.486;
  int D.45563;
  struct MonoInst * D.45564;
  int D.45565;
  int D.45566;
  unsigned int D.45569;
  unsigned int D.45570;
  int D.45571;
  unsigned char * D.45575;
  int D.45578;
  int D.45579;
  unsigned int D.45580;
  unsigned int D.45581;
  struct MonoBasicBlock * * D.45582;
  void * D.45598;
  struct MonoBasicBlock * * D.45599;
  struct MonoBasicBlock * * D.45600;
  unsigned int D.45606;
  unsigned int D.45607;
  int D.45608;
  int idepth_reg;
  int stypes_reg;
  int stype;

  D.45403 = alloc_preg (cfg);
  idepth_reg = (int) D.45403;
  D.45404 = alloc_preg (cfg);
  stypes_reg = (int) D.45404;
  D.45405 = alloc_preg (cfg);
  stype = (int) D.45405;
  mono_class_setup_supertypes (klass);
  D.45406 = klass->idepth;
  if (D.45406 > 6) goto <D.45407>; else goto <D.45408>;
  <D.45407>:
  {
    struct MonoInst * inst;

    D.45409 = cfg->mempool;
    inst = mono_mempool_alloc (D.45409, 56);
    inst->data.op[1].const_val = 0;
    D.45410 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45410;
    inst->prev = 0B;
    D.45411 = inst->prev;
    inst->next = D.45411;
    inst->opcode = 392;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45412 = inst->sreg3;
    inst->sreg2 = D.45412;
    D.45413 = inst->sreg2;
    inst->sreg1 = D.45413;
    D.45414 = cfg->ip;
    inst->cil_code = D.45414;
    inst->dreg = idepth_reg;
    inst->sreg1 = klass_reg;
    inst->data.op[0].const_val = 12;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    if (D.45416 != 0B) goto <D.45417>; else goto <D.45418>;
    <D.45417>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45416->next = inst;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    inst->prev = D.45416;
    D.45415 = cfg->cbb;
    D.45415->last_ins = inst;
    goto <D.45419>;
    <D.45418>:
    D.45415 = cfg->cbb;
    D.45415 = cfg->cbb;
    D.45415->last_ins = inst;
    D.45416 = D.45415->last_ins;
    D.45415->code = D.45416;
    <D.45419>:
  }
  {
    struct MonoInst * inst;

    D.45409 = cfg->mempool;
    inst = mono_mempool_alloc (D.45409, 56);
    inst->data.op[1].const_val = 0;
    D.45420 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45420;
    inst->prev = 0B;
    D.45421 = inst->prev;
    inst->next = D.45421;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45422 = inst->sreg3;
    inst->sreg2 = D.45422;
    D.45423 = inst->sreg2;
    inst->sreg1 = D.45423;
    D.45414 = cfg->ip;
    inst->cil_code = D.45414;
    inst->dreg = -1;
    inst->sreg1 = idepth_reg;
    D.45406 = klass->idepth;
    D.45424 = (int) D.45406;
    inst->data.op[1].const_val = D.45424;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    if (D.45416 != 0B) goto <D.45425>; else goto <D.45426>;
    <D.45425>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45416->next = inst;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    inst->prev = D.45416;
    D.45415 = cfg->cbb;
    D.45415->last_ins = inst;
    goto <D.45427>;
    <D.45426>:
    D.45415 = cfg->cbb;
    D.45415 = cfg->cbb;
    D.45415->last_ins = inst;
    D.45416 = D.45415->last_ins;
    D.45415->code = D.45416;
    <D.45427>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.45409 = cfg->mempool;
    ins = mono_mempool_alloc (D.45409, 56);
    ins->data.op[1].const_val = 0;
    D.45428 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.45428;
    ins->prev = 0B;
    D.45429 = ins->prev;
    ins->next = D.45429;
    ins->opcode = 657;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.45430 = ins->sreg3;
    ins->sreg2 = D.45430;
    D.45431 = ins->sreg2;
    ins->sreg1 = D.45431;
    D.45414 = cfg->ip;
    ins->cil_code = D.45414;
    if (0 != 0) goto <D.45432>; else goto <D.45433>;
    <D.45432>:
    D.45409 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.45409, 172);
    D.45434 = cfg->num_bblocks;
    D.45435 = D.45434;
    D.45436 = D.45435 + 1;
    cfg->num_bblocks = D.45436;
    D.45437 = (int) D.45435;
    falsebb->block_num = D.45437;
    ins->data.op[0].target_block = false_target;
    D.45415 = cfg->cbb;
    mono_link_bblock (cfg, D.45415, false_target);
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    if (D.45416 != 0B) goto <D.45438>; else goto <D.45439>;
    <D.45438>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45416->next = ins;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    ins->prev = D.45416;
    D.45415 = cfg->cbb;
    D.45415->last_ins = ins;
    goto <D.45440>;
    <D.45439>:
    D.45415 = cfg->cbb;
    D.45415 = cfg->cbb;
    D.45415->last_ins = ins;
    D.45416 = D.45415->last_ins;
    D.45415->code = D.45416;
    <D.45440>:
    D.45441 = falsebb->cil_code;
    if (D.45441 != 0B) goto <D.45442>; else goto <D.45443>;
    <D.45442>:
    D.45444 = cfg->cil_offset_to_bb;
    D.45441 = falsebb->cil_code;
    D.45445 = (int) D.45441;
    D.45446 = cfg->cil_start;
    D.45447 = (int) D.45446;
    D.45448 = D.45445 - D.45447;
    D.45449 = (unsigned int) D.45448;
    D.45450 = D.45449 * 4;
    D.45451 = D.45444 + D.45450;
    *D.45451 = falsebb;
    <D.45443>:
    D.45452 = cfg->real_offset;
    falsebb->real_offset = D.45452;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    if (D.45416 != 0B) goto <D.45456>; else goto <D.45453>;
    <D.45456>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45458 = D.45457 + 64985;
    if (D.45458 <= 9) goto <D.45454>; else goto <D.45459>;
    <D.45459>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45460 = D.45457 + 64878;
    if (D.45460 <= 9) goto <D.45454>; else goto <D.45461>;
    <D.45461>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45462 = D.45457 + 64888;
    if (D.45462 <= 9) goto <D.45454>; else goto <D.45453>;
    <D.45454>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45463 = D.45416->data.op[1].many_blocks;
    D.45464 = D.45463 + 4;
    D.45465 = *D.45464;
    if (D.45465 == 0B) goto <D.45466>; else goto <D.45453>;
    <D.45466>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45463 = D.45416->data.op[1].many_blocks;
    D.45464 = D.45463 + 4;
    *D.45464 = falsebb;
    D.45415 = cfg->cbb;
    mono_link_bblock (cfg, D.45415, falsebb);
    goto <D.45455>;
    <D.45453>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    if (D.45416 == 0B) goto <D.45467>; else goto <D.45469>;
    <D.45469>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    if (D.45457 != 442) goto <D.45470>; else goto <D.45468>;
    <D.45470>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    if (D.45457 != 759) goto <D.45471>; else goto <D.45468>;
    <D.45471>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45458 = D.45457 + 64985;
    if (D.45458 > 9) goto <D.45472>; else goto <D.45468>;
    <D.45472>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45460 = D.45457 + 64878;
    if (D.45460 > 9) goto <D.45473>; else goto <D.45468>;
    <D.45473>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45462 = D.45457 + 64888;
    if (D.45462 > 9) goto <D.45467>; else goto <D.45468>;
    <D.45467>:
    D.45415 = cfg->cbb;
    mono_link_bblock (cfg, D.45415, falsebb);
    <D.45468>:
    <D.45455>:
    D.45415 = cfg->cbb;
    D.45415->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.45474>;
    <D.45433>:
    D.45409 = cfg->mempool;
    D.45475 = mono_mempool_alloc (D.45409, 8);
    ins->data.op[1].many_blocks = D.45475;
    D.45476 = ins->data.op[1].many_blocks;
    *D.45476 = false_target;
    D.45476 = ins->data.op[1].many_blocks;
    D.45477 = D.45476 + 4;
    *D.45477 = 0B;
    D.45415 = cfg->cbb;
    mono_link_bblock (cfg, D.45415, false_target);
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    if (D.45416 != 0B) goto <D.45478>; else goto <D.45479>;
    <D.45478>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45416->next = ins;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    ins->prev = D.45416;
    D.45415 = cfg->cbb;
    D.45415->last_ins = ins;
    goto <D.45480>;
    <D.45479>:
    D.45415 = cfg->cbb;
    D.45415 = cfg->cbb;
    D.45415->last_ins = ins;
    D.45416 = D.45415->last_ins;
    D.45415->code = D.45416;
    <D.45480>:
    D.45481 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.45482 = D.45481 & 8;
    if (D.45482 == 0) goto <D.45483>; else goto <D.45484>;
    <D.45483>:
    D.45409 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.45409, 172);
    D.45434 = cfg->num_bblocks;
    D.45485 = D.45434;
    D.45486 = D.45485 + 1;
    cfg->num_bblocks = D.45486;
    D.45487 = (int) D.45485;
    falsebb->block_num = D.45487;
    D.45476 = ins->data.op[1].many_blocks;
    D.45477 = D.45476 + 4;
    *D.45477 = falsebb;
    D.45415 = cfg->cbb;
    mono_link_bblock (cfg, D.45415, falsebb);
    D.45441 = falsebb->cil_code;
    if (D.45441 != 0B) goto <D.45488>; else goto <D.45489>;
    <D.45488>:
    D.45444 = cfg->cil_offset_to_bb;
    D.45441 = falsebb->cil_code;
    D.45445 = (int) D.45441;
    D.45446 = cfg->cil_start;
    D.45447 = (int) D.45446;
    D.45448 = D.45445 - D.45447;
    D.45449 = (unsigned int) D.45448;
    D.45450 = D.45449 * 4;
    D.45451 = D.45444 + D.45450;
    *D.45451 = falsebb;
    <D.45489>:
    D.45452 = cfg->real_offset;
    falsebb->real_offset = D.45452;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    if (D.45416 != 0B) goto <D.45493>; else goto <D.45490>;
    <D.45493>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45458 = D.45457 + 64985;
    if (D.45458 <= 9) goto <D.45491>; else goto <D.45494>;
    <D.45494>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45460 = D.45457 + 64878;
    if (D.45460 <= 9) goto <D.45491>; else goto <D.45495>;
    <D.45495>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45462 = D.45457 + 64888;
    if (D.45462 <= 9) goto <D.45491>; else goto <D.45490>;
    <D.45491>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45463 = D.45416->data.op[1].many_blocks;
    D.45464 = D.45463 + 4;
    D.45465 = *D.45464;
    if (D.45465 == 0B) goto <D.45496>; else goto <D.45490>;
    <D.45496>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45463 = D.45416->data.op[1].many_blocks;
    D.45464 = D.45463 + 4;
    *D.45464 = falsebb;
    D.45415 = cfg->cbb;
    mono_link_bblock (cfg, D.45415, falsebb);
    goto <D.45492>;
    <D.45490>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    if (D.45416 == 0B) goto <D.45497>; else goto <D.45499>;
    <D.45499>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    if (D.45457 != 442) goto <D.45500>; else goto <D.45498>;
    <D.45500>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    if (D.45457 != 759) goto <D.45501>; else goto <D.45498>;
    <D.45501>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45458 = D.45457 + 64985;
    if (D.45458 > 9) goto <D.45502>; else goto <D.45498>;
    <D.45502>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45460 = D.45457 + 64878;
    if (D.45460 > 9) goto <D.45503>; else goto <D.45498>;
    <D.45503>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45462 = D.45457 + 64888;
    if (D.45462 > 9) goto <D.45497>; else goto <D.45498>;
    <D.45497>:
    D.45415 = cfg->cbb;
    mono_link_bblock (cfg, D.45415, falsebb);
    <D.45498>:
    <D.45492>:
    D.45415 = cfg->cbb;
    D.45415->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.45504>;
    <D.45484>:
    D.45415 = cfg->cbb;
    D.45415->extended = 1;
    <D.45504>:
    <D.45474>:
  }
  <D.45408>:
  {
    struct MonoInst * inst;

    D.45409 = cfg->mempool;
    inst = mono_mempool_alloc (D.45409, 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 = 388;
    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.45414 = cfg->ip;
    inst->cil_code = D.45414;
    inst->dreg = stypes_reg;
    inst->sreg1 = klass_reg;
    inst->data.op[0].const_val = 8;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    if (D.45416 != 0B) goto <D.45509>; else goto <D.45510>;
    <D.45509>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45416->next = inst;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    inst->prev = D.45416;
    D.45415 = cfg->cbb;
    D.45415->last_ins = inst;
    goto <D.45511>;
    <D.45510>:
    D.45415 = cfg->cbb;
    D.45415 = cfg->cbb;
    D.45415->last_ins = inst;
    D.45416 = D.45415->last_ins;
    D.45415->code = D.45416;
    <D.45511>:
  }
  {
    struct MonoInst * inst;

    D.45409 = cfg->mempool;
    inst = mono_mempool_alloc (D.45409, 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 = 388;
    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.45414 = cfg->ip;
    inst->cil_code = D.45414;
    inst->dreg = stype;
    inst->sreg1 = stypes_reg;
    D.45406 = klass->idepth;
    D.45424 = (int) D.45406;
    D.45516 = D.45424 + -1;
    D.45517 = D.45516 * 4;
    inst->data.op[0].const_val = D.45517;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    if (D.45416 != 0B) goto <D.45518>; else goto <D.45519>;
    <D.45518>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45416->next = inst;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    inst->prev = D.45416;
    D.45415 = cfg->cbb;
    D.45415->last_ins = inst;
    goto <D.45520>;
    <D.45519>:
    D.45415 = cfg->cbb;
    D.45415 = cfg->cbb;
    D.45415->last_ins = inst;
    D.45416 = D.45415->last_ins;
    D.45415->code = D.45416;
    <D.45520>:
  }
  if (klass_ins != 0B) goto <D.45521>; else goto <D.45522>;
  <D.45521>:
  {
    struct MonoInst * inst;

    D.45409 = cfg->mempool;
    inst = mono_mempool_alloc (D.45409, 56);
    inst->data.op[1].const_val = 0;
    D.45523 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45523;
    inst->prev = 0B;
    D.45524 = inst->prev;
    inst->next = D.45524;
    inst->opcode = 322;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45525 = inst->sreg3;
    inst->sreg2 = D.45525;
    D.45526 = inst->sreg2;
    inst->sreg1 = D.45526;
    D.45414 = cfg->ip;
    inst->cil_code = D.45414;
    inst->dreg = -1;
    inst->sreg1 = stype;
    D.45527 = klass_ins->dreg;
    inst->sreg2 = D.45527;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    if (D.45416 != 0B) goto <D.45528>; else goto <D.45529>;
    <D.45528>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45416->next = inst;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    inst->prev = D.45416;
    D.45415 = cfg->cbb;
    D.45415->last_ins = inst;
    goto <D.45530>;
    <D.45529>:
    D.45415 = cfg->cbb;
    D.45415 = cfg->cbb;
    D.45415->last_ins = inst;
    D.45416 = D.45415->last_ins;
    D.45415->code = D.45416;
    <D.45530>:
  }
  goto <D.45531>;
  <D.45522>:
  D.45481 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.45532 = D.45481 & 64;
  if (D.45532 != 0) goto <D.45533>; else goto <D.45534>;
  <D.45533>:
  {
    int const_reg;

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

      D.45409 = cfg->mempool;
      inst = mono_mempool_alloc (D.45409, 56);
      inst->data.op[1].const_val = 0;
      D.45536 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45536;
      inst->prev = 0B;
      D.45537 = inst->prev;
      inst->next = D.45537;
      D.45481 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.45532 = D.45481 & 64;
      if (D.45532 != 0) goto <D.45539>; else goto <D.45540>;
      <D.45539>:
      iftmp.485 = 732;
      goto <D.45541>;
      <D.45540>:
      iftmp.485 = 362;
      <D.45541>:
      inst->opcode = iftmp.485;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45542 = inst->sreg3;
      inst->sreg2 = D.45542;
      D.45543 = inst->sreg2;
      inst->sreg1 = D.45543;
      D.45414 = cfg->ip;
      inst->cil_code = D.45414;
      inst->dreg = const_reg;
      inst->data.op[0].p = klass;
      inst->data.op[1].const_val = 11;
      D.45415 = cfg->cbb;
      D.45416 = D.45415->last_ins;
      if (D.45416 != 0B) goto <D.45544>; else goto <D.45545>;
      <D.45544>:
      D.45415 = cfg->cbb;
      D.45416 = D.45415->last_ins;
      D.45416->next = inst;
      D.45415 = cfg->cbb;
      D.45416 = D.45415->last_ins;
      inst->prev = D.45416;
      D.45415 = cfg->cbb;
      D.45415->last_ins = inst;
      goto <D.45546>;
      <D.45545>:
      D.45415 = cfg->cbb;
      D.45415 = cfg->cbb;
      D.45415->last_ins = inst;
      D.45416 = D.45415->last_ins;
      D.45415->code = D.45416;
      <D.45546>:
    }
    {
      struct MonoInst * inst;

      D.45409 = cfg->mempool;
      inst = mono_mempool_alloc (D.45409, 56);
      inst->data.op[1].const_val = 0;
      D.45547 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45547;
      inst->prev = 0B;
      D.45548 = inst->prev;
      inst->next = D.45548;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45549 = inst->sreg3;
      inst->sreg2 = D.45549;
      D.45550 = inst->sreg2;
      inst->sreg1 = D.45550;
      D.45414 = cfg->ip;
      inst->cil_code = D.45414;
      inst->dreg = -1;
      inst->sreg1 = stype;
      inst->sreg2 = const_reg;
      D.45415 = cfg->cbb;
      D.45416 = D.45415->last_ins;
      if (D.45416 != 0B) goto <D.45551>; else goto <D.45552>;
      <D.45551>:
      D.45415 = cfg->cbb;
      D.45416 = D.45415->last_ins;
      D.45416->next = inst;
      D.45415 = cfg->cbb;
      D.45416 = D.45415->last_ins;
      inst->prev = D.45416;
      D.45415 = cfg->cbb;
      D.45415->last_ins = inst;
      goto <D.45553>;
      <D.45552>:
      D.45415 = cfg->cbb;
      D.45415 = cfg->cbb;
      D.45415->last_ins = inst;
      D.45416 = D.45415->last_ins;
      D.45415->code = D.45416;
      <D.45553>:
    }
  }
  goto <D.45554>;
  <D.45534>:
  {
    struct MonoInst * inst;

    D.45409 = cfg->mempool;
    inst = mono_mempool_alloc (D.45409, 56);
    inst->data.op[1].const_val = 0;
    D.45555 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45555;
    inst->prev = 0B;
    D.45556 = inst->prev;
    inst->next = D.45556;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45557 = inst->sreg3;
    inst->sreg2 = D.45557;
    D.45558 = inst->sreg2;
    inst->sreg1 = D.45558;
    D.45414 = cfg->ip;
    inst->cil_code = D.45414;
    inst->dreg = -1;
    inst->sreg1 = stype;
    klass.486 = (int) klass;
    inst->data.op[1].const_val = klass.486;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    if (D.45416 != 0B) goto <D.45560>; else goto <D.45561>;
    <D.45560>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45416->next = inst;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    inst->prev = D.45416;
    D.45415 = cfg->cbb;
    D.45415->last_ins = inst;
    goto <D.45562>;
    <D.45561>:
    D.45415 = cfg->cbb;
    D.45415 = cfg->cbb;
    D.45415->last_ins = inst;
    D.45416 = D.45415->last_ins;
    D.45415->code = D.45416;
    <D.45562>:
  }
  <D.45554>:
  <D.45531>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.45409 = cfg->mempool;
    ins = mono_mempool_alloc (D.45409, 56);
    ins->data.op[1].const_val = 0;
    D.45563 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.45563;
    ins->prev = 0B;
    D.45564 = ins->prev;
    ins->next = D.45564;
    ins->opcode = 648;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.45565 = ins->sreg3;
    ins->sreg2 = D.45565;
    D.45566 = ins->sreg2;
    ins->sreg1 = D.45566;
    D.45414 = cfg->ip;
    ins->cil_code = D.45414;
    if (0 != 0) goto <D.45567>; else goto <D.45568>;
    <D.45567>:
    D.45409 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.45409, 172);
    D.45434 = cfg->num_bblocks;
    D.45569 = D.45434;
    D.45570 = D.45569 + 1;
    cfg->num_bblocks = D.45570;
    D.45571 = (int) D.45569;
    falsebb->block_num = D.45571;
    ins->data.op[0].target_block = true_target;
    D.45415 = cfg->cbb;
    mono_link_bblock (cfg, D.45415, true_target);
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    if (D.45416 != 0B) goto <D.45572>; else goto <D.45573>;
    <D.45572>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45416->next = ins;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    ins->prev = D.45416;
    D.45415 = cfg->cbb;
    D.45415->last_ins = ins;
    goto <D.45574>;
    <D.45573>:
    D.45415 = cfg->cbb;
    D.45415 = cfg->cbb;
    D.45415->last_ins = ins;
    D.45416 = D.45415->last_ins;
    D.45415->code = D.45416;
    <D.45574>:
    D.45575 = falsebb->cil_code;
    if (D.45575 != 0B) goto <D.45576>; else goto <D.45577>;
    <D.45576>:
    D.45444 = cfg->cil_offset_to_bb;
    D.45575 = falsebb->cil_code;
    D.45578 = (int) D.45575;
    D.45446 = cfg->cil_start;
    D.45447 = (int) D.45446;
    D.45579 = D.45578 - D.45447;
    D.45580 = (unsigned int) D.45579;
    D.45581 = D.45580 * 4;
    D.45582 = D.45444 + D.45581;
    *D.45582 = falsebb;
    <D.45577>:
    D.45452 = cfg->real_offset;
    falsebb->real_offset = D.45452;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    if (D.45416 != 0B) goto <D.45586>; else goto <D.45583>;
    <D.45586>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45458 = D.45457 + 64985;
    if (D.45458 <= 9) goto <D.45584>; else goto <D.45587>;
    <D.45587>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45460 = D.45457 + 64878;
    if (D.45460 <= 9) goto <D.45584>; else goto <D.45588>;
    <D.45588>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45462 = D.45457 + 64888;
    if (D.45462 <= 9) goto <D.45584>; else goto <D.45583>;
    <D.45584>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45463 = D.45416->data.op[1].many_blocks;
    D.45464 = D.45463 + 4;
    D.45465 = *D.45464;
    if (D.45465 == 0B) goto <D.45589>; else goto <D.45583>;
    <D.45589>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45463 = D.45416->data.op[1].many_blocks;
    D.45464 = D.45463 + 4;
    *D.45464 = falsebb;
    D.45415 = cfg->cbb;
    mono_link_bblock (cfg, D.45415, falsebb);
    goto <D.45585>;
    <D.45583>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    if (D.45416 == 0B) goto <D.45590>; else goto <D.45592>;
    <D.45592>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    if (D.45457 != 442) goto <D.45593>; else goto <D.45591>;
    <D.45593>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    if (D.45457 != 759) goto <D.45594>; else goto <D.45591>;
    <D.45594>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45458 = D.45457 + 64985;
    if (D.45458 > 9) goto <D.45595>; else goto <D.45591>;
    <D.45595>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45460 = D.45457 + 64878;
    if (D.45460 > 9) goto <D.45596>; else goto <D.45591>;
    <D.45596>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45462 = D.45457 + 64888;
    if (D.45462 > 9) goto <D.45590>; else goto <D.45591>;
    <D.45590>:
    D.45415 = cfg->cbb;
    mono_link_bblock (cfg, D.45415, falsebb);
    <D.45591>:
    <D.45585>:
    D.45415 = cfg->cbb;
    D.45415->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.45597>;
    <D.45568>:
    D.45409 = cfg->mempool;
    D.45598 = mono_mempool_alloc (D.45409, 8);
    ins->data.op[1].many_blocks = D.45598;
    D.45599 = ins->data.op[1].many_blocks;
    *D.45599 = true_target;
    D.45599 = ins->data.op[1].many_blocks;
    D.45600 = D.45599 + 4;
    *D.45600 = 0B;
    D.45415 = cfg->cbb;
    mono_link_bblock (cfg, D.45415, true_target);
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    if (D.45416 != 0B) goto <D.45601>; else goto <D.45602>;
    <D.45601>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45416->next = ins;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    ins->prev = D.45416;
    D.45415 = cfg->cbb;
    D.45415->last_ins = ins;
    goto <D.45603>;
    <D.45602>:
    D.45415 = cfg->cbb;
    D.45415 = cfg->cbb;
    D.45415->last_ins = ins;
    D.45416 = D.45415->last_ins;
    D.45415->code = D.45416;
    <D.45603>:
    D.45481 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.45482 = D.45481 & 8;
    if (D.45482 == 0) goto <D.45604>; else goto <D.45605>;
    <D.45604>:
    D.45409 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.45409, 172);
    D.45434 = cfg->num_bblocks;
    D.45606 = D.45434;
    D.45607 = D.45606 + 1;
    cfg->num_bblocks = D.45607;
    D.45608 = (int) D.45606;
    falsebb->block_num = D.45608;
    D.45599 = ins->data.op[1].many_blocks;
    D.45600 = D.45599 + 4;
    *D.45600 = falsebb;
    D.45415 = cfg->cbb;
    mono_link_bblock (cfg, D.45415, falsebb);
    D.45575 = falsebb->cil_code;
    if (D.45575 != 0B) goto <D.45609>; else goto <D.45610>;
    <D.45609>:
    D.45444 = cfg->cil_offset_to_bb;
    D.45575 = falsebb->cil_code;
    D.45578 = (int) D.45575;
    D.45446 = cfg->cil_start;
    D.45447 = (int) D.45446;
    D.45579 = D.45578 - D.45447;
    D.45580 = (unsigned int) D.45579;
    D.45581 = D.45580 * 4;
    D.45582 = D.45444 + D.45581;
    *D.45582 = falsebb;
    <D.45610>:
    D.45452 = cfg->real_offset;
    falsebb->real_offset = D.45452;
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    if (D.45416 != 0B) goto <D.45614>; else goto <D.45611>;
    <D.45614>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45458 = D.45457 + 64985;
    if (D.45458 <= 9) goto <D.45612>; else goto <D.45615>;
    <D.45615>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45460 = D.45457 + 64878;
    if (D.45460 <= 9) goto <D.45612>; else goto <D.45616>;
    <D.45616>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45462 = D.45457 + 64888;
    if (D.45462 <= 9) goto <D.45612>; else goto <D.45611>;
    <D.45612>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45463 = D.45416->data.op[1].many_blocks;
    D.45464 = D.45463 + 4;
    D.45465 = *D.45464;
    if (D.45465 == 0B) goto <D.45617>; else goto <D.45611>;
    <D.45617>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45463 = D.45416->data.op[1].many_blocks;
    D.45464 = D.45463 + 4;
    *D.45464 = falsebb;
    D.45415 = cfg->cbb;
    mono_link_bblock (cfg, D.45415, falsebb);
    goto <D.45613>;
    <D.45611>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    if (D.45416 == 0B) goto <D.45618>; else goto <D.45620>;
    <D.45620>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    if (D.45457 != 442) goto <D.45621>; else goto <D.45619>;
    <D.45621>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    if (D.45457 != 759) goto <D.45622>; else goto <D.45619>;
    <D.45622>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45458 = D.45457 + 64985;
    if (D.45458 > 9) goto <D.45623>; else goto <D.45619>;
    <D.45623>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45460 = D.45457 + 64878;
    if (D.45460 > 9) goto <D.45624>; else goto <D.45619>;
    <D.45624>:
    D.45415 = cfg->cbb;
    D.45416 = D.45415->last_ins;
    D.45457 = D.45416->opcode;
    D.45462 = D.45457 + 64888;
    if (D.45462 > 9) goto <D.45618>; else goto <D.45619>;
    <D.45618>:
    D.45415 = cfg->cbb;
    mono_link_bblock (cfg, D.45415, falsebb);
    <D.45619>:
    <D.45613>:
    D.45415 = cfg->cbb;
    D.45415->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.45625>;
    <D.45605>:
    D.45415 = cfg->cbb;
    D.45415->extended = 1;
    <D.45625>:
    <D.45597>:
  }
}


handle_unbox_gsharedvt (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * obj, struct MonoBasicBlock * * out_cbb)
{
  struct MonoInst * obj.487;
  struct MonoInst * obj.488;
  struct MonoMemPool * D.45628;
  unsigned int D.45629;
  unsigned int D.45630;
  unsigned int D.45631;
  int D.45632;
  unsigned int D.45633;
  unsigned int D.45634;
  int D.45635;
  unsigned int D.45636;
  unsigned int D.45637;
  int D.45638;
  int D.45639;
  struct MonoInst * D.45640;
  int D.45641;
  int D.45642;
  const unsigned char * D.45643;
  int D.45644;
  struct MonoBasicBlock * D.45645;
  struct MonoInst * D.45646;
  int D.45650;
  struct MonoInst * D.45651;
  int D.45652;
  int D.45653;
  unsigned int D.45656;
  unsigned int D.45657;
  int D.45658;
  unsigned char * D.45662;
  struct MonoBasicBlock * * D.45665;
  int D.45666;
  unsigned char * D.45667;
  int D.45668;
  int D.45669;
  unsigned int D.45670;
  unsigned int D.45671;
  struct MonoBasicBlock * * D.45672;
  unsigned int D.45673;
  short unsigned int D.45678;
  short unsigned int D.45679;
  short unsigned int D.45681;
  short unsigned int D.45683;
  struct MonoBasicBlock * * D.45684;
  struct MonoBasicBlock * * D.45685;
  struct MonoBasicBlock * D.45686;
  void * D.45696;
  struct MonoBasicBlock * * D.45697;
  struct MonoBasicBlock * * D.45698;
  unsigned int D.45702;
  unsigned int D.45703;
  unsigned int D.45706;
  unsigned int D.45707;
  int D.45708;
  int D.45726;
  struct MonoInst * D.45727;
  int D.45728;
  int D.45729;
  int D.45733;
  struct MonoInst * D.45734;
  int D.45735;
  int D.45736;
  unsigned int D.45739;
  unsigned int D.45740;
  int D.45741;
  unsigned char * D.45745;
  int D.45748;
  int D.45749;
  unsigned int D.45750;
  unsigned int D.45751;
  struct MonoBasicBlock * * D.45752;
  void * D.45768;
  struct MonoBasicBlock * * D.45769;
  struct MonoBasicBlock * * D.45770;
  unsigned int D.45776;
  unsigned int D.45777;
  int D.45778;
  unsigned int D.45796;
  int D.45797;
  struct MonoInst * D.45798;
  int D.45799;
  int D.45800;
  int D.45801;
  int D.45805;
  struct MonoInst * D.45806;
  int D.45807;
  int D.45808;
  unsigned int D.45811;
  unsigned int D.45812;
  int D.45813;
  unsigned char * D.45817;
  int D.45820;
  int D.45821;
  unsigned int D.45822;
  unsigned int D.45823;
  struct MonoBasicBlock * * D.45824;
  void * D.45840;
  struct MonoBasicBlock * * D.45841;
  struct MonoBasicBlock * * D.45842;
  unsigned int D.45848;
  unsigned int D.45849;
  int D.45850;
  unsigned char * D.45868;
  int D.45871;
  int D.45872;
  unsigned int D.45873;
  unsigned int D.45874;
  struct MonoBasicBlock * * D.45875;
  unsigned int D.45890;
  struct MonoInst * iftmp.489;
  unsigned int dreg.490;
  unsigned int D.45893;
  struct MonoInst * * D.45896;
  unsigned int dreg.491;
  unsigned int D.45898;
  struct MonoInst * * D.45899;
  struct MonoType * D.45903;
  unsigned char D.45904;
  unsigned char D.45905;
  struct MonoClass * D.45906;
  unsigned int D.45907;
  int D.45908;
  int D.45909;
  _Bool D.45910;
  long int D.45911;
  long int D.45912;
  struct MonoType * D.45915;
  int D.45916;
  _Bool iftmp.492;
  int D.45920;
  int iftmp.493;
  unsigned char D.45927;
  struct MonoInst * iftmp.494;
  int D.45933;
  int D.45934;
  unsigned int D.45935;
  sizetype D.45938;
  sizetype D.45939;
  sizetype D.45940;
  struct MonoInst * * D.45941;
  struct MonoInst * iftmp.495;
  int D.45944;
  unsigned int D.45945;
  sizetype D.45948;
  sizetype D.45949;
  struct MonoInst * * D.45950;
  _Bool D.45952;
  long int D.45953;
  long int D.45954;
  _Bool D.45957;
  long int D.45958;
  long int D.45959;
  unsigned char D.45962;
  unsigned char D.45963;
  unsigned char D.45964;
  unsigned char D.45965;
  int D.45969;
  struct MonoInst * D.45970;
  int D.45971;
  int D.45972;
  int D.45973;
  int D.45977;
  struct MonoInst * D.45978;
  int D.45979;
  int D.45980;
  unsigned int D.45983;
  unsigned int D.45984;
  int D.45985;
  unsigned char * D.45989;
  int D.45992;
  int D.45993;
  unsigned int D.45994;
  unsigned int D.45995;
  struct MonoBasicBlock * * D.45996;
  void * D.46012;
  struct MonoBasicBlock * * D.46013;
  struct MonoBasicBlock * * D.46014;
  unsigned int D.46020;
  unsigned int D.46021;
  int D.46022;
  unsigned char * D.46040;
  int D.46043;
  int D.46044;
  unsigned int D.46045;
  unsigned int D.46046;
  struct MonoBasicBlock * * D.46047;
  struct MonoClass * D.46062;
  struct MonoType * D.46063;
  struct MonoInst * iftmp.496;
  int D.46065;
  unsigned int D.46066;
  unsigned int D.46069;
  unsigned int D.46070;
  struct MonoInst * * D.46071;
  int D.46075;
  struct MonoInst * D.46076;
  int D.46077;
  int D.46078;
  unsigned char D.46079;
  unsigned char D.46080;
  struct MonoClass * D.46081;
  unsigned int D.46082;
  int D.46083;
  struct MonoType * D.46086;
  int D.46087;
  _Bool iftmp.497;
  int D.46091;
  int iftmp.498;
  unsigned char D.46098;
  struct MonoInst * iftmp.499;
  int D.46104;
  int D.46105;
  unsigned int D.46106;
  sizetype D.46109;
  sizetype D.46110;
  sizetype D.46111;
  struct MonoInst * * D.46112;
  struct MonoInst * iftmp.500;
  int D.46115;
  unsigned int D.46116;
  sizetype D.46119;
  sizetype D.46120;
  struct MonoInst * * D.46121;
  _Bool D.46123;
  long int D.46124;
  long int D.46125;
  _Bool D.46128;
  long int D.46129;
  long int D.46130;
  unsigned char D.46133;
  unsigned char D.46134;
  unsigned char D.46135;
  unsigned char D.46136;
  int D.46140;
  struct MonoInst * D.46141;
  int D.46142;
  int D.46143;
  unsigned int D.46146;
  unsigned int D.46147;
  int D.46148;
  unsigned char * D.46152;
  int D.46155;
  int D.46156;
  unsigned int D.46157;
  unsigned int D.46158;
  struct MonoBasicBlock * * D.46159;
  void * D.46175;
  struct MonoBasicBlock * * D.46176;
  struct MonoBasicBlock * * D.46177;
  unsigned int D.46183;
  unsigned int D.46184;
  int D.46185;
  unsigned char * D.46203;
  int D.46206;
  int D.46207;
  unsigned int D.46208;
  unsigned int D.46209;
  struct MonoBasicBlock * * D.46210;
  int D.46225;
  struct MonoInst * D.46226;
  unsigned int D.46227;
  short unsigned int D.46228;
  int D.46229;
  int D.46230;
  unsigned char D.46231;
  <unnamed type> D.46232;
  unsigned int D.46233;
  int D.46234;
  struct MonoInst * D.46238;
  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.487 = obj;
      args[0] = obj.487;
      args[1] = klass_inst;
      obj.488 = mono_emit_jit_icall (cfg, mono_object_castclass_unbox, &args);
      obj = obj.488;
      D.45628 = cfg->mempool;
      is_ref_bb = mono_mempool_alloc0 (D.45628, 172);
      D.45629 = cfg->num_bblocks;
      D.45630 = D.45629;
      D.45631 = D.45630 + 1;
      cfg->num_bblocks = D.45631;
      D.45632 = (int) D.45630;
      is_ref_bb->block_num = D.45632;
      D.45628 = cfg->mempool;
      is_nullable_bb = mono_mempool_alloc0 (D.45628, 172);
      D.45629 = cfg->num_bblocks;
      D.45633 = D.45629;
      D.45634 = D.45633 + 1;
      cfg->num_bblocks = D.45634;
      D.45635 = (int) D.45633;
      is_nullable_bb->block_num = D.45635;
      D.45628 = cfg->mempool;
      end_bb = mono_mempool_alloc0 (D.45628, 172);
      D.45629 = cfg->num_bblocks;
      D.45636 = D.45629;
      D.45637 = D.45636 + 1;
      cfg->num_bblocks = D.45637;
      D.45638 = (int) D.45636;
      end_bb->block_num = D.45638;
      is_ref = emit_get_gsharedvt_info_klass (cfg, klass, 19);
      {
        struct MonoInst * inst;

        D.45628 = cfg->mempool;
        inst = mono_mempool_alloc (D.45628, 56);
        inst->data.op[1].const_val = 0;
        D.45639 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.45639;
        inst->prev = 0B;
        D.45640 = inst->prev;
        inst->next = D.45640;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.45641 = inst->sreg3;
        inst->sreg2 = D.45641;
        D.45642 = inst->sreg2;
        inst->sreg1 = D.45642;
        D.45643 = cfg->ip;
        inst->cil_code = D.45643;
        inst->dreg = -1;
        D.45644 = is_ref->dreg;
        inst->sreg1 = D.45644;
        inst->data.op[1].const_val = 1;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.45647>; else goto <D.45648>;
        <D.45647>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45646->next = inst;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        inst->prev = D.45646;
        D.45645 = cfg->cbb;
        D.45645->last_ins = inst;
        goto <D.45649>;
        <D.45648>:
        D.45645 = cfg->cbb;
        D.45645 = cfg->cbb;
        D.45645->last_ins = inst;
        D.45646 = D.45645->last_ins;
        D.45645->code = D.45646;
        <D.45649>:
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.45628 = cfg->mempool;
        ins = mono_mempool_alloc (D.45628, 56);
        ins->data.op[1].const_val = 0;
        D.45650 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.45650;
        ins->prev = 0B;
        D.45651 = ins->prev;
        ins->next = D.45651;
        ins->opcode = 648;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.45652 = ins->sreg3;
        ins->sreg2 = D.45652;
        D.45653 = ins->sreg2;
        ins->sreg1 = D.45653;
        D.45643 = cfg->ip;
        ins->cil_code = D.45643;
        if (0 != 0) goto <D.45654>; else goto <D.45655>;
        <D.45654>:
        D.45628 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45628, 172);
        D.45629 = cfg->num_bblocks;
        D.45656 = D.45629;
        D.45657 = D.45656 + 1;
        cfg->num_bblocks = D.45657;
        D.45658 = (int) D.45656;
        falsebb->block_num = D.45658;
        ins->data.op[0].target_block = is_ref_bb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, is_ref_bb);
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.45659>; else goto <D.45660>;
        <D.45659>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45646->next = ins;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        ins->prev = D.45646;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        goto <D.45661>;
        <D.45660>:
        D.45645 = cfg->cbb;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        D.45646 = D.45645->last_ins;
        D.45645->code = D.45646;
        <D.45661>:
        D.45662 = falsebb->cil_code;
        if (D.45662 != 0B) goto <D.45663>; else goto <D.45664>;
        <D.45663>:
        D.45665 = cfg->cil_offset_to_bb;
        D.45662 = falsebb->cil_code;
        D.45666 = (int) D.45662;
        D.45667 = cfg->cil_start;
        D.45668 = (int) D.45667;
        D.45669 = D.45666 - D.45668;
        D.45670 = (unsigned int) D.45669;
        D.45671 = D.45670 * 4;
        D.45672 = D.45665 + D.45671;
        *D.45672 = falsebb;
        <D.45664>:
        D.45673 = cfg->real_offset;
        falsebb->real_offset = D.45673;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.45677>; else goto <D.45674>;
        <D.45677>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 <= 9) goto <D.45675>; else goto <D.45680>;
        <D.45680>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 <= 9) goto <D.45675>; else goto <D.45682>;
        <D.45682>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 <= 9) goto <D.45675>; else goto <D.45674>;
        <D.45675>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        D.45686 = *D.45685;
        if (D.45686 == 0B) goto <D.45687>; else goto <D.45674>;
        <D.45687>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        *D.45685 = falsebb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        goto <D.45676>;
        <D.45674>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 == 0B) goto <D.45688>; else goto <D.45690>;
        <D.45690>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 442) goto <D.45691>; else goto <D.45689>;
        <D.45691>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 759) goto <D.45692>; else goto <D.45689>;
        <D.45692>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 > 9) goto <D.45693>; else goto <D.45689>;
        <D.45693>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 > 9) goto <D.45694>; else goto <D.45689>;
        <D.45694>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 > 9) goto <D.45688>; else goto <D.45689>;
        <D.45688>:
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        <D.45689>:
        <D.45676>:
        D.45645 = cfg->cbb;
        D.45645->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.45695>;
        <D.45655>:
        D.45628 = cfg->mempool;
        D.45696 = mono_mempool_alloc (D.45628, 8);
        ins->data.op[1].many_blocks = D.45696;
        D.45697 = ins->data.op[1].many_blocks;
        *D.45697 = is_ref_bb;
        D.45697 = ins->data.op[1].many_blocks;
        D.45698 = D.45697 + 4;
        *D.45698 = 0B;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, is_ref_bb);
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.45699>; else goto <D.45700>;
        <D.45699>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45646->next = ins;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        ins->prev = D.45646;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        goto <D.45701>;
        <D.45700>:
        D.45645 = cfg->cbb;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        D.45646 = D.45645->last_ins;
        D.45645->code = D.45646;
        <D.45701>:
        D.45702 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.45703 = D.45702 & 8;
        if (D.45703 == 0) goto <D.45704>; else goto <D.45705>;
        <D.45704>:
        D.45628 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45628, 172);
        D.45629 = cfg->num_bblocks;
        D.45706 = D.45629;
        D.45707 = D.45706 + 1;
        cfg->num_bblocks = D.45707;
        D.45708 = (int) D.45706;
        falsebb->block_num = D.45708;
        D.45697 = ins->data.op[1].many_blocks;
        D.45698 = D.45697 + 4;
        *D.45698 = falsebb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        D.45662 = falsebb->cil_code;
        if (D.45662 != 0B) goto <D.45709>; else goto <D.45710>;
        <D.45709>:
        D.45665 = cfg->cil_offset_to_bb;
        D.45662 = falsebb->cil_code;
        D.45666 = (int) D.45662;
        D.45667 = cfg->cil_start;
        D.45668 = (int) D.45667;
        D.45669 = D.45666 - D.45668;
        D.45670 = (unsigned int) D.45669;
        D.45671 = D.45670 * 4;
        D.45672 = D.45665 + D.45671;
        *D.45672 = falsebb;
        <D.45710>:
        D.45673 = cfg->real_offset;
        falsebb->real_offset = D.45673;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.45714>; else goto <D.45711>;
        <D.45714>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 <= 9) goto <D.45712>; else goto <D.45715>;
        <D.45715>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 <= 9) goto <D.45712>; else goto <D.45716>;
        <D.45716>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 <= 9) goto <D.45712>; else goto <D.45711>;
        <D.45712>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        D.45686 = *D.45685;
        if (D.45686 == 0B) goto <D.45717>; else goto <D.45711>;
        <D.45717>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        *D.45685 = falsebb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        goto <D.45713>;
        <D.45711>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 == 0B) goto <D.45718>; else goto <D.45720>;
        <D.45720>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 442) goto <D.45721>; else goto <D.45719>;
        <D.45721>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 759) goto <D.45722>; else goto <D.45719>;
        <D.45722>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 > 9) goto <D.45723>; else goto <D.45719>;
        <D.45723>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 > 9) goto <D.45724>; else goto <D.45719>;
        <D.45724>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 > 9) goto <D.45718>; else goto <D.45719>;
        <D.45718>:
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        <D.45719>:
        <D.45713>:
        D.45645 = cfg->cbb;
        D.45645->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.45725>;
        <D.45705>:
        D.45645 = cfg->cbb;
        D.45645->extended = 1;
        <D.45725>:
        <D.45695>:
      }
      {
        struct MonoInst * inst;

        D.45628 = cfg->mempool;
        inst = mono_mempool_alloc (D.45628, 56);
        inst->data.op[1].const_val = 0;
        D.45726 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.45726;
        inst->prev = 0B;
        D.45727 = inst->prev;
        inst->next = D.45727;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.45728 = inst->sreg3;
        inst->sreg2 = D.45728;
        D.45729 = inst->sreg2;
        inst->sreg1 = D.45729;
        D.45643 = cfg->ip;
        inst->cil_code = D.45643;
        inst->dreg = -1;
        D.45644 = is_ref->dreg;
        inst->sreg1 = D.45644;
        inst->data.op[1].const_val = 2;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.45730>; else goto <D.45731>;
        <D.45730>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45646->next = inst;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        inst->prev = D.45646;
        D.45645 = cfg->cbb;
        D.45645->last_ins = inst;
        goto <D.45732>;
        <D.45731>:
        D.45645 = cfg->cbb;
        D.45645 = cfg->cbb;
        D.45645->last_ins = inst;
        D.45646 = D.45645->last_ins;
        D.45645->code = D.45646;
        <D.45732>:
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.45628 = cfg->mempool;
        ins = mono_mempool_alloc (D.45628, 56);
        ins->data.op[1].const_val = 0;
        D.45733 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.45733;
        ins->prev = 0B;
        D.45734 = ins->prev;
        ins->next = D.45734;
        ins->opcode = 648;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.45735 = ins->sreg3;
        ins->sreg2 = D.45735;
        D.45736 = ins->sreg2;
        ins->sreg1 = D.45736;
        D.45643 = cfg->ip;
        ins->cil_code = D.45643;
        if (0 != 0) goto <D.45737>; else goto <D.45738>;
        <D.45737>:
        D.45628 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45628, 172);
        D.45629 = cfg->num_bblocks;
        D.45739 = D.45629;
        D.45740 = D.45739 + 1;
        cfg->num_bblocks = D.45740;
        D.45741 = (int) D.45739;
        falsebb->block_num = D.45741;
        ins->data.op[0].target_block = is_nullable_bb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, is_nullable_bb);
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.45742>; else goto <D.45743>;
        <D.45742>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45646->next = ins;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        ins->prev = D.45646;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        goto <D.45744>;
        <D.45743>:
        D.45645 = cfg->cbb;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        D.45646 = D.45645->last_ins;
        D.45645->code = D.45646;
        <D.45744>:
        D.45745 = falsebb->cil_code;
        if (D.45745 != 0B) goto <D.45746>; else goto <D.45747>;
        <D.45746>:
        D.45665 = cfg->cil_offset_to_bb;
        D.45745 = falsebb->cil_code;
        D.45748 = (int) D.45745;
        D.45667 = cfg->cil_start;
        D.45668 = (int) D.45667;
        D.45749 = D.45748 - D.45668;
        D.45750 = (unsigned int) D.45749;
        D.45751 = D.45750 * 4;
        D.45752 = D.45665 + D.45751;
        *D.45752 = falsebb;
        <D.45747>:
        D.45673 = cfg->real_offset;
        falsebb->real_offset = D.45673;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.45756>; else goto <D.45753>;
        <D.45756>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 <= 9) goto <D.45754>; else goto <D.45757>;
        <D.45757>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 <= 9) goto <D.45754>; else goto <D.45758>;
        <D.45758>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 <= 9) goto <D.45754>; else goto <D.45753>;
        <D.45754>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        D.45686 = *D.45685;
        if (D.45686 == 0B) goto <D.45759>; else goto <D.45753>;
        <D.45759>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        *D.45685 = falsebb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        goto <D.45755>;
        <D.45753>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 == 0B) goto <D.45760>; else goto <D.45762>;
        <D.45762>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 442) goto <D.45763>; else goto <D.45761>;
        <D.45763>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 759) goto <D.45764>; else goto <D.45761>;
        <D.45764>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 > 9) goto <D.45765>; else goto <D.45761>;
        <D.45765>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 > 9) goto <D.45766>; else goto <D.45761>;
        <D.45766>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 > 9) goto <D.45760>; else goto <D.45761>;
        <D.45760>:
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        <D.45761>:
        <D.45755>:
        D.45645 = cfg->cbb;
        D.45645->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.45767>;
        <D.45738>:
        D.45628 = cfg->mempool;
        D.45768 = mono_mempool_alloc (D.45628, 8);
        ins->data.op[1].many_blocks = D.45768;
        D.45769 = ins->data.op[1].many_blocks;
        *D.45769 = is_nullable_bb;
        D.45769 = ins->data.op[1].many_blocks;
        D.45770 = D.45769 + 4;
        *D.45770 = 0B;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, is_nullable_bb);
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.45771>; else goto <D.45772>;
        <D.45771>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45646->next = ins;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        ins->prev = D.45646;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        goto <D.45773>;
        <D.45772>:
        D.45645 = cfg->cbb;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        D.45646 = D.45645->last_ins;
        D.45645->code = D.45646;
        <D.45773>:
        D.45702 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.45703 = D.45702 & 8;
        if (D.45703 == 0) goto <D.45774>; else goto <D.45775>;
        <D.45774>:
        D.45628 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45628, 172);
        D.45629 = cfg->num_bblocks;
        D.45776 = D.45629;
        D.45777 = D.45776 + 1;
        cfg->num_bblocks = D.45777;
        D.45778 = (int) D.45776;
        falsebb->block_num = D.45778;
        D.45769 = ins->data.op[1].many_blocks;
        D.45770 = D.45769 + 4;
        *D.45770 = falsebb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        D.45745 = falsebb->cil_code;
        if (D.45745 != 0B) goto <D.45779>; else goto <D.45780>;
        <D.45779>:
        D.45665 = cfg->cil_offset_to_bb;
        D.45745 = falsebb->cil_code;
        D.45748 = (int) D.45745;
        D.45667 = cfg->cil_start;
        D.45668 = (int) D.45667;
        D.45749 = D.45748 - D.45668;
        D.45750 = (unsigned int) D.45749;
        D.45751 = D.45750 * 4;
        D.45752 = D.45665 + D.45751;
        *D.45752 = falsebb;
        <D.45780>:
        D.45673 = cfg->real_offset;
        falsebb->real_offset = D.45673;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.45784>; else goto <D.45781>;
        <D.45784>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 <= 9) goto <D.45782>; else goto <D.45785>;
        <D.45785>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 <= 9) goto <D.45782>; else goto <D.45786>;
        <D.45786>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 <= 9) goto <D.45782>; else goto <D.45781>;
        <D.45782>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        D.45686 = *D.45685;
        if (D.45686 == 0B) goto <D.45787>; else goto <D.45781>;
        <D.45787>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        *D.45685 = falsebb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        goto <D.45783>;
        <D.45781>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 == 0B) goto <D.45788>; else goto <D.45790>;
        <D.45790>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 442) goto <D.45791>; else goto <D.45789>;
        <D.45791>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 759) goto <D.45792>; else goto <D.45789>;
        <D.45792>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 > 9) goto <D.45793>; else goto <D.45789>;
        <D.45793>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 > 9) goto <D.45794>; else goto <D.45789>;
        <D.45794>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 > 9) goto <D.45788>; else goto <D.45789>;
        <D.45788>:
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        <D.45789>:
        <D.45783>:
        D.45645 = cfg->cbb;
        D.45645->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.45795>;
        <D.45775>:
        D.45645 = cfg->cbb;
        D.45645->extended = 1;
        <D.45795>:
        <D.45767>:
      }
      D.45796 = alloc_dreg (cfg, 5);
      addr_reg = (int) D.45796;
      D.45628 = cfg->mempool;
      addr = mono_mempool_alloc (D.45628, 56);
      addr->data.op[1].const_val = 0;
      D.45797 = addr->data.op[1].const_val;
      addr->data.op[0].const_val = D.45797;
      addr->prev = 0B;
      D.45798 = addr->prev;
      addr->next = D.45798;
      addr->opcode = 429;
      addr->flags = 0;
      addr->type = 0;
      addr->dreg = -1;
      addr->sreg3 = -1;
      D.45799 = addr->sreg3;
      addr->sreg2 = D.45799;
      D.45800 = addr->sreg2;
      addr->sreg1 = D.45800;
      D.45643 = cfg->ip;
      addr->cil_code = D.45643;
      addr->dreg = addr_reg;
      obj.487 = obj;
      D.45801 = obj.487->dreg;
      addr->sreg1 = D.45801;
      addr->data.op[1].const_val = 8;
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      if (D.45646 != 0B) goto <D.45802>; else goto <D.45803>;
      <D.45802>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45646->next = addr;
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      addr->prev = D.45646;
      D.45645 = cfg->cbb;
      D.45645->last_ins = addr;
      goto <D.45804>;
      <D.45803>:
      D.45645 = cfg->cbb;
      D.45645 = cfg->cbb;
      D.45645->last_ins = addr;
      D.45646 = D.45645->last_ins;
      D.45645->code = D.45646;
      <D.45804>:
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.45628 = cfg->mempool;
        ins = mono_mempool_alloc (D.45628, 56);
        ins->data.op[1].const_val = 0;
        D.45805 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.45805;
        ins->prev = 0B;
        D.45806 = ins->prev;
        ins->next = D.45806;
        ins->opcode = 442;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.45807 = ins->sreg3;
        ins->sreg2 = D.45807;
        D.45808 = ins->sreg2;
        ins->sreg1 = D.45808;
        D.45643 = cfg->ip;
        ins->cil_code = D.45643;
        if (1 != 0) goto <D.45809>; else goto <D.45810>;
        <D.45809>:
        D.45628 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45628, 172);
        D.45629 = cfg->num_bblocks;
        D.45811 = D.45629;
        D.45812 = D.45811 + 1;
        cfg->num_bblocks = D.45812;
        D.45813 = (int) D.45811;
        falsebb->block_num = D.45813;
        ins->data.op[0].target_block = end_bb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, end_bb);
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.45814>; else goto <D.45815>;
        <D.45814>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45646->next = ins;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        ins->prev = D.45646;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        goto <D.45816>;
        <D.45815>:
        D.45645 = cfg->cbb;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        D.45646 = D.45645->last_ins;
        D.45645->code = D.45646;
        <D.45816>:
        D.45817 = falsebb->cil_code;
        if (D.45817 != 0B) goto <D.45818>; else goto <D.45819>;
        <D.45818>:
        D.45665 = cfg->cil_offset_to_bb;
        D.45817 = falsebb->cil_code;
        D.45820 = (int) D.45817;
        D.45667 = cfg->cil_start;
        D.45668 = (int) D.45667;
        D.45821 = D.45820 - D.45668;
        D.45822 = (unsigned int) D.45821;
        D.45823 = D.45822 * 4;
        D.45824 = D.45665 + D.45823;
        *D.45824 = falsebb;
        <D.45819>:
        D.45673 = cfg->real_offset;
        falsebb->real_offset = D.45673;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.45828>; else goto <D.45825>;
        <D.45828>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 <= 9) goto <D.45826>; else goto <D.45829>;
        <D.45829>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 <= 9) goto <D.45826>; else goto <D.45830>;
        <D.45830>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 <= 9) goto <D.45826>; else goto <D.45825>;
        <D.45826>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        D.45686 = *D.45685;
        if (D.45686 == 0B) goto <D.45831>; else goto <D.45825>;
        <D.45831>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        *D.45685 = falsebb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        goto <D.45827>;
        <D.45825>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 == 0B) goto <D.45832>; else goto <D.45834>;
        <D.45834>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 442) goto <D.45835>; else goto <D.45833>;
        <D.45835>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 759) goto <D.45836>; else goto <D.45833>;
        <D.45836>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 > 9) goto <D.45837>; else goto <D.45833>;
        <D.45837>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 > 9) goto <D.45838>; else goto <D.45833>;
        <D.45838>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 > 9) goto <D.45832>; else goto <D.45833>;
        <D.45832>:
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        <D.45833>:
        <D.45827>:
        D.45645 = cfg->cbb;
        D.45645->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.45839>;
        <D.45810>:
        D.45628 = cfg->mempool;
        D.45840 = mono_mempool_alloc (D.45628, 8);
        ins->data.op[1].many_blocks = D.45840;
        D.45841 = ins->data.op[1].many_blocks;
        *D.45841 = end_bb;
        D.45841 = ins->data.op[1].many_blocks;
        D.45842 = D.45841 + 4;
        *D.45842 = 0B;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, end_bb);
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.45843>; else goto <D.45844>;
        <D.45843>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45646->next = ins;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        ins->prev = D.45646;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        goto <D.45845>;
        <D.45844>:
        D.45645 = cfg->cbb;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        D.45646 = D.45645->last_ins;
        D.45645->code = D.45646;
        <D.45845>:
        D.45702 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.45703 = D.45702 & 8;
        if (D.45703 == 0) goto <D.45846>; else goto <D.45847>;
        <D.45846>:
        D.45628 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45628, 172);
        D.45629 = cfg->num_bblocks;
        D.45848 = D.45629;
        D.45849 = D.45848 + 1;
        cfg->num_bblocks = D.45849;
        D.45850 = (int) D.45848;
        falsebb->block_num = D.45850;
        D.45841 = ins->data.op[1].many_blocks;
        D.45842 = D.45841 + 4;
        *D.45842 = falsebb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        D.45817 = falsebb->cil_code;
        if (D.45817 != 0B) goto <D.45851>; else goto <D.45852>;
        <D.45851>:
        D.45665 = cfg->cil_offset_to_bb;
        D.45817 = falsebb->cil_code;
        D.45820 = (int) D.45817;
        D.45667 = cfg->cil_start;
        D.45668 = (int) D.45667;
        D.45821 = D.45820 - D.45668;
        D.45822 = (unsigned int) D.45821;
        D.45823 = D.45822 * 4;
        D.45824 = D.45665 + D.45823;
        *D.45824 = falsebb;
        <D.45852>:
        D.45673 = cfg->real_offset;
        falsebb->real_offset = D.45673;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.45856>; else goto <D.45853>;
        <D.45856>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 <= 9) goto <D.45854>; else goto <D.45857>;
        <D.45857>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 <= 9) goto <D.45854>; else goto <D.45858>;
        <D.45858>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 <= 9) goto <D.45854>; else goto <D.45853>;
        <D.45854>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        D.45686 = *D.45685;
        if (D.45686 == 0B) goto <D.45859>; else goto <D.45853>;
        <D.45859>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        *D.45685 = falsebb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        goto <D.45855>;
        <D.45853>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 == 0B) goto <D.45860>; else goto <D.45862>;
        <D.45862>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 442) goto <D.45863>; else goto <D.45861>;
        <D.45863>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 759) goto <D.45864>; else goto <D.45861>;
        <D.45864>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 > 9) goto <D.45865>; else goto <D.45861>;
        <D.45865>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 > 9) goto <D.45866>; else goto <D.45861>;
        <D.45866>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 > 9) goto <D.45860>; else goto <D.45861>;
        <D.45860>:
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        <D.45861>:
        <D.45855>:
        D.45645 = cfg->cbb;
        D.45645->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.45867>;
        <D.45847>:
        D.45645 = cfg->cbb;
        D.45645->extended = 1;
        <D.45867>:
        <D.45839>:
      }
      D.45868 = is_ref_bb->cil_code;
      if (D.45868 != 0B) goto <D.45869>; else goto <D.45870>;
      <D.45869>:
      D.45665 = cfg->cil_offset_to_bb;
      D.45868 = is_ref_bb->cil_code;
      D.45871 = (int) D.45868;
      D.45667 = cfg->cil_start;
      D.45668 = (int) D.45667;
      D.45872 = D.45871 - D.45668;
      D.45873 = (unsigned int) D.45872;
      D.45874 = D.45873 * 4;
      D.45875 = D.45665 + D.45874;
      *D.45875 = is_ref_bb;
      <D.45870>:
      D.45673 = cfg->real_offset;
      is_ref_bb->real_offset = D.45673;
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      if (D.45646 != 0B) goto <D.45879>; else goto <D.45876>;
      <D.45879>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      D.45679 = D.45678 + 64985;
      if (D.45679 <= 9) goto <D.45877>; else goto <D.45880>;
      <D.45880>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      D.45681 = D.45678 + 64878;
      if (D.45681 <= 9) goto <D.45877>; else goto <D.45881>;
      <D.45881>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      D.45683 = D.45678 + 64888;
      if (D.45683 <= 9) goto <D.45877>; else goto <D.45876>;
      <D.45877>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45684 = D.45646->data.op[1].many_blocks;
      D.45685 = D.45684 + 4;
      D.45686 = *D.45685;
      if (D.45686 == 0B) goto <D.45882>; else goto <D.45876>;
      <D.45882>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45684 = D.45646->data.op[1].many_blocks;
      D.45685 = D.45684 + 4;
      *D.45685 = is_ref_bb;
      D.45645 = cfg->cbb;
      mono_link_bblock (cfg, D.45645, is_ref_bb);
      goto <D.45878>;
      <D.45876>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      if (D.45646 == 0B) goto <D.45883>; else goto <D.45885>;
      <D.45885>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      if (D.45678 != 442) goto <D.45886>; else goto <D.45884>;
      <D.45886>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      if (D.45678 != 759) goto <D.45887>; else goto <D.45884>;
      <D.45887>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      D.45679 = D.45678 + 64985;
      if (D.45679 > 9) goto <D.45888>; else goto <D.45884>;
      <D.45888>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      D.45681 = D.45678 + 64878;
      if (D.45681 > 9) goto <D.45889>; else goto <D.45884>;
      <D.45889>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      D.45683 = D.45678 + 64888;
      if (D.45683 > 9) goto <D.45883>; else goto <D.45884>;
      <D.45883>:
      D.45645 = cfg->cbb;
      mono_link_bblock (cfg, D.45645, is_ref_bb);
      <D.45884>:
      <D.45878>:
      D.45645 = cfg->cbb;
      D.45645->next_bb = is_ref_bb;
      cfg->cbb = is_ref_bb;
      D.45890 = alloc_ireg (cfg);
      dreg = (int) D.45890;
      {
        struct MonoInst * var;

        dreg.490 = (unsigned int) dreg;
        D.45893 = cfg->vreg_to_inst_len;
        if (dreg.490 < D.45893) goto <D.45894>; else goto <D.45895>;
        <D.45894>:
        D.45896 = cfg->vreg_to_inst;
        dreg.491 = (unsigned int) dreg;
        D.45898 = dreg.491 * 4;
        D.45899 = D.45896 + D.45898;
        iftmp.489 = *D.45899;
        goto <D.45900>;
        <D.45895>:
        iftmp.489 = 0B;
        <D.45900>:
        var = iftmp.489;
        if (var == 0B) goto <D.45901>; else goto <D.45902>;
        <D.45901>:
        D.45903 = &klass->byval_arg;
        var = mono_compile_create_var_for_vreg (cfg, D.45903, 329, dreg);
        <D.45902>:
        D.45628 = cfg->mempool;
        addr = mono_mempool_alloc (D.45628, 56);
        addr->data.op[1].const_val = 0;
        D.45797 = addr->data.op[1].const_val;
        addr->data.op[0].const_val = D.45797;
        addr->prev = 0B;
        D.45798 = addr->prev;
        addr->next = D.45798;
        addr->opcode = 314;
        addr->flags = 0;
        addr->type = 0;
        addr->dreg = -1;
        addr->sreg3 = -1;
        D.45799 = addr->sreg3;
        addr->sreg2 = D.45799;
        D.45800 = addr->sreg2;
        addr->sreg1 = D.45800;
        D.45643 = cfg->ip;
        addr->cil_code = D.45643;
        addr->data.op[0].p = var;
        D.45904 = var->flags;
        D.45905 = D.45904 | 16;
        var->flags = D.45905;
        addr->type = 5;
        D.45906 = var->klass;
        addr->klass = D.45906;
        D.45907 = alloc_dreg (cfg, 5);
        D.45908 = (int) D.45907;
        addr->dreg = D.45908;
        cfg->has_indirection = 1;
        D.45909 = cfg->gsharedvt;
        D.45910 = D.45909 != 0;
        D.45911 = (long int) D.45910;
        D.45912 = __builtin_expect (D.45911, 0);
        if (D.45912 != 0) goto <D.45913>; else goto <D.45914>;
        <D.45913>:
        D.45915 = var->data.op[1].vtype;
        D.45916 = mini_is_gsharedvt_variable_type (cfg, D.45915);
        if (D.45916 != 0) goto <D.45917>; else goto <D.45918>;
        <D.45917>:
        handle_gsharedvt_ldaddr (cfg);
        <D.45918>:
        <D.45914>:
        D.45920 = mono_arch_is_soft_float ();
        if (D.45920 != 0) goto <D.45921>; else goto <D.45922>;
        <D.45921>:
        D.45927 = var->type;
        if (D.45927 == 2) goto <D.45924>; else goto <D.45928>;
        <D.45928>:
        D.45927 = var->type;
        if (D.45927 == 4) goto <D.45924>; else goto <D.45925>;
        <D.45924>:
        iftmp.493 = 1;
        goto <D.45926>;
        <D.45925>:
        iftmp.493 = 0;
        <D.45926>:
        iftmp.492 = (_Bool) iftmp.493;
        goto <D.45929>;
        <D.45922>:
        D.45927 = var->type;
        iftmp.492 = D.45927 == 2;
        <D.45929>:
        if (iftmp.492 != 0) goto <D.45930>; else goto <D.45931>;
        <D.45930>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.45933 = var->dreg;
          D.45934 = D.45933 + 1;
          D.45935 = (unsigned int) D.45934;
          D.45893 = cfg->vreg_to_inst_len;
          if (D.45935 < D.45893) goto <D.45936>; else goto <D.45937>;
          <D.45936>:
          D.45896 = cfg->vreg_to_inst;
          D.45933 = var->dreg;
          D.45938 = (sizetype) D.45933;
          D.45939 = D.45938 + 1;
          D.45940 = D.45939 * 4;
          D.45941 = D.45896 + D.45940;
          iftmp.494 = *D.45941;
          goto <D.45942>;
          <D.45937>:
          iftmp.494 = 0B;
          <D.45942>:
          var1 = iftmp.494;
          D.45933 = var->dreg;
          D.45944 = D.45933 + 2;
          D.45945 = (unsigned int) D.45944;
          D.45893 = cfg->vreg_to_inst_len;
          if (D.45945 < D.45893) goto <D.45946>; else goto <D.45947>;
          <D.45946>:
          D.45896 = cfg->vreg_to_inst;
          D.45933 = var->dreg;
          D.45938 = (sizetype) D.45933;
          D.45948 = D.45938 + 2;
          D.45949 = D.45948 * 4;
          D.45950 = D.45896 + D.45949;
          iftmp.495 = *D.45950;
          goto <D.45951>;
          <D.45947>:
          iftmp.495 = 0B;
          <D.45951>:
          var2 = iftmp.495;
          D.45952 = var1 == 0B;
          D.45953 = (long int) D.45952;
          D.45954 = __builtin_expect (D.45953, 0);
          if (D.45954 != 0) goto <D.45955>; else goto <D.45956>;
          <D.45955>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3684, "var1");
          <D.45956>:
          D.45957 = var2 == 0B;
          D.45958 = (long int) D.45957;
          D.45959 = __builtin_expect (D.45958, 0);
          if (D.45959 != 0) goto <D.45960>; else goto <D.45961>;
          <D.45960>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3684, "var2");
          <D.45961>:
          D.45962 = var1->flags;
          D.45963 = D.45962 | 16;
          var1->flags = D.45963;
          D.45964 = var2->flags;
          D.45965 = D.45964 | 16;
          var2->flags = D.45965;
        }
        <D.45931>:
      }
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      if (D.45646 != 0B) goto <D.45966>; else goto <D.45967>;
      <D.45966>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45646->next = addr;
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      addr->prev = D.45646;
      D.45645 = cfg->cbb;
      D.45645->last_ins = addr;
      goto <D.45968>;
      <D.45967>:
      D.45645 = cfg->cbb;
      D.45645 = cfg->cbb;
      D.45645->last_ins = addr;
      D.45646 = D.45645->last_ins;
      D.45645->code = D.45646;
      <D.45968>:
      addr->dreg = addr_reg;
      {
        struct MonoInst * inst;

        D.45628 = cfg->mempool;
        inst = mono_mempool_alloc (D.45628, 56);
        inst->data.op[1].const_val = 0;
        D.45969 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.45969;
        inst->prev = 0B;
        D.45970 = inst->prev;
        inst->next = D.45970;
        inst->opcode = 374;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.45971 = inst->sreg3;
        inst->sreg2 = D.45971;
        D.45972 = inst->sreg2;
        inst->sreg1 = D.45972;
        D.45643 = cfg->ip;
        inst->cil_code = D.45643;
        obj.487 = obj;
        D.45801 = obj.487->dreg;
        inst->sreg1 = D.45801;
        D.45973 = addr->dreg;
        inst->dreg = D.45973;
        inst->data.op[0].const_val = 0;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.45974>; else goto <D.45975>;
        <D.45974>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45646->next = inst;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        inst->prev = D.45646;
        D.45645 = cfg->cbb;
        D.45645->last_ins = inst;
        goto <D.45976>;
        <D.45975>:
        D.45645 = cfg->cbb;
        D.45645 = cfg->cbb;
        D.45645->last_ins = inst;
        D.45646 = D.45645->last_ins;
        D.45645->code = D.45646;
        <D.45976>:
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.45628 = cfg->mempool;
        ins = mono_mempool_alloc (D.45628, 56);
        ins->data.op[1].const_val = 0;
        D.45977 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.45977;
        ins->prev = 0B;
        D.45978 = ins->prev;
        ins->next = D.45978;
        ins->opcode = 442;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.45979 = ins->sreg3;
        ins->sreg2 = D.45979;
        D.45980 = ins->sreg2;
        ins->sreg1 = D.45980;
        D.45643 = cfg->ip;
        ins->cil_code = D.45643;
        if (1 != 0) goto <D.45981>; else goto <D.45982>;
        <D.45981>:
        D.45628 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45628, 172);
        D.45629 = cfg->num_bblocks;
        D.45983 = D.45629;
        D.45984 = D.45983 + 1;
        cfg->num_bblocks = D.45984;
        D.45985 = (int) D.45983;
        falsebb->block_num = D.45985;
        ins->data.op[0].target_block = end_bb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, end_bb);
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.45986>; else goto <D.45987>;
        <D.45986>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45646->next = ins;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        ins->prev = D.45646;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        goto <D.45988>;
        <D.45987>:
        D.45645 = cfg->cbb;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        D.45646 = D.45645->last_ins;
        D.45645->code = D.45646;
        <D.45988>:
        D.45989 = falsebb->cil_code;
        if (D.45989 != 0B) goto <D.45990>; else goto <D.45991>;
        <D.45990>:
        D.45665 = cfg->cil_offset_to_bb;
        D.45989 = falsebb->cil_code;
        D.45992 = (int) D.45989;
        D.45667 = cfg->cil_start;
        D.45668 = (int) D.45667;
        D.45993 = D.45992 - D.45668;
        D.45994 = (unsigned int) D.45993;
        D.45995 = D.45994 * 4;
        D.45996 = D.45665 + D.45995;
        *D.45996 = falsebb;
        <D.45991>:
        D.45673 = cfg->real_offset;
        falsebb->real_offset = D.45673;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.46000>; else goto <D.45997>;
        <D.46000>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 <= 9) goto <D.45998>; else goto <D.46001>;
        <D.46001>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 <= 9) goto <D.45998>; else goto <D.46002>;
        <D.46002>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 <= 9) goto <D.45998>; else goto <D.45997>;
        <D.45998>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        D.45686 = *D.45685;
        if (D.45686 == 0B) goto <D.46003>; else goto <D.45997>;
        <D.46003>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        *D.45685 = falsebb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        goto <D.45999>;
        <D.45997>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 == 0B) goto <D.46004>; else goto <D.46006>;
        <D.46006>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 442) goto <D.46007>; else goto <D.46005>;
        <D.46007>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 759) goto <D.46008>; else goto <D.46005>;
        <D.46008>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 > 9) goto <D.46009>; else goto <D.46005>;
        <D.46009>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 > 9) goto <D.46010>; else goto <D.46005>;
        <D.46010>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 > 9) goto <D.46004>; else goto <D.46005>;
        <D.46004>:
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        <D.46005>:
        <D.45999>:
        D.45645 = cfg->cbb;
        D.45645->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.46011>;
        <D.45982>:
        D.45628 = cfg->mempool;
        D.46012 = mono_mempool_alloc (D.45628, 8);
        ins->data.op[1].many_blocks = D.46012;
        D.46013 = ins->data.op[1].many_blocks;
        *D.46013 = end_bb;
        D.46013 = ins->data.op[1].many_blocks;
        D.46014 = D.46013 + 4;
        *D.46014 = 0B;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, end_bb);
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.46015>; else goto <D.46016>;
        <D.46015>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45646->next = ins;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        ins->prev = D.45646;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        goto <D.46017>;
        <D.46016>:
        D.45645 = cfg->cbb;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        D.45646 = D.45645->last_ins;
        D.45645->code = D.45646;
        <D.46017>:
        D.45702 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.45703 = D.45702 & 8;
        if (D.45703 == 0) goto <D.46018>; else goto <D.46019>;
        <D.46018>:
        D.45628 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45628, 172);
        D.45629 = cfg->num_bblocks;
        D.46020 = D.45629;
        D.46021 = D.46020 + 1;
        cfg->num_bblocks = D.46021;
        D.46022 = (int) D.46020;
        falsebb->block_num = D.46022;
        D.46013 = ins->data.op[1].many_blocks;
        D.46014 = D.46013 + 4;
        *D.46014 = falsebb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        D.45989 = falsebb->cil_code;
        if (D.45989 != 0B) goto <D.46023>; else goto <D.46024>;
        <D.46023>:
        D.45665 = cfg->cil_offset_to_bb;
        D.45989 = falsebb->cil_code;
        D.45992 = (int) D.45989;
        D.45667 = cfg->cil_start;
        D.45668 = (int) D.45667;
        D.45993 = D.45992 - D.45668;
        D.45994 = (unsigned int) D.45993;
        D.45995 = D.45994 * 4;
        D.45996 = D.45665 + D.45995;
        *D.45996 = falsebb;
        <D.46024>:
        D.45673 = cfg->real_offset;
        falsebb->real_offset = D.45673;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.46028>; else goto <D.46025>;
        <D.46028>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 <= 9) goto <D.46026>; else goto <D.46029>;
        <D.46029>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 <= 9) goto <D.46026>; else goto <D.46030>;
        <D.46030>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 <= 9) goto <D.46026>; else goto <D.46025>;
        <D.46026>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        D.45686 = *D.45685;
        if (D.45686 == 0B) goto <D.46031>; else goto <D.46025>;
        <D.46031>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        *D.45685 = falsebb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        goto <D.46027>;
        <D.46025>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 == 0B) goto <D.46032>; else goto <D.46034>;
        <D.46034>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 442) goto <D.46035>; else goto <D.46033>;
        <D.46035>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 759) goto <D.46036>; else goto <D.46033>;
        <D.46036>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 > 9) goto <D.46037>; else goto <D.46033>;
        <D.46037>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 > 9) goto <D.46038>; else goto <D.46033>;
        <D.46038>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 > 9) goto <D.46032>; else goto <D.46033>;
        <D.46032>:
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        <D.46033>:
        <D.46027>:
        D.45645 = cfg->cbb;
        D.45645->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.46039>;
        <D.46019>:
        D.45645 = cfg->cbb;
        D.45645->extended = 1;
        <D.46039>:
        <D.46011>:
      }
      D.46040 = is_nullable_bb->cil_code;
      if (D.46040 != 0B) goto <D.46041>; else goto <D.46042>;
      <D.46041>:
      D.45665 = cfg->cil_offset_to_bb;
      D.46040 = is_nullable_bb->cil_code;
      D.46043 = (int) D.46040;
      D.45667 = cfg->cil_start;
      D.45668 = (int) D.45667;
      D.46044 = D.46043 - D.45668;
      D.46045 = (unsigned int) D.46044;
      D.46046 = D.46045 * 4;
      D.46047 = D.45665 + D.46046;
      *D.46047 = is_nullable_bb;
      <D.46042>:
      D.45673 = cfg->real_offset;
      is_nullable_bb->real_offset = D.45673;
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      if (D.45646 != 0B) goto <D.46051>; else goto <D.46048>;
      <D.46051>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      D.45679 = D.45678 + 64985;
      if (D.45679 <= 9) goto <D.46049>; else goto <D.46052>;
      <D.46052>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      D.45681 = D.45678 + 64878;
      if (D.45681 <= 9) goto <D.46049>; else goto <D.46053>;
      <D.46053>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      D.45683 = D.45678 + 64888;
      if (D.45683 <= 9) goto <D.46049>; else goto <D.46048>;
      <D.46049>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45684 = D.45646->data.op[1].many_blocks;
      D.45685 = D.45684 + 4;
      D.45686 = *D.45685;
      if (D.45686 == 0B) goto <D.46054>; else goto <D.46048>;
      <D.46054>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45684 = D.45646->data.op[1].many_blocks;
      D.45685 = D.45684 + 4;
      *D.45685 = is_nullable_bb;
      D.45645 = cfg->cbb;
      mono_link_bblock (cfg, D.45645, is_nullable_bb);
      goto <D.46050>;
      <D.46048>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      if (D.45646 == 0B) goto <D.46055>; else goto <D.46057>;
      <D.46057>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      if (D.45678 != 442) goto <D.46058>; else goto <D.46056>;
      <D.46058>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      if (D.45678 != 759) goto <D.46059>; else goto <D.46056>;
      <D.46059>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      D.45679 = D.45678 + 64985;
      if (D.45679 > 9) goto <D.46060>; else goto <D.46056>;
      <D.46060>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      D.45681 = D.45678 + 64878;
      if (D.45681 > 9) goto <D.46061>; else goto <D.46056>;
      <D.46061>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      D.45683 = D.45678 + 64888;
      if (D.45683 > 9) goto <D.46055>; else goto <D.46056>;
      <D.46055>:
      D.45645 = cfg->cbb;
      mono_link_bblock (cfg, D.45645, is_nullable_bb);
      <D.46056>:
      <D.46050>:
      D.45645 = cfg->cbb;
      D.45645->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.45903 = &klass->byval_arg;
        var = mono_compile_create_var (cfg, D.45903, 329);
        D.45628 = cfg->mempool;
        unbox_sig = mono_mempool_alloc0 (D.45628, 16);
        D.45903 = &klass->byval_arg;
        unbox_sig->ret = D.45903;
        unbox_sig->param_count = 1;
        D.46062 = mono_defaults.object_class;
        D.46063 = &D.46062->byval_arg;
        unbox_sig->params[0] = D.46063;
        unbox_call = mono_emit_calli (cfg, unbox_sig, &obj, addr, 0B, 0B);
        {
          struct MonoInst * var;

          D.46065 = unbox_call->dreg;
          D.46066 = (unsigned int) D.46065;
          D.45893 = cfg->vreg_to_inst_len;
          if (D.46066 < D.45893) goto <D.46067>; else goto <D.46068>;
          <D.46067>:
          D.45896 = cfg->vreg_to_inst;
          D.46065 = unbox_call->dreg;
          D.46069 = (unsigned int) D.46065;
          D.46070 = D.46069 * 4;
          D.46071 = D.45896 + D.46070;
          iftmp.496 = *D.46071;
          goto <D.46072>;
          <D.46068>:
          iftmp.496 = 0B;
          <D.46072>:
          var = iftmp.496;
          if (var == 0B) goto <D.46073>; else goto <D.46074>;
          <D.46073>:
          D.45903 = &klass->byval_arg;
          D.46065 = unbox_call->dreg;
          var = mono_compile_create_var_for_vreg (cfg, D.45903, 329, D.46065);
          <D.46074>:
          D.45628 = cfg->mempool;
          addr = mono_mempool_alloc (D.45628, 56);
          addr->data.op[1].const_val = 0;
          D.46075 = addr->data.op[1].const_val;
          addr->data.op[0].const_val = D.46075;
          addr->prev = 0B;
          D.46076 = addr->prev;
          addr->next = D.46076;
          addr->opcode = 314;
          addr->flags = 0;
          addr->type = 0;
          addr->dreg = -1;
          addr->sreg3 = -1;
          D.46077 = addr->sreg3;
          addr->sreg2 = D.46077;
          D.46078 = addr->sreg2;
          addr->sreg1 = D.46078;
          D.45643 = cfg->ip;
          addr->cil_code = D.45643;
          addr->data.op[0].p = var;
          D.46079 = var->flags;
          D.46080 = D.46079 | 16;
          var->flags = D.46080;
          addr->type = 5;
          D.46081 = var->klass;
          addr->klass = D.46081;
          D.46082 = alloc_dreg (cfg, 5);
          D.46083 = (int) D.46082;
          addr->dreg = D.46083;
          cfg->has_indirection = 1;
          D.45909 = cfg->gsharedvt;
          D.45910 = D.45909 != 0;
          D.45911 = (long int) D.45910;
          D.45912 = __builtin_expect (D.45911, 0);
          if (D.45912 != 0) goto <D.46084>; else goto <D.46085>;
          <D.46084>:
          D.46086 = var->data.op[1].vtype;
          D.46087 = mini_is_gsharedvt_variable_type (cfg, D.46086);
          if (D.46087 != 0) goto <D.46088>; else goto <D.46089>;
          <D.46088>:
          handle_gsharedvt_ldaddr (cfg);
          <D.46089>:
          <D.46085>:
          D.46091 = mono_arch_is_soft_float ();
          if (D.46091 != 0) goto <D.46092>; else goto <D.46093>;
          <D.46092>:
          D.46098 = var->type;
          if (D.46098 == 2) goto <D.46095>; else goto <D.46099>;
          <D.46099>:
          D.46098 = var->type;
          if (D.46098 == 4) goto <D.46095>; else goto <D.46096>;
          <D.46095>:
          iftmp.498 = 1;
          goto <D.46097>;
          <D.46096>:
          iftmp.498 = 0;
          <D.46097>:
          iftmp.497 = (_Bool) iftmp.498;
          goto <D.46100>;
          <D.46093>:
          D.46098 = var->type;
          iftmp.497 = D.46098 == 2;
          <D.46100>:
          if (iftmp.497 != 0) goto <D.46101>; else goto <D.46102>;
          <D.46101>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.46104 = var->dreg;
            D.46105 = D.46104 + 1;
            D.46106 = (unsigned int) D.46105;
            D.45893 = cfg->vreg_to_inst_len;
            if (D.46106 < D.45893) goto <D.46107>; else goto <D.46108>;
            <D.46107>:
            D.45896 = cfg->vreg_to_inst;
            D.46104 = var->dreg;
            D.46109 = (sizetype) D.46104;
            D.46110 = D.46109 + 1;
            D.46111 = D.46110 * 4;
            D.46112 = D.45896 + D.46111;
            iftmp.499 = *D.46112;
            goto <D.46113>;
            <D.46108>:
            iftmp.499 = 0B;
            <D.46113>:
            var1 = iftmp.499;
            D.46104 = var->dreg;
            D.46115 = D.46104 + 2;
            D.46116 = (unsigned int) D.46115;
            D.45893 = cfg->vreg_to_inst_len;
            if (D.46116 < D.45893) goto <D.46117>; else goto <D.46118>;
            <D.46117>:
            D.45896 = cfg->vreg_to_inst;
            D.46104 = var->dreg;
            D.46109 = (sizetype) D.46104;
            D.46119 = D.46109 + 2;
            D.46120 = D.46119 * 4;
            D.46121 = D.45896 + D.46120;
            iftmp.500 = *D.46121;
            goto <D.46122>;
            <D.46118>:
            iftmp.500 = 0B;
            <D.46122>:
            var2 = iftmp.500;
            D.46123 = var1 == 0B;
            D.46124 = (long int) D.46123;
            D.46125 = __builtin_expect (D.46124, 0);
            if (D.46125 != 0) goto <D.46126>; else goto <D.46127>;
            <D.46126>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3706, "var1");
            <D.46127>:
            D.46128 = var2 == 0B;
            D.46129 = (long int) D.46128;
            D.46130 = __builtin_expect (D.46129, 0);
            if (D.46130 != 0) goto <D.46131>; else goto <D.46132>;
            <D.46131>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3706, "var2");
            <D.46132>:
            D.46133 = var1->flags;
            D.46134 = D.46133 | 16;
            var1->flags = D.46134;
            D.46135 = var2->flags;
            D.46136 = D.46135 | 16;
            var2->flags = D.46136;
          }
          <D.46102>:
        }
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.46137>; else goto <D.46138>;
        <D.46137>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45646->next = addr;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        addr->prev = D.45646;
        D.45645 = cfg->cbb;
        D.45645->last_ins = addr;
        goto <D.46139>;
        <D.46138>:
        D.45645 = cfg->cbb;
        D.45645 = cfg->cbb;
        D.45645->last_ins = addr;
        D.45646 = D.45645->last_ins;
        D.45645->code = D.45646;
        <D.46139>:
        addr->dreg = addr_reg;
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.45628 = cfg->mempool;
        ins = mono_mempool_alloc (D.45628, 56);
        ins->data.op[1].const_val = 0;
        D.46140 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.46140;
        ins->prev = 0B;
        D.46141 = ins->prev;
        ins->next = D.46141;
        ins->opcode = 442;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.46142 = ins->sreg3;
        ins->sreg2 = D.46142;
        D.46143 = ins->sreg2;
        ins->sreg1 = D.46143;
        D.45643 = cfg->ip;
        ins->cil_code = D.45643;
        if (1 != 0) goto <D.46144>; else goto <D.46145>;
        <D.46144>:
        D.45628 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45628, 172);
        D.45629 = cfg->num_bblocks;
        D.46146 = D.45629;
        D.46147 = D.46146 + 1;
        cfg->num_bblocks = D.46147;
        D.46148 = (int) D.46146;
        falsebb->block_num = D.46148;
        ins->data.op[0].target_block = end_bb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, end_bb);
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.46149>; else goto <D.46150>;
        <D.46149>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45646->next = ins;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        ins->prev = D.45646;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        goto <D.46151>;
        <D.46150>:
        D.45645 = cfg->cbb;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        D.45646 = D.45645->last_ins;
        D.45645->code = D.45646;
        <D.46151>:
        D.46152 = falsebb->cil_code;
        if (D.46152 != 0B) goto <D.46153>; else goto <D.46154>;
        <D.46153>:
        D.45665 = cfg->cil_offset_to_bb;
        D.46152 = falsebb->cil_code;
        D.46155 = (int) D.46152;
        D.45667 = cfg->cil_start;
        D.45668 = (int) D.45667;
        D.46156 = D.46155 - D.45668;
        D.46157 = (unsigned int) D.46156;
        D.46158 = D.46157 * 4;
        D.46159 = D.45665 + D.46158;
        *D.46159 = falsebb;
        <D.46154>:
        D.45673 = cfg->real_offset;
        falsebb->real_offset = D.45673;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.46163>; else goto <D.46160>;
        <D.46163>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 <= 9) goto <D.46161>; else goto <D.46164>;
        <D.46164>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 <= 9) goto <D.46161>; else goto <D.46165>;
        <D.46165>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 <= 9) goto <D.46161>; else goto <D.46160>;
        <D.46161>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        D.45686 = *D.45685;
        if (D.45686 == 0B) goto <D.46166>; else goto <D.46160>;
        <D.46166>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        *D.45685 = falsebb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        goto <D.46162>;
        <D.46160>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 == 0B) goto <D.46167>; else goto <D.46169>;
        <D.46169>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 442) goto <D.46170>; else goto <D.46168>;
        <D.46170>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 759) goto <D.46171>; else goto <D.46168>;
        <D.46171>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 > 9) goto <D.46172>; else goto <D.46168>;
        <D.46172>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 > 9) goto <D.46173>; else goto <D.46168>;
        <D.46173>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 > 9) goto <D.46167>; else goto <D.46168>;
        <D.46167>:
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        <D.46168>:
        <D.46162>:
        D.45645 = cfg->cbb;
        D.45645->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.46174>;
        <D.46145>:
        D.45628 = cfg->mempool;
        D.46175 = mono_mempool_alloc (D.45628, 8);
        ins->data.op[1].many_blocks = D.46175;
        D.46176 = ins->data.op[1].many_blocks;
        *D.46176 = end_bb;
        D.46176 = ins->data.op[1].many_blocks;
        D.46177 = D.46176 + 4;
        *D.46177 = 0B;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, end_bb);
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.46178>; else goto <D.46179>;
        <D.46178>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45646->next = ins;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        ins->prev = D.45646;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        goto <D.46180>;
        <D.46179>:
        D.45645 = cfg->cbb;
        D.45645 = cfg->cbb;
        D.45645->last_ins = ins;
        D.45646 = D.45645->last_ins;
        D.45645->code = D.45646;
        <D.46180>:
        D.45702 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.45703 = D.45702 & 8;
        if (D.45703 == 0) goto <D.46181>; else goto <D.46182>;
        <D.46181>:
        D.45628 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45628, 172);
        D.45629 = cfg->num_bblocks;
        D.46183 = D.45629;
        D.46184 = D.46183 + 1;
        cfg->num_bblocks = D.46184;
        D.46185 = (int) D.46183;
        falsebb->block_num = D.46185;
        D.46176 = ins->data.op[1].many_blocks;
        D.46177 = D.46176 + 4;
        *D.46177 = falsebb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        D.46152 = falsebb->cil_code;
        if (D.46152 != 0B) goto <D.46186>; else goto <D.46187>;
        <D.46186>:
        D.45665 = cfg->cil_offset_to_bb;
        D.46152 = falsebb->cil_code;
        D.46155 = (int) D.46152;
        D.45667 = cfg->cil_start;
        D.45668 = (int) D.45667;
        D.46156 = D.46155 - D.45668;
        D.46157 = (unsigned int) D.46156;
        D.46158 = D.46157 * 4;
        D.46159 = D.45665 + D.46158;
        *D.46159 = falsebb;
        <D.46187>:
        D.45673 = cfg->real_offset;
        falsebb->real_offset = D.45673;
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 != 0B) goto <D.46191>; else goto <D.46188>;
        <D.46191>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 <= 9) goto <D.46189>; else goto <D.46192>;
        <D.46192>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 <= 9) goto <D.46189>; else goto <D.46193>;
        <D.46193>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 <= 9) goto <D.46189>; else goto <D.46188>;
        <D.46189>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        D.45686 = *D.45685;
        if (D.45686 == 0B) goto <D.46194>; else goto <D.46188>;
        <D.46194>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45684 = D.45646->data.op[1].many_blocks;
        D.45685 = D.45684 + 4;
        *D.45685 = falsebb;
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        goto <D.46190>;
        <D.46188>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        if (D.45646 == 0B) goto <D.46195>; else goto <D.46197>;
        <D.46197>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 442) goto <D.46198>; else goto <D.46196>;
        <D.46198>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        if (D.45678 != 759) goto <D.46199>; else goto <D.46196>;
        <D.46199>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45679 = D.45678 + 64985;
        if (D.45679 > 9) goto <D.46200>; else goto <D.46196>;
        <D.46200>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45681 = D.45678 + 64878;
        if (D.45681 > 9) goto <D.46201>; else goto <D.46196>;
        <D.46201>:
        D.45645 = cfg->cbb;
        D.45646 = D.45645->last_ins;
        D.45678 = D.45646->opcode;
        D.45683 = D.45678 + 64888;
        if (D.45683 > 9) goto <D.46195>; else goto <D.46196>;
        <D.46195>:
        D.45645 = cfg->cbb;
        mono_link_bblock (cfg, D.45645, falsebb);
        <D.46196>:
        <D.46190>:
        D.45645 = cfg->cbb;
        D.45645->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.46202>;
        <D.46182>:
        D.45645 = cfg->cbb;
        D.45645->extended = 1;
        <D.46202>:
        <D.46174>:
      }
      D.46203 = end_bb->cil_code;
      if (D.46203 != 0B) goto <D.46204>; else goto <D.46205>;
      <D.46204>:
      D.45665 = cfg->cil_offset_to_bb;
      D.46203 = end_bb->cil_code;
      D.46206 = (int) D.46203;
      D.45667 = cfg->cil_start;
      D.45668 = (int) D.45667;
      D.46207 = D.46206 - D.45668;
      D.46208 = (unsigned int) D.46207;
      D.46209 = D.46208 * 4;
      D.46210 = D.45665 + D.46209;
      *D.46210 = end_bb;
      <D.46205>:
      D.45673 = cfg->real_offset;
      end_bb->real_offset = D.45673;
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      if (D.45646 != 0B) goto <D.46214>; else goto <D.46211>;
      <D.46214>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      D.45679 = D.45678 + 64985;
      if (D.45679 <= 9) goto <D.46212>; else goto <D.46215>;
      <D.46215>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      D.45681 = D.45678 + 64878;
      if (D.45681 <= 9) goto <D.46212>; else goto <D.46216>;
      <D.46216>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      D.45683 = D.45678 + 64888;
      if (D.45683 <= 9) goto <D.46212>; else goto <D.46211>;
      <D.46212>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45684 = D.45646->data.op[1].many_blocks;
      D.45685 = D.45684 + 4;
      D.45686 = *D.45685;
      if (D.45686 == 0B) goto <D.46217>; else goto <D.46211>;
      <D.46217>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45684 = D.45646->data.op[1].many_blocks;
      D.45685 = D.45684 + 4;
      *D.45685 = end_bb;
      D.45645 = cfg->cbb;
      mono_link_bblock (cfg, D.45645, end_bb);
      goto <D.46213>;
      <D.46211>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      if (D.45646 == 0B) goto <D.46218>; else goto <D.46220>;
      <D.46220>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      if (D.45678 != 442) goto <D.46221>; else goto <D.46219>;
      <D.46221>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      if (D.45678 != 759) goto <D.46222>; else goto <D.46219>;
      <D.46222>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      D.45679 = D.45678 + 64985;
      if (D.45679 > 9) goto <D.46223>; else goto <D.46219>;
      <D.46223>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      D.45681 = D.45678 + 64878;
      if (D.45681 > 9) goto <D.46224>; else goto <D.46219>;
      <D.46224>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45678 = D.45646->opcode;
      D.45683 = D.45678 + 64888;
      if (D.45683 > 9) goto <D.46218>; else goto <D.46219>;
      <D.46218>:
      D.45645 = cfg->cbb;
      mono_link_bblock (cfg, D.45645, end_bb);
      <D.46219>:
      <D.46213>:
      D.45645 = cfg->cbb;
      D.45645->next_bb = end_bb;
      cfg->cbb = end_bb;
      D.45628 = cfg->mempool;
      ins = mono_mempool_alloc (D.45628, 56);
      ins->data.op[1].const_val = 0;
      D.46225 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.46225;
      ins->prev = 0B;
      D.46226 = ins->prev;
      ins->next = D.46226;
      D.45903 = &klass->byval_arg;
      D.46227 = mono_type_to_load_membase (cfg, D.45903);
      D.46228 = (short unsigned int) D.46227;
      ins->opcode = D.46228;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.46229 = ins->sreg3;
      ins->sreg2 = D.46229;
      D.46230 = ins->sreg2;
      ins->sreg1 = D.46230;
      D.45643 = cfg->ip;
      ins->cil_code = D.45643;
      ins->dreg = 0;
      ins->sreg1 = addr_reg;
      ins->data.op[0].const_val = 0;
      ins->type = 1;
      D.45903 = &klass->byval_arg;
      type_to_eval_stack_type (cfg, D.45903, ins);
      D.46231 = ins->type;
      D.46232 = (<unnamed type>) D.46231;
      D.46233 = alloc_dreg (cfg, D.46232);
      D.46234 = (int) D.46233;
      ins->dreg = D.46234;
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      if (D.45646 != 0B) goto <D.46235>; else goto <D.46236>;
      <D.46235>:
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      D.45646->next = ins;
      D.45645 = cfg->cbb;
      D.45646 = D.45645->last_ins;
      ins->prev = D.45646;
      D.45645 = cfg->cbb;
      D.45645->last_ins = ins;
      goto <D.46237>;
      <D.46236>:
      D.45645 = cfg->cbb;
      D.45645 = cfg->cbb;
      D.45645->last_ins = ins;
      D.45646 = D.45645->last_ins;
      D.45645->code = D.45646;
      <D.46237>:
      D.45645 = cfg->cbb;
      *out_cbb = D.45645;
      D.46238 = ins;
      return D.46238;
    }
  finally
    {
      args = {CLOBBER};
    }
}


mini_class_has_reference_variant_generic_argument (struct MonoCompile * cfg, struct MonoClass * klass, int context_used)
{
  struct MonoGenericClass * D.46241;
  struct MonoClass * D.46244;
  struct MonoGenericContainer * D.46248;
  gboolean D.46251;
  struct MonoGenericParamFull * D.46252;
  unsigned int i.501;
  unsigned int D.46254;
  struct MonoGenericParamFull * D.46255;
  short unsigned int D.46256;
  int D.46257;
  int D.46258;
  int D.46261;
  <unnamed-signed:31> D.46264;
  int D.46265;
  int i;
  struct MonoGenericContainer * container;
  struct MonoGenericInst * ginst;

  D.46241 = klass->generic_class;
  if (D.46241 != 0B) goto <D.46242>; else goto <D.46243>;
  <D.46242>:
  D.46241 = klass->generic_class;
  D.46244 = D.46241->container_class;
  container = D.46244->generic_container;
  D.46241 = klass->generic_class;
  ginst = D.46241->context.class_inst;
  goto <D.46245>;
  <D.46243>:
  D.46248 = klass->generic_container;
  if (D.46248 != 0B) goto <D.46249>; else goto <D.46246>;
  <D.46249>:
  if (context_used != 0) goto <D.46250>; else goto <D.46246>;
  <D.46250>:
  container = klass->generic_container;
  ginst = container->context.class_inst;
  goto <D.46247>;
  <D.46246>:
  D.46251 = 0;
  return D.46251;
  <D.46247>:
  <D.46245>:
  i = 0;
  goto <D.25480>;
  <D.25479>:
  {
    struct MonoType * type;

    D.46252 = container->type_params;
    i.501 = (unsigned int) i;
    D.46254 = i.501 * 32;
    D.46255 = D.46252 + D.46254;
    D.46256 = D.46255->info.flags;
    D.46257 = (int) D.46256;
    D.46258 = D.46257 & 3;
    if (D.46258 == 0) goto <D.46259>; else goto <D.46260>;
    <D.46259>:
    // predicted unlikely by continue predictor.
    goto <D.25478>;
    <D.46260>:
    type = ginst->type_argv[i];
    D.46261 = mini_type_is_reference (cfg, type);
    if (D.46261 != 0) goto <D.46262>; else goto <D.46263>;
    <D.46262>:
    D.46251 = 1;
    return D.46251;
    <D.46263>:
  }
  <D.25478>:
  i = i + 1;
  <D.25480>:
  D.46264 = container->type_argc;
  D.46265 = (int) D.46264;
  if (D.46265 > i) goto <D.25479>; else goto <D.25481>;
  <D.25481>:
  D.46251 = 0;
  return D.46251;
}


handle_castclass (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * src, int context_used)
{
  unsigned int D.46267;
  struct MonoMemPool * D.46272;
  void * D.46273;
  struct MonoInst * D.46274;
  int D.46275;
  struct MonoInst * D.46276;
  int D.46277;
  int D.46278;
  const unsigned char * D.46279;
  unsigned int D.46280;
  int D.46281;
  int D.46282;
  struct MonoBasicBlock * D.46283;
  struct MonoInst * D.46284;
  struct MonoInst * D.46288;
  unsigned int D.46289;
  unsigned int D.46290;
  unsigned int D.46291;
  int D.46292;
  int D.46293;
  struct MonoInst * D.46294;
  int D.46295;
  int D.46296;
  int D.46300;
  struct MonoInst * D.46301;
  int D.46302;
  int D.46303;
  unsigned int D.46306;
  unsigned int D.46307;
  int D.46308;
  unsigned char * D.46312;
  struct MonoBasicBlock * * D.46315;
  int D.46316;
  unsigned char * D.46317;
  int D.46318;
  int D.46319;
  unsigned int D.46320;
  unsigned int D.46321;
  struct MonoBasicBlock * * D.46322;
  unsigned int D.46323;
  short unsigned int D.46328;
  short unsigned int D.46329;
  short unsigned int D.46331;
  short unsigned int D.46333;
  struct MonoBasicBlock * * D.46334;
  struct MonoBasicBlock * * D.46335;
  struct MonoBasicBlock * D.46336;
  void * D.46346;
  struct MonoBasicBlock * * D.46347;
  struct MonoBasicBlock * * D.46348;
  unsigned int D.46352;
  unsigned int D.46353;
  unsigned int D.46356;
  unsigned int D.46357;
  int D.46358;
  unsigned int D.46376;
  unsigned int D.46377;
  int D.46380;
  struct MonoInst * D.46381;
  int D.46382;
  int D.46383;
  unsigned int D.46388;
  int D.46389;
  struct MonoInst * D.46390;
  int D.46391;
  int D.46392;
  unsigned char D.46398;
  unsigned int D.46400;
  unsigned int D.46402;
  unsigned int D.46403;
  unsigned int D.46405;
  struct MonoDomain * D.46409;
  int D.46412;
  struct MonoInst * D.46413;
  int D.46414;
  int D.46415;
  int vt.502;
  int D.46421;
  struct MonoInst * D.46422;
  int D.46423;
  int D.46424;
  int D.46428;
  struct MonoInst * D.46429;
  int D.46430;
  int D.46431;
  int klass.503;
  int D.46436;
  struct MonoInst * D.46437;
  int D.46438;
  int D.46439;
  int D.46443;
  struct MonoInst * D.46444;
  int D.46445;
  int D.46446;
  unsigned char * D.46450;
  int D.46453;
  int D.46454;
  unsigned int D.46455;
  unsigned int D.46456;
  struct MonoBasicBlock * * D.46457;
  struct MonoBasicBlock * is_null_bb;
  int obj_reg;
  int vtable_reg;
  struct MonoInst * klass_inst;

  obj_reg = src->dreg;
  D.46267 = alloc_preg (cfg);
  vtable_reg = (int) D.46267;
  klass_inst = 0B;
  if (context_used != 0) goto <D.46268>; else goto <D.46269>;
  <D.46268>:
  {
    struct MonoInst * args[3];

    try
      {
        mini_class_has_reference_variant_generic_argument (cfg, klass, context_used);
        if (1 != 0) goto <D.46270>; else goto <D.46271>;
        <D.46270>:
        {
          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.46272 = cfg->mempool;
          D.46273 = mono_mempool_alloc (D.46272, 56);
          args[1] = D.46273;
          D.46274 = args[1];
          D.46274 = args[1];
          D.46274->data.op[1].const_val = 0;
          D.46275 = D.46274->data.op[1].const_val;
          D.46274->data.op[0].const_val = D.46275;
          D.46274 = args[1];
          D.46274 = args[1];
          D.46274->prev = 0B;
          D.46276 = D.46274->prev;
          D.46274->next = D.46276;
          D.46274 = args[1];
          D.46274->opcode = 388;
          D.46274 = args[1];
          D.46274->flags = 0;
          D.46274 = args[1];
          D.46274->type = 0;
          D.46274 = args[1];
          D.46274->dreg = -1;
          D.46274 = args[1];
          D.46274 = args[1];
          D.46274 = args[1];
          D.46274->sreg3 = -1;
          D.46277 = D.46274->sreg3;
          D.46274->sreg2 = D.46277;
          D.46278 = D.46274->sreg2;
          D.46274->sreg1 = D.46278;
          D.46274 = args[1];
          D.46279 = cfg->ip;
          D.46274->cil_code = D.46279;
          D.46274 = args[1];
          D.46280 = alloc_preg (cfg);
          D.46281 = (int) D.46280;
          D.46274->dreg = D.46281;
          D.46274 = args[1];
          D.46282 = cache_ins->dreg;
          D.46274->sreg1 = D.46282;
          D.46274 = args[1];
          D.46274->data.op[0].const_val = 4;
          D.46274 = args[1];
          D.46274->type = 1;
          D.46283 = cfg->cbb;
          D.46284 = D.46283->last_ins;
          if (D.46284 != 0B) goto <D.46285>; else goto <D.46286>;
          <D.46285>:
          D.46283 = cfg->cbb;
          D.46284 = D.46283->last_ins;
          D.46274 = args[1];
          D.46284->next = D.46274;
          D.46274 = args[1];
          D.46283 = cfg->cbb;
          D.46284 = D.46283->last_ins;
          D.46274->prev = D.46284;
          D.46283 = cfg->cbb;
          D.46274 = args[1];
          D.46283->last_ins = D.46274;
          goto <D.46287>;
          <D.46286>:
          D.46283 = cfg->cbb;
          D.46283 = cfg->cbb;
          D.46274 = args[1];
          D.46283->last_ins = D.46274;
          D.46284 = D.46283->last_ins;
          D.46283->code = D.46284;
          <D.46287>:
          args[2] = cache_ins;
          D.46288 = mono_emit_method_call (cfg, mono_castclass, &args, 0B);
          return D.46288;
        }
        <D.46271>:
        klass_inst = emit_get_rgctx_klass (cfg, context_used, klass, 1);
      }
    finally
      {
        args = {CLOBBER};
      }
  }
  <D.46269>:
  D.46272 = cfg->mempool;
  is_null_bb = mono_mempool_alloc0 (D.46272, 172);
  D.46289 = cfg->num_bblocks;
  D.46290 = D.46289;
  D.46291 = D.46290 + 1;
  cfg->num_bblocks = D.46291;
  D.46292 = (int) D.46290;
  is_null_bb->block_num = D.46292;
  {
    struct MonoInst * inst;

    D.46272 = cfg->mempool;
    inst = mono_mempool_alloc (D.46272, 56);
    inst->data.op[1].const_val = 0;
    D.46293 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46293;
    inst->prev = 0B;
    D.46294 = inst->prev;
    inst->next = D.46294;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46295 = inst->sreg3;
    inst->sreg2 = D.46295;
    D.46296 = inst->sreg2;
    inst->sreg1 = D.46296;
    D.46279 = cfg->ip;
    inst->cil_code = D.46279;
    inst->dreg = -1;
    inst->sreg1 = obj_reg;
    inst->data.op[1].const_val = 0;
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    if (D.46284 != 0B) goto <D.46297>; else goto <D.46298>;
    <D.46297>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46284->next = inst;
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    inst->prev = D.46284;
    D.46283 = cfg->cbb;
    D.46283->last_ins = inst;
    goto <D.46299>;
    <D.46298>:
    D.46283 = cfg->cbb;
    D.46283 = cfg->cbb;
    D.46283->last_ins = inst;
    D.46284 = D.46283->last_ins;
    D.46283->code = D.46284;
    <D.46299>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.46272 = cfg->mempool;
    ins = mono_mempool_alloc (D.46272, 56);
    ins->data.op[1].const_val = 0;
    D.46300 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.46300;
    ins->prev = 0B;
    D.46301 = ins->prev;
    ins->next = D.46301;
    ins->opcode = 648;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.46302 = ins->sreg3;
    ins->sreg2 = D.46302;
    D.46303 = ins->sreg2;
    ins->sreg1 = D.46303;
    D.46279 = cfg->ip;
    ins->cil_code = D.46279;
    if (0 != 0) goto <D.46304>; else goto <D.46305>;
    <D.46304>:
    D.46272 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.46272, 172);
    D.46289 = cfg->num_bblocks;
    D.46306 = D.46289;
    D.46307 = D.46306 + 1;
    cfg->num_bblocks = D.46307;
    D.46308 = (int) D.46306;
    falsebb->block_num = D.46308;
    ins->data.op[0].target_block = is_null_bb;
    D.46283 = cfg->cbb;
    mono_link_bblock (cfg, D.46283, is_null_bb);
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    if (D.46284 != 0B) goto <D.46309>; else goto <D.46310>;
    <D.46309>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46284->next = ins;
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    ins->prev = D.46284;
    D.46283 = cfg->cbb;
    D.46283->last_ins = ins;
    goto <D.46311>;
    <D.46310>:
    D.46283 = cfg->cbb;
    D.46283 = cfg->cbb;
    D.46283->last_ins = ins;
    D.46284 = D.46283->last_ins;
    D.46283->code = D.46284;
    <D.46311>:
    D.46312 = falsebb->cil_code;
    if (D.46312 != 0B) goto <D.46313>; else goto <D.46314>;
    <D.46313>:
    D.46315 = cfg->cil_offset_to_bb;
    D.46312 = falsebb->cil_code;
    D.46316 = (int) D.46312;
    D.46317 = cfg->cil_start;
    D.46318 = (int) D.46317;
    D.46319 = D.46316 - D.46318;
    D.46320 = (unsigned int) D.46319;
    D.46321 = D.46320 * 4;
    D.46322 = D.46315 + D.46321;
    *D.46322 = falsebb;
    <D.46314>:
    D.46323 = cfg->real_offset;
    falsebb->real_offset = D.46323;
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    if (D.46284 != 0B) goto <D.46327>; else goto <D.46324>;
    <D.46327>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46328 = D.46284->opcode;
    D.46329 = D.46328 + 64985;
    if (D.46329 <= 9) goto <D.46325>; else goto <D.46330>;
    <D.46330>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46328 = D.46284->opcode;
    D.46331 = D.46328 + 64878;
    if (D.46331 <= 9) goto <D.46325>; else goto <D.46332>;
    <D.46332>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46328 = D.46284->opcode;
    D.46333 = D.46328 + 64888;
    if (D.46333 <= 9) goto <D.46325>; else goto <D.46324>;
    <D.46325>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46334 = D.46284->data.op[1].many_blocks;
    D.46335 = D.46334 + 4;
    D.46336 = *D.46335;
    if (D.46336 == 0B) goto <D.46337>; else goto <D.46324>;
    <D.46337>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46334 = D.46284->data.op[1].many_blocks;
    D.46335 = D.46334 + 4;
    *D.46335 = falsebb;
    D.46283 = cfg->cbb;
    mono_link_bblock (cfg, D.46283, falsebb);
    goto <D.46326>;
    <D.46324>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    if (D.46284 == 0B) goto <D.46338>; else goto <D.46340>;
    <D.46340>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46328 = D.46284->opcode;
    if (D.46328 != 442) goto <D.46341>; else goto <D.46339>;
    <D.46341>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46328 = D.46284->opcode;
    if (D.46328 != 759) goto <D.46342>; else goto <D.46339>;
    <D.46342>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46328 = D.46284->opcode;
    D.46329 = D.46328 + 64985;
    if (D.46329 > 9) goto <D.46343>; else goto <D.46339>;
    <D.46343>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46328 = D.46284->opcode;
    D.46331 = D.46328 + 64878;
    if (D.46331 > 9) goto <D.46344>; else goto <D.46339>;
    <D.46344>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46328 = D.46284->opcode;
    D.46333 = D.46328 + 64888;
    if (D.46333 > 9) goto <D.46338>; else goto <D.46339>;
    <D.46338>:
    D.46283 = cfg->cbb;
    mono_link_bblock (cfg, D.46283, falsebb);
    <D.46339>:
    <D.46326>:
    D.46283 = cfg->cbb;
    D.46283->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.46345>;
    <D.46305>:
    D.46272 = cfg->mempool;
    D.46346 = mono_mempool_alloc (D.46272, 8);
    ins->data.op[1].many_blocks = D.46346;
    D.46347 = ins->data.op[1].many_blocks;
    *D.46347 = is_null_bb;
    D.46347 = ins->data.op[1].many_blocks;
    D.46348 = D.46347 + 4;
    *D.46348 = 0B;
    D.46283 = cfg->cbb;
    mono_link_bblock (cfg, D.46283, is_null_bb);
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    if (D.46284 != 0B) goto <D.46349>; else goto <D.46350>;
    <D.46349>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46284->next = ins;
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    ins->prev = D.46284;
    D.46283 = cfg->cbb;
    D.46283->last_ins = ins;
    goto <D.46351>;
    <D.46350>:
    D.46283 = cfg->cbb;
    D.46283 = cfg->cbb;
    D.46283->last_ins = ins;
    D.46284 = D.46283->last_ins;
    D.46283->code = D.46284;
    <D.46351>:
    D.46352 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.46353 = D.46352 & 8;
    if (D.46353 == 0) goto <D.46354>; else goto <D.46355>;
    <D.46354>:
    D.46272 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.46272, 172);
    D.46289 = cfg->num_bblocks;
    D.46356 = D.46289;
    D.46357 = D.46356 + 1;
    cfg->num_bblocks = D.46357;
    D.46358 = (int) D.46356;
    falsebb->block_num = D.46358;
    D.46347 = ins->data.op[1].many_blocks;
    D.46348 = D.46347 + 4;
    *D.46348 = falsebb;
    D.46283 = cfg->cbb;
    mono_link_bblock (cfg, D.46283, falsebb);
    D.46312 = falsebb->cil_code;
    if (D.46312 != 0B) goto <D.46359>; else goto <D.46360>;
    <D.46359>:
    D.46315 = cfg->cil_offset_to_bb;
    D.46312 = falsebb->cil_code;
    D.46316 = (int) D.46312;
    D.46317 = cfg->cil_start;
    D.46318 = (int) D.46317;
    D.46319 = D.46316 - D.46318;
    D.46320 = (unsigned int) D.46319;
    D.46321 = D.46320 * 4;
    D.46322 = D.46315 + D.46321;
    *D.46322 = falsebb;
    <D.46360>:
    D.46323 = cfg->real_offset;
    falsebb->real_offset = D.46323;
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    if (D.46284 != 0B) goto <D.46364>; else goto <D.46361>;
    <D.46364>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46328 = D.46284->opcode;
    D.46329 = D.46328 + 64985;
    if (D.46329 <= 9) goto <D.46362>; else goto <D.46365>;
    <D.46365>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46328 = D.46284->opcode;
    D.46331 = D.46328 + 64878;
    if (D.46331 <= 9) goto <D.46362>; else goto <D.46366>;
    <D.46366>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46328 = D.46284->opcode;
    D.46333 = D.46328 + 64888;
    if (D.46333 <= 9) goto <D.46362>; else goto <D.46361>;
    <D.46362>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46334 = D.46284->data.op[1].many_blocks;
    D.46335 = D.46334 + 4;
    D.46336 = *D.46335;
    if (D.46336 == 0B) goto <D.46367>; else goto <D.46361>;
    <D.46367>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46334 = D.46284->data.op[1].many_blocks;
    D.46335 = D.46334 + 4;
    *D.46335 = falsebb;
    D.46283 = cfg->cbb;
    mono_link_bblock (cfg, D.46283, falsebb);
    goto <D.46363>;
    <D.46361>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    if (D.46284 == 0B) goto <D.46368>; else goto <D.46370>;
    <D.46370>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46328 = D.46284->opcode;
    if (D.46328 != 442) goto <D.46371>; else goto <D.46369>;
    <D.46371>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46328 = D.46284->opcode;
    if (D.46328 != 759) goto <D.46372>; else goto <D.46369>;
    <D.46372>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46328 = D.46284->opcode;
    D.46329 = D.46328 + 64985;
    if (D.46329 > 9) goto <D.46373>; else goto <D.46369>;
    <D.46373>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46328 = D.46284->opcode;
    D.46331 = D.46328 + 64878;
    if (D.46331 > 9) goto <D.46374>; else goto <D.46369>;
    <D.46374>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46328 = D.46284->opcode;
    D.46333 = D.46328 + 64888;
    if (D.46333 > 9) goto <D.46368>; else goto <D.46369>;
    <D.46368>:
    D.46283 = cfg->cbb;
    mono_link_bblock (cfg, D.46283, falsebb);
    <D.46369>:
    <D.46363>:
    D.46283 = cfg->cbb;
    D.46283->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.46375>;
    <D.46355>:
    D.46283 = cfg->cbb;
    D.46283->extended = 1;
    <D.46375>:
    <D.46345>:
  }
  save_cast_details (cfg, klass, obj_reg, 0, 0B);
  D.46376 = klass->flags;
  D.46377 = D.46376 & 32;
  if (D.46377 != 0) goto <D.46378>; else goto <D.46379>;
  <D.46378>:
  {
    struct MonoInst * inst;

    D.46272 = cfg->mempool;
    inst = mono_mempool_alloc (D.46272, 56);
    inst->data.op[1].const_val = 0;
    D.46380 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46380;
    inst->prev = 0B;
    D.46381 = inst->prev;
    inst->next = D.46381;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46382 = inst->sreg3;
    inst->sreg2 = D.46382;
    D.46383 = inst->sreg2;
    inst->sreg1 = D.46383;
    D.46279 = cfg->ip;
    inst->cil_code = D.46279;
    inst->dreg = vtable_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    if (D.46284 != 0B) goto <D.46384>; else goto <D.46385>;
    <D.46384>:
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    D.46284->next = inst;
    D.46283 = cfg->cbb;
    D.46284 = D.46283->last_ins;
    inst->prev = D.46284;
    D.46283 = cfg->cbb;
    D.46283->last_ins = inst;
    goto <D.46386>;
    <D.46385>:
    D.46283 = cfg->cbb;
    D.46283 = cfg->cbb;
    D.46283->last_ins = inst;
    D.46284 = D.46283->last_ins;
    D.46283->code = D.46284;
    <D.46386>:
  }
  mini_emit_iface_cast (cfg, vtable_reg, klass, 0B, 0B);
  goto <D.46387>;
  <D.46379>:
  {
    int klass_reg;

    D.46388 = alloc_preg (cfg);
    klass_reg = (int) D.46388;
    {
      struct MonoInst * inst;

      D.46272 = cfg->mempool;
      inst = mono_mempool_alloc (D.46272, 56);
      inst->data.op[1].const_val = 0;
      D.46389 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46389;
      inst->prev = 0B;
      D.46390 = inst->prev;
      inst->next = D.46390;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46391 = inst->sreg3;
      inst->sreg2 = D.46391;
      D.46392 = inst->sreg2;
      inst->sreg1 = D.46392;
      D.46279 = cfg->ip;
      inst->cil_code = D.46279;
      inst->dreg = vtable_reg;
      inst->sreg1 = obj_reg;
      inst->data.op[0].const_val = 0;
      D.46283 = cfg->cbb;
      D.46284 = D.46283->last_ins;
      if (D.46284 != 0B) goto <D.46393>; else goto <D.46394>;
      <D.46393>:
      D.46283 = cfg->cbb;
      D.46284 = D.46283->last_ins;
      D.46284->next = inst;
      D.46283 = cfg->cbb;
      D.46284 = D.46283->last_ins;
      inst->prev = D.46284;
      D.46283 = cfg->cbb;
      D.46283->last_ins = inst;
      goto <D.46395>;
      <D.46394>:
      D.46283 = cfg->cbb;
      D.46283 = cfg->cbb;
      D.46283->last_ins = inst;
      D.46284 = D.46283->last_ins;
      D.46283->code = D.46284;
      <D.46395>:
    }
    D.46398 = klass->rank;
    if (D.46398 == 0) goto <D.46399>; else goto <D.46396>;
    <D.46399>:
    D.46352 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.46400 = D.46352 & 64;
    if (D.46400 == 0) goto <D.46401>; else goto <D.46396>;
    <D.46401>:
    D.46402 = cfg->opt;
    D.46403 = D.46402 & 512;
    if (D.46403 == 0) goto <D.46404>; else goto <D.46396>;
    <D.46404>:
    D.46376 = klass->flags;
    D.46405 = D.46376 & 256;
    if (D.46405 != 0) goto <D.46406>; else goto <D.46396>;
    <D.46406>:
    if (0 != 0) goto <D.46407>; else goto <D.46408>;
    <D.46407>:
    {
      struct MonoVTable * vt;

      D.46409 = cfg->domain;
      vt = mono_class_vtable (D.46409, klass);
      if (vt == 0B) goto <D.46410>; else goto <D.46411>;
      <D.46410>:
      mono_cfg_set_exception (cfg, 7);
      cfg->exception_ptr = klass;
      D.46288 = 0B;
      return D.46288;
      <D.46411>:
      {
        struct MonoInst * inst;

        D.46272 = cfg->mempool;
        inst = mono_mempool_alloc (D.46272, 56);
        inst->data.op[1].const_val = 0;
        D.46412 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.46412;
        inst->prev = 0B;
        D.46413 = inst->prev;
        inst->next = D.46413;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.46414 = inst->sreg3;
        inst->sreg2 = D.46414;
        D.46415 = inst->sreg2;
        inst->sreg1 = D.46415;
        D.46279 = cfg->ip;
        inst->cil_code = D.46279;
        inst->dreg = -1;
        inst->sreg1 = vtable_reg;
        vt.502 = (int) vt;
        inst->data.op[1].const_val = vt.502;
        D.46283 = cfg->cbb;
        D.46284 = D.46283->last_ins;
        if (D.46284 != 0B) goto <D.46417>; else goto <D.46418>;
        <D.46417>:
        D.46283 = cfg->cbb;
        D.46284 = D.46283->last_ins;
        D.46284->next = inst;
        D.46283 = cfg->cbb;
        D.46284 = D.46283->last_ins;
        inst->prev = D.46284;
        D.46283 = cfg->cbb;
        D.46283->last_ins = inst;
        goto <D.46419>;
        <D.46418>:
        D.46283 = cfg->cbb;
        D.46283 = cfg->cbb;
        D.46283->last_ins = inst;
        D.46284 = D.46283->last_ins;
        D.46283->code = D.46284;
        <D.46419>:
      }
    }
    goto <D.46420>;
    <D.46408>:
    {
      struct MonoInst * inst;

      D.46272 = cfg->mempool;
      inst = mono_mempool_alloc (D.46272, 56);
      inst->data.op[1].const_val = 0;
      D.46421 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46421;
      inst->prev = 0B;
      D.46422 = inst->prev;
      inst->next = D.46422;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46423 = inst->sreg3;
      inst->sreg2 = D.46423;
      D.46424 = inst->sreg2;
      inst->sreg1 = D.46424;
      D.46279 = cfg->ip;
      inst->cil_code = D.46279;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.46283 = cfg->cbb;
      D.46284 = D.46283->last_ins;
      if (D.46284 != 0B) goto <D.46425>; else goto <D.46426>;
      <D.46425>:
      D.46283 = cfg->cbb;
      D.46284 = D.46283->last_ins;
      D.46284->next = inst;
      D.46283 = cfg->cbb;
      D.46284 = D.46283->last_ins;
      inst->prev = D.46284;
      D.46283 = cfg->cbb;
      D.46283->last_ins = inst;
      goto <D.46427>;
      <D.46426>:
      D.46283 = cfg->cbb;
      D.46283 = cfg->cbb;
      D.46283->last_ins = inst;
      D.46284 = D.46283->last_ins;
      D.46283->code = D.46284;
      <D.46427>:
    }
    {
      struct MonoInst * inst;

      D.46272 = cfg->mempool;
      inst = mono_mempool_alloc (D.46272, 56);
      inst->data.op[1].const_val = 0;
      D.46428 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46428;
      inst->prev = 0B;
      D.46429 = inst->prev;
      inst->next = D.46429;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46430 = inst->sreg3;
      inst->sreg2 = D.46430;
      D.46431 = inst->sreg2;
      inst->sreg1 = D.46431;
      D.46279 = cfg->ip;
      inst->cil_code = D.46279;
      inst->dreg = -1;
      inst->sreg1 = klass_reg;
      klass.503 = (int) klass;
      inst->data.op[1].const_val = klass.503;
      D.46283 = cfg->cbb;
      D.46284 = D.46283->last_ins;
      if (D.46284 != 0B) goto <D.46433>; else goto <D.46434>;
      <D.46433>:
      D.46283 = cfg->cbb;
      D.46284 = D.46283->last_ins;
      D.46284->next = inst;
      D.46283 = cfg->cbb;
      D.46284 = D.46283->last_ins;
      inst->prev = D.46284;
      D.46283 = cfg->cbb;
      D.46283->last_ins = inst;
      goto <D.46435>;
      <D.46434>:
      D.46283 = cfg->cbb;
      D.46283 = cfg->cbb;
      D.46283->last_ins = inst;
      D.46284 = D.46283->last_ins;
      D.46283->code = D.46284;
      <D.46435>:
    }
    <D.46420>:
    {
      struct MonoInst * inst;

      D.46272 = cfg->mempool;
      inst = mono_mempool_alloc (D.46272, 56);
      inst->data.op[1].const_val = 0;
      D.46436 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46436;
      inst->prev = 0B;
      D.46437 = inst->prev;
      inst->next = D.46437;
      inst->opcode = 456;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46438 = inst->sreg3;
      inst->sreg2 = D.46438;
      D.46439 = inst->sreg2;
      inst->sreg1 = D.46439;
      D.46279 = cfg->ip;
      inst->cil_code = D.46279;
      inst->data.op[1].p = "InvalidCastException";
      D.46283 = cfg->cbb;
      D.46284 = D.46283->last_ins;
      if (D.46284 != 0B) goto <D.46440>; else goto <D.46441>;
      <D.46440>:
      D.46283 = cfg->cbb;
      D.46284 = D.46283->last_ins;
      D.46284->next = inst;
      D.46283 = cfg->cbb;
      D.46284 = D.46283->last_ins;
      inst->prev = D.46284;
      D.46283 = cfg->cbb;
      D.46283->last_ins = inst;
      goto <D.46442>;
      <D.46441>:
      D.46283 = cfg->cbb;
      D.46283 = cfg->cbb;
      D.46283->last_ins = inst;
      D.46284 = D.46283->last_ins;
      D.46283->code = D.46284;
      <D.46442>:
    }
    goto <D.46397>;
    <D.46396>:
    {
      struct MonoInst * inst;

      D.46272 = cfg->mempool;
      inst = mono_mempool_alloc (D.46272, 56);
      inst->data.op[1].const_val = 0;
      D.46443 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46443;
      inst->prev = 0B;
      D.46444 = inst->prev;
      inst->next = D.46444;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46445 = inst->sreg3;
      inst->sreg2 = D.46445;
      D.46446 = inst->sreg2;
      inst->sreg1 = D.46446;
      D.46279 = cfg->ip;
      inst->cil_code = D.46279;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.46283 = cfg->cbb;
      D.46284 = D.46283->last_ins;
      if (D.46284 != 0B) goto <D.46447>; else goto <D.46448>;
      <D.46447>:
      D.46283 = cfg->cbb;
      D.46284 = D.46283->last_ins;
      D.46284->next = inst;
      D.46283 = cfg->cbb;
      D.46284 = D.46283->last_ins;
      inst->prev = D.46284;
      D.46283 = cfg->cbb;
      D.46283->last_ins = inst;
      goto <D.46449>;
      <D.46448>:
      D.46283 = cfg->cbb;
      D.46283 = cfg->cbb;
      D.46283->last_ins = inst;
      D.46284 = D.46283->last_ins;
      D.46283->code = D.46284;
      <D.46449>:
    }
    mini_emit_castclass_inst (cfg, obj_reg, klass_reg, klass, klass_inst, is_null_bb);
    <D.46397>:
  }
  <D.46387>:
  D.46450 = is_null_bb->cil_code;
  if (D.46450 != 0B) goto <D.46451>; else goto <D.46452>;
  <D.46451>:
  D.46315 = cfg->cil_offset_to_bb;
  D.46450 = is_null_bb->cil_code;
  D.46453 = (int) D.46450;
  D.46317 = cfg->cil_start;
  D.46318 = (int) D.46317;
  D.46454 = D.46453 - D.46318;
  D.46455 = (unsigned int) D.46454;
  D.46456 = D.46455 * 4;
  D.46457 = D.46315 + D.46456;
  *D.46457 = is_null_bb;
  <D.46452>:
  D.46323 = cfg->real_offset;
  is_null_bb->real_offset = D.46323;
  D.46283 = cfg->cbb;
  D.46284 = D.46283->last_ins;
  if (D.46284 != 0B) goto <D.46461>; else goto <D.46458>;
  <D.46461>:
  D.46283 = cfg->cbb;
  D.46284 = D.46283->last_ins;
  D.46328 = D.46284->opcode;
  D.46329 = D.46328 + 64985;
  if (D.46329 <= 9) goto <D.46459>; else goto <D.46462>;
  <D.46462>:
  D.46283 = cfg->cbb;
  D.46284 = D.46283->last_ins;
  D.46328 = D.46284->opcode;
  D.46331 = D.46328 + 64878;
  if (D.46331 <= 9) goto <D.46459>; else goto <D.46463>;
  <D.46463>:
  D.46283 = cfg->cbb;
  D.46284 = D.46283->last_ins;
  D.46328 = D.46284->opcode;
  D.46333 = D.46328 + 64888;
  if (D.46333 <= 9) goto <D.46459>; else goto <D.46458>;
  <D.46459>:
  D.46283 = cfg->cbb;
  D.46284 = D.46283->last_ins;
  D.46334 = D.46284->data.op[1].many_blocks;
  D.46335 = D.46334 + 4;
  D.46336 = *D.46335;
  if (D.46336 == 0B) goto <D.46464>; else goto <D.46458>;
  <D.46464>:
  D.46283 = cfg->cbb;
  D.46284 = D.46283->last_ins;
  D.46334 = D.46284->data.op[1].many_blocks;
  D.46335 = D.46334 + 4;
  *D.46335 = is_null_bb;
  D.46283 = cfg->cbb;
  mono_link_bblock (cfg, D.46283, is_null_bb);
  goto <D.46460>;
  <D.46458>:
  D.46283 = cfg->cbb;
  D.46284 = D.46283->last_ins;
  if (D.46284 == 0B) goto <D.46465>; else goto <D.46467>;
  <D.46467>:
  D.46283 = cfg->cbb;
  D.46284 = D.46283->last_ins;
  D.46328 = D.46284->opcode;
  if (D.46328 != 442) goto <D.46468>; else goto <D.46466>;
  <D.46468>:
  D.46283 = cfg->cbb;
  D.46284 = D.46283->last_ins;
  D.46328 = D.46284->opcode;
  if (D.46328 != 759) goto <D.46469>; else goto <D.46466>;
  <D.46469>:
  D.46283 = cfg->cbb;
  D.46284 = D.46283->last_ins;
  D.46328 = D.46284->opcode;
  D.46329 = D.46328 + 64985;
  if (D.46329 > 9) goto <D.46470>; else goto <D.46466>;
  <D.46470>:
  D.46283 = cfg->cbb;
  D.46284 = D.46283->last_ins;
  D.46328 = D.46284->opcode;
  D.46331 = D.46328 + 64878;
  if (D.46331 > 9) goto <D.46471>; else goto <D.46466>;
  <D.46471>:
  D.46283 = cfg->cbb;
  D.46284 = D.46283->last_ins;
  D.46328 = D.46284->opcode;
  D.46333 = D.46328 + 64888;
  if (D.46333 > 9) goto <D.46465>; else goto <D.46466>;
  <D.46465>:
  D.46283 = cfg->cbb;
  mono_link_bblock (cfg, D.46283, is_null_bb);
  <D.46466>:
  <D.46460>:
  D.46283 = cfg->cbb;
  D.46283->next_bb = is_null_bb;
  cfg->cbb = is_null_bb;
  reset_cast_details (cfg);
  D.46288 = src;
  return D.46288;
}


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.46475;
  unsigned int D.46478;
  unsigned int D.46479;
  _Bool D.46480;
  long int D.46481;
  long int D.46482;
  struct MonoMemPool * D.46485;
  int D.46486;
  struct MonoInst * D.46487;
  int D.46488;
  int D.46489;
  const unsigned char * D.46490;
  struct MonoBasicBlock * D.46491;
  struct MonoInst * D.46492;
  int D.46496;
  struct MonoInst * D.46497;
  int D.46498;
  int D.46499;
  int D.46500;
  int D.46504;
  struct MonoInst * D.46505;
  int D.46506;
  int D.46507;
  int D.46511;
  struct MonoInst * D.46512;
  int D.46513;
  int D.46514;
  struct MonoClass * D.46518;
  struct MonoClass * D.46519;
  unsigned int D.46522;
  int D.46523;
  struct MonoInst * D.46524;
  int D.46525;
  int D.46526;
  struct MonoClass * D.46530;
  struct MonoClass * D.46531;
  unsigned int D.46539;
  unsigned int D.46540;
  unsigned char D.46546;
  unsigned int D.46551;
  int D.46552;
  struct MonoInst * D.46553;
  int D.46554;
  int D.46555;
  int D.46559;
  struct MonoInst * D.46560;
  int D.46561;
  int D.46562;
  int D.46566;
  struct MonoInst * D.46567;
  int D.46568;
  int D.46569;
  unsigned int D.46574;
  unsigned int D.46575;
  unsigned int D.46576;
  short unsigned int D.46577;
  int D.46580;
  struct MonoInst * D.46581;
  int D.46582;
  int D.46583;
  int D.46587;
  struct MonoInst * D.46588;
  int D.46589;
  int D.46590;
  int D.46591;
  int D.46595;
  struct MonoInst * D.46596;
  int D.46597;
  int D.46598;
  int D.46602;
  struct MonoInst * D.46603;
  int D.46604;
  int D.46605;
  int D.46609;
  struct MonoInst * D.46610;
  int D.46611;
  int D.46612;
  int D.46613;
  int D.46614;

  D.46475 = klass->rank;
  if (D.46475 != 0) goto <D.46476>; else goto <D.46477>;
  <D.46476>:
  {
    int rank_reg;
    int eclass_reg;

    D.46478 = alloc_preg (cfg);
    rank_reg = (int) D.46478;
    D.46479 = alloc_preg (cfg);
    eclass_reg = (int) D.46479;
    D.46480 = klass_inst != 0B;
    D.46481 = (long int) D.46480;
    D.46482 = __builtin_expect (D.46481, 0);
    if (D.46482 != 0) goto <D.46483>; else goto <D.46484>;
    <D.46483>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1685, "!klass_inst");
    <D.46484>:
    {
      struct MonoInst * inst;

      D.46485 = cfg->mempool;
      inst = mono_mempool_alloc (D.46485, 56);
      inst->data.op[1].const_val = 0;
      D.46486 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46486;
      inst->prev = 0B;
      D.46487 = inst->prev;
      inst->next = D.46487;
      inst->opcode = 390;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46488 = inst->sreg3;
      inst->sreg2 = D.46488;
      D.46489 = inst->sreg2;
      inst->sreg1 = D.46489;
      D.46490 = cfg->ip;
      inst->cil_code = D.46490;
      inst->dreg = rank_reg;
      inst->sreg1 = klass_reg;
      inst->data.op[0].const_val = 14;
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      if (D.46492 != 0B) goto <D.46493>; else goto <D.46494>;
      <D.46493>:
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      D.46492->next = inst;
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      inst->prev = D.46492;
      D.46491 = cfg->cbb;
      D.46491->last_ins = inst;
      goto <D.46495>;
      <D.46494>:
      D.46491 = cfg->cbb;
      D.46491 = cfg->cbb;
      D.46491->last_ins = inst;
      D.46492 = D.46491->last_ins;
      D.46491->code = D.46492;
      <D.46495>:
    }
    {
      struct MonoInst * inst;

      D.46485 = cfg->mempool;
      inst = mono_mempool_alloc (D.46485, 56);
      inst->data.op[1].const_val = 0;
      D.46496 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46496;
      inst->prev = 0B;
      D.46497 = inst->prev;
      inst->next = D.46497;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46498 = inst->sreg3;
      inst->sreg2 = D.46498;
      D.46499 = inst->sreg2;
      inst->sreg1 = D.46499;
      D.46490 = cfg->ip;
      inst->cil_code = D.46490;
      inst->dreg = -1;
      inst->sreg1 = rank_reg;
      D.46475 = klass->rank;
      D.46500 = (int) D.46475;
      inst->data.op[1].const_val = D.46500;
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      if (D.46492 != 0B) goto <D.46501>; else goto <D.46502>;
      <D.46501>:
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      D.46492->next = inst;
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      inst->prev = D.46492;
      D.46491 = cfg->cbb;
      D.46491->last_ins = inst;
      goto <D.46503>;
      <D.46502>:
      D.46491 = cfg->cbb;
      D.46491 = cfg->cbb;
      D.46491->last_ins = inst;
      D.46492 = D.46491->last_ins;
      D.46491->code = D.46492;
      <D.46503>:
    }
    {
      struct MonoInst * inst;

      D.46485 = cfg->mempool;
      inst = mono_mempool_alloc (D.46485, 56);
      inst->data.op[1].const_val = 0;
      D.46504 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46504;
      inst->prev = 0B;
      D.46505 = inst->prev;
      inst->next = D.46505;
      inst->opcode = 456;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46506 = inst->sreg3;
      inst->sreg2 = D.46506;
      D.46507 = inst->sreg2;
      inst->sreg1 = D.46507;
      D.46490 = cfg->ip;
      inst->cil_code = D.46490;
      inst->data.op[1].p = "InvalidCastException";
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      if (D.46492 != 0B) goto <D.46508>; else goto <D.46509>;
      <D.46508>:
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      D.46492->next = inst;
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      inst->prev = D.46492;
      D.46491 = cfg->cbb;
      D.46491->last_ins = inst;
      goto <D.46510>;
      <D.46509>:
      D.46491 = cfg->cbb;
      D.46491 = cfg->cbb;
      D.46491->last_ins = inst;
      D.46492 = D.46491->last_ins;
      D.46491->code = D.46492;
      <D.46510>:
    }
    {
      struct MonoInst * inst;

      D.46485 = cfg->mempool;
      inst = mono_mempool_alloc (D.46485, 56);
      inst->data.op[1].const_val = 0;
      D.46511 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46511;
      inst->prev = 0B;
      D.46512 = inst->prev;
      inst->next = D.46512;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46513 = inst->sreg3;
      inst->sreg2 = D.46513;
      D.46514 = inst->sreg2;
      inst->sreg1 = D.46514;
      D.46490 = cfg->ip;
      inst->cil_code = D.46490;
      inst->dreg = eclass_reg;
      inst->sreg1 = klass_reg;
      inst->data.op[0].const_val = 4;
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      if (D.46492 != 0B) goto <D.46515>; else goto <D.46516>;
      <D.46515>:
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      D.46492->next = inst;
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      inst->prev = D.46492;
      D.46491 = cfg->cbb;
      D.46491->last_ins = inst;
      goto <D.46517>;
      <D.46516>:
      D.46491 = cfg->cbb;
      D.46491 = cfg->cbb;
      D.46491->last_ins = inst;
      D.46492 = D.46491->last_ins;
      D.46491->code = D.46492;
      <D.46517>:
    }
    D.46518 = klass->cast_class;
    D.46519 = mono_defaults.object_class;
    if (D.46518 == D.46519) goto <D.46520>; else goto <D.46521>;
    <D.46520>:
    {
      int parent_reg;

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

        D.46485 = cfg->mempool;
        inst = mono_mempool_alloc (D.46485, 56);
        inst->data.op[1].const_val = 0;
        D.46523 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.46523;
        inst->prev = 0B;
        D.46524 = inst->prev;
        inst->next = D.46524;
        inst->opcode = 388;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.46525 = inst->sreg3;
        inst->sreg2 = D.46525;
        D.46526 = inst->sreg2;
        inst->sreg1 = D.46526;
        D.46490 = cfg->ip;
        inst->cil_code = D.46490;
        inst->dreg = parent_reg;
        inst->sreg1 = eclass_reg;
        inst->data.op[0].const_val = 28;
        D.46491 = cfg->cbb;
        D.46492 = D.46491->last_ins;
        if (D.46492 != 0B) goto <D.46527>; else goto <D.46528>;
        <D.46527>:
        D.46491 = cfg->cbb;
        D.46492 = D.46491->last_ins;
        D.46492->next = inst;
        D.46491 = cfg->cbb;
        D.46492 = D.46491->last_ins;
        inst->prev = D.46492;
        D.46491 = cfg->cbb;
        D.46491->last_ins = inst;
        goto <D.46529>;
        <D.46528>:
        D.46491 = cfg->cbb;
        D.46491 = cfg->cbb;
        D.46491->last_ins = inst;
        D.46492 = D.46491->last_ins;
        D.46491->code = D.46492;
        <D.46529>:
      }
      D.46530 = mono_defaults.enum_class;
      D.46531 = D.46530->parent;
      mini_emit_class_check_branch (cfg, parent_reg, D.46531, 653, object_is_null);
      D.46530 = mono_defaults.enum_class;
      mini_emit_class_check (cfg, eclass_reg, D.46530);
    }
    goto <D.46532>;
    <D.46521>:
    D.46518 = klass->cast_class;
    D.46530 = mono_defaults.enum_class;
    D.46531 = D.46530->parent;
    if (D.46518 == D.46531) goto <D.46533>; else goto <D.46534>;
    <D.46533>:
    D.46530 = mono_defaults.enum_class;
    D.46531 = D.46530->parent;
    mini_emit_class_check_branch (cfg, eclass_reg, D.46531, 648, object_is_null);
    D.46530 = mono_defaults.enum_class;
    mini_emit_class_check (cfg, eclass_reg, D.46530);
    goto <D.46535>;
    <D.46534>:
    D.46518 = klass->cast_class;
    D.46530 = mono_defaults.enum_class;
    if (D.46518 == D.46530) goto <D.46536>; else goto <D.46537>;
    <D.46536>:
    D.46530 = mono_defaults.enum_class;
    mini_emit_class_check (cfg, eclass_reg, D.46530);
    goto <D.46538>;
    <D.46537>:
    D.46518 = klass->cast_class;
    D.46539 = D.46518->flags;
    D.46540 = D.46539 & 32;
    if (D.46540 != 0) goto <D.46541>; else goto <D.46542>;
    <D.46541>:
    D.46518 = klass->cast_class;
    mini_emit_iface_class_cast (cfg, eclass_reg, D.46518, 0B, 0B);
    goto <D.46543>;
    <D.46542>:
    D.46518 = klass->cast_class;
    mini_emit_castclass (cfg, -1, eclass_reg, D.46518, object_is_null);
    <D.46543>:
    <D.46538>:
    <D.46535>:
    <D.46532>:
    D.46475 = klass->rank;
    if (D.46475 == 1) goto <D.46544>; else goto <D.46545>;
    <D.46544>:
    D.46546 = klass->byval_arg.type;
    if (D.46546 == 29) goto <D.46547>; else goto <D.46548>;
    <D.46547>:
    if (obj_reg != -1) goto <D.46549>; else goto <D.46550>;
    <D.46549>:
    {
      int bounds_reg;

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

        D.46485 = cfg->mempool;
        inst = mono_mempool_alloc (D.46485, 56);
        inst->data.op[1].const_val = 0;
        D.46552 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.46552;
        inst->prev = 0B;
        D.46553 = inst->prev;
        inst->next = D.46553;
        inst->opcode = 388;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.46554 = inst->sreg3;
        inst->sreg2 = D.46554;
        D.46555 = inst->sreg2;
        inst->sreg1 = D.46555;
        D.46490 = cfg->ip;
        inst->cil_code = D.46490;
        inst->dreg = bounds_reg;
        inst->sreg1 = obj_reg;
        inst->data.op[0].const_val = 8;
        D.46491 = cfg->cbb;
        D.46492 = D.46491->last_ins;
        if (D.46492 != 0B) goto <D.46556>; else goto <D.46557>;
        <D.46556>:
        D.46491 = cfg->cbb;
        D.46492 = D.46491->last_ins;
        D.46492->next = inst;
        D.46491 = cfg->cbb;
        D.46492 = D.46491->last_ins;
        inst->prev = D.46492;
        D.46491 = cfg->cbb;
        D.46491->last_ins = inst;
        goto <D.46558>;
        <D.46557>:
        D.46491 = cfg->cbb;
        D.46491 = cfg->cbb;
        D.46491->last_ins = inst;
        D.46492 = D.46491->last_ins;
        D.46491->code = D.46492;
        <D.46558>:
      }
      {
        struct MonoInst * inst;

        D.46485 = cfg->mempool;
        inst = mono_mempool_alloc (D.46485, 56);
        inst->data.op[1].const_val = 0;
        D.46559 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.46559;
        inst->prev = 0B;
        D.46560 = inst->prev;
        inst->next = D.46560;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.46561 = inst->sreg3;
        inst->sreg2 = D.46561;
        D.46562 = inst->sreg2;
        inst->sreg1 = D.46562;
        D.46490 = cfg->ip;
        inst->cil_code = D.46490;
        inst->dreg = -1;
        inst->sreg1 = bounds_reg;
        inst->data.op[1].const_val = 0;
        D.46491 = cfg->cbb;
        D.46492 = D.46491->last_ins;
        if (D.46492 != 0B) goto <D.46563>; else goto <D.46564>;
        <D.46563>:
        D.46491 = cfg->cbb;
        D.46492 = D.46491->last_ins;
        D.46492->next = inst;
        D.46491 = cfg->cbb;
        D.46492 = D.46491->last_ins;
        inst->prev = D.46492;
        D.46491 = cfg->cbb;
        D.46491->last_ins = inst;
        goto <D.46565>;
        <D.46564>:
        D.46491 = cfg->cbb;
        D.46491 = cfg->cbb;
        D.46491->last_ins = inst;
        D.46492 = D.46491->last_ins;
        D.46491->code = D.46492;
        <D.46565>:
      }
      {
        struct MonoInst * inst;

        D.46485 = cfg->mempool;
        inst = mono_mempool_alloc (D.46485, 56);
        inst->data.op[1].const_val = 0;
        D.46566 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.46566;
        inst->prev = 0B;
        D.46567 = inst->prev;
        inst->next = D.46567;
        inst->opcode = 456;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.46568 = inst->sreg3;
        inst->sreg2 = D.46568;
        D.46569 = inst->sreg2;
        inst->sreg1 = D.46569;
        D.46490 = cfg->ip;
        inst->cil_code = D.46490;
        inst->data.op[1].p = "InvalidCastException";
        D.46491 = cfg->cbb;
        D.46492 = D.46491->last_ins;
        if (D.46492 != 0B) goto <D.46570>; else goto <D.46571>;
        <D.46570>:
        D.46491 = cfg->cbb;
        D.46492 = D.46491->last_ins;
        D.46492->next = inst;
        D.46491 = cfg->cbb;
        D.46492 = D.46491->last_ins;
        inst->prev = D.46492;
        D.46491 = cfg->cbb;
        D.46491->last_ins = inst;
        goto <D.46572>;
        <D.46571>:
        D.46491 = cfg->cbb;
        D.46491 = cfg->cbb;
        D.46491->last_ins = inst;
        D.46492 = D.46491->last_ins;
        D.46491->code = D.46492;
        <D.46572>:
      }
    }
    <D.46550>:
    <D.46548>:
    <D.46545>:
  }
  goto <D.46573>;
  <D.46477>:
  {
    int idepth_reg;
    int stypes_reg;
    int stype;

    D.46574 = alloc_preg (cfg);
    idepth_reg = (int) D.46574;
    D.46575 = alloc_preg (cfg);
    stypes_reg = (int) D.46575;
    D.46576 = alloc_preg (cfg);
    stype = (int) D.46576;
    mono_class_setup_supertypes (klass);
    D.46577 = klass->idepth;
    if (D.46577 > 6) goto <D.46578>; else goto <D.46579>;
    <D.46578>:
    {
      struct MonoInst * inst;

      D.46485 = cfg->mempool;
      inst = mono_mempool_alloc (D.46485, 56);
      inst->data.op[1].const_val = 0;
      D.46580 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46580;
      inst->prev = 0B;
      D.46581 = inst->prev;
      inst->next = D.46581;
      inst->opcode = 392;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46582 = inst->sreg3;
      inst->sreg2 = D.46582;
      D.46583 = inst->sreg2;
      inst->sreg1 = D.46583;
      D.46490 = cfg->ip;
      inst->cil_code = D.46490;
      inst->dreg = idepth_reg;
      inst->sreg1 = klass_reg;
      inst->data.op[0].const_val = 12;
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      if (D.46492 != 0B) goto <D.46584>; else goto <D.46585>;
      <D.46584>:
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      D.46492->next = inst;
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      inst->prev = D.46492;
      D.46491 = cfg->cbb;
      D.46491->last_ins = inst;
      goto <D.46586>;
      <D.46585>:
      D.46491 = cfg->cbb;
      D.46491 = cfg->cbb;
      D.46491->last_ins = inst;
      D.46492 = D.46491->last_ins;
      D.46491->code = D.46492;
      <D.46586>:
    }
    {
      struct MonoInst * inst;

      D.46485 = cfg->mempool;
      inst = mono_mempool_alloc (D.46485, 56);
      inst->data.op[1].const_val = 0;
      D.46587 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46587;
      inst->prev = 0B;
      D.46588 = inst->prev;
      inst->next = D.46588;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46589 = inst->sreg3;
      inst->sreg2 = D.46589;
      D.46590 = inst->sreg2;
      inst->sreg1 = D.46590;
      D.46490 = cfg->ip;
      inst->cil_code = D.46490;
      inst->dreg = -1;
      inst->sreg1 = idepth_reg;
      D.46577 = klass->idepth;
      D.46591 = (int) D.46577;
      inst->data.op[1].const_val = D.46591;
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      if (D.46492 != 0B) goto <D.46592>; else goto <D.46593>;
      <D.46592>:
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      D.46492->next = inst;
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      inst->prev = D.46492;
      D.46491 = cfg->cbb;
      D.46491->last_ins = inst;
      goto <D.46594>;
      <D.46593>:
      D.46491 = cfg->cbb;
      D.46491 = cfg->cbb;
      D.46491->last_ins = inst;
      D.46492 = D.46491->last_ins;
      D.46491->code = D.46492;
      <D.46594>:
    }
    {
      struct MonoInst * inst;

      D.46485 = cfg->mempool;
      inst = mono_mempool_alloc (D.46485, 56);
      inst->data.op[1].const_val = 0;
      D.46595 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46595;
      inst->prev = 0B;
      D.46596 = inst->prev;
      inst->next = D.46596;
      inst->opcode = 460;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46597 = inst->sreg3;
      inst->sreg2 = D.46597;
      D.46598 = inst->sreg2;
      inst->sreg1 = D.46598;
      D.46490 = cfg->ip;
      inst->cil_code = D.46490;
      inst->data.op[1].p = "InvalidCastException";
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      if (D.46492 != 0B) goto <D.46599>; else goto <D.46600>;
      <D.46599>:
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      D.46492->next = inst;
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      inst->prev = D.46492;
      D.46491 = cfg->cbb;
      D.46491->last_ins = inst;
      goto <D.46601>;
      <D.46600>:
      D.46491 = cfg->cbb;
      D.46491 = cfg->cbb;
      D.46491->last_ins = inst;
      D.46492 = D.46491->last_ins;
      D.46491->code = D.46492;
      <D.46601>:
    }
    <D.46579>:
    {
      struct MonoInst * inst;

      D.46485 = cfg->mempool;
      inst = mono_mempool_alloc (D.46485, 56);
      inst->data.op[1].const_val = 0;
      D.46602 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46602;
      inst->prev = 0B;
      D.46603 = inst->prev;
      inst->next = D.46603;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46604 = inst->sreg3;
      inst->sreg2 = D.46604;
      D.46605 = inst->sreg2;
      inst->sreg1 = D.46605;
      D.46490 = cfg->ip;
      inst->cil_code = D.46490;
      inst->dreg = stypes_reg;
      inst->sreg1 = klass_reg;
      inst->data.op[0].const_val = 8;
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      if (D.46492 != 0B) goto <D.46606>; else goto <D.46607>;
      <D.46606>:
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      D.46492->next = inst;
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      inst->prev = D.46492;
      D.46491 = cfg->cbb;
      D.46491->last_ins = inst;
      goto <D.46608>;
      <D.46607>:
      D.46491 = cfg->cbb;
      D.46491 = cfg->cbb;
      D.46491->last_ins = inst;
      D.46492 = D.46491->last_ins;
      D.46491->code = D.46492;
      <D.46608>:
    }
    {
      struct MonoInst * inst;

      D.46485 = cfg->mempool;
      inst = mono_mempool_alloc (D.46485, 56);
      inst->data.op[1].const_val = 0;
      D.46609 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46609;
      inst->prev = 0B;
      D.46610 = inst->prev;
      inst->next = D.46610;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46611 = inst->sreg3;
      inst->sreg2 = D.46611;
      D.46612 = inst->sreg2;
      inst->sreg1 = D.46612;
      D.46490 = cfg->ip;
      inst->cil_code = D.46490;
      inst->dreg = stype;
      inst->sreg1 = stypes_reg;
      D.46577 = klass->idepth;
      D.46591 = (int) D.46577;
      D.46613 = D.46591 + -1;
      D.46614 = D.46613 * 4;
      inst->data.op[0].const_val = D.46614;
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      if (D.46492 != 0B) goto <D.46615>; else goto <D.46616>;
      <D.46615>:
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      D.46492->next = inst;
      D.46491 = cfg->cbb;
      D.46492 = D.46491->last_ins;
      inst->prev = D.46492;
      D.46491 = cfg->cbb;
      D.46491->last_ins = inst;
      goto <D.46617>;
      <D.46616>:
      D.46491 = cfg->cbb;
      D.46491 = cfg->cbb;
      D.46491->last_ins = inst;
      D.46492 = D.46491->last_ins;
      D.46491->code = D.46492;
      <D.46617>:
    }
    mini_emit_class_check_inst (cfg, stype, klass, klass_inst);
  }
  <D.46573>:
}


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.46620;
  int D.46621;
  struct MonoInst * D.46622;
  int D.46623;
  int D.46624;
  const unsigned char * D.46625;
  int D.46626;
  struct MonoBasicBlock * D.46627;
  struct MonoInst * D.46628;
  unsigned int D.46633;
  unsigned int D.46634;
  unsigned int D.46637;
  int D.46638;
  struct MonoInst * D.46639;
  guint16 iftmp.504;
  int D.46644;
  int D.46645;
  int D.46649;
  struct MonoInst * D.46650;
  int D.46651;
  int D.46652;
  int D.46657;
  struct MonoInst * D.46658;
  int D.46659;
  int D.46660;
  int klass.505;
  int D.46665;
  struct MonoInst * D.46666;
  int D.46667;
  int D.46668;

  if (klass_inst != 0B) goto <D.46618>; else goto <D.46619>;
  <D.46618>:
  {
    struct MonoInst * inst;

    D.46620 = cfg->mempool;
    inst = mono_mempool_alloc (D.46620, 56);
    inst->data.op[1].const_val = 0;
    D.46621 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46621;
    inst->prev = 0B;
    D.46622 = inst->prev;
    inst->next = D.46622;
    inst->opcode = 322;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46623 = inst->sreg3;
    inst->sreg2 = D.46623;
    D.46624 = inst->sreg2;
    inst->sreg1 = D.46624;
    D.46625 = cfg->ip;
    inst->cil_code = D.46625;
    inst->dreg = -1;
    inst->sreg1 = klass_reg;
    D.46626 = klass_inst->dreg;
    inst->sreg2 = D.46626;
    D.46627 = cfg->cbb;
    D.46628 = D.46627->last_ins;
    if (D.46628 != 0B) goto <D.46629>; else goto <D.46630>;
    <D.46629>:
    D.46627 = cfg->cbb;
    D.46628 = D.46627->last_ins;
    D.46628->next = inst;
    D.46627 = cfg->cbb;
    D.46628 = D.46627->last_ins;
    inst->prev = D.46628;
    D.46627 = cfg->cbb;
    D.46627->last_ins = inst;
    goto <D.46631>;
    <D.46630>:
    D.46627 = cfg->cbb;
    D.46627 = cfg->cbb;
    D.46627->last_ins = inst;
    D.46628 = D.46627->last_ins;
    D.46627->code = D.46628;
    <D.46631>:
  }
  goto <D.46632>;
  <D.46619>:
  D.46633 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.46634 = D.46633 & 64;
  if (D.46634 != 0) goto <D.46635>; else goto <D.46636>;
  <D.46635>:
  {
    int const_reg;

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

      D.46620 = cfg->mempool;
      inst = mono_mempool_alloc (D.46620, 56);
      inst->data.op[1].const_val = 0;
      D.46638 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46638;
      inst->prev = 0B;
      D.46639 = inst->prev;
      inst->next = D.46639;
      D.46633 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.46634 = D.46633 & 64;
      if (D.46634 != 0) goto <D.46641>; else goto <D.46642>;
      <D.46641>:
      iftmp.504 = 732;
      goto <D.46643>;
      <D.46642>:
      iftmp.504 = 362;
      <D.46643>:
      inst->opcode = iftmp.504;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46644 = inst->sreg3;
      inst->sreg2 = D.46644;
      D.46645 = inst->sreg2;
      inst->sreg1 = D.46645;
      D.46625 = cfg->ip;
      inst->cil_code = D.46625;
      inst->dreg = const_reg;
      inst->data.op[0].p = klass;
      inst->data.op[1].const_val = 11;
      D.46627 = cfg->cbb;
      D.46628 = D.46627->last_ins;
      if (D.46628 != 0B) goto <D.46646>; else goto <D.46647>;
      <D.46646>:
      D.46627 = cfg->cbb;
      D.46628 = D.46627->last_ins;
      D.46628->next = inst;
      D.46627 = cfg->cbb;
      D.46628 = D.46627->last_ins;
      inst->prev = D.46628;
      D.46627 = cfg->cbb;
      D.46627->last_ins = inst;
      goto <D.46648>;
      <D.46647>:
      D.46627 = cfg->cbb;
      D.46627 = cfg->cbb;
      D.46627->last_ins = inst;
      D.46628 = D.46627->last_ins;
      D.46627->code = D.46628;
      <D.46648>:
    }
    {
      struct MonoInst * inst;

      D.46620 = cfg->mempool;
      inst = mono_mempool_alloc (D.46620, 56);
      inst->data.op[1].const_val = 0;
      D.46649 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46649;
      inst->prev = 0B;
      D.46650 = inst->prev;
      inst->next = D.46650;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46651 = inst->sreg3;
      inst->sreg2 = D.46651;
      D.46652 = inst->sreg2;
      inst->sreg1 = D.46652;
      D.46625 = cfg->ip;
      inst->cil_code = D.46625;
      inst->dreg = -1;
      inst->sreg1 = klass_reg;
      inst->sreg2 = const_reg;
      D.46627 = cfg->cbb;
      D.46628 = D.46627->last_ins;
      if (D.46628 != 0B) goto <D.46653>; else goto <D.46654>;
      <D.46653>:
      D.46627 = cfg->cbb;
      D.46628 = D.46627->last_ins;
      D.46628->next = inst;
      D.46627 = cfg->cbb;
      D.46628 = D.46627->last_ins;
      inst->prev = D.46628;
      D.46627 = cfg->cbb;
      D.46627->last_ins = inst;
      goto <D.46655>;
      <D.46654>:
      D.46627 = cfg->cbb;
      D.46627 = cfg->cbb;
      D.46627->last_ins = inst;
      D.46628 = D.46627->last_ins;
      D.46627->code = D.46628;
      <D.46655>:
    }
  }
  goto <D.46656>;
  <D.46636>:
  {
    struct MonoInst * inst;

    D.46620 = cfg->mempool;
    inst = mono_mempool_alloc (D.46620, 56);
    inst->data.op[1].const_val = 0;
    D.46657 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46657;
    inst->prev = 0B;
    D.46658 = inst->prev;
    inst->next = D.46658;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46659 = inst->sreg3;
    inst->sreg2 = D.46659;
    D.46660 = inst->sreg2;
    inst->sreg1 = D.46660;
    D.46625 = cfg->ip;
    inst->cil_code = D.46625;
    inst->dreg = -1;
    inst->sreg1 = klass_reg;
    klass.505 = (int) klass;
    inst->data.op[1].const_val = klass.505;
    D.46627 = cfg->cbb;
    D.46628 = D.46627->last_ins;
    if (D.46628 != 0B) goto <D.46662>; else goto <D.46663>;
    <D.46662>:
    D.46627 = cfg->cbb;
    D.46628 = D.46627->last_ins;
    D.46628->next = inst;
    D.46627 = cfg->cbb;
    D.46628 = D.46627->last_ins;
    inst->prev = D.46628;
    D.46627 = cfg->cbb;
    D.46627->last_ins = inst;
    goto <D.46664>;
    <D.46663>:
    D.46627 = cfg->cbb;
    D.46627 = cfg->cbb;
    D.46627->last_ins = inst;
    D.46628 = D.46627->last_ins;
    D.46627->code = D.46628;
    <D.46664>:
  }
  <D.46656>:
  <D.46632>:
  {
    struct MonoInst * inst;

    D.46620 = cfg->mempool;
    inst = mono_mempool_alloc (D.46620, 56);
    inst->data.op[1].const_val = 0;
    D.46665 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46665;
    inst->prev = 0B;
    D.46666 = inst->prev;
    inst->next = D.46666;
    inst->opcode = 456;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46667 = inst->sreg3;
    inst->sreg2 = D.46667;
    D.46668 = inst->sreg2;
    inst->sreg1 = D.46668;
    D.46625 = cfg->ip;
    inst->cil_code = D.46625;
    inst->data.op[1].p = "InvalidCastException";
    D.46627 = cfg->cbb;
    D.46628 = D.46627->last_ins;
    if (D.46628 != 0B) goto <D.46669>; else goto <D.46670>;
    <D.46669>:
    D.46627 = cfg->cbb;
    D.46628 = D.46627->last_ins;
    D.46628->next = inst;
    D.46627 = cfg->cbb;
    D.46628 = D.46627->last_ins;
    inst->prev = D.46628;
    D.46627 = cfg->cbb;
    D.46627->last_ins = inst;
    goto <D.46671>;
    <D.46670>:
    D.46627 = cfg->cbb;
    D.46627 = cfg->cbb;
    D.46627->last_ins = inst;
    D.46628 = D.46627->last_ins;
    D.46627->code = D.46628;
    <D.46671>:
  }
}


handle_stack_args (struct MonoCompile * cfg, struct MonoInst * * sp, int count)
{
  unsigned int D.46674;
  int D.46677;
  short unsigned int D.46678;
  short unsigned int D.46681;
  struct MonoBasicBlock * * D.46682;
  unsigned int i.506;
  unsigned int D.46684;
  struct MonoBasicBlock * * D.46685;
  unsigned int D.46686;
  unsigned int D.46687;
  struct MonoInst * * D.46690;
  short int D.46693;
  int D.46694;
  struct MonoMemPool * D.46697;
  unsigned int count.507;
  unsigned int D.46699;
  void * D.46700;
  struct MonoMethod * D.46701;
  struct MonoInst * * D.46704;
  struct MonoInst * * D.46705;
  struct MonoInst * * D.46706;
  struct MonoInst * D.46707;
  struct MonoType * D.46708;
  struct MonoInst * D.46709;
  struct MonoInst * D.46711;
  short unsigned int D.46714;
  int D.46719;
  struct MonoInst * D.46720;
  int D.46721;
  int D.46722;
  const unsigned char * D.46723;
  struct MonoInst * * D.46724;
  struct MonoInst * * D.46725;
  struct MonoInst * D.46726;
  int D.46727;
  unsigned int D.46728;
  unsigned int D.46729;
  struct MonoInst * * D.46730;
  struct MonoInst * D.46731;
  struct MonoType * D.46732;
  unsigned int D.46733;
  short unsigned int D.46734;
  struct MonoClass * D.46735;
  int D.46736;
  int D.46737;
  short unsigned int D.46738;
  struct MonoClass * D.46741;
  struct MonoBasicBlock * D.46742;
  struct MonoInst * D.46743;
  const unsigned char * D.46747;
  unsigned int bindex.508;
  unsigned int D.46751;
  struct MonoBasicBlock * * D.46752;
  struct MonoInst * * D.46757;
  struct MonoInst * D.46758;
  int D.46759;
  unsigned int D.46760;
  unsigned int D.46761;
  struct MonoInst * * D.46762;
  struct MonoInst * D.46763;
  struct MonoType * D.46764;
  unsigned int D.46765;
  short unsigned int D.46766;
  struct MonoClass * D.46767;
  int D.46768;
  struct MonoClass * D.46771;
  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.46672>; else goto <D.46673>;
  <D.46672>:
  return;
  <D.46673>:
  D.46674 = cfg->verbose_level;
  if (D.46674 > 3) goto <D.46675>; else goto <D.46676>;
  <D.46675>:
  D.46677 = bb->block_num;
  printf ("%d item(s) on exit from B%d\n", count, D.46677);
  <D.46676>:
  D.46678 = bb->out_scount;
  if (D.46678 == 0) goto <D.46679>; else goto <D.46680>;
  <D.46679>:
  D.46681 = (short unsigned int) count;
  bb->out_scount = D.46681;
  found = 0;
  i = 0;
  goto <D.24432>;
  <D.24431>:
  D.46682 = bb->out_bb;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46685 = D.46682 + D.46684;
  outb = *D.46685;
  D.46686 = outb->flags;
  D.46687 = D.46686 & 16;
  if (D.46687 != 0) goto <D.46688>; else goto <D.46689>;
  <D.46688>:
  // predicted unlikely by continue predictor.
  goto <D.24429>;
  <D.46689>:
  D.46690 = outb->in_stack;
  if (D.46690 != 0B) goto <D.46691>; else goto <D.46692>;
  <D.46691>:
  found = 1;
  D.46690 = outb->in_stack;
  bb->out_stack = D.46690;
  goto <D.24430>;
  <D.46692>:
  <D.24429>:
  i = i + 1;
  <D.24432>:
  D.46693 = bb->out_count;
  D.46694 = (int) D.46693;
  if (D.46694 > i) goto <D.24431>; else goto <D.24430>;
  <D.24430>:
  if (found == 0) goto <D.46695>; else goto <D.46696>;
  <D.46695>:
  D.46697 = cfg->mempool;
  count.507 = (unsigned int) count;
  D.46699 = count.507 * 4;
  D.46700 = mono_mempool_alloc (D.46697, D.46699);
  bb->out_stack = D.46700;
  i = 0;
  goto <D.24434>;
  <D.24433>:
  D.46701 = cfg->inlined_method;
  if (D.46701 != 0B) goto <D.46702>; else goto <D.46703>;
  <D.46702>:
  D.46704 = bb->out_stack;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46705 = D.46704 + D.46684;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46706 = sp + D.46684;
  D.46707 = *D.46706;
  D.46708 = type_from_stack_type (D.46707);
  D.46709 = mono_compile_create_var (cfg, D.46708, 329);
  *D.46705 = D.46709;
  goto <D.46710>;
  <D.46703>:
  D.46704 = bb->out_stack;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46705 = D.46704 + D.46684;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46706 = sp + D.46684;
  D.46707 = *D.46706;
  D.46711 = mono_compile_get_interface_var (cfg, i, D.46707);
  *D.46705 = D.46711;
  <D.46710>:
  i = i + 1;
  <D.24434>:
  if (i < count) goto <D.24433>; else goto <D.24435>;
  <D.24435>:
  <D.46696>:
  <D.46680>:
  i = 0;
  goto <D.24438>;
  <D.24437>:
  D.46682 = bb->out_bb;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46685 = D.46682 + D.46684;
  outb = *D.46685;
  D.46686 = outb->flags;
  D.46687 = D.46686 & 16;
  if (D.46687 != 0) goto <D.46712>; else goto <D.46713>;
  <D.46712>:
  // predicted unlikely by continue predictor.
  goto <D.24436>;
  <D.46713>:
  D.46714 = outb->in_scount;
  if (D.46714 != 0) goto <D.46715>; else goto <D.46716>;
  <D.46715>:
  D.46714 = outb->in_scount;
  D.46678 = bb->out_scount;
  if (D.46714 != D.46678) goto <D.46717>; else goto <D.46718>;
  <D.46717>:
  cfg->unverifiable = 1;
  return;
  <D.46718>:
  // predicted unlikely by continue predictor.
  goto <D.24436>;
  <D.46716>:
  D.46681 = (short unsigned int) count;
  outb->in_scount = D.46681;
  D.46704 = bb->out_stack;
  outb->in_stack = D.46704;
  <D.24436>:
  i = i + 1;
  <D.24438>:
  D.46693 = bb->out_count;
  D.46694 = (int) D.46693;
  if (D.46694 > i) goto <D.24437>; else goto <D.24439>;
  <D.24439>:
  locals = bb->out_stack;
  cfg->cbb = bb;
  i = 0;
  goto <D.24441>;
  <D.24440>:
  D.46697 = cfg->mempool;
  inst = mono_mempool_alloc (D.46697, 56);
  inst->data.op[1].const_val = 0;
  D.46719 = inst->data.op[1].const_val;
  inst->data.op[0].const_val = D.46719;
  inst->prev = 0B;
  D.46720 = inst->prev;
  inst->next = D.46720;
  inst->opcode = 424;
  inst->flags = 0;
  inst->type = 0;
  inst->dreg = -1;
  inst->sreg3 = -1;
  D.46721 = inst->sreg3;
  inst->sreg2 = D.46721;
  D.46722 = inst->sreg2;
  inst->sreg1 = D.46722;
  D.46723 = cfg->ip;
  inst->cil_code = D.46723;
  D.46724 = cfg->varinfo;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46725 = locals + D.46684;
  D.46726 = *D.46725;
  D.46727 = D.46726->data.op[0].const_val;
  D.46728 = (unsigned int) D.46727;
  D.46729 = D.46728 * 4;
  D.46730 = D.46724 + D.46729;
  D.46731 = *D.46730;
  D.46732 = D.46731->data.op[1].vtype;
  D.46733 = mono_type_to_regmove (cfg, D.46732);
  D.46734 = (short unsigned int) D.46733;
  inst->opcode = D.46734;
  D.46724 = cfg->varinfo;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46725 = locals + D.46684;
  D.46726 = *D.46725;
  D.46727 = D.46726->data.op[0].const_val;
  D.46728 = (unsigned int) D.46727;
  D.46729 = D.46728 * 4;
  D.46730 = D.46724 + D.46729;
  D.46731 = *D.46730;
  D.46735 = D.46731->klass;
  inst->klass = D.46735;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46706 = sp + D.46684;
  D.46707 = *D.46706;
  D.46736 = D.46707->dreg;
  inst->sreg1 = D.46736;
  D.46724 = cfg->varinfo;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46725 = locals + D.46684;
  D.46726 = *D.46725;
  D.46727 = D.46726->data.op[0].const_val;
  D.46728 = (unsigned int) D.46727;
  D.46729 = D.46728 * 4;
  D.46730 = D.46724 + D.46729;
  D.46731 = *D.46730;
  D.46737 = D.46731->dreg;
  inst->dreg = D.46737;
  D.46738 = inst->opcode;
  if (D.46738 == 427) goto <D.46739>; else goto <D.46740>;
  <D.46739>:
  D.46724 = cfg->varinfo;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46725 = locals + D.46684;
  D.46726 = *D.46725;
  D.46727 = D.46726->data.op[0].const_val;
  D.46728 = (unsigned int) D.46727;
  D.46729 = D.46728 * 4;
  D.46730 = D.46724 + D.46729;
  D.46731 = *D.46730;
  D.46732 = D.46731->data.op[1].vtype;
  D.46741 = mono_class_from_mono_type (D.46732);
  inst->klass = D.46741;
  <D.46740>:
  D.46742 = cfg->cbb;
  D.46743 = D.46742->last_ins;
  if (D.46743 != 0B) goto <D.46744>; else goto <D.46745>;
  <D.46744>:
  D.46742 = cfg->cbb;
  D.46743 = D.46742->last_ins;
  D.46743->next = inst;
  D.46742 = cfg->cbb;
  D.46743 = D.46742->last_ins;
  inst->prev = D.46743;
  D.46742 = cfg->cbb;
  D.46742->last_ins = inst;
  goto <D.46746>;
  <D.46745>:
  D.46742 = cfg->cbb;
  D.46742 = cfg->cbb;
  D.46742->last_ins = inst;
  D.46743 = D.46742->last_ins;
  D.46742->code = D.46743;
  <D.46746>:
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46706 = sp + D.46684;
  D.46707 = *D.46706;
  D.46747 = D.46707->cil_code;
  inst->cil_code = D.46747;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46706 = sp + D.46684;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46725 = locals + D.46684;
  D.46726 = *D.46725;
  *D.46706 = D.46726;
  D.46674 = cfg->verbose_level;
  if (D.46674 > 3) goto <D.46748>; else goto <D.46749>;
  <D.46748>:
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46725 = locals + D.46684;
  D.46726 = *D.46725;
  D.46727 = D.46726->data.op[0].const_val;
  printf ("storing %d to temp %d\n", i, D.46727);
  <D.46749>:
  i = i + 1;
  <D.24441>:
  if (i < count) goto <D.24440>; else goto <D.24442>;
  <D.24442>:
  found = 1;
  bindex = 0;
  goto <D.24450>;
  <D.24449>:
  found = 0;
  goto <D.24443>;
  <D.24448>:
  D.46682 = bb->out_bb;
  bindex.508 = (unsigned int) bindex;
  D.46751 = bindex.508 * 4;
  D.46752 = D.46682 + D.46751;
  outb = *D.46752;
  D.46686 = outb->flags;
  D.46687 = D.46686 & 16;
  if (D.46687 != 0) goto <D.46753>; else goto <D.46754>;
  <D.46753>:
  bindex = bindex + 1;
  // predicted unlikely by continue predictor.
  goto <D.24443>;
  <D.46754>:
  D.46690 = outb->in_stack;
  if (D.46690 != locals) goto <D.46755>; else goto <D.46756>;
  <D.46755>:
  i = 0;
  goto <D.24445>;
  <D.24444>:
  D.46697 = cfg->mempool;
  inst = mono_mempool_alloc (D.46697, 56);
  inst->data.op[1].const_val = 0;
  D.46719 = inst->data.op[1].const_val;
  inst->data.op[0].const_val = D.46719;
  inst->prev = 0B;
  D.46720 = inst->prev;
  inst->next = D.46720;
  inst->opcode = 424;
  inst->flags = 0;
  inst->type = 0;
  inst->dreg = -1;
  inst->sreg3 = -1;
  D.46721 = inst->sreg3;
  inst->sreg2 = D.46721;
  D.46722 = inst->sreg2;
  inst->sreg1 = D.46722;
  D.46723 = cfg->ip;
  inst->cil_code = D.46723;
  D.46724 = cfg->varinfo;
  D.46690 = outb->in_stack;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46757 = D.46690 + D.46684;
  D.46758 = *D.46757;
  D.46759 = D.46758->data.op[0].const_val;
  D.46760 = (unsigned int) D.46759;
  D.46761 = D.46760 * 4;
  D.46762 = D.46724 + D.46761;
  D.46763 = *D.46762;
  D.46764 = D.46763->data.op[1].vtype;
  D.46765 = mono_type_to_regmove (cfg, D.46764);
  D.46766 = (short unsigned int) D.46765;
  inst->opcode = D.46766;
  D.46724 = cfg->varinfo;
  D.46690 = outb->in_stack;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46757 = D.46690 + D.46684;
  D.46758 = *D.46757;
  D.46759 = D.46758->data.op[0].const_val;
  D.46760 = (unsigned int) D.46759;
  D.46761 = D.46760 * 4;
  D.46762 = D.46724 + D.46761;
  D.46763 = *D.46762;
  D.46767 = D.46763->klass;
  inst->klass = D.46767;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46706 = sp + D.46684;
  D.46707 = *D.46706;
  D.46736 = D.46707->dreg;
  inst->sreg1 = D.46736;
  D.46724 = cfg->varinfo;
  D.46690 = outb->in_stack;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46757 = D.46690 + D.46684;
  D.46758 = *D.46757;
  D.46759 = D.46758->data.op[0].const_val;
  D.46760 = (unsigned int) D.46759;
  D.46761 = D.46760 * 4;
  D.46762 = D.46724 + D.46761;
  D.46763 = *D.46762;
  D.46768 = D.46763->dreg;
  inst->dreg = D.46768;
  D.46738 = inst->opcode;
  if (D.46738 == 427) goto <D.46769>; else goto <D.46770>;
  <D.46769>:
  D.46724 = cfg->varinfo;
  D.46690 = outb->in_stack;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46757 = D.46690 + D.46684;
  D.46758 = *D.46757;
  D.46759 = D.46758->data.op[0].const_val;
  D.46760 = (unsigned int) D.46759;
  D.46761 = D.46760 * 4;
  D.46762 = D.46724 + D.46761;
  D.46763 = *D.46762;
  D.46764 = D.46763->data.op[1].vtype;
  D.46771 = mono_class_from_mono_type (D.46764);
  inst->klass = D.46771;
  <D.46770>:
  D.46742 = cfg->cbb;
  D.46743 = D.46742->last_ins;
  if (D.46743 != 0B) goto <D.46772>; else goto <D.46773>;
  <D.46772>:
  D.46742 = cfg->cbb;
  D.46743 = D.46742->last_ins;
  D.46743->next = inst;
  D.46742 = cfg->cbb;
  D.46743 = D.46742->last_ins;
  inst->prev = D.46743;
  D.46742 = cfg->cbb;
  D.46742->last_ins = inst;
  goto <D.46774>;
  <D.46773>:
  D.46742 = cfg->cbb;
  D.46742 = cfg->cbb;
  D.46742->last_ins = inst;
  D.46743 = D.46742->last_ins;
  D.46742->code = D.46743;
  <D.46774>:
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46706 = sp + D.46684;
  D.46707 = *D.46706;
  D.46747 = D.46707->cil_code;
  inst->cil_code = D.46747;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46706 = sp + D.46684;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46725 = locals + D.46684;
  D.46726 = *D.46725;
  *D.46706 = D.46726;
  D.46674 = cfg->verbose_level;
  if (D.46674 > 3) goto <D.46775>; else goto <D.46776>;
  <D.46775>:
  D.46690 = outb->in_stack;
  i.506 = (unsigned int) i;
  D.46684 = i.506 * 4;
  D.46757 = D.46690 + D.46684;
  D.46758 = *D.46757;
  D.46759 = D.46758->data.op[0].const_val;
  printf ("storing %d to temp %d\n", i, D.46759);
  <D.46776>:
  i = i + 1;
  <D.24445>:
  if (i < count) goto <D.24444>; else goto <D.24446>;
  <D.24446>:
  locals = outb->in_stack;
  found = 1;
  goto <D.24447>;
  <D.46756>:
  bindex = bindex + 1;
  <D.24443>:
  D.46693 = bb->out_count;
  D.46694 = (int) D.46693;
  if (D.46694 > bindex) goto <D.24448>; else goto <D.24447>;
  <D.24447>:
  <D.24450>:
  if (found != 0) goto <D.24449>; else goto <D.24451>;
  <D.24451>:
}


mono_compile_get_interface_var (struct MonoCompile * cfg, int slot, struct MonoInst * ins)
{
  struct MonoMethodHeader * D.46778;
  <unnamed-unsigned:15> D.46779;
  int D.46780;
  struct MonoInst * D.46783;
  struct MonoType * D.46784;
  unsigned char D.46785;
  int D.46786;
  int D.46787;
  int D.46788;
  guint16 * D.46789;
  unsigned int pos.509;
  unsigned int D.46791;
  guint16 * D.46792;
  short unsigned int D.46793;
  struct MonoInst * * D.46796;
  unsigned int vnum.510;
  unsigned int D.46798;
  struct MonoInst * * D.46799;
  struct MonoType * D.46800;
  int D.46801;
  short unsigned int D.46802;
  struct MonoType * D.46803;
  struct MonoInst * res;
  int pos;
  int vnum;

  D.46778 = cfg->header;
  D.46779 = D.46778->max_stack;
  D.46780 = (int) D.46779;
  if (D.46780 <= slot) goto <D.46781>; else goto <D.46782>;
  <D.46781>:
  D.46784 = type_from_stack_type (ins);
  D.46783 = mono_compile_create_var (cfg, D.46784, 329);
  return D.46783;
  <D.46782>:
  D.46785 = ins->type;
  D.46786 = (int) D.46785;
  D.46787 = D.46786 + -1;
  D.46788 = slot * 8;
  pos = D.46787 + D.46788;
  D.46785 = ins->type;
  D.46786 = (int) D.46785;
  switch (D.46786) <default: <D.24409>, case 1: <D.24402>, case 2: <D.24403>, case 3: <D.24405>, case 4: <D.24404>, case 5: <D.24406>, case 6: <D.24407>>
  <D.24402>:
  <D.24403>:
  <D.24404>:
  <D.24405>:
  <D.24406>:
  <D.24407>:
  D.46789 = cfg->intvars;
  pos.509 = (unsigned int) pos;
  D.46791 = pos.509 * 2;
  D.46792 = D.46789 + D.46791;
  D.46793 = *D.46792;
  vnum = (int) D.46793;
  if (vnum != 0) goto <D.46794>; else goto <D.46795>;
  <D.46794>:
  D.46796 = cfg->varinfo;
  vnum.510 = (unsigned int) vnum;
  D.46798 = vnum.510 * 4;
  D.46799 = D.46796 + D.46798;
  D.46783 = *D.46799;
  return D.46783;
  <D.46795>:
  D.46800 = type_from_stack_type (ins);
  res = mono_compile_create_var (cfg, D.46800, 329);
  D.46789 = cfg->intvars;
  pos.509 = (unsigned int) pos;
  D.46791 = pos.509 * 2;
  D.46792 = D.46789 + D.46791;
  D.46801 = res->data.op[0].const_val;
  D.46802 = (short unsigned int) D.46801;
  *D.46792 = D.46802;
  goto <D.24408>;
  <D.24409>:
  D.46803 = type_from_stack_type (ins);
  res = mono_compile_create_var (cfg, D.46803, 329);
  <D.24408>:
  D.46783 = res;
  return D.46783;
}


handle_box (struct MonoCompile * cfg, struct MonoInst * val, struct MonoClass * klass, int context_used, struct MonoBasicBlock * * out_cbb)
{
  struct MonoBasicBlock * D.46805;
  int D.46806;
  struct MonoMethod * D.46811;
  struct MonoInst * D.46812;
  struct MonoMethodSignature * D.46813;
  int pass_mrgctx.511;
  _Bool D.46815;
  long int D.46816;
  long int D.46817;
  int pass_vtable.512;
  struct MonoDomain * D.46823;
  struct MonoClass * D.46824;
  _Bool D.46825;
  long int D.46826;
  long int D.46827;
  struct MonoMemPool * D.46830;
  int D.46831;
  struct MonoInst * D.46832;
  guint16 iftmp.513;
  unsigned int D.46834;
  unsigned int D.46835;
  int D.46839;
  int D.46840;
  const unsigned char * D.46841;
  void * iftmp.514;
  unsigned int D.46846;
  int D.46847;
  struct MonoInst * D.46848;
  int D.46852;
  unsigned int D.46855;
  unsigned int D.46856;
  unsigned int D.46857;
  unsigned int D.46858;
  int D.46859;
  unsigned int D.46860;
  unsigned int D.46861;
  int D.46862;
  unsigned int D.46863;
  unsigned int D.46864;
  int D.46865;
  int D.46866;
  struct MonoInst * D.46867;
  int D.46868;
  int D.46869;
  int D.46870;
  int D.46874;
  struct MonoInst * D.46875;
  int D.46876;
  int D.46877;
  unsigned int D.46880;
  unsigned int D.46881;
  int D.46882;
  unsigned char * D.46886;
  struct MonoBasicBlock * * D.46889;
  int D.46890;
  unsigned char * D.46891;
  int D.46892;
  int D.46893;
  unsigned int D.46894;
  unsigned int D.46895;
  struct MonoBasicBlock * * D.46896;
  unsigned int D.46897;
  short unsigned int D.46902;
  short unsigned int D.46903;
  short unsigned int D.46905;
  short unsigned int D.46907;
  struct MonoBasicBlock * * D.46908;
  struct MonoBasicBlock * * D.46909;
  struct MonoBasicBlock * D.46910;
  void * D.46920;
  struct MonoBasicBlock * * D.46921;
  struct MonoBasicBlock * * D.46922;
  unsigned int D.46926;
  unsigned int D.46929;
  unsigned int D.46930;
  int D.46931;
  int D.46949;
  struct MonoInst * D.46950;
  int D.46951;
  int D.46952;
  int D.46956;
  struct MonoInst * D.46957;
  int D.46958;
  int D.46959;
  unsigned int D.46962;
  unsigned int D.46963;
  int D.46964;
  unsigned char * D.46968;
  int D.46971;
  int D.46972;
  unsigned int D.46973;
  unsigned int D.46974;
  struct MonoBasicBlock * * D.46975;
  void * D.46991;
  struct MonoBasicBlock * * D.46992;
  struct MonoBasicBlock * * D.46993;
  unsigned int D.46999;
  unsigned int D.47000;
  int D.47001;
  int D.47021;
  struct MonoInst * D.47022;
  struct MonoType * D.47023;
  unsigned int D.47024;
  short unsigned int D.47025;
  int D.47026;
  int D.47027;
  struct MonoInst * val.515;
  int D.47029;
  int D.47030;
  struct MonoClass * D.47031;
  int D.47035;
  struct MonoInst * D.47036;
  int D.47037;
  int D.47038;
  int D.47042;
  struct MonoInst * D.47043;
  int D.47044;
  int D.47045;
  unsigned int D.47048;
  unsigned int D.47049;
  int D.47050;
  unsigned char * D.47054;
  int D.47057;
  int D.47058;
  unsigned int D.47059;
  unsigned int D.47060;
  struct MonoBasicBlock * * D.47061;
  void * D.47077;
  struct MonoBasicBlock * * D.47078;
  struct MonoBasicBlock * * D.47079;
  unsigned int D.47085;
  unsigned int D.47086;
  int D.47087;
  unsigned char * D.47105;
  int D.47108;
  int D.47109;
  unsigned int D.47110;
  unsigned int D.47111;
  struct MonoBasicBlock * * D.47112;
  unsigned int D.47127;
  struct MonoInst * iftmp.516;
  unsigned int D.47129;
  unsigned int D.47130;
  struct MonoInst * * D.47133;
  unsigned int D.47134;
  unsigned int D.47135;
  struct MonoInst * * D.47136;
  int D.47140;
  struct MonoInst * D.47141;
  int D.47142;
  int D.47143;
  unsigned char D.47144;
  unsigned char D.47145;
  struct MonoClass * D.47146;
  unsigned int D.47147;
  int D.47148;
  int D.47149;
  _Bool D.47150;
  long int D.47151;
  long int D.47152;
  struct MonoType * D.47155;
  int D.47156;
  _Bool iftmp.517;
  int D.47160;
  int iftmp.518;
  unsigned char D.47167;
  struct MonoInst * iftmp.519;
  int D.47173;
  int D.47174;
  unsigned int D.47175;
  sizetype D.47178;
  sizetype D.47179;
  sizetype D.47180;
  struct MonoInst * * D.47181;
  struct MonoInst * iftmp.520;
  int D.47184;
  unsigned int D.47185;
  sizetype D.47188;
  sizetype D.47189;
  struct MonoInst * * D.47190;
  _Bool D.47192;
  long int D.47193;
  long int D.47194;
  _Bool D.47197;
  long int D.47198;
  long int D.47199;
  unsigned char D.47202;
  unsigned char D.47203;
  unsigned char D.47204;
  unsigned char D.47205;
  int D.47209;
  struct MonoInst * D.47210;
  int D.47211;
  int D.47212;
  int D.47213;
  int D.47217;
  struct MonoInst * D.47218;
  int D.47219;
  int D.47220;
  unsigned int D.47223;
  unsigned int D.47224;
  int D.47225;
  unsigned char * D.47229;
  int D.47232;
  int D.47233;
  unsigned int D.47234;
  unsigned int D.47235;
  struct MonoBasicBlock * * D.47236;
  void * D.47252;
  struct MonoBasicBlock * * D.47253;
  struct MonoBasicBlock * * D.47254;
  unsigned int D.47260;
  unsigned int D.47261;
  int D.47262;
  unsigned char * D.47280;
  int D.47283;
  int D.47284;
  unsigned int D.47285;
  unsigned int D.47286;
  struct MonoBasicBlock * * D.47287;
  struct MonoClass * D.47302;
  struct MonoType * D.47303;
  int D.47304;
  int D.47308;
  struct MonoInst * D.47309;
  int D.47310;
  int D.47311;
  unsigned int D.47314;
  unsigned int D.47315;
  int D.47316;
  unsigned char * D.47320;
  int D.47323;
  int D.47324;
  unsigned int D.47325;
  unsigned int D.47326;
  struct MonoBasicBlock * * D.47327;
  void * D.47343;
  struct MonoBasicBlock * * D.47344;
  struct MonoBasicBlock * * D.47345;
  unsigned int D.47351;
  unsigned int D.47352;
  int D.47353;
  unsigned char * D.47371;
  int D.47374;
  int D.47375;
  unsigned int D.47376;
  unsigned int D.47377;
  struct MonoBasicBlock * * D.47378;
  unsigned int D.47395;
  short unsigned int D.47396;
  struct MonoClass * D.47397;
  struct MonoInst * alloc;
  struct MonoInst * ins;

  D.46805 = cfg->cbb;
  *out_cbb = D.46805;
  D.46806 = mono_class_is_nullable (klass);
  if (D.46806 != 0) goto <D.46807>; else goto <D.46808>;
  <D.46807>:
  {
    struct MonoMethod * method;

    method = mono_class_get_method_from_name (klass, "Box", 1);
    if (context_used != 0) goto <D.46809>; else goto <D.46810>;
    <D.46809>:
    {
      struct MonoInst * addr;
      struct MonoInst * rgctx;

      addr = emit_get_rgctx_method (cfg, context_used, method, 6);
      D.46811 = cfg->current_method;
      rgctx = emit_get_rgctx (cfg, D.46811, context_used);
      D.46813 = mono_method_signature (method);
      D.46812 = mono_emit_calli (cfg, D.46813, &val, addr, 0B, rgctx);
      return D.46812;
    }
    <D.46810>:
    {
      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.511 = pass_mrgctx;
          D.46815 = pass_mrgctx.511 != 0;
          D.46816 = (long int) D.46815;
          D.46817 = __builtin_expect (D.46816, 0);
          if (D.46817 != 0) goto <D.46818>; else goto <D.46819>;
          <D.46818>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3830, "!pass_mrgctx");
          <D.46819>:
          pass_vtable.512 = pass_vtable;
          if (pass_vtable.512 != 0) goto <D.46821>; else goto <D.46822>;
          <D.46821>:
          {
            struct MonoVTable * vtable;

            D.46823 = cfg->domain;
            D.46824 = method->klass;
            vtable = mono_class_vtable (D.46823, D.46824);
            D.46825 = vtable == 0B;
            D.46826 = (long int) D.46825;
            D.46827 = __builtin_expect (D.46826, 0);
            if (D.46827 != 0) goto <D.46828>; else goto <D.46829>;
            <D.46828>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3835, "vtable");
            <D.46829>:
            D.46830 = cfg->mempool;
            rgctx_arg = mono_mempool_alloc (D.46830, 56);
            rgctx_arg->data.op[1].const_val = 0;
            D.46831 = rgctx_arg->data.op[1].const_val;
            rgctx_arg->data.op[0].const_val = D.46831;
            rgctx_arg->prev = 0B;
            D.46832 = rgctx_arg->prev;
            rgctx_arg->next = D.46832;
            D.46834 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.46835 = D.46834 & 64;
            if (D.46835 != 0) goto <D.46836>; else goto <D.46837>;
            <D.46836>:
            iftmp.513 = 732;
            goto <D.46838>;
            <D.46837>:
            iftmp.513 = 362;
            <D.46838>:
            rgctx_arg->opcode = iftmp.513;
            rgctx_arg->flags = 0;
            rgctx_arg->type = 0;
            rgctx_arg->dreg = -1;
            rgctx_arg->sreg3 = -1;
            D.46839 = rgctx_arg->sreg3;
            rgctx_arg->sreg2 = D.46839;
            D.46840 = rgctx_arg->sreg2;
            rgctx_arg->sreg1 = D.46840;
            D.46841 = cfg->ip;
            rgctx_arg->cil_code = D.46841;
            D.46834 = BIT_FIELD_REF <*cfg, 32, 3392>;
            D.46835 = D.46834 & 64;
            if (D.46835 != 0) goto <D.46843>; else goto <D.46844>;
            <D.46843>:
            iftmp.514 = vtable->klass;
            goto <D.46845>;
            <D.46844>:
            iftmp.514 = vtable;
            <D.46845>:
            rgctx_arg->data.op[0].p = iftmp.514;
            rgctx_arg->data.op[1].src = 14B;
            rgctx_arg->type = 3;
            D.46846 = alloc_dreg (cfg, 3);
            D.46847 = (int) D.46846;
            rgctx_arg->dreg = D.46847;
            D.46805 = cfg->cbb;
            D.46848 = D.46805->last_ins;
            if (D.46848 != 0B) goto <D.46849>; else goto <D.46850>;
            <D.46849>:
            D.46805 = cfg->cbb;
            D.46848 = D.46805->last_ins;
            D.46848->next = rgctx_arg;
            D.46805 = cfg->cbb;
            D.46848 = D.46805->last_ins;
            rgctx_arg->prev = D.46848;
            D.46805 = cfg->cbb;
            D.46805->last_ins = rgctx_arg;
            goto <D.46851>;
            <D.46850>:
            D.46805 = cfg->cbb;
            D.46805 = cfg->cbb;
            D.46805->last_ins = rgctx_arg;
            D.46848 = D.46805->last_ins;
            D.46805->code = D.46848;
            <D.46851>:
          }
          <D.46822>:
          D.46812 = mono_emit_method_call_full (cfg, method, 0B, 0, &val, 0B, 0B, rgctx_arg);
          return D.46812;
        }
      finally
        {
          pass_vtable = {CLOBBER};
          pass_mrgctx = {CLOBBER};
        }
    }
  }
  <D.46808>:
  D.46852 = mini_is_gsharedvt_klass (cfg, klass);
  if (D.46852 != 0) goto <D.46853>; else goto <D.46854>;
  <D.46853>:
  {
    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.46855 = alloc_ireg (cfg);
    dreg = (int) D.46855;
    D.46830 = cfg->mempool;
    is_ref_bb = mono_mempool_alloc0 (D.46830, 172);
    D.46856 = cfg->num_bblocks;
    D.46857 = D.46856;
    D.46858 = D.46857 + 1;
    cfg->num_bblocks = D.46858;
    D.46859 = (int) D.46857;
    is_ref_bb->block_num = D.46859;
    D.46830 = cfg->mempool;
    is_nullable_bb = mono_mempool_alloc0 (D.46830, 172);
    D.46856 = cfg->num_bblocks;
    D.46860 = D.46856;
    D.46861 = D.46860 + 1;
    cfg->num_bblocks = D.46861;
    D.46862 = (int) D.46860;
    is_nullable_bb->block_num = D.46862;
    D.46830 = cfg->mempool;
    end_bb = mono_mempool_alloc0 (D.46830, 172);
    D.46856 = cfg->num_bblocks;
    D.46863 = D.46856;
    D.46864 = D.46863 + 1;
    cfg->num_bblocks = D.46864;
    D.46865 = (int) D.46863;
    end_bb->block_num = D.46865;
    is_ref = emit_get_gsharedvt_info_klass (cfg, klass, 19);
    {
      struct MonoInst * inst;

      D.46830 = cfg->mempool;
      inst = mono_mempool_alloc (D.46830, 56);
      inst->data.op[1].const_val = 0;
      D.46866 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46866;
      inst->prev = 0B;
      D.46867 = inst->prev;
      inst->next = D.46867;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46868 = inst->sreg3;
      inst->sreg2 = D.46868;
      D.46869 = inst->sreg2;
      inst->sreg1 = D.46869;
      D.46841 = cfg->ip;
      inst->cil_code = D.46841;
      inst->dreg = -1;
      D.46870 = is_ref->dreg;
      inst->sreg1 = D.46870;
      inst->data.op[1].const_val = 1;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.46871>; else goto <D.46872>;
      <D.46871>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46848->next = inst;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      inst->prev = D.46848;
      D.46805 = cfg->cbb;
      D.46805->last_ins = inst;
      goto <D.46873>;
      <D.46872>:
      D.46805 = cfg->cbb;
      D.46805 = cfg->cbb;
      D.46805->last_ins = inst;
      D.46848 = D.46805->last_ins;
      D.46805->code = D.46848;
      <D.46873>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.46830 = cfg->mempool;
      ins = mono_mempool_alloc (D.46830, 56);
      ins->data.op[1].const_val = 0;
      D.46874 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.46874;
      ins->prev = 0B;
      D.46875 = ins->prev;
      ins->next = D.46875;
      ins->opcode = 648;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.46876 = ins->sreg3;
      ins->sreg2 = D.46876;
      D.46877 = ins->sreg2;
      ins->sreg1 = D.46877;
      D.46841 = cfg->ip;
      ins->cil_code = D.46841;
      if (0 != 0) goto <D.46878>; else goto <D.46879>;
      <D.46878>:
      D.46830 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.46830, 172);
      D.46856 = cfg->num_bblocks;
      D.46880 = D.46856;
      D.46881 = D.46880 + 1;
      cfg->num_bblocks = D.46881;
      D.46882 = (int) D.46880;
      falsebb->block_num = D.46882;
      ins->data.op[0].target_block = is_ref_bb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, is_ref_bb);
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.46883>; else goto <D.46884>;
      <D.46883>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46848->next = ins;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      ins->prev = D.46848;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      goto <D.46885>;
      <D.46884>:
      D.46805 = cfg->cbb;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      D.46848 = D.46805->last_ins;
      D.46805->code = D.46848;
      <D.46885>:
      D.46886 = falsebb->cil_code;
      if (D.46886 != 0B) goto <D.46887>; else goto <D.46888>;
      <D.46887>:
      D.46889 = cfg->cil_offset_to_bb;
      D.46886 = falsebb->cil_code;
      D.46890 = (int) D.46886;
      D.46891 = cfg->cil_start;
      D.46892 = (int) D.46891;
      D.46893 = D.46890 - D.46892;
      D.46894 = (unsigned int) D.46893;
      D.46895 = D.46894 * 4;
      D.46896 = D.46889 + D.46895;
      *D.46896 = falsebb;
      <D.46888>:
      D.46897 = cfg->real_offset;
      falsebb->real_offset = D.46897;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.46901>; else goto <D.46898>;
      <D.46901>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 <= 9) goto <D.46899>; else goto <D.46904>;
      <D.46904>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 <= 9) goto <D.46899>; else goto <D.46906>;
      <D.46906>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 <= 9) goto <D.46899>; else goto <D.46898>;
      <D.46899>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      D.46910 = *D.46909;
      if (D.46910 == 0B) goto <D.46911>; else goto <D.46898>;
      <D.46911>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      *D.46909 = falsebb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      goto <D.46900>;
      <D.46898>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 == 0B) goto <D.46912>; else goto <D.46914>;
      <D.46914>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 442) goto <D.46915>; else goto <D.46913>;
      <D.46915>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 759) goto <D.46916>; else goto <D.46913>;
      <D.46916>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 > 9) goto <D.46917>; else goto <D.46913>;
      <D.46917>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 > 9) goto <D.46918>; else goto <D.46913>;
      <D.46918>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 > 9) goto <D.46912>; else goto <D.46913>;
      <D.46912>:
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      <D.46913>:
      <D.46900>:
      D.46805 = cfg->cbb;
      D.46805->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.46919>;
      <D.46879>:
      D.46830 = cfg->mempool;
      D.46920 = mono_mempool_alloc (D.46830, 8);
      ins->data.op[1].many_blocks = D.46920;
      D.46921 = ins->data.op[1].many_blocks;
      *D.46921 = is_ref_bb;
      D.46921 = ins->data.op[1].many_blocks;
      D.46922 = D.46921 + 4;
      *D.46922 = 0B;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, is_ref_bb);
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.46923>; else goto <D.46924>;
      <D.46923>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46848->next = ins;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      ins->prev = D.46848;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      goto <D.46925>;
      <D.46924>:
      D.46805 = cfg->cbb;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      D.46848 = D.46805->last_ins;
      D.46805->code = D.46848;
      <D.46925>:
      D.46834 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.46926 = D.46834 & 8;
      if (D.46926 == 0) goto <D.46927>; else goto <D.46928>;
      <D.46927>:
      D.46830 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.46830, 172);
      D.46856 = cfg->num_bblocks;
      D.46929 = D.46856;
      D.46930 = D.46929 + 1;
      cfg->num_bblocks = D.46930;
      D.46931 = (int) D.46929;
      falsebb->block_num = D.46931;
      D.46921 = ins->data.op[1].many_blocks;
      D.46922 = D.46921 + 4;
      *D.46922 = falsebb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      D.46886 = falsebb->cil_code;
      if (D.46886 != 0B) goto <D.46932>; else goto <D.46933>;
      <D.46932>:
      D.46889 = cfg->cil_offset_to_bb;
      D.46886 = falsebb->cil_code;
      D.46890 = (int) D.46886;
      D.46891 = cfg->cil_start;
      D.46892 = (int) D.46891;
      D.46893 = D.46890 - D.46892;
      D.46894 = (unsigned int) D.46893;
      D.46895 = D.46894 * 4;
      D.46896 = D.46889 + D.46895;
      *D.46896 = falsebb;
      <D.46933>:
      D.46897 = cfg->real_offset;
      falsebb->real_offset = D.46897;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.46937>; else goto <D.46934>;
      <D.46937>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 <= 9) goto <D.46935>; else goto <D.46938>;
      <D.46938>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 <= 9) goto <D.46935>; else goto <D.46939>;
      <D.46939>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 <= 9) goto <D.46935>; else goto <D.46934>;
      <D.46935>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      D.46910 = *D.46909;
      if (D.46910 == 0B) goto <D.46940>; else goto <D.46934>;
      <D.46940>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      *D.46909 = falsebb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      goto <D.46936>;
      <D.46934>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 == 0B) goto <D.46941>; else goto <D.46943>;
      <D.46943>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 442) goto <D.46944>; else goto <D.46942>;
      <D.46944>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 759) goto <D.46945>; else goto <D.46942>;
      <D.46945>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 > 9) goto <D.46946>; else goto <D.46942>;
      <D.46946>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 > 9) goto <D.46947>; else goto <D.46942>;
      <D.46947>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 > 9) goto <D.46941>; else goto <D.46942>;
      <D.46941>:
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      <D.46942>:
      <D.46936>:
      D.46805 = cfg->cbb;
      D.46805->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.46948>;
      <D.46928>:
      D.46805 = cfg->cbb;
      D.46805->extended = 1;
      <D.46948>:
      <D.46919>:
    }
    {
      struct MonoInst * inst;

      D.46830 = cfg->mempool;
      inst = mono_mempool_alloc (D.46830, 56);
      inst->data.op[1].const_val = 0;
      D.46949 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46949;
      inst->prev = 0B;
      D.46950 = inst->prev;
      inst->next = D.46950;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46951 = inst->sreg3;
      inst->sreg2 = D.46951;
      D.46952 = inst->sreg2;
      inst->sreg1 = D.46952;
      D.46841 = cfg->ip;
      inst->cil_code = D.46841;
      inst->dreg = -1;
      D.46870 = is_ref->dreg;
      inst->sreg1 = D.46870;
      inst->data.op[1].const_val = 2;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.46953>; else goto <D.46954>;
      <D.46953>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46848->next = inst;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      inst->prev = D.46848;
      D.46805 = cfg->cbb;
      D.46805->last_ins = inst;
      goto <D.46955>;
      <D.46954>:
      D.46805 = cfg->cbb;
      D.46805 = cfg->cbb;
      D.46805->last_ins = inst;
      D.46848 = D.46805->last_ins;
      D.46805->code = D.46848;
      <D.46955>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.46830 = cfg->mempool;
      ins = mono_mempool_alloc (D.46830, 56);
      ins->data.op[1].const_val = 0;
      D.46956 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.46956;
      ins->prev = 0B;
      D.46957 = ins->prev;
      ins->next = D.46957;
      ins->opcode = 648;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.46958 = ins->sreg3;
      ins->sreg2 = D.46958;
      D.46959 = ins->sreg2;
      ins->sreg1 = D.46959;
      D.46841 = cfg->ip;
      ins->cil_code = D.46841;
      if (0 != 0) goto <D.46960>; else goto <D.46961>;
      <D.46960>:
      D.46830 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.46830, 172);
      D.46856 = cfg->num_bblocks;
      D.46962 = D.46856;
      D.46963 = D.46962 + 1;
      cfg->num_bblocks = D.46963;
      D.46964 = (int) D.46962;
      falsebb->block_num = D.46964;
      ins->data.op[0].target_block = is_nullable_bb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, is_nullable_bb);
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.46965>; else goto <D.46966>;
      <D.46965>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46848->next = ins;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      ins->prev = D.46848;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      goto <D.46967>;
      <D.46966>:
      D.46805 = cfg->cbb;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      D.46848 = D.46805->last_ins;
      D.46805->code = D.46848;
      <D.46967>:
      D.46968 = falsebb->cil_code;
      if (D.46968 != 0B) goto <D.46969>; else goto <D.46970>;
      <D.46969>:
      D.46889 = cfg->cil_offset_to_bb;
      D.46968 = falsebb->cil_code;
      D.46971 = (int) D.46968;
      D.46891 = cfg->cil_start;
      D.46892 = (int) D.46891;
      D.46972 = D.46971 - D.46892;
      D.46973 = (unsigned int) D.46972;
      D.46974 = D.46973 * 4;
      D.46975 = D.46889 + D.46974;
      *D.46975 = falsebb;
      <D.46970>:
      D.46897 = cfg->real_offset;
      falsebb->real_offset = D.46897;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.46979>; else goto <D.46976>;
      <D.46979>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 <= 9) goto <D.46977>; else goto <D.46980>;
      <D.46980>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 <= 9) goto <D.46977>; else goto <D.46981>;
      <D.46981>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 <= 9) goto <D.46977>; else goto <D.46976>;
      <D.46977>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      D.46910 = *D.46909;
      if (D.46910 == 0B) goto <D.46982>; else goto <D.46976>;
      <D.46982>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      *D.46909 = falsebb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      goto <D.46978>;
      <D.46976>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 == 0B) goto <D.46983>; else goto <D.46985>;
      <D.46985>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 442) goto <D.46986>; else goto <D.46984>;
      <D.46986>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 759) goto <D.46987>; else goto <D.46984>;
      <D.46987>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 > 9) goto <D.46988>; else goto <D.46984>;
      <D.46988>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 > 9) goto <D.46989>; else goto <D.46984>;
      <D.46989>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 > 9) goto <D.46983>; else goto <D.46984>;
      <D.46983>:
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      <D.46984>:
      <D.46978>:
      D.46805 = cfg->cbb;
      D.46805->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.46990>;
      <D.46961>:
      D.46830 = cfg->mempool;
      D.46991 = mono_mempool_alloc (D.46830, 8);
      ins->data.op[1].many_blocks = D.46991;
      D.46992 = ins->data.op[1].many_blocks;
      *D.46992 = is_nullable_bb;
      D.46992 = ins->data.op[1].many_blocks;
      D.46993 = D.46992 + 4;
      *D.46993 = 0B;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, is_nullable_bb);
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.46994>; else goto <D.46995>;
      <D.46994>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46848->next = ins;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      ins->prev = D.46848;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      goto <D.46996>;
      <D.46995>:
      D.46805 = cfg->cbb;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      D.46848 = D.46805->last_ins;
      D.46805->code = D.46848;
      <D.46996>:
      D.46834 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.46926 = D.46834 & 8;
      if (D.46926 == 0) goto <D.46997>; else goto <D.46998>;
      <D.46997>:
      D.46830 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.46830, 172);
      D.46856 = cfg->num_bblocks;
      D.46999 = D.46856;
      D.47000 = D.46999 + 1;
      cfg->num_bblocks = D.47000;
      D.47001 = (int) D.46999;
      falsebb->block_num = D.47001;
      D.46992 = ins->data.op[1].many_blocks;
      D.46993 = D.46992 + 4;
      *D.46993 = falsebb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      D.46968 = falsebb->cil_code;
      if (D.46968 != 0B) goto <D.47002>; else goto <D.47003>;
      <D.47002>:
      D.46889 = cfg->cil_offset_to_bb;
      D.46968 = falsebb->cil_code;
      D.46971 = (int) D.46968;
      D.46891 = cfg->cil_start;
      D.46892 = (int) D.46891;
      D.46972 = D.46971 - D.46892;
      D.46973 = (unsigned int) D.46972;
      D.46974 = D.46973 * 4;
      D.46975 = D.46889 + D.46974;
      *D.46975 = falsebb;
      <D.47003>:
      D.46897 = cfg->real_offset;
      falsebb->real_offset = D.46897;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.47007>; else goto <D.47004>;
      <D.47007>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 <= 9) goto <D.47005>; else goto <D.47008>;
      <D.47008>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 <= 9) goto <D.47005>; else goto <D.47009>;
      <D.47009>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 <= 9) goto <D.47005>; else goto <D.47004>;
      <D.47005>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      D.46910 = *D.46909;
      if (D.46910 == 0B) goto <D.47010>; else goto <D.47004>;
      <D.47010>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      *D.46909 = falsebb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      goto <D.47006>;
      <D.47004>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 == 0B) goto <D.47011>; else goto <D.47013>;
      <D.47013>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 442) goto <D.47014>; else goto <D.47012>;
      <D.47014>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 759) goto <D.47015>; else goto <D.47012>;
      <D.47015>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 > 9) goto <D.47016>; else goto <D.47012>;
      <D.47016>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 > 9) goto <D.47017>; else goto <D.47012>;
      <D.47017>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 > 9) goto <D.47011>; else goto <D.47012>;
      <D.47011>:
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      <D.47012>:
      <D.47006>:
      D.46805 = cfg->cbb;
      D.46805->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.47018>;
      <D.46998>:
      D.46805 = cfg->cbb;
      D.46805->extended = 1;
      <D.47018>:
      <D.46990>:
    }
    alloc = handle_alloc (cfg, klass, 1, context_used);
    if (alloc == 0B) goto <D.47019>; else goto <D.47020>;
    <D.47019>:
    D.46812 = 0B;
    return D.46812;
    <D.47020>:
    D.46830 = cfg->mempool;
    ins = mono_mempool_alloc (D.46830, 56);
    ins->data.op[1].const_val = 0;
    D.47021 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.47021;
    ins->prev = 0B;
    D.47022 = ins->prev;
    ins->next = D.47022;
    D.47023 = &klass->byval_arg;
    D.47024 = mono_type_to_store_membase (cfg, D.47023);
    D.47025 = (short unsigned int) D.47024;
    ins->opcode = D.47025;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.47026 = ins->sreg3;
    ins->sreg2 = D.47026;
    D.47027 = ins->sreg2;
    ins->sreg1 = D.47027;
    D.46841 = cfg->ip;
    ins->cil_code = D.46841;
    val.515 = val;
    D.47029 = val.515->dreg;
    ins->sreg1 = D.47029;
    D.47030 = alloc->dreg;
    ins->dreg = D.47030;
    ins->data.op[0].const_val = 8;
    D.47023 = &klass->byval_arg;
    type_to_eval_stack_type (cfg, D.47023, ins);
    D.47023 = &klass->byval_arg;
    D.47031 = mono_class_from_mono_type (D.47023);
    ins->klass = D.47031;
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    if (D.46848 != 0B) goto <D.47032>; else goto <D.47033>;
    <D.47032>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46848->next = ins;
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    ins->prev = D.46848;
    D.46805 = cfg->cbb;
    D.46805->last_ins = ins;
    goto <D.47034>;
    <D.47033>:
    D.46805 = cfg->cbb;
    D.46805 = cfg->cbb;
    D.46805->last_ins = ins;
    D.46848 = D.46805->last_ins;
    D.46805->code = D.46848;
    <D.47034>:
    ins->opcode = 387;
    D.46830 = cfg->mempool;
    res = mono_mempool_alloc (D.46830, 56);
    res->data.op[1].const_val = 0;
    D.47035 = res->data.op[1].const_val;
    res->data.op[0].const_val = D.47035;
    res->prev = 0B;
    D.47036 = res->prev;
    res->next = D.47036;
    res->opcode = 424;
    res->flags = 0;
    res->type = 0;
    res->dreg = -1;
    res->sreg3 = -1;
    D.47037 = res->sreg3;
    res->sreg2 = D.47037;
    D.47038 = res->sreg2;
    res->sreg1 = D.47038;
    D.46841 = cfg->ip;
    res->cil_code = D.46841;
    res->dreg = dreg;
    D.47030 = alloc->dreg;
    res->sreg1 = D.47030;
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    if (D.46848 != 0B) goto <D.47039>; else goto <D.47040>;
    <D.47039>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46848->next = res;
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    res->prev = D.46848;
    D.46805 = cfg->cbb;
    D.46805->last_ins = res;
    goto <D.47041>;
    <D.47040>:
    D.46805 = cfg->cbb;
    D.46805 = cfg->cbb;
    D.46805->last_ins = res;
    D.46848 = D.46805->last_ins;
    D.46805->code = D.46848;
    <D.47041>:
    res->type = 6;
    res->klass = klass;
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.46830 = cfg->mempool;
      ins = mono_mempool_alloc (D.46830, 56);
      ins->data.op[1].const_val = 0;
      D.47042 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.47042;
      ins->prev = 0B;
      D.47043 = ins->prev;
      ins->next = D.47043;
      ins->opcode = 442;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.47044 = ins->sreg3;
      ins->sreg2 = D.47044;
      D.47045 = ins->sreg2;
      ins->sreg1 = D.47045;
      D.46841 = cfg->ip;
      ins->cil_code = D.46841;
      if (1 != 0) goto <D.47046>; else goto <D.47047>;
      <D.47046>:
      D.46830 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.46830, 172);
      D.46856 = cfg->num_bblocks;
      D.47048 = D.46856;
      D.47049 = D.47048 + 1;
      cfg->num_bblocks = D.47049;
      D.47050 = (int) D.47048;
      falsebb->block_num = D.47050;
      ins->data.op[0].target_block = end_bb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, end_bb);
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.47051>; else goto <D.47052>;
      <D.47051>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46848->next = ins;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      ins->prev = D.46848;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      goto <D.47053>;
      <D.47052>:
      D.46805 = cfg->cbb;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      D.46848 = D.46805->last_ins;
      D.46805->code = D.46848;
      <D.47053>:
      D.47054 = falsebb->cil_code;
      if (D.47054 != 0B) goto <D.47055>; else goto <D.47056>;
      <D.47055>:
      D.46889 = cfg->cil_offset_to_bb;
      D.47054 = falsebb->cil_code;
      D.47057 = (int) D.47054;
      D.46891 = cfg->cil_start;
      D.46892 = (int) D.46891;
      D.47058 = D.47057 - D.46892;
      D.47059 = (unsigned int) D.47058;
      D.47060 = D.47059 * 4;
      D.47061 = D.46889 + D.47060;
      *D.47061 = falsebb;
      <D.47056>:
      D.46897 = cfg->real_offset;
      falsebb->real_offset = D.46897;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.47065>; else goto <D.47062>;
      <D.47065>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 <= 9) goto <D.47063>; else goto <D.47066>;
      <D.47066>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 <= 9) goto <D.47063>; else goto <D.47067>;
      <D.47067>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 <= 9) goto <D.47063>; else goto <D.47062>;
      <D.47063>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      D.46910 = *D.46909;
      if (D.46910 == 0B) goto <D.47068>; else goto <D.47062>;
      <D.47068>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      *D.46909 = falsebb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      goto <D.47064>;
      <D.47062>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 == 0B) goto <D.47069>; else goto <D.47071>;
      <D.47071>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 442) goto <D.47072>; else goto <D.47070>;
      <D.47072>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 759) goto <D.47073>; else goto <D.47070>;
      <D.47073>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 > 9) goto <D.47074>; else goto <D.47070>;
      <D.47074>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 > 9) goto <D.47075>; else goto <D.47070>;
      <D.47075>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 > 9) goto <D.47069>; else goto <D.47070>;
      <D.47069>:
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      <D.47070>:
      <D.47064>:
      D.46805 = cfg->cbb;
      D.46805->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.47076>;
      <D.47047>:
      D.46830 = cfg->mempool;
      D.47077 = mono_mempool_alloc (D.46830, 8);
      ins->data.op[1].many_blocks = D.47077;
      D.47078 = ins->data.op[1].many_blocks;
      *D.47078 = end_bb;
      D.47078 = ins->data.op[1].many_blocks;
      D.47079 = D.47078 + 4;
      *D.47079 = 0B;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, end_bb);
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.47080>; else goto <D.47081>;
      <D.47080>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46848->next = ins;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      ins->prev = D.46848;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      goto <D.47082>;
      <D.47081>:
      D.46805 = cfg->cbb;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      D.46848 = D.46805->last_ins;
      D.46805->code = D.46848;
      <D.47082>:
      D.46834 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.46926 = D.46834 & 8;
      if (D.46926 == 0) goto <D.47083>; else goto <D.47084>;
      <D.47083>:
      D.46830 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.46830, 172);
      D.46856 = cfg->num_bblocks;
      D.47085 = D.46856;
      D.47086 = D.47085 + 1;
      cfg->num_bblocks = D.47086;
      D.47087 = (int) D.47085;
      falsebb->block_num = D.47087;
      D.47078 = ins->data.op[1].many_blocks;
      D.47079 = D.47078 + 4;
      *D.47079 = falsebb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      D.47054 = falsebb->cil_code;
      if (D.47054 != 0B) goto <D.47088>; else goto <D.47089>;
      <D.47088>:
      D.46889 = cfg->cil_offset_to_bb;
      D.47054 = falsebb->cil_code;
      D.47057 = (int) D.47054;
      D.46891 = cfg->cil_start;
      D.46892 = (int) D.46891;
      D.47058 = D.47057 - D.46892;
      D.47059 = (unsigned int) D.47058;
      D.47060 = D.47059 * 4;
      D.47061 = D.46889 + D.47060;
      *D.47061 = falsebb;
      <D.47089>:
      D.46897 = cfg->real_offset;
      falsebb->real_offset = D.46897;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.47093>; else goto <D.47090>;
      <D.47093>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 <= 9) goto <D.47091>; else goto <D.47094>;
      <D.47094>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 <= 9) goto <D.47091>; else goto <D.47095>;
      <D.47095>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 <= 9) goto <D.47091>; else goto <D.47090>;
      <D.47091>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      D.46910 = *D.46909;
      if (D.46910 == 0B) goto <D.47096>; else goto <D.47090>;
      <D.47096>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      *D.46909 = falsebb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      goto <D.47092>;
      <D.47090>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 == 0B) goto <D.47097>; else goto <D.47099>;
      <D.47099>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 442) goto <D.47100>; else goto <D.47098>;
      <D.47100>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 759) goto <D.47101>; else goto <D.47098>;
      <D.47101>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 > 9) goto <D.47102>; else goto <D.47098>;
      <D.47102>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 > 9) goto <D.47103>; else goto <D.47098>;
      <D.47103>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 > 9) goto <D.47097>; else goto <D.47098>;
      <D.47097>:
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      <D.47098>:
      <D.47092>:
      D.46805 = cfg->cbb;
      D.46805->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.47104>;
      <D.47084>:
      D.46805 = cfg->cbb;
      D.46805->extended = 1;
      <D.47104>:
      <D.47076>:
    }
    D.47105 = is_ref_bb->cil_code;
    if (D.47105 != 0B) goto <D.47106>; else goto <D.47107>;
    <D.47106>:
    D.46889 = cfg->cil_offset_to_bb;
    D.47105 = is_ref_bb->cil_code;
    D.47108 = (int) D.47105;
    D.46891 = cfg->cil_start;
    D.46892 = (int) D.46891;
    D.47109 = D.47108 - D.46892;
    D.47110 = (unsigned int) D.47109;
    D.47111 = D.47110 * 4;
    D.47112 = D.46889 + D.47111;
    *D.47112 = is_ref_bb;
    <D.47107>:
    D.46897 = cfg->real_offset;
    is_ref_bb->real_offset = D.46897;
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    if (D.46848 != 0B) goto <D.47116>; else goto <D.47113>;
    <D.47116>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    D.46903 = D.46902 + 64985;
    if (D.46903 <= 9) goto <D.47114>; else goto <D.47117>;
    <D.47117>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    D.46905 = D.46902 + 64878;
    if (D.46905 <= 9) goto <D.47114>; else goto <D.47118>;
    <D.47118>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    D.46907 = D.46902 + 64888;
    if (D.46907 <= 9) goto <D.47114>; else goto <D.47113>;
    <D.47114>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46908 = D.46848->data.op[1].many_blocks;
    D.46909 = D.46908 + 4;
    D.46910 = *D.46909;
    if (D.46910 == 0B) goto <D.47119>; else goto <D.47113>;
    <D.47119>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46908 = D.46848->data.op[1].many_blocks;
    D.46909 = D.46908 + 4;
    *D.46909 = is_ref_bb;
    D.46805 = cfg->cbb;
    mono_link_bblock (cfg, D.46805, is_ref_bb);
    goto <D.47115>;
    <D.47113>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    if (D.46848 == 0B) goto <D.47120>; else goto <D.47122>;
    <D.47122>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    if (D.46902 != 442) goto <D.47123>; else goto <D.47121>;
    <D.47123>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    if (D.46902 != 759) goto <D.47124>; else goto <D.47121>;
    <D.47124>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    D.46903 = D.46902 + 64985;
    if (D.46903 > 9) goto <D.47125>; else goto <D.47121>;
    <D.47125>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    D.46905 = D.46902 + 64878;
    if (D.46905 > 9) goto <D.47126>; else goto <D.47121>;
    <D.47126>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    D.46907 = D.46902 + 64888;
    if (D.46907 > 9) goto <D.47120>; else goto <D.47121>;
    <D.47120>:
    D.46805 = cfg->cbb;
    mono_link_bblock (cfg, D.46805, is_ref_bb);
    <D.47121>:
    <D.47115>:
    D.46805 = cfg->cbb;
    D.46805->next_bb = is_ref_bb;
    cfg->cbb = is_ref_bb;
    D.47127 = alloc_ireg (cfg);
    addr_reg = (int) D.47127;
    val.515 = val;
    D.47029 = val.515->dreg;
    D.47129 = (unsigned int) D.47029;
    D.47130 = cfg->vreg_to_inst_len;
    if (D.47129 < D.47130) goto <D.47131>; else goto <D.47132>;
    <D.47131>:
    D.47133 = cfg->vreg_to_inst;
    val.515 = val;
    D.47029 = val.515->dreg;
    D.47134 = (unsigned int) D.47029;
    D.47135 = D.47134 * 4;
    D.47136 = D.47133 + D.47135;
    iftmp.516 = *D.47136;
    goto <D.47137>;
    <D.47132>:
    iftmp.516 = 0B;
    <D.47137>:
    src_var = iftmp.516;
    if (src_var == 0B) goto <D.47138>; else goto <D.47139>;
    <D.47138>:
    D.47023 = &klass->byval_arg;
    val.515 = val;
    D.47029 = val.515->dreg;
    src_var = mono_compile_create_var_for_vreg (cfg, D.47023, 329, D.47029);
    <D.47139>:
    D.46830 = cfg->mempool;
    addr = mono_mempool_alloc (D.46830, 56);
    addr->data.op[1].const_val = 0;
    D.47140 = addr->data.op[1].const_val;
    addr->data.op[0].const_val = D.47140;
    addr->prev = 0B;
    D.47141 = addr->prev;
    addr->next = D.47141;
    addr->opcode = 314;
    addr->flags = 0;
    addr->type = 0;
    addr->dreg = -1;
    addr->sreg3 = -1;
    D.47142 = addr->sreg3;
    addr->sreg2 = D.47142;
    D.47143 = addr->sreg2;
    addr->sreg1 = D.47143;
    D.46841 = cfg->ip;
    addr->cil_code = D.46841;
    addr->data.op[0].p = src_var;
    D.47144 = src_var->flags;
    D.47145 = D.47144 | 16;
    src_var->flags = D.47145;
    addr->type = 5;
    D.47146 = src_var->klass;
    addr->klass = D.47146;
    D.47147 = alloc_dreg (cfg, 5);
    D.47148 = (int) D.47147;
    addr->dreg = D.47148;
    cfg->has_indirection = 1;
    D.47149 = cfg->gsharedvt;
    D.47150 = D.47149 != 0;
    D.47151 = (long int) D.47150;
    D.47152 = __builtin_expect (D.47151, 0);
    if (D.47152 != 0) goto <D.47153>; else goto <D.47154>;
    <D.47153>:
    D.47155 = src_var->data.op[1].vtype;
    D.47156 = mini_is_gsharedvt_variable_type (cfg, D.47155);
    if (D.47156 != 0) goto <D.47157>; else goto <D.47158>;
    <D.47157>:
    handle_gsharedvt_ldaddr (cfg);
    <D.47158>:
    <D.47154>:
    D.47160 = mono_arch_is_soft_float ();
    if (D.47160 != 0) goto <D.47161>; else goto <D.47162>;
    <D.47161>:
    D.47167 = src_var->type;
    if (D.47167 == 2) goto <D.47164>; else goto <D.47168>;
    <D.47168>:
    D.47167 = src_var->type;
    if (D.47167 == 4) goto <D.47164>; else goto <D.47165>;
    <D.47164>:
    iftmp.518 = 1;
    goto <D.47166>;
    <D.47165>:
    iftmp.518 = 0;
    <D.47166>:
    iftmp.517 = (_Bool) iftmp.518;
    goto <D.47169>;
    <D.47162>:
    D.47167 = src_var->type;
    iftmp.517 = D.47167 == 2;
    <D.47169>:
    if (iftmp.517 != 0) goto <D.47170>; else goto <D.47171>;
    <D.47170>:
    {
      struct MonoInst * var1;
      struct MonoInst * var2;

      D.47173 = src_var->dreg;
      D.47174 = D.47173 + 1;
      D.47175 = (unsigned int) D.47174;
      D.47130 = cfg->vreg_to_inst_len;
      if (D.47175 < D.47130) goto <D.47176>; else goto <D.47177>;
      <D.47176>:
      D.47133 = cfg->vreg_to_inst;
      D.47173 = src_var->dreg;
      D.47178 = (sizetype) D.47173;
      D.47179 = D.47178 + 1;
      D.47180 = D.47179 * 4;
      D.47181 = D.47133 + D.47180;
      iftmp.519 = *D.47181;
      goto <D.47182>;
      <D.47177>:
      iftmp.519 = 0B;
      <D.47182>:
      var1 = iftmp.519;
      D.47173 = src_var->dreg;
      D.47184 = D.47173 + 2;
      D.47185 = (unsigned int) D.47184;
      D.47130 = cfg->vreg_to_inst_len;
      if (D.47185 < D.47130) goto <D.47186>; else goto <D.47187>;
      <D.47186>:
      D.47133 = cfg->vreg_to_inst;
      D.47173 = src_var->dreg;
      D.47178 = (sizetype) D.47173;
      D.47188 = D.47178 + 2;
      D.47189 = D.47188 * 4;
      D.47190 = D.47133 + D.47189;
      iftmp.520 = *D.47190;
      goto <D.47191>;
      <D.47187>:
      iftmp.520 = 0B;
      <D.47191>:
      var2 = iftmp.520;
      D.47192 = var1 == 0B;
      D.47193 = (long int) D.47192;
      D.47194 = __builtin_expect (D.47193, 0);
      if (D.47194 != 0) goto <D.47195>; else goto <D.47196>;
      <D.47195>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3880, "var1");
      <D.47196>:
      D.47197 = var2 == 0B;
      D.47198 = (long int) D.47197;
      D.47199 = __builtin_expect (D.47198, 0);
      if (D.47199 != 0) goto <D.47200>; else goto <D.47201>;
      <D.47200>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3880, "var2");
      <D.47201>:
      D.47202 = var1->flags;
      D.47203 = D.47202 | 16;
      var1->flags = D.47203;
      D.47204 = var2->flags;
      D.47205 = D.47204 | 16;
      var2->flags = D.47205;
    }
    <D.47171>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    if (D.46848 != 0B) goto <D.47206>; else goto <D.47207>;
    <D.47206>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46848->next = addr;
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    addr->prev = D.46848;
    D.46805 = cfg->cbb;
    D.46805->last_ins = addr;
    goto <D.47208>;
    <D.47207>:
    D.46805 = cfg->cbb;
    D.46805 = cfg->cbb;
    D.46805->last_ins = addr;
    D.46848 = D.46805->last_ins;
    D.46805->code = D.46848;
    <D.47208>:
    {
      struct MonoInst * inst;

      D.46830 = cfg->mempool;
      inst = mono_mempool_alloc (D.46830, 56);
      inst->data.op[1].const_val = 0;
      D.47209 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47209;
      inst->prev = 0B;
      D.47210 = inst->prev;
      inst->next = D.47210;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47211 = inst->sreg3;
      inst->sreg2 = D.47211;
      D.47212 = inst->sreg2;
      inst->sreg1 = D.47212;
      D.46841 = cfg->ip;
      inst->cil_code = D.46841;
      inst->dreg = dreg;
      D.47213 = addr->dreg;
      inst->sreg1 = D.47213;
      inst->data.op[0].const_val = 0;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.47214>; else goto <D.47215>;
      <D.47214>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46848->next = inst;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      inst->prev = D.46848;
      D.46805 = cfg->cbb;
      D.46805->last_ins = inst;
      goto <D.47216>;
      <D.47215>:
      D.46805 = cfg->cbb;
      D.46805 = cfg->cbb;
      D.46805->last_ins = inst;
      D.46848 = D.46805->last_ins;
      D.46805->code = D.46848;
      <D.47216>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.46830 = cfg->mempool;
      ins = mono_mempool_alloc (D.46830, 56);
      ins->data.op[1].const_val = 0;
      D.47217 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.47217;
      ins->prev = 0B;
      D.47218 = ins->prev;
      ins->next = D.47218;
      ins->opcode = 442;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.47219 = ins->sreg3;
      ins->sreg2 = D.47219;
      D.47220 = ins->sreg2;
      ins->sreg1 = D.47220;
      D.46841 = cfg->ip;
      ins->cil_code = D.46841;
      if (1 != 0) goto <D.47221>; else goto <D.47222>;
      <D.47221>:
      D.46830 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.46830, 172);
      D.46856 = cfg->num_bblocks;
      D.47223 = D.46856;
      D.47224 = D.47223 + 1;
      cfg->num_bblocks = D.47224;
      D.47225 = (int) D.47223;
      falsebb->block_num = D.47225;
      ins->data.op[0].target_block = end_bb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, end_bb);
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.47226>; else goto <D.47227>;
      <D.47226>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46848->next = ins;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      ins->prev = D.46848;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      goto <D.47228>;
      <D.47227>:
      D.46805 = cfg->cbb;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      D.46848 = D.46805->last_ins;
      D.46805->code = D.46848;
      <D.47228>:
      D.47229 = falsebb->cil_code;
      if (D.47229 != 0B) goto <D.47230>; else goto <D.47231>;
      <D.47230>:
      D.46889 = cfg->cil_offset_to_bb;
      D.47229 = falsebb->cil_code;
      D.47232 = (int) D.47229;
      D.46891 = cfg->cil_start;
      D.46892 = (int) D.46891;
      D.47233 = D.47232 - D.46892;
      D.47234 = (unsigned int) D.47233;
      D.47235 = D.47234 * 4;
      D.47236 = D.46889 + D.47235;
      *D.47236 = falsebb;
      <D.47231>:
      D.46897 = cfg->real_offset;
      falsebb->real_offset = D.46897;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.47240>; else goto <D.47237>;
      <D.47240>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 <= 9) goto <D.47238>; else goto <D.47241>;
      <D.47241>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 <= 9) goto <D.47238>; else goto <D.47242>;
      <D.47242>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 <= 9) goto <D.47238>; else goto <D.47237>;
      <D.47238>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      D.46910 = *D.46909;
      if (D.46910 == 0B) goto <D.47243>; else goto <D.47237>;
      <D.47243>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      *D.46909 = falsebb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      goto <D.47239>;
      <D.47237>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 == 0B) goto <D.47244>; else goto <D.47246>;
      <D.47246>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 442) goto <D.47247>; else goto <D.47245>;
      <D.47247>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 759) goto <D.47248>; else goto <D.47245>;
      <D.47248>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 > 9) goto <D.47249>; else goto <D.47245>;
      <D.47249>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 > 9) goto <D.47250>; else goto <D.47245>;
      <D.47250>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 > 9) goto <D.47244>; else goto <D.47245>;
      <D.47244>:
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      <D.47245>:
      <D.47239>:
      D.46805 = cfg->cbb;
      D.46805->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.47251>;
      <D.47222>:
      D.46830 = cfg->mempool;
      D.47252 = mono_mempool_alloc (D.46830, 8);
      ins->data.op[1].many_blocks = D.47252;
      D.47253 = ins->data.op[1].many_blocks;
      *D.47253 = end_bb;
      D.47253 = ins->data.op[1].many_blocks;
      D.47254 = D.47253 + 4;
      *D.47254 = 0B;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, end_bb);
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.47255>; else goto <D.47256>;
      <D.47255>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46848->next = ins;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      ins->prev = D.46848;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      goto <D.47257>;
      <D.47256>:
      D.46805 = cfg->cbb;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      D.46848 = D.46805->last_ins;
      D.46805->code = D.46848;
      <D.47257>:
      D.46834 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.46926 = D.46834 & 8;
      if (D.46926 == 0) goto <D.47258>; else goto <D.47259>;
      <D.47258>:
      D.46830 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.46830, 172);
      D.46856 = cfg->num_bblocks;
      D.47260 = D.46856;
      D.47261 = D.47260 + 1;
      cfg->num_bblocks = D.47261;
      D.47262 = (int) D.47260;
      falsebb->block_num = D.47262;
      D.47253 = ins->data.op[1].many_blocks;
      D.47254 = D.47253 + 4;
      *D.47254 = falsebb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      D.47229 = falsebb->cil_code;
      if (D.47229 != 0B) goto <D.47263>; else goto <D.47264>;
      <D.47263>:
      D.46889 = cfg->cil_offset_to_bb;
      D.47229 = falsebb->cil_code;
      D.47232 = (int) D.47229;
      D.46891 = cfg->cil_start;
      D.46892 = (int) D.46891;
      D.47233 = D.47232 - D.46892;
      D.47234 = (unsigned int) D.47233;
      D.47235 = D.47234 * 4;
      D.47236 = D.46889 + D.47235;
      *D.47236 = falsebb;
      <D.47264>:
      D.46897 = cfg->real_offset;
      falsebb->real_offset = D.46897;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.47268>; else goto <D.47265>;
      <D.47268>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 <= 9) goto <D.47266>; else goto <D.47269>;
      <D.47269>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 <= 9) goto <D.47266>; else goto <D.47270>;
      <D.47270>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 <= 9) goto <D.47266>; else goto <D.47265>;
      <D.47266>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      D.46910 = *D.46909;
      if (D.46910 == 0B) goto <D.47271>; else goto <D.47265>;
      <D.47271>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      *D.46909 = falsebb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      goto <D.47267>;
      <D.47265>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 == 0B) goto <D.47272>; else goto <D.47274>;
      <D.47274>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 442) goto <D.47275>; else goto <D.47273>;
      <D.47275>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 759) goto <D.47276>; else goto <D.47273>;
      <D.47276>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 > 9) goto <D.47277>; else goto <D.47273>;
      <D.47277>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 > 9) goto <D.47278>; else goto <D.47273>;
      <D.47278>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 > 9) goto <D.47272>; else goto <D.47273>;
      <D.47272>:
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      <D.47273>:
      <D.47267>:
      D.46805 = cfg->cbb;
      D.46805->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.47279>;
      <D.47259>:
      D.46805 = cfg->cbb;
      D.46805->extended = 1;
      <D.47279>:
      <D.47251>:
    }
    D.47280 = is_nullable_bb->cil_code;
    if (D.47280 != 0B) goto <D.47281>; else goto <D.47282>;
    <D.47281>:
    D.46889 = cfg->cil_offset_to_bb;
    D.47280 = is_nullable_bb->cil_code;
    D.47283 = (int) D.47280;
    D.46891 = cfg->cil_start;
    D.46892 = (int) D.46891;
    D.47284 = D.47283 - D.46892;
    D.47285 = (unsigned int) D.47284;
    D.47286 = D.47285 * 4;
    D.47287 = D.46889 + D.47286;
    *D.47287 = is_nullable_bb;
    <D.47282>:
    D.46897 = cfg->real_offset;
    is_nullable_bb->real_offset = D.46897;
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    if (D.46848 != 0B) goto <D.47291>; else goto <D.47288>;
    <D.47291>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    D.46903 = D.46902 + 64985;
    if (D.46903 <= 9) goto <D.47289>; else goto <D.47292>;
    <D.47292>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    D.46905 = D.46902 + 64878;
    if (D.46905 <= 9) goto <D.47289>; else goto <D.47293>;
    <D.47293>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    D.46907 = D.46902 + 64888;
    if (D.46907 <= 9) goto <D.47289>; else goto <D.47288>;
    <D.47289>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46908 = D.46848->data.op[1].many_blocks;
    D.46909 = D.46908 + 4;
    D.46910 = *D.46909;
    if (D.46910 == 0B) goto <D.47294>; else goto <D.47288>;
    <D.47294>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46908 = D.46848->data.op[1].many_blocks;
    D.46909 = D.46908 + 4;
    *D.46909 = is_nullable_bb;
    D.46805 = cfg->cbb;
    mono_link_bblock (cfg, D.46805, is_nullable_bb);
    goto <D.47290>;
    <D.47288>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    if (D.46848 == 0B) goto <D.47295>; else goto <D.47297>;
    <D.47297>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    if (D.46902 != 442) goto <D.47298>; else goto <D.47296>;
    <D.47298>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    if (D.46902 != 759) goto <D.47299>; else goto <D.47296>;
    <D.47299>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    D.46903 = D.46902 + 64985;
    if (D.46903 > 9) goto <D.47300>; else goto <D.47296>;
    <D.47300>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    D.46905 = D.46902 + 64878;
    if (D.46905 > 9) goto <D.47301>; else goto <D.47296>;
    <D.47301>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    D.46907 = D.46902 + 64888;
    if (D.46907 > 9) goto <D.47295>; else goto <D.47296>;
    <D.47295>:
    D.46805 = cfg->cbb;
    mono_link_bblock (cfg, D.46805, is_nullable_bb);
    <D.47296>:
    <D.47290>:
    D.46805 = cfg->cbb;
    D.46805->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.46830 = cfg->mempool;
      box_sig = mono_mempool_alloc0 (D.46830, 16);
      D.47302 = mono_defaults.object_class;
      D.47303 = &D.47302->byval_arg;
      box_sig->ret = D.47303;
      box_sig->param_count = 1;
      D.47023 = &klass->byval_arg;
      box_sig->params[0] = D.47023;
      box_call = mono_emit_calli (cfg, box_sig, &val, addr, 0B, 0B);
      D.46830 = cfg->mempool;
      res = mono_mempool_alloc (D.46830, 56);
      res->data.op[1].const_val = 0;
      D.47035 = res->data.op[1].const_val;
      res->data.op[0].const_val = D.47035;
      res->prev = 0B;
      D.47036 = res->prev;
      res->next = D.47036;
      res->opcode = 424;
      res->flags = 0;
      res->type = 0;
      res->dreg = -1;
      res->sreg3 = -1;
      D.47037 = res->sreg3;
      res->sreg2 = D.47037;
      D.47038 = res->sreg2;
      res->sreg1 = D.47038;
      D.46841 = cfg->ip;
      res->cil_code = D.46841;
      res->dreg = dreg;
      D.47304 = box_call->dreg;
      res->sreg1 = D.47304;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.47305>; else goto <D.47306>;
      <D.47305>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46848->next = res;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      res->prev = D.46848;
      D.46805 = cfg->cbb;
      D.46805->last_ins = res;
      goto <D.47307>;
      <D.47306>:
      D.46805 = cfg->cbb;
      D.46805 = cfg->cbb;
      D.46805->last_ins = res;
      D.46848 = D.46805->last_ins;
      D.46805->code = D.46848;
      <D.47307>:
      res->type = 6;
      res->klass = klass;
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.46830 = cfg->mempool;
      ins = mono_mempool_alloc (D.46830, 56);
      ins->data.op[1].const_val = 0;
      D.47308 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.47308;
      ins->prev = 0B;
      D.47309 = ins->prev;
      ins->next = D.47309;
      ins->opcode = 442;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.47310 = ins->sreg3;
      ins->sreg2 = D.47310;
      D.47311 = ins->sreg2;
      ins->sreg1 = D.47311;
      D.46841 = cfg->ip;
      ins->cil_code = D.46841;
      if (1 != 0) goto <D.47312>; else goto <D.47313>;
      <D.47312>:
      D.46830 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.46830, 172);
      D.46856 = cfg->num_bblocks;
      D.47314 = D.46856;
      D.47315 = D.47314 + 1;
      cfg->num_bblocks = D.47315;
      D.47316 = (int) D.47314;
      falsebb->block_num = D.47316;
      ins->data.op[0].target_block = end_bb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, end_bb);
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.47317>; else goto <D.47318>;
      <D.47317>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46848->next = ins;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      ins->prev = D.46848;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      goto <D.47319>;
      <D.47318>:
      D.46805 = cfg->cbb;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      D.46848 = D.46805->last_ins;
      D.46805->code = D.46848;
      <D.47319>:
      D.47320 = falsebb->cil_code;
      if (D.47320 != 0B) goto <D.47321>; else goto <D.47322>;
      <D.47321>:
      D.46889 = cfg->cil_offset_to_bb;
      D.47320 = falsebb->cil_code;
      D.47323 = (int) D.47320;
      D.46891 = cfg->cil_start;
      D.46892 = (int) D.46891;
      D.47324 = D.47323 - D.46892;
      D.47325 = (unsigned int) D.47324;
      D.47326 = D.47325 * 4;
      D.47327 = D.46889 + D.47326;
      *D.47327 = falsebb;
      <D.47322>:
      D.46897 = cfg->real_offset;
      falsebb->real_offset = D.46897;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.47331>; else goto <D.47328>;
      <D.47331>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 <= 9) goto <D.47329>; else goto <D.47332>;
      <D.47332>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 <= 9) goto <D.47329>; else goto <D.47333>;
      <D.47333>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 <= 9) goto <D.47329>; else goto <D.47328>;
      <D.47329>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      D.46910 = *D.46909;
      if (D.46910 == 0B) goto <D.47334>; else goto <D.47328>;
      <D.47334>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      *D.46909 = falsebb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      goto <D.47330>;
      <D.47328>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 == 0B) goto <D.47335>; else goto <D.47337>;
      <D.47337>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 442) goto <D.47338>; else goto <D.47336>;
      <D.47338>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 759) goto <D.47339>; else goto <D.47336>;
      <D.47339>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 > 9) goto <D.47340>; else goto <D.47336>;
      <D.47340>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 > 9) goto <D.47341>; else goto <D.47336>;
      <D.47341>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 > 9) goto <D.47335>; else goto <D.47336>;
      <D.47335>:
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      <D.47336>:
      <D.47330>:
      D.46805 = cfg->cbb;
      D.46805->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.47342>;
      <D.47313>:
      D.46830 = cfg->mempool;
      D.47343 = mono_mempool_alloc (D.46830, 8);
      ins->data.op[1].many_blocks = D.47343;
      D.47344 = ins->data.op[1].many_blocks;
      *D.47344 = end_bb;
      D.47344 = ins->data.op[1].many_blocks;
      D.47345 = D.47344 + 4;
      *D.47345 = 0B;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, end_bb);
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.47346>; else goto <D.47347>;
      <D.47346>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46848->next = ins;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      ins->prev = D.46848;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      goto <D.47348>;
      <D.47347>:
      D.46805 = cfg->cbb;
      D.46805 = cfg->cbb;
      D.46805->last_ins = ins;
      D.46848 = D.46805->last_ins;
      D.46805->code = D.46848;
      <D.47348>:
      D.46834 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.46926 = D.46834 & 8;
      if (D.46926 == 0) goto <D.47349>; else goto <D.47350>;
      <D.47349>:
      D.46830 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.46830, 172);
      D.46856 = cfg->num_bblocks;
      D.47351 = D.46856;
      D.47352 = D.47351 + 1;
      cfg->num_bblocks = D.47352;
      D.47353 = (int) D.47351;
      falsebb->block_num = D.47353;
      D.47344 = ins->data.op[1].many_blocks;
      D.47345 = D.47344 + 4;
      *D.47345 = falsebb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      D.47320 = falsebb->cil_code;
      if (D.47320 != 0B) goto <D.47354>; else goto <D.47355>;
      <D.47354>:
      D.46889 = cfg->cil_offset_to_bb;
      D.47320 = falsebb->cil_code;
      D.47323 = (int) D.47320;
      D.46891 = cfg->cil_start;
      D.46892 = (int) D.46891;
      D.47324 = D.47323 - D.46892;
      D.47325 = (unsigned int) D.47324;
      D.47326 = D.47325 * 4;
      D.47327 = D.46889 + D.47326;
      *D.47327 = falsebb;
      <D.47355>:
      D.46897 = cfg->real_offset;
      falsebb->real_offset = D.46897;
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 != 0B) goto <D.47359>; else goto <D.47356>;
      <D.47359>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 <= 9) goto <D.47357>; else goto <D.47360>;
      <D.47360>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 <= 9) goto <D.47357>; else goto <D.47361>;
      <D.47361>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 <= 9) goto <D.47357>; else goto <D.47356>;
      <D.47357>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      D.46910 = *D.46909;
      if (D.46910 == 0B) goto <D.47362>; else goto <D.47356>;
      <D.47362>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46908 = D.46848->data.op[1].many_blocks;
      D.46909 = D.46908 + 4;
      *D.46909 = falsebb;
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      goto <D.47358>;
      <D.47356>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      if (D.46848 == 0B) goto <D.47363>; else goto <D.47365>;
      <D.47365>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 442) goto <D.47366>; else goto <D.47364>;
      <D.47366>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      if (D.46902 != 759) goto <D.47367>; else goto <D.47364>;
      <D.47367>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46903 = D.46902 + 64985;
      if (D.46903 > 9) goto <D.47368>; else goto <D.47364>;
      <D.47368>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46905 = D.46902 + 64878;
      if (D.46905 > 9) goto <D.47369>; else goto <D.47364>;
      <D.47369>:
      D.46805 = cfg->cbb;
      D.46848 = D.46805->last_ins;
      D.46902 = D.46848->opcode;
      D.46907 = D.46902 + 64888;
      if (D.46907 > 9) goto <D.47363>; else goto <D.47364>;
      <D.47363>:
      D.46805 = cfg->cbb;
      mono_link_bblock (cfg, D.46805, falsebb);
      <D.47364>:
      <D.47358>:
      D.46805 = cfg->cbb;
      D.46805->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.47370>;
      <D.47350>:
      D.46805 = cfg->cbb;
      D.46805->extended = 1;
      <D.47370>:
      <D.47342>:
    }
    D.47371 = end_bb->cil_code;
    if (D.47371 != 0B) goto <D.47372>; else goto <D.47373>;
    <D.47372>:
    D.46889 = cfg->cil_offset_to_bb;
    D.47371 = end_bb->cil_code;
    D.47374 = (int) D.47371;
    D.46891 = cfg->cil_start;
    D.46892 = (int) D.46891;
    D.47375 = D.47374 - D.46892;
    D.47376 = (unsigned int) D.47375;
    D.47377 = D.47376 * 4;
    D.47378 = D.46889 + D.47377;
    *D.47378 = end_bb;
    <D.47373>:
    D.46897 = cfg->real_offset;
    end_bb->real_offset = D.46897;
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    if (D.46848 != 0B) goto <D.47382>; else goto <D.47379>;
    <D.47382>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    D.46903 = D.46902 + 64985;
    if (D.46903 <= 9) goto <D.47380>; else goto <D.47383>;
    <D.47383>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    D.46905 = D.46902 + 64878;
    if (D.46905 <= 9) goto <D.47380>; else goto <D.47384>;
    <D.47384>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    D.46907 = D.46902 + 64888;
    if (D.46907 <= 9) goto <D.47380>; else goto <D.47379>;
    <D.47380>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46908 = D.46848->data.op[1].many_blocks;
    D.46909 = D.46908 + 4;
    D.46910 = *D.46909;
    if (D.46910 == 0B) goto <D.47385>; else goto <D.47379>;
    <D.47385>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46908 = D.46848->data.op[1].many_blocks;
    D.46909 = D.46908 + 4;
    *D.46909 = end_bb;
    D.46805 = cfg->cbb;
    mono_link_bblock (cfg, D.46805, end_bb);
    goto <D.47381>;
    <D.47379>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    if (D.46848 == 0B) goto <D.47386>; else goto <D.47388>;
    <D.47388>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    if (D.46902 != 442) goto <D.47389>; else goto <D.47387>;
    <D.47389>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    if (D.46902 != 759) goto <D.47390>; else goto <D.47387>;
    <D.47390>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    D.46903 = D.46902 + 64985;
    if (D.46903 > 9) goto <D.47391>; else goto <D.47387>;
    <D.47391>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    D.46905 = D.46902 + 64878;
    if (D.46905 > 9) goto <D.47392>; else goto <D.47387>;
    <D.47392>:
    D.46805 = cfg->cbb;
    D.46848 = D.46805->last_ins;
    D.46902 = D.46848->opcode;
    D.46907 = D.46902 + 64888;
    if (D.46907 > 9) goto <D.47386>; else goto <D.47387>;
    <D.47386>:
    D.46805 = cfg->cbb;
    mono_link_bblock (cfg, D.46805, end_bb);
    <D.47387>:
    <D.47381>:
    D.46805 = cfg->cbb;
    D.46805->next_bb = end_bb;
    cfg->cbb = end_bb;
    D.46805 = cfg->cbb;
    *out_cbb = D.46805;
    D.46812 = res;
    return D.46812;
  }
  <D.46854>:
  alloc = handle_alloc (cfg, klass, 1, context_used);
  if (alloc == 0B) goto <D.47393>; else goto <D.47394>;
  <D.47393>:
  D.46812 = 0B;
  return D.46812;
  <D.47394>:
  D.46830 = cfg->mempool;
  ins = mono_mempool_alloc (D.46830, 56);
  ins->data.op[1].const_val = 0;
  D.47021 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.47021;
  ins->prev = 0B;
  D.47022 = ins->prev;
  ins->next = D.47022;
  D.47023 = &klass->byval_arg;
  D.47395 = mono_type_to_store_membase (cfg, D.47023);
  D.47396 = (short unsigned int) D.47395;
  ins->opcode = D.47396;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.47026 = ins->sreg3;
  ins->sreg2 = D.47026;
  D.47027 = ins->sreg2;
  ins->sreg1 = D.47027;
  D.46841 = cfg->ip;
  ins->cil_code = D.46841;
  val.515 = val;
  D.47029 = val.515->dreg;
  ins->sreg1 = D.47029;
  D.47030 = alloc->dreg;
  ins->dreg = D.47030;
  ins->data.op[0].const_val = 8;
  D.47023 = &klass->byval_arg;
  type_to_eval_stack_type (cfg, D.47023, ins);
  D.47023 = &klass->byval_arg;
  D.47397 = mono_class_from_mono_type (D.47023);
  ins->klass = D.47397;
  D.46805 = cfg->cbb;
  D.46848 = D.46805->last_ins;
  if (D.46848 != 0B) goto <D.47398>; else goto <D.47399>;
  <D.47398>:
  D.46805 = cfg->cbb;
  D.46848 = D.46805->last_ins;
  D.46848->next = ins;
  D.46805 = cfg->cbb;
  D.46848 = D.46805->last_ins;
  ins->prev = D.46848;
  D.46805 = cfg->cbb;
  D.46805->last_ins = ins;
  goto <D.47400>;
  <D.47399>:
  D.46805 = cfg->cbb;
  D.46805 = cfg->cbb;
  D.46805->last_ins = ins;
  D.46848 = D.46805->last_ins;
  D.46805->code = D.46848;
  <D.47400>:
  D.46812 = alloc;
  return D.46812;
}


handle_unbox_nullable (struct MonoCompile * cfg, struct MonoInst * val, struct MonoClass * klass, int context_used)
{
  struct MonoMethod * D.47405;
  struct MonoInst * D.47406;
  struct MonoMethodSignature * D.47407;
  int pass_mrgctx.521;
  _Bool D.47409;
  long int D.47410;
  long int D.47411;
  int pass_vtable.522;
  struct MonoDomain * D.47417;
  struct MonoClass * D.47418;
  _Bool D.47419;
  long int D.47420;
  long int D.47421;
  struct MonoMemPool * D.47424;
  int D.47425;
  struct MonoInst * D.47426;
  guint16 iftmp.523;
  unsigned int D.47428;
  unsigned int D.47429;
  int D.47433;
  int D.47434;
  const unsigned char * D.47435;
  void * iftmp.524;
  unsigned int D.47440;
  int D.47441;
  struct MonoBasicBlock * D.47442;
  struct MonoInst * D.47443;
  struct MonoMethod * method;

  method = mono_class_get_method_from_name (klass, "Unbox", 1);
  if (context_used != 0) goto <D.47403>; else goto <D.47404>;
  <D.47403>:
  {
    struct MonoInst * rgctx;
    struct MonoInst * addr;

    addr = emit_get_rgctx_method (cfg, context_used, method, 6);
    D.47405 = cfg->current_method;
    rgctx = emit_get_rgctx (cfg, D.47405, context_used);
    D.47407 = mono_method_signature (method);
    D.47406 = mono_emit_calli (cfg, D.47407, &val, addr, 0B, rgctx);
    return D.47406;
  }
  <D.47404>:
  {
    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.521 = pass_mrgctx;
        D.47409 = pass_mrgctx.521 != 0;
        D.47410 = (long int) D.47409;
        D.47411 = __builtin_expect (D.47410, 0);
        if (D.47411 != 0) goto <D.47412>; else goto <D.47413>;
        <D.47412>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3578, "!pass_mrgctx");
        <D.47413>:
        pass_vtable.522 = pass_vtable;
        if (pass_vtable.522 != 0) goto <D.47415>; else goto <D.47416>;
        <D.47415>:
        {
          struct MonoVTable * vtable;

          D.47417 = cfg->domain;
          D.47418 = method->klass;
          vtable = mono_class_vtable (D.47417, D.47418);
          D.47419 = vtable == 0B;
          D.47420 = (long int) D.47419;
          D.47421 = __builtin_expect (D.47420, 0);
          if (D.47421 != 0) goto <D.47422>; else goto <D.47423>;
          <D.47422>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3583, "vtable");
          <D.47423>:
          D.47424 = cfg->mempool;
          rgctx_arg = mono_mempool_alloc (D.47424, 56);
          rgctx_arg->data.op[1].const_val = 0;
          D.47425 = rgctx_arg->data.op[1].const_val;
          rgctx_arg->data.op[0].const_val = D.47425;
          rgctx_arg->prev = 0B;
          D.47426 = rgctx_arg->prev;
          rgctx_arg->next = D.47426;
          D.47428 = BIT_FIELD_REF <*cfg, 32, 3392>;
          D.47429 = D.47428 & 64;
          if (D.47429 != 0) goto <D.47430>; else goto <D.47431>;
          <D.47430>:
          iftmp.523 = 732;
          goto <D.47432>;
          <D.47431>:
          iftmp.523 = 362;
          <D.47432>:
          rgctx_arg->opcode = iftmp.523;
          rgctx_arg->flags = 0;
          rgctx_arg->type = 0;
          rgctx_arg->dreg = -1;
          rgctx_arg->sreg3 = -1;
          D.47433 = rgctx_arg->sreg3;
          rgctx_arg->sreg2 = D.47433;
          D.47434 = rgctx_arg->sreg2;
          rgctx_arg->sreg1 = D.47434;
          D.47435 = cfg->ip;
          rgctx_arg->cil_code = D.47435;
          D.47428 = BIT_FIELD_REF <*cfg, 32, 3392>;
          D.47429 = D.47428 & 64;
          if (D.47429 != 0) goto <D.47437>; else goto <D.47438>;
          <D.47437>:
          iftmp.524 = vtable->klass;
          goto <D.47439>;
          <D.47438>:
          iftmp.524 = vtable;
          <D.47439>:
          rgctx_arg->data.op[0].p = iftmp.524;
          rgctx_arg->data.op[1].src = 14B;
          rgctx_arg->type = 3;
          D.47440 = alloc_dreg (cfg, 3);
          D.47441 = (int) D.47440;
          rgctx_arg->dreg = D.47441;
          D.47442 = cfg->cbb;
          D.47443 = D.47442->last_ins;
          if (D.47443 != 0B) goto <D.47444>; else goto <D.47445>;
          <D.47444>:
          D.47442 = cfg->cbb;
          D.47443 = D.47442->last_ins;
          D.47443->next = rgctx_arg;
          D.47442 = cfg->cbb;
          D.47443 = D.47442->last_ins;
          rgctx_arg->prev = D.47443;
          D.47442 = cfg->cbb;
          D.47442->last_ins = rgctx_arg;
          goto <D.47446>;
          <D.47445>:
          D.47442 = cfg->cbb;
          D.47442 = cfg->cbb;
          D.47442->last_ins = rgctx_arg;
          D.47443 = D.47442->last_ins;
          D.47442->code = D.47443;
          <D.47446>:
        }
        <D.47416>:
        D.47406 = mono_emit_method_call_full (cfg, method, 0B, 0, &val, 0B, 0B, rgctx_arg);
        return D.47406;
      }
    finally
      {
        pass_vtable = {CLOBBER};
        pass_mrgctx = {CLOBBER};
      }
  }
}


handle_unbox (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * * sp, int context_used)
{
  unsigned int D.47449;
  unsigned int D.47450;
  unsigned int D.47451;
  unsigned int D.47452;
  struct MonoInst * D.47453;
  int D.47454;
  unsigned int D.47457;
  unsigned int D.47458;
  struct MonoMemPool * D.47461;
  int D.47462;
  struct MonoInst * D.47463;
  int D.47464;
  int D.47465;
  const unsigned char * D.47466;
  struct MonoBasicBlock * D.47467;
  struct MonoInst * D.47468;
  int D.47472;
  struct MonoInst * D.47473;
  int D.47474;
  int D.47475;
  int D.47480;
  struct MonoInst * D.47481;
  int D.47482;
  int D.47483;
  unsigned char D.47484;
  int D.47488;
  struct MonoInst * D.47489;
  int D.47490;
  int D.47491;
  unsigned char D.47495;
  _Bool D.47496;
  long int D.47497;
  long int D.47498;
  int D.47501;
  struct MonoInst * D.47502;
  int D.47503;
  int D.47504;
  int D.47508;
  struct MonoInst * D.47509;
  int D.47510;
  int D.47511;
  int D.47515;
  struct MonoInst * D.47516;
  int D.47517;
  int D.47518;
  int D.47522;
  struct MonoInst * D.47523;
  int D.47524;
  int D.47525;
  struct MonoClass * D.47533;
  int D.47534;
  struct MonoInst * D.47535;
  int D.47536;
  int D.47537;
  int D.47538;
  int D.47542;
  struct MonoInst * D.47543;
  int D.47544;
  int D.47545;
  int D.47550;
  struct MonoInst * D.47551;
  int D.47552;
  int D.47553;
  unsigned int D.47554;
  int D.47555;
  struct MonoInst * D.47559;
  struct MonoInst * add;
  int obj_reg;
  int vtable_reg;
  int klass_reg;
  int eclass_reg;
  int rank_reg;

  D.47449 = alloc_dreg (cfg, 3);
  vtable_reg = (int) D.47449;
  D.47450 = alloc_dreg (cfg, 3);
  klass_reg = (int) D.47450;
  D.47451 = alloc_dreg (cfg, 3);
  eclass_reg = (int) D.47451;
  D.47452 = alloc_dreg (cfg, 1);
  rank_reg = (int) D.47452;
  D.47453 = *sp;
  obj_reg = D.47453->dreg;
  {
    struct MonoInst * inst;
    int __ins_flags;

    __ins_flags = 32;
    D.47454 = __ins_flags & 32;
    if (D.47454 != 0) goto <D.47455>; else goto <D.47456>;
    <D.47455>:
    D.47457 = BIT_FIELD_REF <*cfg, 32, 3424>;
    D.47458 = D.47457 & 64;
    if (D.47458 != 0) goto <D.47459>; else goto <D.47460>;
    <D.47459>:
    {
      struct MonoInst * inst;

      D.47461 = cfg->mempool;
      inst = mono_mempool_alloc (D.47461, 56);
      inst->data.op[1].const_val = 0;
      D.47462 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47462;
      inst->prev = 0B;
      D.47463 = inst->prev;
      inst->next = D.47463;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47464 = inst->sreg3;
      inst->sreg2 = D.47464;
      D.47465 = inst->sreg2;
      inst->sreg1 = D.47465;
      D.47466 = cfg->ip;
      inst->cil_code = D.47466;
      inst->dreg = -1;
      inst->sreg1 = obj_reg;
      inst->data.op[1].const_val = 0;
      D.47467 = cfg->cbb;
      D.47468 = D.47467->last_ins;
      if (D.47468 != 0B) goto <D.47469>; else goto <D.47470>;
      <D.47469>:
      D.47467 = cfg->cbb;
      D.47468 = D.47467->last_ins;
      D.47468->next = inst;
      D.47467 = cfg->cbb;
      D.47468 = D.47467->last_ins;
      inst->prev = D.47468;
      D.47467 = cfg->cbb;
      D.47467->last_ins = inst;
      goto <D.47471>;
      <D.47470>:
      D.47467 = cfg->cbb;
      D.47467 = cfg->cbb;
      D.47467->last_ins = inst;
      D.47468 = D.47467->last_ins;
      D.47467->code = D.47468;
      <D.47471>:
    }
    {
      struct MonoInst * inst;

      D.47461 = cfg->mempool;
      inst = mono_mempool_alloc (D.47461, 56);
      inst->data.op[1].const_val = 0;
      D.47472 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47472;
      inst->prev = 0B;
      D.47473 = inst->prev;
      inst->next = D.47473;
      inst->opcode = 451;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47474 = inst->sreg3;
      inst->sreg2 = D.47474;
      D.47475 = inst->sreg2;
      inst->sreg1 = D.47475;
      D.47466 = cfg->ip;
      inst->cil_code = D.47466;
      inst->data.op[1].p = "NullReferenceException";
      D.47467 = cfg->cbb;
      D.47468 = D.47467->last_ins;
      if (D.47468 != 0B) goto <D.47476>; else goto <D.47477>;
      <D.47476>:
      D.47467 = cfg->cbb;
      D.47468 = D.47467->last_ins;
      D.47468->next = inst;
      D.47467 = cfg->cbb;
      D.47468 = D.47467->last_ins;
      inst->prev = D.47468;
      D.47467 = cfg->cbb;
      D.47467->last_ins = inst;
      goto <D.47478>;
      <D.47477>:
      D.47467 = cfg->cbb;
      D.47467 = cfg->cbb;
      D.47467->last_ins = inst;
      D.47468 = D.47467->last_ins;
      D.47467->code = D.47468;
      <D.47478>:
    }
    goto <D.47479>;
    <D.47460>:
    <D.47479>:
    <D.47456>:
    D.47461 = cfg->mempool;
    inst = mono_mempool_alloc (D.47461, 56);
    inst->data.op[1].const_val = 0;
    D.47480 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47480;
    inst->prev = 0B;
    D.47481 = inst->prev;
    inst->next = D.47481;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47482 = inst->sreg3;
    inst->sreg2 = D.47482;
    D.47483 = inst->sreg2;
    inst->sreg1 = D.47483;
    D.47466 = cfg->ip;
    inst->cil_code = D.47466;
    inst->dreg = vtable_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    inst->type = 1;
    D.47484 = (unsigned char) __ins_flags;
    inst->flags = D.47484;
    D.47467 = cfg->cbb;
    D.47468 = D.47467->last_ins;
    if (D.47468 != 0B) goto <D.47485>; else goto <D.47486>;
    <D.47485>:
    D.47467 = cfg->cbb;
    D.47468 = D.47467->last_ins;
    D.47468->next = inst;
    D.47467 = cfg->cbb;
    D.47468 = D.47467->last_ins;
    inst->prev = D.47468;
    D.47467 = cfg->cbb;
    D.47467->last_ins = inst;
    goto <D.47487>;
    <D.47486>:
    D.47467 = cfg->cbb;
    D.47467 = cfg->cbb;
    D.47467->last_ins = inst;
    D.47468 = D.47467->last_ins;
    D.47467->code = D.47468;
    <D.47487>:
  }
  {
    struct MonoInst * inst;

    D.47461 = cfg->mempool;
    inst = mono_mempool_alloc (D.47461, 56);
    inst->data.op[1].const_val = 0;
    D.47488 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47488;
    inst->prev = 0B;
    D.47489 = inst->prev;
    inst->next = D.47489;
    inst->opcode = 390;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47490 = inst->sreg3;
    inst->sreg2 = D.47490;
    D.47491 = inst->sreg2;
    inst->sreg1 = D.47491;
    D.47466 = cfg->ip;
    inst->cil_code = D.47466;
    inst->dreg = rank_reg;
    inst->sreg1 = vtable_reg;
    inst->data.op[0].const_val = 22;
    D.47467 = cfg->cbb;
    D.47468 = D.47467->last_ins;
    if (D.47468 != 0B) goto <D.47492>; else goto <D.47493>;
    <D.47492>:
    D.47467 = cfg->cbb;
    D.47468 = D.47467->last_ins;
    D.47468->next = inst;
    D.47467 = cfg->cbb;
    D.47468 = D.47467->last_ins;
    inst->prev = D.47468;
    D.47467 = cfg->cbb;
    D.47467->last_ins = inst;
    goto <D.47494>;
    <D.47493>:
    D.47467 = cfg->cbb;
    D.47467 = cfg->cbb;
    D.47467->last_ins = inst;
    D.47468 = D.47467->last_ins;
    D.47467->code = D.47468;
    <D.47494>:
  }
  D.47495 = klass->rank;
  D.47496 = D.47495 != 0;
  D.47497 = (long int) D.47496;
  D.47498 = __builtin_expect (D.47497, 0);
  if (D.47498 != 0) goto <D.47499>; else goto <D.47500>;
  <D.47499>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3606, "klass->rank == 0");
  <D.47500>:
  {
    struct MonoInst * inst;

    D.47461 = cfg->mempool;
    inst = mono_mempool_alloc (D.47461, 56);
    inst->data.op[1].const_val = 0;
    D.47501 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47501;
    inst->prev = 0B;
    D.47502 = inst->prev;
    inst->next = D.47502;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47503 = inst->sreg3;
    inst->sreg2 = D.47503;
    D.47504 = inst->sreg2;
    inst->sreg1 = D.47504;
    D.47466 = cfg->ip;
    inst->cil_code = D.47466;
    inst->dreg = -1;
    inst->sreg1 = rank_reg;
    inst->data.op[1].const_val = 0;
    D.47467 = cfg->cbb;
    D.47468 = D.47467->last_ins;
    if (D.47468 != 0B) goto <D.47505>; else goto <D.47506>;
    <D.47505>:
    D.47467 = cfg->cbb;
    D.47468 = D.47467->last_ins;
    D.47468->next = inst;
    D.47467 = cfg->cbb;
    D.47468 = D.47467->last_ins;
    inst->prev = D.47468;
    D.47467 = cfg->cbb;
    D.47467->last_ins = inst;
    goto <D.47507>;
    <D.47506>:
    D.47467 = cfg->cbb;
    D.47467 = cfg->cbb;
    D.47467->last_ins = inst;
    D.47468 = D.47467->last_ins;
    D.47467->code = D.47468;
    <D.47507>:
  }
  {
    struct MonoInst * inst;

    D.47461 = cfg->mempool;
    inst = mono_mempool_alloc (D.47461, 56);
    inst->data.op[1].const_val = 0;
    D.47508 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47508;
    inst->prev = 0B;
    D.47509 = inst->prev;
    inst->next = D.47509;
    inst->opcode = 456;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47510 = inst->sreg3;
    inst->sreg2 = D.47510;
    D.47511 = inst->sreg2;
    inst->sreg1 = D.47511;
    D.47466 = cfg->ip;
    inst->cil_code = D.47466;
    inst->data.op[1].p = "InvalidCastException";
    D.47467 = cfg->cbb;
    D.47468 = D.47467->last_ins;
    if (D.47468 != 0B) goto <D.47512>; else goto <D.47513>;
    <D.47512>:
    D.47467 = cfg->cbb;
    D.47468 = D.47467->last_ins;
    D.47468->next = inst;
    D.47467 = cfg->cbb;
    D.47468 = D.47467->last_ins;
    inst->prev = D.47468;
    D.47467 = cfg->cbb;
    D.47467->last_ins = inst;
    goto <D.47514>;
    <D.47513>:
    D.47467 = cfg->cbb;
    D.47467 = cfg->cbb;
    D.47467->last_ins = inst;
    D.47468 = D.47467->last_ins;
    D.47467->code = D.47468;
    <D.47514>:
  }
  {
    struct MonoInst * inst;

    D.47461 = cfg->mempool;
    inst = mono_mempool_alloc (D.47461, 56);
    inst->data.op[1].const_val = 0;
    D.47515 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47515;
    inst->prev = 0B;
    D.47516 = inst->prev;
    inst->next = D.47516;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47517 = inst->sreg3;
    inst->sreg2 = D.47517;
    D.47518 = inst->sreg2;
    inst->sreg1 = D.47518;
    D.47466 = cfg->ip;
    inst->cil_code = D.47466;
    inst->dreg = klass_reg;
    inst->sreg1 = vtable_reg;
    inst->data.op[0].const_val = 0;
    D.47467 = cfg->cbb;
    D.47468 = D.47467->last_ins;
    if (D.47468 != 0B) goto <D.47519>; else goto <D.47520>;
    <D.47519>:
    D.47467 = cfg->cbb;
    D.47468 = D.47467->last_ins;
    D.47468->next = inst;
    D.47467 = cfg->cbb;
    D.47468 = D.47467->last_ins;
    inst->prev = D.47468;
    D.47467 = cfg->cbb;
    D.47467->last_ins = inst;
    goto <D.47521>;
    <D.47520>:
    D.47467 = cfg->cbb;
    D.47467 = cfg->cbb;
    D.47467->last_ins = inst;
    D.47468 = D.47467->last_ins;
    D.47467->code = D.47468;
    <D.47521>:
  }
  {
    struct MonoInst * inst;

    D.47461 = cfg->mempool;
    inst = mono_mempool_alloc (D.47461, 56);
    inst->data.op[1].const_val = 0;
    D.47522 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47522;
    inst->prev = 0B;
    D.47523 = inst->prev;
    inst->next = D.47523;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47524 = inst->sreg3;
    inst->sreg2 = D.47524;
    D.47525 = inst->sreg2;
    inst->sreg1 = D.47525;
    D.47466 = cfg->ip;
    inst->cil_code = D.47466;
    inst->dreg = eclass_reg;
    inst->sreg1 = klass_reg;
    inst->data.op[0].const_val = 0;
    D.47467 = cfg->cbb;
    D.47468 = D.47467->last_ins;
    if (D.47468 != 0B) goto <D.47526>; else goto <D.47527>;
    <D.47526>:
    D.47467 = cfg->cbb;
    D.47468 = D.47467->last_ins;
    D.47468->next = inst;
    D.47467 = cfg->cbb;
    D.47468 = D.47467->last_ins;
    inst->prev = D.47468;
    D.47467 = cfg->cbb;
    D.47467->last_ins = inst;
    goto <D.47528>;
    <D.47527>:
    D.47467 = cfg->cbb;
    D.47467 = cfg->cbb;
    D.47467->last_ins = inst;
    D.47468 = D.47467->last_ins;
    D.47467->code = D.47468;
    <D.47528>:
  }
  if (context_used != 0) goto <D.47529>; else goto <D.47530>;
  <D.47529>:
  {
    struct MonoInst * element_class;

    D.47495 = klass->rank;
    D.47496 = D.47495 != 0;
    D.47497 = (long int) D.47496;
    D.47498 = __builtin_expect (D.47497, 0);
    if (D.47498 != 0) goto <D.47531>; else goto <D.47532>;
    <D.47531>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3619, "klass->rank == 0");
    <D.47532>:
    D.47533 = klass->element_class;
    element_class = emit_get_rgctx_klass (cfg, context_used, D.47533, 1);
    {
      struct MonoInst * inst;

      D.47461 = cfg->mempool;
      inst = mono_mempool_alloc (D.47461, 56);
      inst->data.op[1].const_val = 0;
      D.47534 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47534;
      inst->prev = 0B;
      D.47535 = inst->prev;
      inst->next = D.47535;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47536 = inst->sreg3;
      inst->sreg2 = D.47536;
      D.47537 = inst->sreg2;
      inst->sreg1 = D.47537;
      D.47466 = cfg->ip;
      inst->cil_code = D.47466;
      inst->dreg = -1;
      inst->sreg1 = eclass_reg;
      D.47538 = element_class->dreg;
      inst->sreg2 = D.47538;
      D.47467 = cfg->cbb;
      D.47468 = D.47467->last_ins;
      if (D.47468 != 0B) goto <D.47539>; else goto <D.47540>;
      <D.47539>:
      D.47467 = cfg->cbb;
      D.47468 = D.47467->last_ins;
      D.47468->next = inst;
      D.47467 = cfg->cbb;
      D.47468 = D.47467->last_ins;
      inst->prev = D.47468;
      D.47467 = cfg->cbb;
      D.47467->last_ins = inst;
      goto <D.47541>;
      <D.47540>:
      D.47467 = cfg->cbb;
      D.47467 = cfg->cbb;
      D.47467->last_ins = inst;
      D.47468 = D.47467->last_ins;
      D.47467->code = D.47468;
      <D.47541>:
    }
    {
      struct MonoInst * inst;

      D.47461 = cfg->mempool;
      inst = mono_mempool_alloc (D.47461, 56);
      inst->data.op[1].const_val = 0;
      D.47542 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47542;
      inst->prev = 0B;
      D.47543 = inst->prev;
      inst->next = D.47543;
      inst->opcode = 456;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47544 = inst->sreg3;
      inst->sreg2 = D.47544;
      D.47545 = inst->sreg2;
      inst->sreg1 = D.47545;
      D.47466 = cfg->ip;
      inst->cil_code = D.47466;
      inst->data.op[1].p = "InvalidCastException";
      D.47467 = cfg->cbb;
      D.47468 = D.47467->last_ins;
      if (D.47468 != 0B) goto <D.47546>; else goto <D.47547>;
      <D.47546>:
      D.47467 = cfg->cbb;
      D.47468 = D.47467->last_ins;
      D.47468->next = inst;
      D.47467 = cfg->cbb;
      D.47468 = D.47467->last_ins;
      inst->prev = D.47468;
      D.47467 = cfg->cbb;
      D.47467->last_ins = inst;
      goto <D.47548>;
      <D.47547>:
      D.47467 = cfg->cbb;
      D.47467 = cfg->cbb;
      D.47467->last_ins = inst;
      D.47468 = D.47467->last_ins;
      D.47467->code = D.47468;
      <D.47548>:
    }
  }
  goto <D.47549>;
  <D.47530>:
  D.47533 = klass->element_class;
  save_cast_details (cfg, D.47533, obj_reg, 0, 0B);
  D.47533 = klass->element_class;
  mini_emit_class_check (cfg, eclass_reg, D.47533);
  reset_cast_details (cfg);
  <D.47549>:
  D.47461 = cfg->mempool;
  add = mono_mempool_alloc (D.47461, 56);
  add->data.op[1].const_val = 0;
  D.47550 = add->data.op[1].const_val;
  add->data.op[0].const_val = D.47550;
  add->prev = 0B;
  D.47551 = add->prev;
  add->next = D.47551;
  add->opcode = 429;
  add->flags = 0;
  add->type = 0;
  add->dreg = -1;
  add->sreg3 = -1;
  D.47552 = add->sreg3;
  add->sreg2 = D.47552;
  D.47553 = add->sreg2;
  add->sreg1 = D.47553;
  D.47466 = cfg->ip;
  add->cil_code = D.47466;
  D.47554 = alloc_dreg (cfg, 5);
  D.47555 = (int) D.47554;
  add->dreg = D.47555;
  add->sreg1 = obj_reg;
  add->data.op[1].const_val = 8;
  D.47467 = cfg->cbb;
  D.47468 = D.47467->last_ins;
  if (D.47468 != 0B) goto <D.47556>; else goto <D.47557>;
  <D.47556>:
  D.47467 = cfg->cbb;
  D.47468 = D.47467->last_ins;
  D.47468->next = add;
  D.47467 = cfg->cbb;
  D.47468 = D.47467->last_ins;
  add->prev = D.47468;
  D.47467 = cfg->cbb;
  D.47467->last_ins = add;
  goto <D.47558>;
  <D.47557>:
  D.47467 = cfg->cbb;
  D.47467 = cfg->cbb;
  D.47467->last_ins = add;
  D.47468 = D.47467->last_ins;
  D.47467->code = D.47468;
  <D.47558>:
  add->type = 5;
  add->klass = klass;
  D.47559 = add;
  return D.47559;
}


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.47561;
  struct MonoException * ex;

  D.47561 = get_original_method (caller);
  ex = mono_security_core_clr_is_field_access_allowed (D.47561, field);
  if (ex != 0B) goto <D.47562>; else goto <D.47563>;
  <D.47562>:
  emit_throw_exception (cfg, ex);
  <D.47563>:
}


get_original_method (struct MonoMethod * method)
{
  unsigned int D.47564;
  unsigned int D.47565;
  struct MonoMethod * D.47568;

  D.47564 = BIT_FIELD_REF <*method, 32, 160>;
  D.47565 = D.47564 & 124;
  if (D.47565 == 0) goto <D.47566>; else goto <D.47567>;
  <D.47566>:
  D.47568 = method;
  return D.47568;
  <D.47567>:
  D.47564 = BIT_FIELD_REF <*method, 32, 160>;
  D.47565 = D.47564 & 124;
  if (D.47565 == 20) goto <D.47569>; else goto <D.47570>;
  <D.47569>:
  D.47568 = 0B;
  return D.47568;
  <D.47570>:
  D.47568 = mono_marshal_method_from_wrapper (method);
  return D.47568;
}


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.47572;
  _Bool D.47573;
  long int D.47574;
  long int D.47575;
  int D.47580;
  int D.47583;
  struct MonoMethod * D.47586;
  int D.47587;
  unsigned int D.47590;
  char * D.47593;
  char * D.47594;
  unsigned int D.47595;
  unsigned int D.47596;
  int D.47599;
  int D.47600;
  struct MonoLoaderError * D.47604;
  unsigned char D.47611;
  int D.47612;
  int D.47613;
  struct MonoType * D.47616;
  int D.47617;
  struct MonoMemPool * D.47620;
  short unsigned int D.47621;
  unsigned int D.47622;
  unsigned int D.47623;
  void * D.47624;
  struct MonoInst * * D.47625;
  unsigned int i.525;
  unsigned int D.47627;
  struct MonoInst * * D.47628;
  struct MonoType * D.47629;
  struct MonoInst * D.47630;
  int D.47631;
  unsigned int D.47632;
  unsigned int D.47633;
  unsigned int D.47634;
  int D.47635;
  unsigned int D.47636;
  unsigned int D.47637;
  int D.47638;
  unsigned int D.47639;
  unsigned int D.47640;
  int D.47641;
  unsigned int D.47642;
  unsigned int D.47643;
  int D.47644;
  <unnamed-unsigned:1> D.47645;
  unsigned char D.47646;
  short unsigned int D.47649;
  int D.47650;
  int D.47651;
  int prev_cil_offset_to_bb_len.526;
  unsigned char D.47655;
  <unnamed-unsigned:1> D.47656;
  unsigned int D.47657;
  unsigned int costs.527;
  char * D.47664;
  char * D.47665;
  int D.47666;
  int D.47667;
  int D.47668;
  struct MonoInst * D.47669;
  int D.47670;
  int D.47671;
  const unsigned char * D.47672;
  struct MonoInst * D.47673;
  short int D.47677;
  struct MonoBasicBlock * * D.47680;
  struct MonoBasicBlock * D.47681;
  short int D.47682;
  short int D.47689;
  struct MonoBasicBlock * * D.47691;
  struct MonoBasicBlock * D.47692;
  short int D.47693;
  struct MonoBasicBlock * * D.47703;
  struct MonoInst * D.47704;
  short unsigned int D.47707;
  int D.47710;
  int D.47711;
  struct MonoInst * * D.47716;
  int D.47717;
  unsigned int D.47718;
  unsigned int D.47719;
  struct MonoInst * * D.47720;
  struct MonoInst * D.47721;
  struct MonoType * D.47722;
  unsigned int D.47723;
  short unsigned int D.47724;
  struct MonoClass * D.47725;
  int D.47726;
  unsigned char D.47727;
  <unnamed type> D.47728;
  unsigned int D.47729;
  int D.47730;
  short unsigned int D.47731;
  struct MonoClass * D.47734;
  struct MonoBasicBlock * D.47735;
  struct MonoInst * D.47736;
  struct MonoInst * * sp.528;
  struct GSList * D.47741;
  struct GSList * D.47742;
  char * D.47745;
  struct GSList * D.47746;
  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.47572 = cfg->exception_type;
  D.47573 = D.47572 != 0;
  D.47574 = (long int) D.47573;
  D.47575 = __builtin_expect (D.47574, 0);
  if (D.47575 != 0) goto <D.47576>; else goto <D.47577>;
  <D.47576>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 5768, "cfg->exception_type == MONO_EXCEPTION_NONE");
  <D.47577>:
  if (inline_always == 0) goto <D.47578>; else goto <D.47579>;
  <D.47578>:
  D.47580 = check_inline_called_method_name_limit (cmethod);
  if (D.47580 == 0) goto <D.47581>; else goto <D.47582>;
  <D.47581>:
  D.47583 = 0;
  return D.47583;
  <D.47582>:
  <D.47579>:
  if (inline_always == 0) goto <D.47584>; else goto <D.47585>;
  <D.47584>:
  D.47586 = cfg->method;
  D.47587 = check_inline_caller_method_name_limit (D.47586);
  if (D.47587 == 0) goto <D.47588>; else goto <D.47589>;
  <D.47588>:
  D.47583 = 0;
  return D.47583;
  <D.47589>:
  <D.47585>:
  D.47590 = cfg->verbose_level;
  if (D.47590 > 2) goto <D.47591>; else goto <D.47592>;
  <D.47591>:
  D.47586 = cfg->method;
  D.47593 = mono_method_full_name (D.47586, 1);
  D.47594 = mono_method_full_name (cmethod, 1);
  printf ("INLINE START %p %s -> %s\n", cmethod, D.47593, D.47594);
  <D.47592>:
  D.47595 = BIT_FIELD_REF <*cmethod, 32, 160>;
  D.47596 = D.47595 & 1;
  if (D.47596 == 0) goto <D.47597>; else goto <D.47598>;
  <D.47597>:
  D.47599 = cfg->stat_inlineable_methods;
  D.47600 = D.47599 + 1;
  cfg->stat_inlineable_methods = D.47600;
  cmethod->inline_info = 1;
  <D.47598>:
  cheader = mono_method_get_header (cmethod);
  if (cheader == 0B) goto <D.47601>; else goto <D.47603>;
  <D.47603>:
  D.47604 = mono_loader_get_last_error ();
  if (D.47604 != 0B) goto <D.47601>; else goto <D.47602>;
  <D.47601>:
  {
    struct MonoLoaderError * error;

    error = mono_loader_get_last_error ();
    if (cheader != 0B) goto <D.47605>; else goto <D.47606>;
    <D.47605>:
    mono_metadata_free_mh (cheader);
    <D.47606>:
    if (inline_always != 0) goto <D.47607>; else goto <D.47608>;
    <D.47607>:
    if (error != 0B) goto <D.47609>; else goto <D.47610>;
    <D.47609>:
    D.47611 = error->exception_type;
    D.47612 = (int) D.47611;
    mono_cfg_set_exception (cfg, D.47612);
    <D.47610>:
    <D.47608>:
    mono_loader_clear_error ();
    D.47583 = 0;
    return D.47583;
  }
  <D.47602>:
  D.47613 = mono_compile_is_broken (cfg, cmethod, 0);
  if (D.47613 != 0) goto <D.47614>; else goto <D.47615>;
  <D.47614>:
  mono_metadata_free_mh (cheader);
  D.47583 = 0;
  return D.47583;
  <D.47615>:
  D.47616 = fsig->ret;
  D.47617 = mono_type_is_void (D.47616);
  if (D.47617 == 0) goto <D.47618>; else goto <D.47619>;
  <D.47618>:
  D.47616 = fsig->ret;
  rvar = mono_compile_create_var (cfg, D.47616, 329);
  <D.47619>:
  prev_locals = cfg->locals;
  D.47620 = cfg->mempool;
  D.47621 = cheader->num_locals;
  D.47622 = (unsigned int) D.47621;
  D.47623 = D.47622 * 4;
  D.47624 = mono_mempool_alloc0 (D.47620, D.47623);
  cfg->locals = D.47624;
  i = 0;
  goto <D.26393>;
  <D.26392>:
  D.47625 = cfg->locals;
  i.525 = (unsigned int) i;
  D.47627 = i.525 * 4;
  D.47628 = D.47625 + D.47627;
  D.47629 = cheader->locals[i];
  D.47630 = mono_compile_create_var (cfg, D.47629, 329);
  *D.47628 = D.47630;
  i = i + 1;
  <D.26393>:
  D.47621 = cheader->num_locals;
  D.47631 = (int) D.47621;
  if (D.47631 > i) goto <D.26392>; else goto <D.26394>;
  <D.26394>:
  D.47620 = cfg->mempool;
  sbblock = mono_mempool_alloc0 (D.47620, 172);
  D.47632 = cfg->num_bblocks;
  D.47633 = D.47632;
  D.47634 = D.47633 + 1;
  cfg->num_bblocks = D.47634;
  D.47635 = (int) D.47633;
  sbblock->block_num = D.47635;
  sbblock->real_offset = real_offset;
  D.47620 = cfg->mempool;
  ebblock = mono_mempool_alloc0 (D.47620, 172);
  D.47632 = cfg->num_bblocks;
  D.47636 = D.47632;
  D.47637 = D.47636 + 1;
  cfg->num_bblocks = D.47637;
  D.47638 = (int) D.47636;
  ebblock->block_num = D.47638;
  D.47632 = cfg->num_bblocks;
  D.47639 = D.47632;
  D.47640 = D.47639 + 1;
  cfg->num_bblocks = D.47640;
  D.47641 = (int) D.47639;
  ebblock->block_num = D.47641;
  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.47642 = cfg->inline_depth;
  D.47643 = D.47642 + 1;
  cfg->inline_depth = D.47643;
  prev_real_offset = cfg->real_offset;
  prev_cbb_hash = cfg->cbb_hash;
  prev_cil_offset_to_bb = cfg->cil_offset_to_bb;
  D.47644 = cfg->cil_offset_to_bb_len;
  prev_cil_offset_to_bb_len = (guint32) D.47644;
  prev_cil_start = cfg->cil_start;
  prev_cbb = cfg->cbb;
  prev_current_method = cfg->current_method;
  prev_generic_context = cfg->generic_context;
  D.47645 = cfg->ret_var_set;
  prev_ret_var_set = (gboolean) D.47645;
  D.47646 = *ip;
  if (D.47646 == 111) goto <D.47647>; else goto <D.47648>;
  <D.47647>:
  D.47649 = cmethod->flags;
  D.47650 = (int) D.47649;
  D.47651 = D.47650 & 16;
  if (D.47651 == 0) goto <D.47652>; else goto <D.47653>;
  <D.47652>:
  virtual = 1;
  <D.47653>:
  <D.47648>:
  costs = mono_method_to_ir (cfg, cmethod, sbblock, ebblock, rvar, dont_inline, sp, real_offset, virtual);
  D.47645 = cfg->ret_var_set;
  ret_var_set = (gboolean) D.47645;
  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.526 = (int) prev_cil_offset_to_bb_len;
  cfg->cil_offset_to_bb_len = prev_cil_offset_to_bb_len.526;
  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.47655 = (unsigned char) prev_ret_var_set;
  D.47656 = (<unnamed-unsigned:1>) D.47655;
  cfg->ret_var_set = D.47656;
  D.47642 = cfg->inline_depth;
  D.47657 = D.47642 + 4294967295;
  cfg->inline_depth = D.47657;
  costs.527 = (unsigned int) costs;
  if (costs.527 <= 59) goto <D.47658>; else goto <D.47661>;
  <D.47661>:
  if (inline_always != 0) goto <D.47658>; else goto <D.47659>;
  <D.47658>:
  D.47590 = cfg->verbose_level;
  if (D.47590 > 2) goto <D.47662>; else goto <D.47663>;
  <D.47662>:
  D.47586 = cfg->method;
  D.47664 = mono_method_full_name (D.47586, 1);
  D.47665 = mono_method_full_name (cmethod, 1);
  printf ("INLINE END %s -> %s\n", D.47664, D.47665);
  <D.47663>:
  D.47666 = cfg->stat_inlined_methods;
  D.47667 = D.47666 + 1;
  cfg->stat_inlined_methods = D.47667;
  D.47620 = cfg->mempool;
  ins = mono_mempool_alloc (D.47620, 56);
  ins->data.op[1].const_val = 0;
  D.47668 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.47668;
  ins->prev = 0B;
  D.47669 = ins->prev;
  ins->next = D.47669;
  ins->opcode = 316;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.47670 = ins->sreg3;
  ins->sreg2 = D.47670;
  D.47671 = ins->sreg2;
  ins->sreg1 = D.47671;
  D.47672 = cfg->ip;
  ins->cil_code = D.47672;
  D.47673 = prev_cbb->last_ins;
  if (D.47673 != 0B) goto <D.47674>; else goto <D.47675>;
  <D.47674>:
  D.47673 = prev_cbb->last_ins;
  D.47673->next = ins;
  D.47673 = prev_cbb->last_ins;
  ins->prev = D.47673;
  prev_cbb->last_ins = ins;
  goto <D.47676>;
  <D.47675>:
  prev_cbb->last_ins = ins;
  D.47673 = prev_cbb->last_ins;
  prev_cbb->code = D.47673;
  <D.47676>:
  prev_cbb->next_bb = sbblock;
  link_bblock (cfg, prev_cbb, sbblock);
  mono_merge_basic_blocks (cfg, prev_cbb, sbblock);
  D.47677 = prev_cbb->out_count;
  if (D.47677 == 1) goto <D.47678>; else goto <D.47679>;
  <D.47678>:
  D.47680 = prev_cbb->out_bb;
  D.47681 = *D.47680;
  D.47682 = D.47681->in_count;
  if (D.47682 == 1) goto <D.47683>; else goto <D.47684>;
  <D.47683>:
  D.47680 = prev_cbb->out_bb;
  D.47681 = *D.47680;
  if (D.47681 != ebblock) goto <D.47685>; else goto <D.47686>;
  <D.47685>:
  D.47680 = prev_cbb->out_bb;
  D.47681 = *D.47680;
  mono_merge_basic_blocks (cfg, prev_cbb, D.47681);
  <D.47686>:
  <D.47684>:
  <D.47679>:
  D.47689 = ebblock->in_count;
  if (D.47689 == 1) goto <D.47690>; else goto <D.47687>;
  <D.47690>:
  D.47691 = ebblock->in_bb;
  D.47692 = *D.47691;
  D.47693 = D.47692->out_count;
  if (D.47693 == 1) goto <D.47694>; else goto <D.47687>;
  <D.47694>:
  {
    struct MonoBasicBlock * prev;

    D.47691 = ebblock->in_bb;
    prev = *D.47691;
    mono_merge_basic_blocks (cfg, prev, ebblock);
    cfg->cbb = prev;
    D.47677 = prev_cbb->out_count;
    if (D.47677 == 1) goto <D.47695>; else goto <D.47696>;
    <D.47695>:
    D.47680 = prev_cbb->out_bb;
    D.47681 = *D.47680;
    D.47682 = D.47681->in_count;
    if (D.47682 == 1) goto <D.47697>; else goto <D.47698>;
    <D.47697>:
    D.47680 = prev_cbb->out_bb;
    D.47681 = *D.47680;
    if (D.47681 == prev) goto <D.47699>; else goto <D.47700>;
    <D.47699>:
    mono_merge_basic_blocks (cfg, prev_cbb, prev);
    cfg->cbb = prev_cbb;
    <D.47700>:
    <D.47698>:
    <D.47696>:
  }
  goto <D.47688>;
  <D.47687>:
  if (rvar != 0B) goto <D.47701>; else goto <D.47702>;
  <D.47701>:
  {
    struct MonoBasicBlock * bb;

    i = 0;
    goto <D.26398>;
    <D.26397>:
    D.47691 = ebblock->in_bb;
    i.525 = (unsigned int) i;
    D.47627 = i.525 * 4;
    D.47703 = D.47691 + D.47627;
    bb = *D.47703;
    D.47704 = bb->last_ins;
    if (D.47704 != 0B) goto <D.47705>; else goto <D.47706>;
    <D.47705>:
    D.47704 = bb->last_ins;
    D.47707 = D.47704->opcode;
    if (D.47707 == 798) goto <D.47708>; else goto <D.47709>;
    <D.47708>:
    cfg->cbb = bb;
    D.47710 = rvar->dreg;
    D.47616 = fsig->ret;
    emit_init_rvar (cfg, D.47710, D.47616);
    <D.47709>:
    <D.47706>:
    i = i + 1;
    <D.26398>:
    D.47689 = ebblock->in_count;
    D.47711 = (int) D.47689;
    if (D.47711 > i) goto <D.26397>; else goto <D.26399>;
    <D.26399>:
  }
  <D.47702>:
  cfg->cbb = ebblock;
  <D.47688>:
  if (rvar != 0B) goto <D.47712>; else goto <D.47713>;
  <D.47712>:
  if (ret_var_set == 0) goto <D.47714>; else goto <D.47715>;
  <D.47714>:
  D.47710 = rvar->dreg;
  D.47616 = fsig->ret;
  emit_init_rvar (cfg, D.47710, D.47616);
  <D.47715>:
  D.47620 = cfg->mempool;
  ins = mono_mempool_alloc (D.47620, 56);
  ins->data.op[1].const_val = 0;
  D.47668 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.47668;
  ins->prev = 0B;
  D.47669 = ins->prev;
  ins->next = D.47669;
  ins->opcode = 424;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.47670 = ins->sreg3;
  ins->sreg2 = D.47670;
  D.47671 = ins->sreg2;
  ins->sreg1 = D.47671;
  D.47672 = cfg->ip;
  ins->cil_code = D.47672;
  D.47716 = cfg->varinfo;
  D.47717 = rvar->data.op[0].const_val;
  D.47718 = (unsigned int) D.47717;
  D.47719 = D.47718 * 4;
  D.47720 = D.47716 + D.47719;
  D.47721 = *D.47720;
  D.47722 = D.47721->data.op[1].vtype;
  D.47723 = mono_type_to_regmove (cfg, D.47722);
  D.47724 = (short unsigned int) D.47723;
  ins->opcode = D.47724;
  D.47716 = cfg->varinfo;
  D.47717 = rvar->data.op[0].const_val;
  D.47718 = (unsigned int) D.47717;
  D.47719 = D.47718 * 4;
  D.47720 = D.47716 + D.47719;
  D.47721 = *D.47720;
  D.47722 = D.47721->data.op[1].vtype;
  type_to_eval_stack_type (cfg, D.47722, ins);
  D.47716 = cfg->varinfo;
  D.47717 = rvar->data.op[0].const_val;
  D.47718 = (unsigned int) D.47717;
  D.47719 = D.47718 * 4;
  D.47720 = D.47716 + D.47719;
  D.47721 = *D.47720;
  D.47725 = D.47721->klass;
  ins->klass = D.47725;
  D.47716 = cfg->varinfo;
  D.47717 = rvar->data.op[0].const_val;
  D.47718 = (unsigned int) D.47717;
  D.47719 = D.47718 * 4;
  D.47720 = D.47716 + D.47719;
  D.47721 = *D.47720;
  D.47726 = D.47721->dreg;
  ins->sreg1 = D.47726;
  D.47727 = ins->type;
  D.47728 = (<unnamed type>) D.47727;
  D.47729 = alloc_dreg (cfg, D.47728);
  D.47730 = (int) D.47729;
  ins->dreg = D.47730;
  D.47731 = ins->opcode;
  if (D.47731 == 427) goto <D.47732>; else goto <D.47733>;
  <D.47732>:
  D.47716 = cfg->varinfo;
  D.47717 = rvar->data.op[0].const_val;
  D.47718 = (unsigned int) D.47717;
  D.47719 = D.47718 * 4;
  D.47720 = D.47716 + D.47719;
  D.47721 = *D.47720;
  D.47722 = D.47721->data.op[1].vtype;
  D.47734 = mono_class_from_mono_type (D.47722);
  ins->klass = D.47734;
  <D.47733>:
  D.47735 = cfg->cbb;
  D.47736 = D.47735->last_ins;
  if (D.47736 != 0B) goto <D.47737>; else goto <D.47738>;
  <D.47737>:
  D.47735 = cfg->cbb;
  D.47736 = D.47735->last_ins;
  D.47736->next = ins;
  D.47735 = cfg->cbb;
  D.47736 = D.47735->last_ins;
  ins->prev = D.47736;
  D.47735 = cfg->cbb;
  D.47735->last_ins = ins;
  goto <D.47739>;
  <D.47738>:
  D.47735 = cfg->cbb;
  D.47735 = cfg->cbb;
  D.47735->last_ins = ins;
  D.47736 = D.47735->last_ins;
  D.47735->code = D.47736;
  <D.47739>:
  sp.528 = sp;
  sp = sp.528 + 4;
  *sp.528 = ins;
  <D.47713>:
  D.47620 = cfg->mempool;
  D.47741 = cfg->headers_to_free;
  D.47742 = g_slist_prepend_mempool (D.47620, D.47741, cheader);
  cfg->headers_to_free = D.47742;
  D.47583 = costs + 1;
  return D.47583;
  <D.47659>:
  D.47590 = cfg->verbose_level;
  if (D.47590 > 2) goto <D.47743>; else goto <D.47744>;
  <D.47743>:
  D.47745 = mono_method_full_name (cmethod, 1);
  printf ("INLINE ABORTED %s (cost %d)\n", D.47745, costs);
  <D.47744>:
  cfg->exception_type = 0;
  mono_loader_clear_error ();
  cfg->cbb = prev_cbb;
  D.47620 = cfg->mempool;
  D.47741 = cfg->headers_to_free;
  D.47746 = g_slist_prepend_mempool (D.47620, D.47741, cheader);
  cfg->headers_to_free = D.47746;
  D.47583 = 0;
  return D.47583;
}


check_inline_called_method_name_limit (struct MonoMethod * called_method)
{
  const char * limit.529;
  char D.47754;
  unsigned int D.47757;
  gboolean D.47758;
  _Bool D.47759;
  int strncmp_result;
  static const char * limit = 0B;

  limit.529 = limit;
  if (limit.529 == 0B) goto <D.47749>; else goto <D.47750>;
  <D.47749>:
  {
    const char * limit_string;

    limit_string = monoeg_g_getenv ("MONO_INLINE_CALLED_METHOD_NAME_LIMIT");
    if (limit_string != 0B) goto <D.47751>; else goto <D.47752>;
    <D.47751>:
    limit = limit_string;
    goto <D.47753>;
    <D.47752>:
    limit = "";
    <D.47753>:
  }
  <D.47750>:
  limit.529 = limit;
  D.47754 = *limit.529;
  if (D.47754 != 0) goto <D.47755>; else goto <D.47756>;
  <D.47755>:
  {
    char * called_method_name;

    called_method_name = mono_method_full_name (called_method, 1);
    limit.529 = limit;
    limit.529 = limit;
    D.47757 = strlen (limit.529);
    strncmp_result = strncmp (called_method_name, limit.529, D.47757);
    monoeg_g_free (called_method_name);
    D.47759 = strncmp_result == 0;
    D.47758 = (gboolean) D.47759;
    return D.47758;
  }
  <D.47756>:
  D.47758 = 1;
  return D.47758;
}


check_inline_caller_method_name_limit (struct MonoMethod * caller_method)
{
  const char * limit.530;
  char D.47767;
  unsigned int D.47770;
  gboolean D.47771;
  _Bool D.47772;
  int strncmp_result;
  static const char * limit = 0B;

  limit.530 = limit;
  if (limit.530 == 0B) goto <D.47762>; else goto <D.47763>;
  <D.47762>:
  {
    const char * limit_string;

    limit_string = monoeg_g_getenv ("MONO_INLINE_CALLER_METHOD_NAME_LIMIT");
    if (limit_string != 0B) goto <D.47764>; else goto <D.47765>;
    <D.47764>:
    limit = limit_string;
    goto <D.47766>;
    <D.47765>:
    limit = "";
    <D.47766>:
  }
  <D.47763>:
  limit.530 = limit;
  D.47767 = *limit.530;
  if (D.47767 != 0) goto <D.47768>; else goto <D.47769>;
  <D.47768>:
  {
    char * caller_method_name;

    caller_method_name = mono_method_full_name (caller_method, 1);
    limit.530 = limit;
    limit.530 = limit;
    D.47770 = strlen (limit.530);
    strncmp_result = strncmp (caller_method_name, limit.530, D.47770);
    monoeg_g_free (caller_method_name);
    D.47772 = strncmp_result == 0;
    D.47771 = (gboolean) D.47772;
    return D.47771;
  }
  <D.47769>:
  D.47771 = 1;
  return D.47771;
}


is_magic_tls_access (struct MonoClassField * field)
{
  int D.26646;
  int iftmp.531;
  int D.26645;
  const char[8] * D.47777;
  unsigned char D.47778;
  int D.47779;
  unsigned char D.47780;
  int D.47781;
  const unsigned char * D.47786;
  unsigned char D.47787;
  int D.47788;
  const unsigned char * D.47789;
  unsigned char D.47790;
  int D.47791;
  const unsigned char * D.47796;
  unsigned char D.47797;
  int D.47798;
  const unsigned char * D.47799;
  unsigned char D.47800;
  int D.47801;
  const unsigned char * D.47806;
  unsigned char D.47807;
  int D.47808;
  const unsigned char * D.47809;
  unsigned char D.47810;
  int D.47811;
  const char * D.47813;
  gboolean D.47816;
  int D.26655;
  int iftmp.532;
  int D.26654;
  struct MonoClass * D.47820;
  const char[14] * D.47821;
  unsigned char D.47822;
  int D.47823;
  unsigned char D.47824;
  int D.47825;
  const unsigned char * D.47830;
  unsigned char D.47831;
  int D.47832;
  const unsigned char * D.47833;
  unsigned char D.47834;
  int D.47835;
  const unsigned char * D.47840;
  unsigned char D.47841;
  int D.47842;
  const unsigned char * D.47843;
  unsigned char D.47844;
  int D.47845;
  const unsigned char * D.47850;
  unsigned char D.47851;
  int D.47852;
  const unsigned char * D.47853;
  unsigned char D.47854;
  int D.47855;
  const char * D.47857;
  struct MonoImage * D.47860;
  struct MonoImage * D.47861;
  _Bool D.47862;

  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = field->name;
      D.47777 = "tlsdata";
      D.47778 = MEM[(const unsigned char *)D.47777];
      D.47779 = (int) D.47778;
      D.47780 = *__s2;
      D.47781 = (int) D.47780;
      __result = D.47779 - D.47781;
      {
        if (__s2_len != 0) goto <D.47782>; else goto <D.47783>;
        <D.47782>:
        if (__result == 0) goto <D.47784>; else goto <D.47785>;
        <D.47784>:
        D.47786 = &MEM[(void *)"tlsdata" + 1B];
        D.47787 = *D.47786;
        D.47788 = (int) D.47787;
        D.47789 = __s2 + 1;
        D.47790 = *D.47789;
        D.47791 = (int) D.47790;
        __result = D.47788 - D.47791;
        if (__s2_len > 1) goto <D.47792>; else goto <D.47793>;
        <D.47792>:
        if (__result == 0) goto <D.47794>; else goto <D.47795>;
        <D.47794>:
        D.47796 = &MEM[(void *)"tlsdata" + 2B];
        D.47797 = *D.47796;
        D.47798 = (int) D.47797;
        D.47799 = __s2 + 2;
        D.47800 = *D.47799;
        D.47801 = (int) D.47800;
        __result = D.47798 - D.47801;
        if (__s2_len > 2) goto <D.47802>; else goto <D.47803>;
        <D.47802>:
        if (__result == 0) goto <D.47804>; else goto <D.47805>;
        <D.47804>:
        D.47806 = &MEM[(void *)"tlsdata" + 3B];
        D.47807 = *D.47806;
        D.47808 = (int) D.47807;
        D.47809 = __s2 + 3;
        D.47810 = *D.47809;
        D.47811 = (int) D.47810;
        __result = D.47808 - D.47811;
        <D.47805>:
        <D.47803>:
        <D.47795>:
        <D.47793>:
        <D.47785>:
        <D.47783>:
      }
      D.26645 = __result;
    }
    iftmp.531 = -D.26645;
    goto <D.47812>;
    <D.47776>:
    D.47813 = field->name;
    iftmp.531 = __builtin_strcmp (D.47813, "tlsdata");
    <D.47812>:
    D.26646 = iftmp.531;
  }
  if (D.26646 != 0) goto <D.47814>; else goto <D.47815>;
  <D.47814>:
  D.47816 = 0;
  return D.47816;
  <D.47815>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.47820 = field->parent;
      __s2 = D.47820->name;
      D.47821 = "ThreadLocal`1";
      D.47822 = MEM[(const unsigned char *)D.47821];
      D.47823 = (int) D.47822;
      D.47824 = *__s2;
      D.47825 = (int) D.47824;
      __result = D.47823 - D.47825;
      {
        if (__s2_len != 0) goto <D.47826>; else goto <D.47827>;
        <D.47826>:
        if (__result == 0) goto <D.47828>; else goto <D.47829>;
        <D.47828>:
        D.47830 = &MEM[(void *)"ThreadLocal`1" + 1B];
        D.47831 = *D.47830;
        D.47832 = (int) D.47831;
        D.47833 = __s2 + 1;
        D.47834 = *D.47833;
        D.47835 = (int) D.47834;
        __result = D.47832 - D.47835;
        if (__s2_len > 1) goto <D.47836>; else goto <D.47837>;
        <D.47836>:
        if (__result == 0) goto <D.47838>; else goto <D.47839>;
        <D.47838>:
        D.47840 = &MEM[(void *)"ThreadLocal`1" + 2B];
        D.47841 = *D.47840;
        D.47842 = (int) D.47841;
        D.47843 = __s2 + 2;
        D.47844 = *D.47843;
        D.47845 = (int) D.47844;
        __result = D.47842 - D.47845;
        if (__s2_len > 2) goto <D.47846>; else goto <D.47847>;
        <D.47846>:
        if (__result == 0) goto <D.47848>; else goto <D.47849>;
        <D.47848>:
        D.47850 = &MEM[(void *)"ThreadLocal`1" + 3B];
        D.47851 = *D.47850;
        D.47852 = (int) D.47851;
        D.47853 = __s2 + 3;
        D.47854 = *D.47853;
        D.47855 = (int) D.47854;
        __result = D.47852 - D.47855;
        <D.47849>:
        <D.47847>:
        <D.47839>:
        <D.47837>:
        <D.47829>:
        <D.47827>:
      }
      D.26654 = __result;
    }
    iftmp.532 = -D.26654;
    goto <D.47856>;
    <D.47819>:
    D.47820 = field->parent;
    D.47857 = D.47820->name;
    iftmp.532 = __builtin_strcmp (D.47857, "ThreadLocal`1");
    <D.47856>:
    D.26655 = iftmp.532;
  }
  if (D.26655 != 0) goto <D.47858>; else goto <D.47859>;
  <D.47858>:
  D.47816 = 0;
  return D.47816;
  <D.47859>:
  D.47820 = field->parent;
  D.47860 = D.47820->image;
  D.47861 = mono_defaults.corlib;
  D.47862 = D.47860 == D.47861;
  D.47816 = (gboolean) D.47862;
  return D.47816;
}


create_magic_tls_access (struct MonoCompile * cfg, struct MonoClassField * tls_field, struct MonoInst * * cached_tls_addr, struct MonoInst * thread_local)
{
  struct MonoInst * D.47864;
  struct MonoMemPool * D.47867;
  int D.47868;
  struct MonoInst * D.47869;
  int D.47870;
  int D.47871;
  const unsigned char * D.47872;
  struct MonoInst * * D.47873;
  int D.47874;
  unsigned int D.47875;
  unsigned int D.47876;
  struct MonoInst * * D.47877;
  struct MonoInst * D.47878;
  struct MonoType * D.47879;
  unsigned int D.47880;
  short unsigned int D.47881;
  struct MonoClass * D.47882;
  int D.47883;
  unsigned char D.47884;
  <unnamed type> D.47885;
  unsigned int D.47886;
  int D.47887;
  short unsigned int D.47888;
  struct MonoClass * D.47891;
  struct MonoBasicBlock * D.47892;
  struct MonoInst * D.47893;
  struct MonoInst * D.47897;
  struct MonoClass * D.47898;
  int D.47899;
  struct MonoInst * D.47900;
  struct MonoType * D.47901;
  unsigned int D.47902;
  short unsigned int D.47903;
  int D.47904;
  int D.47905;
  int D.47906;
  int D.47907;
  unsigned char D.47908;
  <unnamed type> D.47909;
  unsigned int D.47910;
  int D.47911;
  struct MonoClass * D.47921;
  int D.47922;
  struct MonoType * D.47923;
  struct MonoClass * D.47924;
  struct MonoType * D.47925;
  int D.47926;
  struct MonoInst * D.47927;
  int D.47928;
  int D.47929;
  int D.47930;
  unsigned int D.47931;
  unsigned int D.47932;
  struct MonoInst * * D.47933;
  struct MonoInst * D.47934;
  struct MonoType * D.47935;
  unsigned int D.47936;
  short unsigned int D.47937;
  struct MonoClass * D.47938;
  int D.47939;
  int D.47940;
  short unsigned int D.47941;
  struct MonoClass * D.47944;
  unsigned int D.47948;
  short unsigned int D.47949;
  unsigned int D.47950;
  int D.47951;
  struct MonoClass * D.47954;
  struct MonoInst * load;
  struct MonoInst * addr;
  struct MonoInst * temp;
  struct MonoInst * store;
  struct MonoInst * thread_ins;
  struct MonoClassField * offset_field;

  D.47864 = *cached_tls_addr;
  if (D.47864 != 0B) goto <D.47865>; else goto <D.47866>;
  <D.47865>:
  D.47867 = cfg->mempool;
  addr = mono_mempool_alloc (D.47867, 56);
  addr->data.op[1].const_val = 0;
  D.47868 = addr->data.op[1].const_val;
  addr->data.op[0].const_val = D.47868;
  addr->prev = 0B;
  D.47869 = addr->prev;
  addr->next = D.47869;
  addr->opcode = 424;
  addr->flags = 0;
  addr->type = 0;
  addr->dreg = -1;
  addr->sreg3 = -1;
  D.47870 = addr->sreg3;
  addr->sreg2 = D.47870;
  D.47871 = addr->sreg2;
  addr->sreg1 = D.47871;
  D.47872 = cfg->ip;
  addr->cil_code = D.47872;
  D.47873 = cfg->varinfo;
  D.47864 = *cached_tls_addr;
  D.47874 = D.47864->data.op[0].const_val;
  D.47875 = (unsigned int) D.47874;
  D.47876 = D.47875 * 4;
  D.47877 = D.47873 + D.47876;
  D.47878 = *D.47877;
  D.47879 = D.47878->data.op[1].vtype;
  D.47880 = mono_type_to_regmove (cfg, D.47879);
  D.47881 = (short unsigned int) D.47880;
  addr->opcode = D.47881;
  D.47873 = cfg->varinfo;
  D.47864 = *cached_tls_addr;
  D.47874 = D.47864->data.op[0].const_val;
  D.47875 = (unsigned int) D.47874;
  D.47876 = D.47875 * 4;
  D.47877 = D.47873 + D.47876;
  D.47878 = *D.47877;
  D.47879 = D.47878->data.op[1].vtype;
  type_to_eval_stack_type (cfg, D.47879, addr);
  D.47873 = cfg->varinfo;
  D.47864 = *cached_tls_addr;
  D.47874 = D.47864->data.op[0].const_val;
  D.47875 = (unsigned int) D.47874;
  D.47876 = D.47875 * 4;
  D.47877 = D.47873 + D.47876;
  D.47878 = *D.47877;
  D.47882 = D.47878->klass;
  addr->klass = D.47882;
  D.47873 = cfg->varinfo;
  D.47864 = *cached_tls_addr;
  D.47874 = D.47864->data.op[0].const_val;
  D.47875 = (unsigned int) D.47874;
  D.47876 = D.47875 * 4;
  D.47877 = D.47873 + D.47876;
  D.47878 = *D.47877;
  D.47883 = D.47878->dreg;
  addr->sreg1 = D.47883;
  D.47884 = addr->type;
  D.47885 = (<unnamed type>) D.47884;
  D.47886 = alloc_dreg (cfg, D.47885);
  D.47887 = (int) D.47886;
  addr->dreg = D.47887;
  D.47888 = addr->opcode;
  if (D.47888 == 427) goto <D.47889>; else goto <D.47890>;
  <D.47889>:
  D.47873 = cfg->varinfo;
  D.47864 = *cached_tls_addr;
  D.47874 = D.47864->data.op[0].const_val;
  D.47875 = (unsigned int) D.47874;
  D.47876 = D.47875 * 4;
  D.47877 = D.47873 + D.47876;
  D.47878 = *D.47877;
  D.47879 = D.47878->data.op[1].vtype;
  D.47891 = mono_class_from_mono_type (D.47879);
  addr->klass = D.47891;
  <D.47890>:
  D.47892 = cfg->cbb;
  D.47893 = D.47892->last_ins;
  if (D.47893 != 0B) goto <D.47894>; else goto <D.47895>;
  <D.47894>:
  D.47892 = cfg->cbb;
  D.47893 = D.47892->last_ins;
  D.47893->next = addr;
  D.47892 = cfg->cbb;
  D.47893 = D.47892->last_ins;
  addr->prev = D.47893;
  D.47892 = cfg->cbb;
  D.47892->last_ins = addr;
  goto <D.47896>;
  <D.47895>:
  D.47892 = cfg->cbb;
  D.47892 = cfg->cbb;
  D.47892->last_ins = addr;
  D.47893 = D.47892->last_ins;
  D.47892->code = D.47893;
  <D.47896>:
  D.47897 = addr;
  return D.47897;
  <D.47866>:
  thread_ins = mono_get_thread_intrinsic (cfg);
  D.47898 = tls_field->parent;
  offset_field = mono_class_get_field_from_name (D.47898, "tls_offset");
  D.47867 = cfg->mempool;
  load = mono_mempool_alloc (D.47867, 56);
  load->data.op[1].const_val = 0;
  D.47899 = load->data.op[1].const_val;
  load->data.op[0].const_val = D.47899;
  load->prev = 0B;
  D.47900 = load->prev;
  load->next = D.47900;
  D.47901 = offset_field->type;
  D.47902 = mono_type_to_load_membase (cfg, D.47901);
  D.47903 = (short unsigned int) D.47902;
  load->opcode = D.47903;
  load->flags = 0;
  load->type = 0;
  load->dreg = -1;
  load->sreg3 = -1;
  D.47904 = load->sreg3;
  load->sreg2 = D.47904;
  D.47905 = load->sreg2;
  load->sreg1 = D.47905;
  D.47872 = cfg->ip;
  load->cil_code = D.47872;
  load->dreg = 0;
  D.47906 = thread_local->dreg;
  load->sreg1 = D.47906;
  D.47907 = offset_field->offset;
  load->data.op[0].const_val = D.47907;
  load->type = 1;
  D.47901 = offset_field->type;
  type_to_eval_stack_type (cfg, D.47901, load);
  D.47908 = load->type;
  D.47909 = (<unnamed type>) D.47908;
  D.47910 = alloc_dreg (cfg, D.47909);
  D.47911 = (int) D.47910;
  load->dreg = D.47911;
  D.47892 = cfg->cbb;
  D.47893 = D.47892->last_ins;
  if (D.47893 != 0B) goto <D.47912>; else goto <D.47913>;
  <D.47912>:
  D.47892 = cfg->cbb;
  D.47893 = D.47892->last_ins;
  D.47893->next = load;
  D.47892 = cfg->cbb;
  D.47893 = D.47892->last_ins;
  load->prev = D.47893;
  D.47892 = cfg->cbb;
  D.47892->last_ins = load;
  goto <D.47914>;
  <D.47913>:
  D.47892 = cfg->cbb;
  D.47892 = cfg->cbb;
  D.47892->last_ins = load;
  D.47893 = D.47892->last_ins;
  D.47892->code = D.47893;
  <D.47914>:
  if (thread_ins != 0B) goto <D.47915>; else goto <D.47916>;
  <D.47915>:
  D.47892 = cfg->cbb;
  D.47893 = D.47892->last_ins;
  if (D.47893 != 0B) goto <D.47917>; else goto <D.47918>;
  <D.47917>:
  D.47892 = cfg->cbb;
  D.47893 = D.47892->last_ins;
  D.47893->next = thread_ins;
  D.47892 = cfg->cbb;
  D.47893 = D.47892->last_ins;
  thread_ins->prev = D.47893;
  D.47892 = cfg->cbb;
  D.47892->last_ins = thread_ins;
  goto <D.47919>;
  <D.47918>:
  D.47892 = cfg->cbb;
  D.47892 = cfg->cbb;
  D.47892->last_ins = thread_ins;
  D.47893 = D.47892->last_ins;
  D.47892->code = D.47893;
  <D.47919>:
  goto <D.47920>;
  <D.47916>:
  {
    struct MonoMethod * thread_method;

    D.47921 = mono_get_thread_class ();
    thread_method = mono_class_get_method_from_name (D.47921, "CurrentInternalThread_internal", 0);
    thread_ins = mono_emit_method_call (cfg, thread_method, 0B, 0B);
  }
  <D.47920>:
  D.47922 = load->dreg;
  addr = emit_managed_static_data_access (cfg, thread_ins, D.47922);
  D.47923 = tls_field->type;
  D.47924 = mono_class_from_mono_type (D.47923);
  addr->klass = D.47924;
  addr->type = 5;
  D.47925 = type_from_stack_type (addr);
  temp = mono_compile_create_var (cfg, D.47925, 329);
  *cached_tls_addr = temp;
  D.47867 = cfg->mempool;
  store = mono_mempool_alloc (D.47867, 56);
  store->data.op[1].const_val = 0;
  D.47926 = store->data.op[1].const_val;
  store->data.op[0].const_val = D.47926;
  store->prev = 0B;
  D.47927 = store->prev;
  store->next = D.47927;
  store->opcode = 424;
  store->flags = 0;
  store->type = 0;
  store->dreg = -1;
  store->sreg3 = -1;
  D.47928 = store->sreg3;
  store->sreg2 = D.47928;
  D.47929 = store->sreg2;
  store->sreg1 = D.47929;
  D.47872 = cfg->ip;
  store->cil_code = D.47872;
  D.47873 = cfg->varinfo;
  D.47930 = temp->data.op[0].const_val;
  D.47931 = (unsigned int) D.47930;
  D.47932 = D.47931 * 4;
  D.47933 = D.47873 + D.47932;
  D.47934 = *D.47933;
  D.47935 = D.47934->data.op[1].vtype;
  D.47936 = mono_type_to_regmove (cfg, D.47935);
  D.47937 = (short unsigned int) D.47936;
  store->opcode = D.47937;
  D.47873 = cfg->varinfo;
  D.47930 = temp->data.op[0].const_val;
  D.47931 = (unsigned int) D.47930;
  D.47932 = D.47931 * 4;
  D.47933 = D.47873 + D.47932;
  D.47934 = *D.47933;
  D.47938 = D.47934->klass;
  store->klass = D.47938;
  D.47939 = addr->dreg;
  store->sreg1 = D.47939;
  D.47873 = cfg->varinfo;
  D.47930 = temp->data.op[0].const_val;
  D.47931 = (unsigned int) D.47930;
  D.47932 = D.47931 * 4;
  D.47933 = D.47873 + D.47932;
  D.47934 = *D.47933;
  D.47940 = D.47934->dreg;
  store->dreg = D.47940;
  D.47941 = store->opcode;
  if (D.47941 == 427) goto <D.47942>; else goto <D.47943>;
  <D.47942>:
  D.47873 = cfg->varinfo;
  D.47930 = temp->data.op[0].const_val;
  D.47931 = (unsigned int) D.47930;
  D.47932 = D.47931 * 4;
  D.47933 = D.47873 + D.47932;
  D.47934 = *D.47933;
  D.47935 = D.47934->data.op[1].vtype;
  D.47944 = mono_class_from_mono_type (D.47935);
  store->klass = D.47944;
  <D.47943>:
  D.47892 = cfg->cbb;
  D.47893 = D.47892->last_ins;
  if (D.47893 != 0B) goto <D.47945>; else goto <D.47946>;
  <D.47945>:
  D.47892 = cfg->cbb;
  D.47893 = D.47892->last_ins;
  D.47893->next = store;
  D.47892 = cfg->cbb;
  D.47893 = D.47892->last_ins;
  store->prev = D.47893;
  D.47892 = cfg->cbb;
  D.47892->last_ins = store;
  goto <D.47947>;
  <D.47946>:
  D.47892 = cfg->cbb;
  D.47892 = cfg->cbb;
  D.47892->last_ins = store;
  D.47893 = D.47892->last_ins;
  D.47892->code = D.47893;
  <D.47947>:
  D.47867 = cfg->mempool;
  addr = mono_mempool_alloc (D.47867, 56);
  addr->data.op[1].const_val = 0;
  D.47868 = addr->data.op[1].const_val;
  addr->data.op[0].const_val = D.47868;
  addr->prev = 0B;
  D.47869 = addr->prev;
  addr->next = D.47869;
  addr->opcode = 424;
  addr->flags = 0;
  addr->type = 0;
  addr->dreg = -1;
  addr->sreg3 = -1;
  D.47870 = addr->sreg3;
  addr->sreg2 = D.47870;
  D.47871 = addr->sreg2;
  addr->sreg1 = D.47871;
  D.47872 = cfg->ip;
  addr->cil_code = D.47872;
  D.47873 = cfg->varinfo;
  D.47930 = temp->data.op[0].const_val;
  D.47931 = (unsigned int) D.47930;
  D.47932 = D.47931 * 4;
  D.47933 = D.47873 + D.47932;
  D.47934 = *D.47933;
  D.47935 = D.47934->data.op[1].vtype;
  D.47948 = mono_type_to_regmove (cfg, D.47935);
  D.47949 = (short unsigned int) D.47948;
  addr->opcode = D.47949;
  D.47873 = cfg->varinfo;
  D.47930 = temp->data.op[0].const_val;
  D.47931 = (unsigned int) D.47930;
  D.47932 = D.47931 * 4;
  D.47933 = D.47873 + D.47932;
  D.47934 = *D.47933;
  D.47935 = D.47934->data.op[1].vtype;
  type_to_eval_stack_type (cfg, D.47935, addr);
  D.47873 = cfg->varinfo;
  D.47930 = temp->data.op[0].const_val;
  D.47931 = (unsigned int) D.47930;
  D.47932 = D.47931 * 4;
  D.47933 = D.47873 + D.47932;
  D.47934 = *D.47933;
  D.47938 = D.47934->klass;
  addr->klass = D.47938;
  D.47873 = cfg->varinfo;
  D.47930 = temp->data.op[0].const_val;
  D.47931 = (unsigned int) D.47930;
  D.47932 = D.47931 * 4;
  D.47933 = D.47873 + D.47932;
  D.47934 = *D.47933;
  D.47940 = D.47934->dreg;
  addr->sreg1 = D.47940;
  D.47884 = addr->type;
  D.47885 = (<unnamed type>) D.47884;
  D.47950 = alloc_dreg (cfg, D.47885);
  D.47951 = (int) D.47950;
  addr->dreg = D.47951;
  D.47888 = addr->opcode;
  if (D.47888 == 427) goto <D.47952>; else goto <D.47953>;
  <D.47952>:
  D.47873 = cfg->varinfo;
  D.47930 = temp->data.op[0].const_val;
  D.47931 = (unsigned int) D.47930;
  D.47932 = D.47931 * 4;
  D.47933 = D.47873 + D.47932;
  D.47934 = *D.47933;
  D.47935 = D.47934->data.op[1].vtype;
  D.47954 = mono_class_from_mono_type (D.47935);
  addr->klass = D.47954;
  <D.47953>:
  D.47892 = cfg->cbb;
  D.47893 = D.47892->last_ins;
  if (D.47893 != 0B) goto <D.47955>; else goto <D.47956>;
  <D.47955>:
  D.47892 = cfg->cbb;
  D.47893 = D.47892->last_ins;
  D.47893->next = addr;
  D.47892 = cfg->cbb;
  D.47893 = D.47892->last_ins;
  addr->prev = D.47893;
  D.47892 = cfg->cbb;
  D.47892->last_ins = addr;
  goto <D.47957>;
  <D.47956>:
  D.47892 = cfg->cbb;
  D.47892 = cfg->cbb;
  D.47892->last_ins = addr;
  D.47893 = D.47892->last_ins;
  D.47892->code = D.47893;
  <D.47957>:
  D.47897 = addr;
  return D.47897;
}


emit_managed_static_data_access (struct MonoCompile * cfg, struct MonoInst * thread_ins, int offset_reg)
{
  unsigned int D.47959;
  struct MonoMemPool * D.47960;
  int D.47961;
  struct MonoInst * D.47962;
  int D.47963;
  int D.47964;
  const unsigned char * D.47965;
  int D.47966;
  struct MonoBasicBlock * D.47967;
  struct MonoInst * D.47968;
  unsigned int D.47972;
  int D.47973;
  struct MonoInst * D.47974;
  int D.47975;
  int D.47976;
  int D.47980;
  struct MonoInst * D.47981;
  int D.47982;
  int D.47983;
  int D.47987;
  struct MonoInst * D.47988;
  int D.47989;
  int D.47990;
  int D.47994;
  struct MonoInst * D.47995;
  int D.47996;
  int D.47997;
  unsigned int D.48001;
  int D.48002;
  struct MonoInst * D.48003;
  int D.48004;
  int D.48005;
  unsigned int D.48009;
  int D.48010;
  struct MonoInst * D.48011;
  int D.48012;
  int D.48013;
  unsigned int D.48017;
  int D.48018;
  struct MonoInst * D.48019;
  int D.48020;
  int D.48021;
  struct MonoInst * D.48025;
  struct MonoInst * addr;
  int static_data_reg;
  int array_reg;
  int dreg;
  int offset2_reg;
  int idx_reg;

  D.47959 = alloc_ireg (cfg);
  static_data_reg = (int) D.47959;
  {
    struct MonoInst * inst;

    D.47960 = cfg->mempool;
    inst = mono_mempool_alloc (D.47960, 56);
    inst->data.op[1].const_val = 0;
    D.47961 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47961;
    inst->prev = 0B;
    D.47962 = inst->prev;
    inst->next = D.47962;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47963 = inst->sreg3;
    inst->sreg2 = D.47963;
    D.47964 = inst->sreg2;
    inst->sreg1 = D.47964;
    D.47965 = cfg->ip;
    inst->cil_code = D.47965;
    inst->dreg = static_data_reg;
    D.47966 = thread_ins->dreg;
    inst->sreg1 = D.47966;
    inst->data.op[0].const_val = 56;
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    if (D.47968 != 0B) goto <D.47969>; else goto <D.47970>;
    <D.47969>:
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    D.47968->next = inst;
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    inst->prev = D.47968;
    D.47967 = cfg->cbb;
    D.47967->last_ins = inst;
    goto <D.47971>;
    <D.47970>:
    D.47967 = cfg->cbb;
    D.47967 = cfg->cbb;
    D.47967->last_ins = inst;
    D.47968 = D.47967->last_ins;
    D.47967->code = D.47968;
    <D.47971>:
  }
  D.47972 = alloc_ireg (cfg);
  idx_reg = (int) D.47972;
  {
    struct MonoInst * inst;

    D.47960 = cfg->mempool;
    inst = mono_mempool_alloc (D.47960, 56);
    inst->data.op[1].const_val = 0;
    D.47973 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47973;
    inst->prev = 0B;
    D.47974 = inst->prev;
    inst->next = D.47974;
    inst->opcode = 636;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47975 = inst->sreg3;
    inst->sreg2 = D.47975;
    D.47976 = inst->sreg2;
    inst->sreg1 = D.47976;
    D.47965 = cfg->ip;
    inst->cil_code = D.47965;
    inst->dreg = idx_reg;
    inst->sreg1 = offset_reg;
    inst->data.op[1].const_val = 24;
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    if (D.47968 != 0B) goto <D.47977>; else goto <D.47978>;
    <D.47977>:
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    D.47968->next = inst;
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    inst->prev = D.47968;
    D.47967 = cfg->cbb;
    D.47967->last_ins = inst;
    goto <D.47979>;
    <D.47978>:
    D.47967 = cfg->cbb;
    D.47967 = cfg->cbb;
    D.47967->last_ins = inst;
    D.47968 = D.47967->last_ins;
    D.47967->code = D.47968;
    <D.47979>:
  }
  {
    struct MonoInst * inst;

    D.47960 = cfg->mempool;
    inst = mono_mempool_alloc (D.47960, 56);
    inst->data.op[1].const_val = 0;
    D.47980 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47980;
    inst->prev = 0B;
    D.47981 = inst->prev;
    inst->next = D.47981;
    inst->opcode = 626;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47982 = inst->sreg3;
    inst->sreg2 = D.47982;
    D.47983 = inst->sreg2;
    inst->sreg1 = D.47983;
    D.47965 = cfg->ip;
    inst->cil_code = D.47965;
    inst->dreg = idx_reg;
    inst->sreg1 = idx_reg;
    inst->data.op[1].const_val = 1;
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    if (D.47968 != 0B) goto <D.47984>; else goto <D.47985>;
    <D.47984>:
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    D.47968->next = inst;
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    inst->prev = D.47968;
    D.47967 = cfg->cbb;
    D.47967->last_ins = inst;
    goto <D.47986>;
    <D.47985>:
    D.47967 = cfg->cbb;
    D.47967 = cfg->cbb;
    D.47967->last_ins = inst;
    D.47968 = D.47967->last_ins;
    D.47967->code = D.47968;
    <D.47986>:
  }
  {
    struct MonoInst * inst;

    D.47960 = cfg->mempool;
    inst = mono_mempool_alloc (D.47960, 56);
    inst->data.op[1].const_val = 0;
    D.47987 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47987;
    inst->prev = 0B;
    D.47988 = inst->prev;
    inst->next = D.47988;
    inst->opcode = 635;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47989 = inst->sreg3;
    inst->sreg2 = D.47989;
    D.47990 = inst->sreg2;
    inst->sreg1 = D.47990;
    D.47965 = cfg->ip;
    inst->cil_code = D.47965;
    inst->dreg = idx_reg;
    inst->sreg1 = idx_reg;
    inst->data.op[1].const_val = 2;
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    if (D.47968 != 0B) goto <D.47991>; else goto <D.47992>;
    <D.47991>:
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    D.47968->next = inst;
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    inst->prev = D.47968;
    D.47967 = cfg->cbb;
    D.47967->last_ins = inst;
    goto <D.47993>;
    <D.47992>:
    D.47967 = cfg->cbb;
    D.47967 = cfg->cbb;
    D.47967->last_ins = inst;
    D.47968 = D.47967->last_ins;
    D.47967->code = D.47968;
    <D.47993>:
  }
  {
    struct MonoInst * inst;

    D.47960 = cfg->mempool;
    inst = mono_mempool_alloc (D.47960, 56);
    inst->data.op[1].const_val = 0;
    D.47994 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47994;
    inst->prev = 0B;
    D.47995 = inst->prev;
    inst->next = D.47995;
    inst->opcode = 565;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47996 = inst->sreg3;
    inst->sreg2 = D.47996;
    D.47997 = inst->sreg2;
    inst->sreg1 = D.47997;
    D.47965 = cfg->ip;
    inst->cil_code = D.47965;
    inst->dreg = static_data_reg;
    inst->sreg1 = static_data_reg;
    inst->sreg2 = idx_reg;
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    if (D.47968 != 0B) goto <D.47998>; else goto <D.47999>;
    <D.47998>:
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    D.47968->next = inst;
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    inst->prev = D.47968;
    D.47967 = cfg->cbb;
    D.47967->last_ins = inst;
    goto <D.48000>;
    <D.47999>:
    D.47967 = cfg->cbb;
    D.47967 = cfg->cbb;
    D.47967->last_ins = inst;
    D.47968 = D.47967->last_ins;
    D.47967->code = D.47968;
    <D.48000>:
  }
  D.48001 = alloc_ireg (cfg);
  array_reg = (int) D.48001;
  {
    struct MonoInst * inst;

    D.47960 = cfg->mempool;
    inst = mono_mempool_alloc (D.47960, 56);
    inst->data.op[1].const_val = 0;
    D.48002 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48002;
    inst->prev = 0B;
    D.48003 = inst->prev;
    inst->next = D.48003;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48004 = inst->sreg3;
    inst->sreg2 = D.48004;
    D.48005 = inst->sreg2;
    inst->sreg1 = D.48005;
    D.47965 = cfg->ip;
    inst->cil_code = D.47965;
    inst->dreg = array_reg;
    inst->sreg1 = static_data_reg;
    inst->data.op[0].const_val = 0;
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    if (D.47968 != 0B) goto <D.48006>; else goto <D.48007>;
    <D.48006>:
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    D.47968->next = inst;
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    inst->prev = D.47968;
    D.47967 = cfg->cbb;
    D.47967->last_ins = inst;
    goto <D.48008>;
    <D.48007>:
    D.47967 = cfg->cbb;
    D.47967 = cfg->cbb;
    D.47967->last_ins = inst;
    D.47968 = D.47967->last_ins;
    D.47967->code = D.47968;
    <D.48008>:
  }
  D.48009 = alloc_ireg (cfg);
  offset2_reg = (int) D.48009;
  {
    struct MonoInst * inst;

    D.47960 = cfg->mempool;
    inst = mono_mempool_alloc (D.47960, 56);
    inst->data.op[1].const_val = 0;
    D.48010 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48010;
    inst->prev = 0B;
    D.48011 = inst->prev;
    inst->next = D.48011;
    inst->opcode = 632;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48012 = inst->sreg3;
    inst->sreg2 = D.48012;
    D.48013 = inst->sreg2;
    inst->sreg1 = D.48013;
    D.47965 = cfg->ip;
    inst->cil_code = D.47965;
    inst->dreg = offset2_reg;
    inst->sreg1 = offset_reg;
    inst->data.op[1].const_val = 16777215;
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    if (D.47968 != 0B) goto <D.48014>; else goto <D.48015>;
    <D.48014>:
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    D.47968->next = inst;
    D.47967 = cfg->cbb;
    D.47968 = D.47967->last_ins;
    inst->prev = D.47968;
    D.47967 = cfg->cbb;
    D.47967->last_ins = inst;
    goto <D.48016>;
    <D.48015>:
    D.47967 = cfg->cbb;
    D.47967 = cfg->cbb;
    D.47967->last_ins = inst;
    D.47968 = D.47967->last_ins;
    D.47967->code = D.47968;
    <D.48016>:
  }
  D.48017 = alloc_ireg (cfg);
  dreg = (int) D.48017;
  D.47960 = cfg->mempool;
  addr = mono_mempool_alloc (D.47960, 56);
  addr->data.op[1].const_val = 0;
  D.48018 = addr->data.op[1].const_val;
  addr->data.op[0].const_val = D.48018;
  addr->prev = 0B;
  D.48019 = addr->prev;
  addr->next = D.48019;
  addr->opcode = 565;
  addr->flags = 0;
  addr->type = 0;
  addr->dreg = -1;
  addr->sreg3 = -1;
  D.48020 = addr->sreg3;
  addr->sreg2 = D.48020;
  D.48021 = addr->sreg2;
  addr->sreg1 = D.48021;
  D.47965 = cfg->ip;
  addr->cil_code = D.47965;
  addr->dreg = dreg;
  addr->sreg1 = array_reg;
  addr->sreg2 = offset2_reg;
  D.47967 = cfg->cbb;
  D.47968 = D.47967->last_ins;
  if (D.47968 != 0B) goto <D.48022>; else goto <D.48023>;
  <D.48022>:
  D.47967 = cfg->cbb;
  D.47968 = D.47967->last_ins;
  D.47968->next = addr;
  D.47967 = cfg->cbb;
  D.47968 = D.47967->last_ins;
  addr->prev = D.47968;
  D.47967 = cfg->cbb;
  D.47967->last_ins = addr;
  goto <D.48024>;
  <D.48023>:
  D.47967 = cfg->cbb;
  D.47967 = cfg->cbb;
  D.47967->last_ins = addr;
  D.47968 = D.47967->last_ins;
  D.47967->code = D.47968;
  <D.48024>:
  D.48025 = addr;
  return D.48025;
}


emit_generic_class_init (struct MonoCompile * cfg, struct MonoClass * klass)
{
  struct MonoInst * vtable_arg.533;
  struct MonoDomain * D.48031;
  struct MonoMemPool * D.48034;
  void * vtable_arg.534;
  struct MonoInst * vtable_arg.535;
  int D.48037;
  struct MonoInst * D.48038;
  guint16 iftmp.536;
  unsigned int D.48040;
  unsigned int D.48041;
  int D.48045;
  int D.48046;
  const unsigned char * D.48047;
  void * iftmp.537;
  unsigned int D.48052;
  int D.48053;
  struct MonoBasicBlock * D.48054;
  struct MonoInst * D.48055;
  struct MonoMethodSignature * helper_sig_generic_class_init_trampoline_llvm.538;
  struct MonoMethodSignature * helper_sig_generic_class_init_trampoline.539;
  int D.48064;
  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.48027>; else goto <D.48028>;
      <D.48027>:
      vtable_arg.533 = emit_get_rgctx_klass (cfg, context_used, klass, 2);
      vtable_arg = vtable_arg.533;
      goto <D.48030>;
      <D.48028>:
      {
        struct MonoVTable * vtable;

        D.48031 = cfg->domain;
        vtable = mono_class_vtable (D.48031, klass);
        if (vtable == 0B) goto <D.48032>; else goto <D.48033>;
        <D.48032>:
        return;
        <D.48033>:
        D.48034 = cfg->mempool;
        vtable_arg.534 = mono_mempool_alloc (D.48034, 56);
        vtable_arg = vtable_arg.534;
        vtable_arg.535 = vtable_arg;
        vtable_arg.535 = vtable_arg;
        vtable_arg.535->data.op[1].const_val = 0;
        D.48037 = vtable_arg.535->data.op[1].const_val;
        vtable_arg.535->data.op[0].const_val = D.48037;
        vtable_arg.535 = vtable_arg;
        vtable_arg.535 = vtable_arg;
        vtable_arg.535->prev = 0B;
        D.48038 = vtable_arg.535->prev;
        vtable_arg.535->next = D.48038;
        vtable_arg.535 = vtable_arg;
        D.48040 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.48041 = D.48040 & 64;
        if (D.48041 != 0) goto <D.48042>; else goto <D.48043>;
        <D.48042>:
        iftmp.536 = 732;
        goto <D.48044>;
        <D.48043>:
        iftmp.536 = 362;
        <D.48044>:
        vtable_arg.535->opcode = iftmp.536;
        vtable_arg.535 = vtable_arg;
        vtable_arg.535->flags = 0;
        vtable_arg.535 = vtable_arg;
        vtable_arg.535->type = 0;
        vtable_arg.535 = vtable_arg;
        vtable_arg.535->dreg = -1;
        vtable_arg.535 = vtable_arg;
        vtable_arg.535 = vtable_arg;
        vtable_arg.535 = vtable_arg;
        vtable_arg.535->sreg3 = -1;
        D.48045 = vtable_arg.535->sreg3;
        vtable_arg.535->sreg2 = D.48045;
        D.48046 = vtable_arg.535->sreg2;
        vtable_arg.535->sreg1 = D.48046;
        vtable_arg.535 = vtable_arg;
        D.48047 = cfg->ip;
        vtable_arg.535->cil_code = D.48047;
        vtable_arg.535 = vtable_arg;
        D.48040 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.48041 = D.48040 & 64;
        if (D.48041 != 0) goto <D.48049>; else goto <D.48050>;
        <D.48049>:
        iftmp.537 = vtable->klass;
        goto <D.48051>;
        <D.48050>:
        iftmp.537 = vtable;
        <D.48051>:
        vtable_arg.535->data.op[0].p = iftmp.537;
        vtable_arg.535 = vtable_arg;
        vtable_arg.535->data.op[1].src = 14B;
        vtable_arg.535 = vtable_arg;
        vtable_arg.535->type = 3;
        vtable_arg.535 = vtable_arg;
        D.48052 = alloc_dreg (cfg, 3);
        D.48053 = (int) D.48052;
        vtable_arg.535->dreg = D.48053;
        D.48054 = cfg->cbb;
        D.48055 = D.48054->last_ins;
        if (D.48055 != 0B) goto <D.48056>; else goto <D.48057>;
        <D.48056>:
        D.48054 = cfg->cbb;
        D.48055 = D.48054->last_ins;
        vtable_arg.535 = vtable_arg;
        D.48055->next = vtable_arg.535;
        vtable_arg.535 = vtable_arg;
        D.48054 = cfg->cbb;
        D.48055 = D.48054->last_ins;
        vtable_arg.535->prev = D.48055;
        D.48054 = cfg->cbb;
        vtable_arg.535 = vtable_arg;
        D.48054->last_ins = vtable_arg.535;
        goto <D.48058>;
        <D.48057>:
        D.48054 = cfg->cbb;
        D.48054 = cfg->cbb;
        vtable_arg.535 = vtable_arg;
        D.48054->last_ins = vtable_arg.535;
        D.48055 = D.48054->last_ins;
        D.48054->code = D.48055;
        <D.48058>:
      }
      <D.48030>:
      if (0 != 0) goto <D.48059>; else goto <D.48060>;
      <D.48059>:
      helper_sig_generic_class_init_trampoline_llvm.538 = helper_sig_generic_class_init_trampoline_llvm;
      call = mono_emit_abs_call (cfg, 36, 0B, helper_sig_generic_class_init_trampoline_llvm.538, &vtable_arg);
      goto <D.48062>;
      <D.48060>:
      helper_sig_generic_class_init_trampoline.539 = helper_sig_generic_class_init_trampoline;
      call = mono_emit_abs_call (cfg, 36, 0B, helper_sig_generic_class_init_trampoline.539, &vtable_arg);
      <D.48062>:
      vtable_arg.535 = vtable_arg;
      D.48064 = vtable_arg.535->dreg;
      mono_call_inst_add_outarg_reg (cfg, call, D.48064, 4, 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 int D.48068;
  unsigned int D.48069;
  _Bool D.48072;
  long int D.48073;
  long int D.48074;
  unsigned int D.48077;
  unsigned int D.48078;
  gboolean D.48081;
  unsigned int D.48082;
  unsigned int D.48083;
  struct MonoMethod * D.48086;
  int D.48089;
  short unsigned int D.48092;
  int D.48093;
  int D.48094;
  struct MonoClass * D.48097;

  D.48068 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.48069 = D.48068 & 64;
  if (D.48069 == 0) goto <D.48070>; else goto <D.48071>;
  <D.48070>:
  D.48072 = vtable == 0B;
  D.48073 = (long int) D.48072;
  D.48074 = __builtin_expect (D.48073, 0);
  if (D.48074 != 0) goto <D.48075>; else goto <D.48076>;
  <D.48075>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4640, "vtable");
  <D.48076>:
  D.48077 = BIT_FIELD_REF <*vtable, 32, 160>;
  D.48078 = D.48077 & 33554432;
  if (D.48078 != 0) goto <D.48079>; else goto <D.48080>;
  <D.48079>:
  D.48081 = 0;
  return D.48081;
  <D.48080>:
  <D.48071>:
  D.48082 = klass->flags;
  D.48083 = D.48082 & 1048576;
  if (D.48083 != 0) goto <D.48084>; else goto <D.48085>;
  <D.48084>:
  D.48086 = cfg->method;
  if (D.48086 == method) goto <D.48087>; else goto <D.48088>;
  <D.48087>:
  D.48081 = 0;
  return D.48081;
  <D.48088>:
  <D.48085>:
  D.48089 = mono_class_needs_cctor_run (klass, method);
  if (D.48089 == 0) goto <D.48090>; else goto <D.48091>;
  <D.48090>:
  D.48081 = 0;
  return D.48081;
  <D.48091>:
  D.48092 = method->flags;
  D.48093 = (int) D.48092;
  D.48094 = D.48093 & 16;
  if (D.48094 == 0) goto <D.48095>; else goto <D.48096>;
  <D.48095>:
  D.48097 = method->klass;
  if (D.48097 == klass) goto <D.48098>; else goto <D.48099>;
  <D.48098>:
  D.48081 = 0;
  return D.48081;
  <D.48099>:
  <D.48096>:
  D.48081 = 1;
  return D.48081;
}


set_exception_object (struct MonoCompile * cfg, struct MonoException * exception)
{
  void * * D.48103;
  void * D.48104;

  mono_cfg_set_exception (cfg, 13);
  if (0 != 0) goto <D.48101>; else goto <D.48102>;
  <D.48101>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6342, "sizeof (cfg->exception_ptr) == sizeof (MonoObject*)");
  <D.48102>:
  D.48103 = &cfg->exception_ptr;
  D.48104 = mono_gc_make_root_descr_all_refs (1);
  mono_gc_register_root (D.48103, 4, D.48104);
  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.48105;
  unsigned char * D.48108;
  unsigned char D.48109;
  unsigned char * D.48112;
  unsigned char D.48113;
  unsigned char * D.48116;
  unsigned char D.48117;
  const unsigned char * D.48120;
  const unsigned char * D.48121;
  struct MonoClass * D.48122;
  struct MonoImage * D.48123;
  const char * D.48126;
  int D.26546;
  int iftmp.540;
  int D.26545;
  const char[16] * D.48134;
  unsigned char D.48135;
  int D.48136;
  unsigned char D.48137;
  int D.48138;
  const unsigned char * D.48143;
  unsigned char D.48144;
  int D.48145;
  const unsigned char * D.48146;
  unsigned char D.48147;
  int D.48148;
  const unsigned char * D.48153;
  unsigned char D.48154;
  int D.48155;
  const unsigned char * D.48156;
  unsigned char D.48157;
  int D.48158;
  const unsigned char * D.48163;
  unsigned char D.48164;
  int D.48165;
  const unsigned char * D.48166;
  unsigned char D.48167;
  int D.48168;
  const char * D.48170;
  int D.26555;
  int iftmp.541;
  int D.26554;
  struct MonoClass * D.48175;
  const char[15] * D.48176;
  unsigned char D.48177;
  int D.48178;
  unsigned char D.48179;
  int D.48180;
  const unsigned char * D.48185;
  unsigned char D.48186;
  int D.48187;
  const unsigned char * D.48188;
  unsigned char D.48189;
  int D.48190;
  const unsigned char * D.48195;
  unsigned char D.48196;
  int D.48197;
  const unsigned char * D.48198;
  unsigned char D.48199;
  int D.48200;
  const unsigned char * D.48205;
  unsigned char D.48206;
  int D.48207;
  const unsigned char * D.48208;
  unsigned char D.48209;
  int D.48210;
  const char * D.48212;
  struct MonoImage * D.48214;
  struct MonoImage * D.48215;
  struct MonoType * D.48216;
  struct MonoType * D.48217;
  unsigned char D.48218;
  int D.48219;
  unsigned int size.542;
  unsigned int D.48221;
  struct MonoType * D.48222;
  int D.48223;
  unsigned int D.48226;
  unsigned int D.48227;
  unsigned int D.48230;
  unsigned int D.48231;
  unsigned int rva.543;
  _Bool D.48238;
  long int D.48239;
  long int D.48240;

  D.48105 = *ip;
  if (D.48105 == 37) goto <D.48106>; else goto <D.48107>;
  <D.48106>:
  D.48108 = ip + 1;
  D.48109 = *D.48108;
  if (D.48109 == 208) goto <D.48110>; else goto <D.48111>;
  <D.48110>:
  D.48112 = ip + 5;
  D.48113 = *D.48112;
  if (D.48113 == 4) goto <D.48114>; else goto <D.48115>;
  <D.48114>:
  D.48116 = ip + 6;
  D.48117 = *D.48116;
  if (D.48117 == 40) goto <D.48118>; else goto <D.48119>;
  <D.48118>:
  {
    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.48120 = ip + 7;
        token = mono_read32 (D.48120);
        D.48121 = ip + 2;
        field_token = mono_read32 (D.48121);
        field_index = field_token & 16777215;
        size = 0;
        D.48122 = method->klass;
        D.48123 = D.48122->image;
        field = mono_field_from_token (D.48123, field_token, &dummy_class, 0B);
        if (field == 0B) goto <D.48124>; else goto <D.48125>;
        <D.48124>:
        D.48126 = 0B;
        return D.48126;
        <D.48125>:
        *out_field_token = field_token;
        cmethod = mini_get_method (0B, method, token, 0B, 0B);
        if (cmethod == 0B) goto <D.48127>; else goto <D.48128>;
        <D.48127>:
        D.48126 = 0B;
        return D.48126;
        <D.48128>:
        {
          size_t __s1_len;
          size_t __s2_len;

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

            __s2 = cmethod->name;
            D.48134 = "InitializeArray";
            D.48135 = MEM[(const unsigned char *)D.48134];
            D.48136 = (int) D.48135;
            D.48137 = *__s2;
            D.48138 = (int) D.48137;
            __result = D.48136 - D.48138;
            {
              if (__s2_len != 0) goto <D.48139>; else goto <D.48140>;
              <D.48139>:
              if (__result == 0) goto <D.48141>; else goto <D.48142>;
              <D.48141>:
              D.48143 = &MEM[(void *)"InitializeArray" + 1B];
              D.48144 = *D.48143;
              D.48145 = (int) D.48144;
              D.48146 = __s2 + 1;
              D.48147 = *D.48146;
              D.48148 = (int) D.48147;
              __result = D.48145 - D.48148;
              if (__s2_len > 1) goto <D.48149>; else goto <D.48150>;
              <D.48149>:
              if (__result == 0) goto <D.48151>; else goto <D.48152>;
              <D.48151>:
              D.48153 = &MEM[(void *)"InitializeArray" + 2B];
              D.48154 = *D.48153;
              D.48155 = (int) D.48154;
              D.48156 = __s2 + 2;
              D.48157 = *D.48156;
              D.48158 = (int) D.48157;
              __result = D.48155 - D.48158;
              if (__s2_len > 2) goto <D.48159>; else goto <D.48160>;
              <D.48159>:
              if (__result == 0) goto <D.48161>; else goto <D.48162>;
              <D.48161>:
              D.48163 = &MEM[(void *)"InitializeArray" + 3B];
              D.48164 = *D.48163;
              D.48165 = (int) D.48164;
              D.48166 = __s2 + 3;
              D.48167 = *D.48166;
              D.48168 = (int) D.48167;
              __result = D.48165 - D.48168;
              <D.48162>:
              <D.48160>:
              <D.48152>:
              <D.48150>:
              <D.48142>:
              <D.48140>:
            }
            D.26545 = __result;
          }
          iftmp.540 = -D.26545;
          goto <D.48169>;
          <D.48133>:
          D.48170 = cmethod->name;
          iftmp.540 = __builtin_strcmp (D.48170, "InitializeArray");
          <D.48169>:
          D.26546 = iftmp.540;
        }
        if (D.26546 != 0) goto <D.48129>; else goto <D.48171>;
        <D.48171>:
        {
          size_t __s1_len;
          size_t __s2_len;

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

            D.48175 = cmethod->klass;
            __s2 = D.48175->name;
            D.48176 = "RuntimeHelpers";
            D.48177 = MEM[(const unsigned char *)D.48176];
            D.48178 = (int) D.48177;
            D.48179 = *__s2;
            D.48180 = (int) D.48179;
            __result = D.48178 - D.48180;
            {
              if (__s2_len != 0) goto <D.48181>; else goto <D.48182>;
              <D.48181>:
              if (__result == 0) goto <D.48183>; else goto <D.48184>;
              <D.48183>:
              D.48185 = &MEM[(void *)"RuntimeHelpers" + 1B];
              D.48186 = *D.48185;
              D.48187 = (int) D.48186;
              D.48188 = __s2 + 1;
              D.48189 = *D.48188;
              D.48190 = (int) D.48189;
              __result = D.48187 - D.48190;
              if (__s2_len > 1) goto <D.48191>; else goto <D.48192>;
              <D.48191>:
              if (__result == 0) goto <D.48193>; else goto <D.48194>;
              <D.48193>:
              D.48195 = &MEM[(void *)"RuntimeHelpers" + 2B];
              D.48196 = *D.48195;
              D.48197 = (int) D.48196;
              D.48198 = __s2 + 2;
              D.48199 = *D.48198;
              D.48200 = (int) D.48199;
              __result = D.48197 - D.48200;
              if (__s2_len > 2) goto <D.48201>; else goto <D.48202>;
              <D.48201>:
              if (__result == 0) goto <D.48203>; else goto <D.48204>;
              <D.48203>:
              D.48205 = &MEM[(void *)"RuntimeHelpers" + 3B];
              D.48206 = *D.48205;
              D.48207 = (int) D.48206;
              D.48208 = __s2 + 3;
              D.48209 = *D.48208;
              D.48210 = (int) D.48209;
              __result = D.48207 - D.48210;
              <D.48204>:
              <D.48202>:
              <D.48194>:
              <D.48192>:
              <D.48184>:
              <D.48182>:
            }
            D.26554 = __result;
          }
          iftmp.541 = -D.26554;
          goto <D.48211>;
          <D.48174>:
          D.48175 = cmethod->klass;
          D.48212 = D.48175->name;
          iftmp.541 = __builtin_strcmp (D.48212, "RuntimeHelpers");
          <D.48211>:
          D.26555 = iftmp.541;
        }
        if (D.26555 != 0) goto <D.48129>; else goto <D.48213>;
        <D.48213>:
        D.48175 = cmethod->klass;
        D.48214 = D.48175->image;
        D.48215 = mono_defaults.corlib;
        if (D.48214 != D.48215) goto <D.48129>; else goto <D.48130>;
        <D.48129>:
        D.48126 = 0B;
        return D.48126;
        <D.48130>:
        D.48216 = &klass->byval_arg;
        D.48217 = mono_type_get_underlying_type (D.48216);
        D.48218 = D.48217->type;
        D.48219 = (int) D.48218;
        switch (D.48219) <default: <D.26569>, case 2: <D.26556>, case 3: <D.26560>, case 4: <D.26557>, case 5: <D.26558>, case 6: <D.26561>, case 7: <D.26562>, case 8: <D.26563>, case 9: <D.26564>, case 10: <D.26567>, case 11: <D.26568>, case 12: <D.26565>, case 13: <D.26566>>
        <D.26556>:
        <D.26557>:
        <D.26558>:
        size = 1;
        goto <D.26559>;
        <D.26560>:
        <D.26561>:
        <D.26562>:
        size = 2;
        goto <D.26559>;
        <D.26563>:
        <D.26564>:
        <D.26565>:
        size = 4;
        goto <D.26559>;
        <D.26566>:
        <D.26567>:
        <D.26568>:
        size = 8;
        goto <D.26559>;
        <D.26569>:
        D.48126 = 0B;
        return D.48126;
        <D.26559>:
        size.542 = (unsigned int) size;
        D.48221 = size.542 * len;
        size = (int) D.48221;
        D.48222 = field->type;
        D.48223 = mono_type_size (D.48222, &dummy_align);
        if (D.48223 < size) goto <D.48224>; else goto <D.48225>;
        <D.48224>:
        D.48126 = 0B;
        return D.48126;
        <D.48225>:
        *out_size = size;
        D.48122 = method->klass;
        D.48123 = D.48122->image;
        D.48226 = BIT_FIELD_REF <*D.48123, 32, 128>;
        D.48227 = D.48226 & 8;
        if (D.48227 == 0) goto <D.48228>; else goto <D.48229>;
        <D.48228>:
        D.48121 = ip + 2;
        D.48230 = mono_read32 (D.48121);
        field_index = D.48230 & 16777215;
        D.48122 = method->klass;
        D.48123 = D.48122->image;
        D.48231 = field_index + 4294967295;
        mono_metadata_field_info (D.48123, D.48231, 0B, &rva, 0B);
        D.48122 = method->klass;
        D.48123 = D.48122->image;
        rva.543 = rva;
        data_ptr = mono_image_rva_map (D.48123, rva.543);
        if (aot != 0) goto <D.48233>; else goto <D.48234>;
        <D.48233>:
        if (data_ptr != 0B) goto <D.48235>; else goto <D.48236>;
        <D.48235>:
        rva.543 = rva;
        D.48126 = (const char *) rva.543;
        return D.48126;
        <D.48236>:
        <D.48234>:
        goto <D.48237>;
        <D.48229>:
        D.48238 = aot != 0;
        D.48239 = (long int) D.48238;
        D.48240 = __builtin_expect (D.48239, 0);
        if (D.48240 != 0) goto <D.48241>; else goto <D.48242>;
        <D.48241>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6312, "!aot");
        <D.48242>:
        data_ptr = mono_field_get_data (field);
        <D.48237>:
        D.48126 = data_ptr;
        return D.48126;
      }
    finally
      {
        rva = {CLOBBER};
        dummy_class = {CLOBBER};
        dummy_align = {CLOBBER};
      }
  }
  <D.48119>:
  <D.48115>:
  <D.48111>:
  <D.48107>:
  D.48126 = 0B;
  return D.48126;
}


mini_emit_check_array_type (struct MonoCompile * cfg, struct MonoInst * obj, struct MonoClass * array_class)
{
  unsigned int D.48245;
  int D.48246;
  int D.48247;
  unsigned int D.48250;
  unsigned int D.48251;
  struct MonoMemPool * D.48254;
  int D.48255;
  struct MonoInst * D.48256;
  int D.48257;
  int D.48258;
  const unsigned char * D.48259;
  struct MonoBasicBlock * D.48260;
  struct MonoInst * D.48261;
  int D.48265;
  struct MonoInst * D.48266;
  int D.48267;
  int D.48268;
  int D.48273;
  struct MonoInst * D.48274;
  int D.48275;
  int D.48276;
  unsigned char D.48277;
  unsigned int D.48281;
  unsigned int D.48282;
  unsigned int D.48285;
  int D.48286;
  struct MonoInst * D.48287;
  int D.48288;
  int D.48289;
  unsigned int D.48293;
  unsigned int D.48294;
  unsigned int D.48297;
  int D.48298;
  struct MonoInst * D.48299;
  guint16 iftmp.544;
  int D.48304;
  int D.48305;
  int D.48309;
  struct MonoInst * D.48310;
  int D.48311;
  int D.48312;
  int D.48317;
  struct MonoInst * D.48318;
  int D.48319;
  int D.48320;
  int array_class.545;
  int D.48328;
  struct MonoInst * D.48329;
  int D.48330;
  int D.48331;
  int D.48332;
  struct MonoDomain * D.48339;
  unsigned int D.48342;
  int D.48343;
  struct MonoInst * D.48344;
  guint16 iftmp.546;
  int D.48349;
  int D.48350;
  void * iftmp.547;
  int D.48358;
  struct MonoInst * D.48359;
  int D.48360;
  int D.48361;
  int D.48368;
  struct MonoInst * D.48369;
  int D.48370;
  int D.48371;
  int vtable.548;
  int D.48376;
  struct MonoInst * D.48377;
  int D.48378;
  int D.48379;
  int vtable_reg;
  int context_used;

  D.48245 = alloc_preg (cfg);
  vtable_reg = (int) D.48245;
  context_used = mini_class_check_context_used (cfg, array_class);
  D.48246 = obj->dreg;
  save_cast_details (cfg, array_class, D.48246, 0, 0B);
  {
    struct MonoInst * inst;
    int __ins_flags;

    __ins_flags = 32;
    D.48247 = __ins_flags & 32;
    if (D.48247 != 0) goto <D.48248>; else goto <D.48249>;
    <D.48248>:
    D.48250 = BIT_FIELD_REF <*cfg, 32, 3424>;
    D.48251 = D.48250 & 64;
    if (D.48251 != 0) goto <D.48252>; else goto <D.48253>;
    <D.48252>:
    {
      struct MonoInst * inst;

      D.48254 = cfg->mempool;
      inst = mono_mempool_alloc (D.48254, 56);
      inst->data.op[1].const_val = 0;
      D.48255 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48255;
      inst->prev = 0B;
      D.48256 = inst->prev;
      inst->next = D.48256;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48257 = inst->sreg3;
      inst->sreg2 = D.48257;
      D.48258 = inst->sreg2;
      inst->sreg1 = D.48258;
      D.48259 = cfg->ip;
      inst->cil_code = D.48259;
      inst->dreg = -1;
      D.48246 = obj->dreg;
      inst->sreg1 = D.48246;
      inst->data.op[1].const_val = 0;
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      if (D.48261 != 0B) goto <D.48262>; else goto <D.48263>;
      <D.48262>:
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      D.48261->next = inst;
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      inst->prev = D.48261;
      D.48260 = cfg->cbb;
      D.48260->last_ins = inst;
      goto <D.48264>;
      <D.48263>:
      D.48260 = cfg->cbb;
      D.48260 = cfg->cbb;
      D.48260->last_ins = inst;
      D.48261 = D.48260->last_ins;
      D.48260->code = D.48261;
      <D.48264>:
    }
    {
      struct MonoInst * inst;

      D.48254 = cfg->mempool;
      inst = mono_mempool_alloc (D.48254, 56);
      inst->data.op[1].const_val = 0;
      D.48265 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48265;
      inst->prev = 0B;
      D.48266 = inst->prev;
      inst->next = D.48266;
      inst->opcode = 451;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48267 = inst->sreg3;
      inst->sreg2 = D.48267;
      D.48268 = inst->sreg2;
      inst->sreg1 = D.48268;
      D.48259 = cfg->ip;
      inst->cil_code = D.48259;
      inst->data.op[1].p = "NullReferenceException";
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      if (D.48261 != 0B) goto <D.48269>; else goto <D.48270>;
      <D.48269>:
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      D.48261->next = inst;
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      inst->prev = D.48261;
      D.48260 = cfg->cbb;
      D.48260->last_ins = inst;
      goto <D.48271>;
      <D.48270>:
      D.48260 = cfg->cbb;
      D.48260 = cfg->cbb;
      D.48260->last_ins = inst;
      D.48261 = D.48260->last_ins;
      D.48260->code = D.48261;
      <D.48271>:
    }
    goto <D.48272>;
    <D.48253>:
    <D.48272>:
    <D.48249>:
    D.48254 = cfg->mempool;
    inst = mono_mempool_alloc (D.48254, 56);
    inst->data.op[1].const_val = 0;
    D.48273 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48273;
    inst->prev = 0B;
    D.48274 = inst->prev;
    inst->next = D.48274;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48275 = inst->sreg3;
    inst->sreg2 = D.48275;
    D.48276 = inst->sreg2;
    inst->sreg1 = D.48276;
    D.48259 = cfg->ip;
    inst->cil_code = D.48259;
    inst->dreg = vtable_reg;
    D.48246 = obj->dreg;
    inst->sreg1 = D.48246;
    inst->data.op[0].const_val = 0;
    inst->type = 1;
    D.48277 = (unsigned char) __ins_flags;
    inst->flags = D.48277;
    D.48260 = cfg->cbb;
    D.48261 = D.48260->last_ins;
    if (D.48261 != 0B) goto <D.48278>; else goto <D.48279>;
    <D.48278>:
    D.48260 = cfg->cbb;
    D.48261 = D.48260->last_ins;
    D.48261->next = inst;
    D.48260 = cfg->cbb;
    D.48261 = D.48260->last_ins;
    inst->prev = D.48261;
    D.48260 = cfg->cbb;
    D.48260->last_ins = inst;
    goto <D.48280>;
    <D.48279>:
    D.48260 = cfg->cbb;
    D.48260 = cfg->cbb;
    D.48260->last_ins = inst;
    D.48261 = D.48260->last_ins;
    D.48260->code = D.48261;
    <D.48280>:
  }
  D.48281 = cfg->opt;
  D.48282 = D.48281 & 512;
  if (D.48282 != 0) goto <D.48283>; else goto <D.48284>;
  <D.48283>:
  {
    int class_reg;

    D.48285 = alloc_preg (cfg);
    class_reg = (int) D.48285;
    {
      struct MonoInst * inst;

      D.48254 = cfg->mempool;
      inst = mono_mempool_alloc (D.48254, 56);
      inst->data.op[1].const_val = 0;
      D.48286 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48286;
      inst->prev = 0B;
      D.48287 = inst->prev;
      inst->next = D.48287;
      inst->opcode = 388;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48288 = inst->sreg3;
      inst->sreg2 = D.48288;
      D.48289 = inst->sreg2;
      inst->sreg1 = D.48289;
      D.48259 = cfg->ip;
      inst->cil_code = D.48259;
      inst->dreg = class_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      if (D.48261 != 0B) goto <D.48290>; else goto <D.48291>;
      <D.48290>:
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      D.48261->next = inst;
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      inst->prev = D.48261;
      D.48260 = cfg->cbb;
      D.48260->last_ins = inst;
      goto <D.48292>;
      <D.48291>:
      D.48260 = cfg->cbb;
      D.48260 = cfg->cbb;
      D.48260->last_ins = inst;
      D.48261 = D.48260->last_ins;
      D.48260->code = D.48261;
      <D.48292>:
    }
    D.48293 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.48294 = D.48293 & 64;
    if (D.48294 != 0) goto <D.48295>; else goto <D.48296>;
    <D.48295>:
    {
      int klass_reg;

      D.48297 = alloc_preg (cfg);
      klass_reg = (int) D.48297;
      {
        struct MonoInst * inst;

        D.48254 = cfg->mempool;
        inst = mono_mempool_alloc (D.48254, 56);
        inst->data.op[1].const_val = 0;
        D.48298 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48298;
        inst->prev = 0B;
        D.48299 = inst->prev;
        inst->next = D.48299;
        D.48293 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.48294 = D.48293 & 64;
        if (D.48294 != 0) goto <D.48301>; else goto <D.48302>;
        <D.48301>:
        iftmp.544 = 732;
        goto <D.48303>;
        <D.48302>:
        iftmp.544 = 362;
        <D.48303>:
        inst->opcode = iftmp.544;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48304 = inst->sreg3;
        inst->sreg2 = D.48304;
        D.48305 = inst->sreg2;
        inst->sreg1 = D.48305;
        D.48259 = cfg->ip;
        inst->cil_code = D.48259;
        inst->dreg = klass_reg;
        inst->data.op[0].p = array_class;
        inst->data.op[1].const_val = 11;
        D.48260 = cfg->cbb;
        D.48261 = D.48260->last_ins;
        if (D.48261 != 0B) goto <D.48306>; else goto <D.48307>;
        <D.48306>:
        D.48260 = cfg->cbb;
        D.48261 = D.48260->last_ins;
        D.48261->next = inst;
        D.48260 = cfg->cbb;
        D.48261 = D.48260->last_ins;
        inst->prev = D.48261;
        D.48260 = cfg->cbb;
        D.48260->last_ins = inst;
        goto <D.48308>;
        <D.48307>:
        D.48260 = cfg->cbb;
        D.48260 = cfg->cbb;
        D.48260->last_ins = inst;
        D.48261 = D.48260->last_ins;
        D.48260->code = D.48261;
        <D.48308>:
      }
      {
        struct MonoInst * inst;

        D.48254 = cfg->mempool;
        inst = mono_mempool_alloc (D.48254, 56);
        inst->data.op[1].const_val = 0;
        D.48309 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48309;
        inst->prev = 0B;
        D.48310 = inst->prev;
        inst->next = D.48310;
        inst->opcode = 322;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48311 = inst->sreg3;
        inst->sreg2 = D.48311;
        D.48312 = inst->sreg2;
        inst->sreg1 = D.48312;
        D.48259 = cfg->ip;
        inst->cil_code = D.48259;
        inst->dreg = -1;
        inst->sreg1 = class_reg;
        inst->sreg2 = klass_reg;
        D.48260 = cfg->cbb;
        D.48261 = D.48260->last_ins;
        if (D.48261 != 0B) goto <D.48313>; else goto <D.48314>;
        <D.48313>:
        D.48260 = cfg->cbb;
        D.48261 = D.48260->last_ins;
        D.48261->next = inst;
        D.48260 = cfg->cbb;
        D.48261 = D.48260->last_ins;
        inst->prev = D.48261;
        D.48260 = cfg->cbb;
        D.48260->last_ins = inst;
        goto <D.48315>;
        <D.48314>:
        D.48260 = cfg->cbb;
        D.48260 = cfg->cbb;
        D.48260->last_ins = inst;
        D.48261 = D.48260->last_ins;
        D.48260->code = D.48261;
        <D.48315>:
      }
    }
    goto <D.48316>;
    <D.48296>:
    {
      struct MonoInst * inst;

      D.48254 = cfg->mempool;
      inst = mono_mempool_alloc (D.48254, 56);
      inst->data.op[1].const_val = 0;
      D.48317 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48317;
      inst->prev = 0B;
      D.48318 = inst->prev;
      inst->next = D.48318;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48319 = inst->sreg3;
      inst->sreg2 = D.48319;
      D.48320 = inst->sreg2;
      inst->sreg1 = D.48320;
      D.48259 = cfg->ip;
      inst->cil_code = D.48259;
      inst->dreg = -1;
      inst->sreg1 = class_reg;
      array_class.545 = (int) array_class;
      inst->data.op[1].const_val = array_class.545;
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      if (D.48261 != 0B) goto <D.48322>; else goto <D.48323>;
      <D.48322>:
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      D.48261->next = inst;
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      inst->prev = D.48261;
      D.48260 = cfg->cbb;
      D.48260->last_ins = inst;
      goto <D.48324>;
      <D.48323>:
      D.48260 = cfg->cbb;
      D.48260 = cfg->cbb;
      D.48260->last_ins = inst;
      D.48261 = D.48260->last_ins;
      D.48260->code = D.48261;
      <D.48324>:
    }
    <D.48316>:
  }
  goto <D.48325>;
  <D.48284>:
  if (context_used != 0) goto <D.48326>; else goto <D.48327>;
  <D.48326>:
  {
    struct MonoInst * vtable_ins;

    vtable_ins = emit_get_rgctx_klass (cfg, context_used, array_class, 2);
    {
      struct MonoInst * inst;

      D.48254 = cfg->mempool;
      inst = mono_mempool_alloc (D.48254, 56);
      inst->data.op[1].const_val = 0;
      D.48328 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48328;
      inst->prev = 0B;
      D.48329 = inst->prev;
      inst->next = D.48329;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48330 = inst->sreg3;
      inst->sreg2 = D.48330;
      D.48331 = inst->sreg2;
      inst->sreg1 = D.48331;
      D.48259 = cfg->ip;
      inst->cil_code = D.48259;
      inst->dreg = -1;
      inst->sreg1 = vtable_reg;
      D.48332 = vtable_ins->dreg;
      inst->sreg2 = D.48332;
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      if (D.48261 != 0B) goto <D.48333>; else goto <D.48334>;
      <D.48333>:
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      D.48261->next = inst;
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      inst->prev = D.48261;
      D.48260 = cfg->cbb;
      D.48260->last_ins = inst;
      goto <D.48335>;
      <D.48334>:
      D.48260 = cfg->cbb;
      D.48260 = cfg->cbb;
      D.48260->last_ins = inst;
      D.48261 = D.48260->last_ins;
      D.48260->code = D.48261;
      <D.48335>:
    }
  }
  goto <D.48336>;
  <D.48327>:
  D.48293 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.48294 = D.48293 & 64;
  if (D.48294 != 0) goto <D.48337>; else goto <D.48338>;
  <D.48337>:
  {
    int vt_reg;
    struct MonoVTable * vtable;

    D.48339 = cfg->domain;
    vtable = mono_class_vtable (D.48339, array_class);
    if (vtable == 0B) goto <D.48340>; else goto <D.48341>;
    <D.48340>:
    return;
    <D.48341>:
    D.48342 = alloc_preg (cfg);
    vt_reg = (int) D.48342;
    {
      struct MonoInst * inst;

      D.48254 = cfg->mempool;
      inst = mono_mempool_alloc (D.48254, 56);
      inst->data.op[1].const_val = 0;
      D.48343 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48343;
      inst->prev = 0B;
      D.48344 = inst->prev;
      inst->next = D.48344;
      D.48293 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.48294 = D.48293 & 64;
      if (D.48294 != 0) goto <D.48346>; else goto <D.48347>;
      <D.48346>:
      iftmp.546 = 732;
      goto <D.48348>;
      <D.48347>:
      iftmp.546 = 362;
      <D.48348>:
      inst->opcode = iftmp.546;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48349 = inst->sreg3;
      inst->sreg2 = D.48349;
      D.48350 = inst->sreg2;
      inst->sreg1 = D.48350;
      D.48259 = cfg->ip;
      inst->cil_code = D.48259;
      inst->dreg = vt_reg;
      D.48293 = BIT_FIELD_REF <*cfg, 32, 3392>;
      D.48294 = D.48293 & 64;
      if (D.48294 != 0) goto <D.48352>; else goto <D.48353>;
      <D.48352>:
      iftmp.547 = vtable->klass;
      goto <D.48354>;
      <D.48353>:
      iftmp.547 = vtable;
      <D.48354>:
      inst->data.op[0].p = iftmp.547;
      inst->data.op[1].const_val = 14;
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      if (D.48261 != 0B) goto <D.48355>; else goto <D.48356>;
      <D.48355>:
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      D.48261->next = inst;
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      inst->prev = D.48261;
      D.48260 = cfg->cbb;
      D.48260->last_ins = inst;
      goto <D.48357>;
      <D.48356>:
      D.48260 = cfg->cbb;
      D.48260 = cfg->cbb;
      D.48260->last_ins = inst;
      D.48261 = D.48260->last_ins;
      D.48260->code = D.48261;
      <D.48357>:
    }
    {
      struct MonoInst * inst;

      D.48254 = cfg->mempool;
      inst = mono_mempool_alloc (D.48254, 56);
      inst->data.op[1].const_val = 0;
      D.48358 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48358;
      inst->prev = 0B;
      D.48359 = inst->prev;
      inst->next = D.48359;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48360 = inst->sreg3;
      inst->sreg2 = D.48360;
      D.48361 = inst->sreg2;
      inst->sreg1 = D.48361;
      D.48259 = cfg->ip;
      inst->cil_code = D.48259;
      inst->dreg = -1;
      inst->sreg1 = vtable_reg;
      inst->sreg2 = vt_reg;
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      if (D.48261 != 0B) goto <D.48362>; else goto <D.48363>;
      <D.48362>:
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      D.48261->next = inst;
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      inst->prev = D.48261;
      D.48260 = cfg->cbb;
      D.48260->last_ins = inst;
      goto <D.48364>;
      <D.48363>:
      D.48260 = cfg->cbb;
      D.48260 = cfg->cbb;
      D.48260->last_ins = inst;
      D.48261 = D.48260->last_ins;
      D.48260->code = D.48261;
      <D.48364>:
    }
  }
  goto <D.48365>;
  <D.48338>:
  {
    struct MonoVTable * vtable;

    D.48339 = cfg->domain;
    vtable = mono_class_vtable (D.48339, array_class);
    if (vtable == 0B) goto <D.48366>; else goto <D.48367>;
    <D.48366>:
    return;
    <D.48367>:
    {
      struct MonoInst * inst;

      D.48254 = cfg->mempool;
      inst = mono_mempool_alloc (D.48254, 56);
      inst->data.op[1].const_val = 0;
      D.48368 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48368;
      inst->prev = 0B;
      D.48369 = inst->prev;
      inst->next = D.48369;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48370 = inst->sreg3;
      inst->sreg2 = D.48370;
      D.48371 = inst->sreg2;
      inst->sreg1 = D.48371;
      D.48259 = cfg->ip;
      inst->cil_code = D.48259;
      inst->dreg = -1;
      inst->sreg1 = vtable_reg;
      vtable.548 = (int) vtable;
      inst->data.op[1].const_val = vtable.548;
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      if (D.48261 != 0B) goto <D.48373>; else goto <D.48374>;
      <D.48373>:
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      D.48261->next = inst;
      D.48260 = cfg->cbb;
      D.48261 = D.48260->last_ins;
      inst->prev = D.48261;
      D.48260 = cfg->cbb;
      D.48260->last_ins = inst;
      goto <D.48375>;
      <D.48374>:
      D.48260 = cfg->cbb;
      D.48260 = cfg->cbb;
      D.48260->last_ins = inst;
      D.48261 = D.48260->last_ins;
      D.48260->code = D.48261;
      <D.48375>:
    }
  }
  <D.48365>:
  <D.48336>:
  <D.48325>:
  {
    struct MonoInst * inst;

    D.48254 = cfg->mempool;
    inst = mono_mempool_alloc (D.48254, 56);
    inst->data.op[1].const_val = 0;
    D.48376 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48376;
    inst->prev = 0B;
    D.48377 = inst->prev;
    inst->next = D.48377;
    inst->opcode = 456;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48378 = inst->sreg3;
    inst->sreg2 = D.48378;
    D.48379 = inst->sreg2;
    inst->sreg1 = D.48379;
    D.48259 = cfg->ip;
    inst->cil_code = D.48259;
    inst->data.op[1].p = "ArrayTypeMismatchException";
    D.48260 = cfg->cbb;
    D.48261 = D.48260->last_ins;
    if (D.48261 != 0B) goto <D.48380>; else goto <D.48381>;
    <D.48380>:
    D.48260 = cfg->cbb;
    D.48261 = D.48260->last_ins;
    D.48261->next = inst;
    D.48260 = cfg->cbb;
    D.48261 = D.48260->last_ins;
    inst->prev = D.48261;
    D.48260 = cfg->cbb;
    D.48260->last_ins = inst;
    goto <D.48382>;
    <D.48381>:
    D.48260 = cfg->cbb;
    D.48260 = cfg->cbb;
    D.48260->last_ins = inst;
    D.48261 = D.48260->last_ins;
    D.48260->code = D.48261;
    <D.48382>:
  }
  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.48384;
  int D.48388;
  unsigned int D.48389;
  unsigned char D.48390;
  unsigned int D.48393;
  struct MonoMemPool * D.48394;
  int D.48395;
  struct MonoInst * D.48396;
  int D.48397;
  int D.48398;
  const unsigned char * D.48399;
  struct MonoBasicBlock * D.48400;
  struct MonoInst * D.48401;
  unsigned int D.48408;
  unsigned int D.48409;
  unsigned int D.48412;
  unsigned int D.48415;
  unsigned int D.48416;
  int D.48419;
  struct MonoInst * D.48420;
  int D.48421;
  int D.48422;
  int D.48426;
  struct MonoInst * D.48427;
  int D.48428;
  int D.48429;
  unsigned int D.48436;
  int D.48439;
  int D.48444;
  struct MonoInst * D.48445;
  int D.48446;
  int D.48447;
  int D.48451;
  struct MonoInst * D.48452;
  int D.48453;
  int D.48454;
  int D.48459;
  struct MonoInst * D.48460;
  int D.48461;
  int D.48462;
  unsigned char D.48463;
  int D.48468;
  int D.48473;
  struct MonoInst * D.48474;
  int D.48475;
  int D.48476;
  int D.48480;
  struct MonoInst * D.48481;
  int D.48482;
  int D.48483;
  int D.48488;
  struct MonoInst * D.48489;
  int D.48490;
  int D.48491;
  unsigned char D.48492;
  int D.48496;
  struct MonoInst * D.48497;
  int D.48498;
  int D.48499;
  int D.48503;
  struct MonoInst * D.48504;
  int D.48505;
  int D.48506;
  unsigned int D.48511;
  int D.48514;
  int D.48519;
  struct MonoInst * D.48520;
  int D.48521;
  int D.48522;
  int D.48526;
  struct MonoInst * D.48527;
  int D.48528;
  int D.48529;
  int D.48534;
  struct MonoInst * D.48535;
  int D.48536;
  int D.48537;
  unsigned char D.48538;
  int D.48543;
  int D.48548;
  struct MonoInst * D.48549;
  int D.48550;
  int D.48551;
  int D.48555;
  struct MonoInst * D.48556;
  int D.48557;
  int D.48558;
  int D.48563;
  struct MonoInst * D.48564;
  int D.48565;
  int D.48566;
  unsigned char D.48567;
  int D.48571;
  struct MonoInst * D.48572;
  int D.48573;
  int D.48574;
  int D.48578;
  struct MonoInst * D.48579;
  int D.48580;
  int D.48581;
  int D.48586;
  struct MonoInst * D.48587;
  int D.48588;
  int D.48589;
  unsigned char D.48590;
  unsigned char D.48591;
  unsigned int D.48595;
  unsigned int D.48596;
  unsigned int D.48597;
  struct MonoGenericSharingContext * D.48600;
  _Bool D.48601;
  long int D.48602;
  long int D.48603;
  _Bool D.48606;
  long int D.48607;
  long int D.48608;
  struct MonoType * D.48611;
  int D.48612;
  struct MonoInst * D.48613;
  int D.48614;
  int D.48615;
  int D.48616;
  int D.48621;
  struct MonoInst * D.48622;
  int D.48623;
  int D.48624;
  int size.549;
  int D.48629;
  struct MonoInst * D.48630;
  int D.48631;
  int D.48632;
  int D.48636;
  struct MonoInst * D.48637;
  int D.48638;
  int D.48639;
  struct MonoClass * D.48640;
  struct MonoInst * D.48644;
  struct MonoInst * ins;
  guint32 size;
  int mult_reg;
  int add_reg;
  int array_reg;
  int index_reg;
  int index2_reg;
  int context_used;

  D.48384 = mini_is_gsharedvt_variable_klass (cfg, klass);
  if (D.48384 != 0) goto <D.48385>; else goto <D.48386>;
  <D.48385>:
  size = 4294967295;
  goto <D.48387>;
  <D.48386>:
  mono_class_init (klass);
  D.48388 = mono_class_array_element_size (klass);
  size = (guint32) D.48388;
  <D.48387>:
  D.48389 = alloc_preg (cfg);
  mult_reg = (int) D.48389;
  array_reg = arr->dreg;
  index_reg = index->dreg;
  D.48390 = index->type;
  if (D.48390 == 2) goto <D.48391>; else goto <D.48392>;
  <D.48391>:
  D.48393 = alloc_preg (cfg);
  index2_reg = (int) D.48393;
  {
    struct MonoInst * inst;

    D.48394 = cfg->mempool;
    inst = mono_mempool_alloc (D.48394, 56);
    inst->data.op[1].const_val = 0;
    D.48395 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48395;
    inst->prev = 0B;
    D.48396 = inst->prev;
    inst->next = D.48396;
    inst->opcode = 496;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48397 = inst->sreg3;
    inst->sreg2 = D.48397;
    D.48398 = inst->sreg2;
    inst->sreg1 = D.48398;
    D.48399 = cfg->ip;
    inst->cil_code = D.48399;
    inst->dreg = index2_reg;
    inst->sreg1 = index_reg;
    D.48400 = cfg->cbb;
    D.48401 = D.48400->last_ins;
    if (D.48401 != 0B) goto <D.48402>; else goto <D.48403>;
    <D.48402>:
    D.48400 = cfg->cbb;
    D.48401 = D.48400->last_ins;
    D.48401->next = inst;
    D.48400 = cfg->cbb;
    D.48401 = D.48400->last_ins;
    inst->prev = D.48401;
    D.48400 = cfg->cbb;
    D.48400->last_ins = inst;
    goto <D.48404>;
    <D.48403>:
    D.48400 = cfg->cbb;
    D.48400 = cfg->cbb;
    D.48400->last_ins = inst;
    D.48401 = D.48400->last_ins;
    D.48400->code = D.48401;
    <D.48404>:
  }
  goto <D.48405>;
  <D.48392>:
  index2_reg = index_reg;
  <D.48405>:
  if (bcheck != 0) goto <D.48406>; else goto <D.48407>;
  <D.48406>:
  D.48408 = cfg->opt;
  D.48409 = D.48408 & 134217728;
  if (D.48409 == 0) goto <D.48410>; else goto <D.48411>;
  <D.48410>:
  D.48408 = cfg->opt;
  D.48412 = D.48408 & 262144;
  if (D.48412 == 0) goto <D.48413>; else goto <D.48414>;
  <D.48413>:
  D.48415 = BIT_FIELD_REF <*cfg, 32, 3424>;
  D.48416 = D.48415 & 64;
  if (D.48416 != 0) goto <D.48417>; else goto <D.48418>;
  <D.48417>:
  {
    struct MonoInst * inst;

    D.48394 = cfg->mempool;
    inst = mono_mempool_alloc (D.48394, 56);
    inst->data.op[1].const_val = 0;
    D.48419 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48419;
    inst->prev = 0B;
    D.48420 = inst->prev;
    inst->next = D.48420;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48421 = inst->sreg3;
    inst->sreg2 = D.48421;
    D.48422 = inst->sreg2;
    inst->sreg1 = D.48422;
    D.48399 = cfg->ip;
    inst->cil_code = D.48399;
    inst->dreg = -1;
    inst->sreg1 = array_reg;
    inst->data.op[1].const_val = 0;
    D.48400 = cfg->cbb;
    D.48401 = D.48400->last_ins;
    if (D.48401 != 0B) goto <D.48423>; else goto <D.48424>;
    <D.48423>:
    D.48400 = cfg->cbb;
    D.48401 = D.48400->last_ins;
    D.48401->next = inst;
    D.48400 = cfg->cbb;
    D.48401 = D.48400->last_ins;
    inst->prev = D.48401;
    D.48400 = cfg->cbb;
    D.48400->last_ins = inst;
    goto <D.48425>;
    <D.48424>:
    D.48400 = cfg->cbb;
    D.48400 = cfg->cbb;
    D.48400->last_ins = inst;
    D.48401 = D.48400->last_ins;
    D.48400->code = D.48401;
    <D.48425>:
  }
  {
    struct MonoInst * inst;

    D.48394 = cfg->mempool;
    inst = mono_mempool_alloc (D.48394, 56);
    inst->data.op[1].const_val = 0;
    D.48426 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48426;
    inst->prev = 0B;
    D.48427 = inst->prev;
    inst->next = D.48427;
    inst->opcode = 451;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48428 = inst->sreg3;
    inst->sreg2 = D.48428;
    D.48429 = inst->sreg2;
    inst->sreg1 = D.48429;
    D.48399 = cfg->ip;
    inst->cil_code = D.48399;
    inst->data.op[1].p = "NullReferenceException";
    D.48400 = cfg->cbb;
    D.48401 = D.48400->last_ins;
    if (D.48401 != 0B) goto <D.48430>; else goto <D.48431>;
    <D.48430>:
    D.48400 = cfg->cbb;
    D.48401 = D.48400->last_ins;
    D.48401->next = inst;
    D.48400 = cfg->cbb;
    D.48401 = D.48400->last_ins;
    inst->prev = D.48401;
    D.48400 = cfg->cbb;
    D.48400->last_ins = inst;
    goto <D.48432>;
    <D.48431>:
    D.48400 = cfg->cbb;
    D.48400 = cfg->cbb;
    D.48400->last_ins = inst;
    D.48401 = D.48400->last_ins;
    D.48400->code = D.48401;
    <D.48432>:
  }
  goto <D.48433>;
  <D.48418>:
  <D.48433>:
  if (0 != 0) goto <D.48434>; else goto <D.48435>;
  <D.48434>:
  {
    int _length_reg;

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

      __ins_flags = 32;
      D.48439 = __ins_flags & 32;
      if (D.48439 != 0) goto <D.48440>; else goto <D.48441>;
      <D.48440>:
      D.48415 = BIT_FIELD_REF <*cfg, 32, 3424>;
      D.48416 = D.48415 & 64;
      if (D.48416 != 0) goto <D.48442>; else goto <D.48443>;
      <D.48442>:
      {
        struct MonoInst * inst;

        D.48394 = cfg->mempool;
        inst = mono_mempool_alloc (D.48394, 56);
        inst->data.op[1].const_val = 0;
        D.48444 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48444;
        inst->prev = 0B;
        D.48445 = inst->prev;
        inst->next = D.48445;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48446 = inst->sreg3;
        inst->sreg2 = D.48446;
        D.48447 = inst->sreg2;
        inst->sreg1 = D.48447;
        D.48399 = cfg->ip;
        inst->cil_code = D.48399;
        inst->dreg = -1;
        inst->sreg1 = array_reg;
        inst->data.op[1].const_val = 0;
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        if (D.48401 != 0B) goto <D.48448>; else goto <D.48449>;
        <D.48448>:
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        D.48401->next = inst;
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        inst->prev = D.48401;
        D.48400 = cfg->cbb;
        D.48400->last_ins = inst;
        goto <D.48450>;
        <D.48449>:
        D.48400 = cfg->cbb;
        D.48400 = cfg->cbb;
        D.48400->last_ins = inst;
        D.48401 = D.48400->last_ins;
        D.48400->code = D.48401;
        <D.48450>:
      }
      {
        struct MonoInst * inst;

        D.48394 = cfg->mempool;
        inst = mono_mempool_alloc (D.48394, 56);
        inst->data.op[1].const_val = 0;
        D.48451 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48451;
        inst->prev = 0B;
        D.48452 = inst->prev;
        inst->next = D.48452;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48453 = inst->sreg3;
        inst->sreg2 = D.48453;
        D.48454 = inst->sreg2;
        inst->sreg1 = D.48454;
        D.48399 = cfg->ip;
        inst->cil_code = D.48399;
        inst->data.op[1].p = "NullReferenceException";
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        if (D.48401 != 0B) goto <D.48455>; else goto <D.48456>;
        <D.48455>:
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        D.48401->next = inst;
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        inst->prev = D.48401;
        D.48400 = cfg->cbb;
        D.48400->last_ins = inst;
        goto <D.48457>;
        <D.48456>:
        D.48400 = cfg->cbb;
        D.48400 = cfg->cbb;
        D.48400->last_ins = inst;
        D.48401 = D.48400->last_ins;
        D.48400->code = D.48401;
        <D.48457>:
      }
      goto <D.48458>;
      <D.48443>:
      <D.48458>:
      <D.48441>:
      D.48394 = cfg->mempool;
      inst = mono_mempool_alloc (D.48394, 56);
      inst->data.op[1].const_val = 0;
      D.48459 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48459;
      inst->prev = 0B;
      D.48460 = inst->prev;
      inst->next = D.48460;
      inst->opcode = 393;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48461 = inst->sreg3;
      inst->sreg2 = D.48461;
      D.48462 = inst->sreg2;
      inst->sreg1 = D.48462;
      D.48399 = cfg->ip;
      inst->cil_code = D.48399;
      inst->dreg = _length_reg;
      inst->sreg1 = array_reg;
      inst->data.op[0].const_val = 12;
      inst->type = 1;
      D.48463 = (unsigned char) __ins_flags;
      inst->flags = D.48463;
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      if (D.48401 != 0B) goto <D.48464>; else goto <D.48465>;
      <D.48464>:
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      D.48401->next = inst;
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      inst->prev = D.48401;
      D.48400 = cfg->cbb;
      D.48400->last_ins = inst;
      goto <D.48466>;
      <D.48465>:
      D.48400 = cfg->cbb;
      D.48400 = cfg->cbb;
      D.48400->last_ins = inst;
      D.48401 = D.48400->last_ins;
      D.48400->code = D.48401;
      <D.48466>:
    }
    goto <D.48467>;
    <D.48438>:
    {
      struct MonoInst * inst;
      int __ins_flags;

      __ins_flags = 64;
      D.48468 = __ins_flags & 32;
      if (D.48468 != 0) goto <D.48469>; else goto <D.48470>;
      <D.48469>:
      D.48415 = BIT_FIELD_REF <*cfg, 32, 3424>;
      D.48416 = D.48415 & 64;
      if (D.48416 != 0) goto <D.48471>; else goto <D.48472>;
      <D.48471>:
      {
        struct MonoInst * inst;

        D.48394 = cfg->mempool;
        inst = mono_mempool_alloc (D.48394, 56);
        inst->data.op[1].const_val = 0;
        D.48473 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48473;
        inst->prev = 0B;
        D.48474 = inst->prev;
        inst->next = D.48474;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48475 = inst->sreg3;
        inst->sreg2 = D.48475;
        D.48476 = inst->sreg2;
        inst->sreg1 = D.48476;
        D.48399 = cfg->ip;
        inst->cil_code = D.48399;
        inst->dreg = -1;
        inst->sreg1 = array_reg;
        inst->data.op[1].const_val = 0;
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        if (D.48401 != 0B) goto <D.48477>; else goto <D.48478>;
        <D.48477>:
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        D.48401->next = inst;
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        inst->prev = D.48401;
        D.48400 = cfg->cbb;
        D.48400->last_ins = inst;
        goto <D.48479>;
        <D.48478>:
        D.48400 = cfg->cbb;
        D.48400 = cfg->cbb;
        D.48400->last_ins = inst;
        D.48401 = D.48400->last_ins;
        D.48400->code = D.48401;
        <D.48479>:
      }
      {
        struct MonoInst * inst;

        D.48394 = cfg->mempool;
        inst = mono_mempool_alloc (D.48394, 56);
        inst->data.op[1].const_val = 0;
        D.48480 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48480;
        inst->prev = 0B;
        D.48481 = inst->prev;
        inst->next = D.48481;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48482 = inst->sreg3;
        inst->sreg2 = D.48482;
        D.48483 = inst->sreg2;
        inst->sreg1 = D.48483;
        D.48399 = cfg->ip;
        inst->cil_code = D.48399;
        inst->data.op[1].p = "NullReferenceException";
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        if (D.48401 != 0B) goto <D.48484>; else goto <D.48485>;
        <D.48484>:
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        D.48401->next = inst;
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        inst->prev = D.48401;
        D.48400 = cfg->cbb;
        D.48400->last_ins = inst;
        goto <D.48486>;
        <D.48485>:
        D.48400 = cfg->cbb;
        D.48400 = cfg->cbb;
        D.48400->last_ins = inst;
        D.48401 = D.48400->last_ins;
        D.48400->code = D.48401;
        <D.48486>:
      }
      goto <D.48487>;
      <D.48472>:
      <D.48487>:
      <D.48470>:
      D.48394 = cfg->mempool;
      inst = mono_mempool_alloc (D.48394, 56);
      inst->data.op[1].const_val = 0;
      D.48488 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48488;
      inst->prev = 0B;
      D.48489 = inst->prev;
      inst->next = D.48489;
      inst->opcode = 393;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48490 = inst->sreg3;
      inst->sreg2 = D.48490;
      D.48491 = inst->sreg2;
      inst->sreg1 = D.48491;
      D.48399 = cfg->ip;
      inst->cil_code = D.48399;
      inst->dreg = _length_reg;
      inst->sreg1 = array_reg;
      inst->data.op[0].const_val = 12;
      inst->type = 1;
      D.48492 = (unsigned char) __ins_flags;
      inst->flags = D.48492;
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      if (D.48401 != 0B) goto <D.48493>; else goto <D.48494>;
      <D.48493>:
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      D.48401->next = inst;
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      inst->prev = D.48401;
      D.48400 = cfg->cbb;
      D.48400->last_ins = inst;
      goto <D.48495>;
      <D.48494>:
      D.48400 = cfg->cbb;
      D.48400 = cfg->cbb;
      D.48400->last_ins = inst;
      D.48401 = D.48400->last_ins;
      D.48400->code = D.48401;
      <D.48495>:
    }
    <D.48467>:
    {
      struct MonoInst * inst;

      D.48394 = cfg->mempool;
      inst = mono_mempool_alloc (D.48394, 56);
      inst->data.op[1].const_val = 0;
      D.48496 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48496;
      inst->prev = 0B;
      D.48497 = inst->prev;
      inst->next = D.48497;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48498 = inst->sreg3;
      inst->sreg2 = D.48498;
      D.48499 = inst->sreg2;
      inst->sreg1 = D.48499;
      D.48399 = cfg->ip;
      inst->cil_code = D.48399;
      inst->dreg = -1;
      inst->sreg1 = _length_reg;
      inst->sreg2 = index2_reg;
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      if (D.48401 != 0B) goto <D.48500>; else goto <D.48501>;
      <D.48500>:
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      D.48401->next = inst;
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      inst->prev = D.48401;
      D.48400 = cfg->cbb;
      D.48400->last_ins = inst;
      goto <D.48502>;
      <D.48501>:
      D.48400 = cfg->cbb;
      D.48400 = cfg->cbb;
      D.48400->last_ins = inst;
      D.48401 = D.48400->last_ins;
      D.48400->code = D.48401;
      <D.48502>:
    }
    {
      struct MonoInst * inst;

      D.48394 = cfg->mempool;
      inst = mono_mempool_alloc (D.48394, 56);
      inst->data.op[1].const_val = 0;
      D.48503 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48503;
      inst->prev = 0B;
      D.48504 = inst->prev;
      inst->next = D.48504;
      inst->opcode = 459;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48505 = inst->sreg3;
      inst->sreg2 = D.48505;
      D.48506 = inst->sreg2;
      inst->sreg1 = D.48506;
      D.48399 = cfg->ip;
      inst->cil_code = D.48399;
      inst->data.op[1].p = "IndexOutOfRangeException";
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      if (D.48401 != 0B) goto <D.48507>; else goto <D.48508>;
      <D.48507>:
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      D.48401->next = inst;
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      inst->prev = D.48401;
      D.48400 = cfg->cbb;
      D.48400->last_ins = inst;
      goto <D.48509>;
      <D.48508>:
      D.48400 = cfg->cbb;
      D.48400 = cfg->cbb;
      D.48400->last_ins = inst;
      D.48401 = D.48400->last_ins;
      D.48400->code = D.48401;
      <D.48509>:
    }
  }
  goto <D.48510>;
  <D.48435>:
  {
    int _length_reg;

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

      __ins_flags = 32;
      D.48514 = __ins_flags & 32;
      if (D.48514 != 0) goto <D.48515>; else goto <D.48516>;
      <D.48515>:
      D.48415 = BIT_FIELD_REF <*cfg, 32, 3424>;
      D.48416 = D.48415 & 64;
      if (D.48416 != 0) goto <D.48517>; else goto <D.48518>;
      <D.48517>:
      {
        struct MonoInst * inst;

        D.48394 = cfg->mempool;
        inst = mono_mempool_alloc (D.48394, 56);
        inst->data.op[1].const_val = 0;
        D.48519 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48519;
        inst->prev = 0B;
        D.48520 = inst->prev;
        inst->next = D.48520;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48521 = inst->sreg3;
        inst->sreg2 = D.48521;
        D.48522 = inst->sreg2;
        inst->sreg1 = D.48522;
        D.48399 = cfg->ip;
        inst->cil_code = D.48399;
        inst->dreg = -1;
        inst->sreg1 = array_reg;
        inst->data.op[1].const_val = 0;
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        if (D.48401 != 0B) goto <D.48523>; else goto <D.48524>;
        <D.48523>:
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        D.48401->next = inst;
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        inst->prev = D.48401;
        D.48400 = cfg->cbb;
        D.48400->last_ins = inst;
        goto <D.48525>;
        <D.48524>:
        D.48400 = cfg->cbb;
        D.48400 = cfg->cbb;
        D.48400->last_ins = inst;
        D.48401 = D.48400->last_ins;
        D.48400->code = D.48401;
        <D.48525>:
      }
      {
        struct MonoInst * inst;

        D.48394 = cfg->mempool;
        inst = mono_mempool_alloc (D.48394, 56);
        inst->data.op[1].const_val = 0;
        D.48526 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48526;
        inst->prev = 0B;
        D.48527 = inst->prev;
        inst->next = D.48527;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48528 = inst->sreg3;
        inst->sreg2 = D.48528;
        D.48529 = inst->sreg2;
        inst->sreg1 = D.48529;
        D.48399 = cfg->ip;
        inst->cil_code = D.48399;
        inst->data.op[1].p = "NullReferenceException";
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        if (D.48401 != 0B) goto <D.48530>; else goto <D.48531>;
        <D.48530>:
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        D.48401->next = inst;
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        inst->prev = D.48401;
        D.48400 = cfg->cbb;
        D.48400->last_ins = inst;
        goto <D.48532>;
        <D.48531>:
        D.48400 = cfg->cbb;
        D.48400 = cfg->cbb;
        D.48400->last_ins = inst;
        D.48401 = D.48400->last_ins;
        D.48400->code = D.48401;
        <D.48532>:
      }
      goto <D.48533>;
      <D.48518>:
      <D.48533>:
      <D.48516>:
      D.48394 = cfg->mempool;
      inst = mono_mempool_alloc (D.48394, 56);
      inst->data.op[1].const_val = 0;
      D.48534 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48534;
      inst->prev = 0B;
      D.48535 = inst->prev;
      inst->next = D.48535;
      inst->opcode = 393;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48536 = inst->sreg3;
      inst->sreg2 = D.48536;
      D.48537 = inst->sreg2;
      inst->sreg1 = D.48537;
      D.48399 = cfg->ip;
      inst->cil_code = D.48399;
      inst->dreg = _length_reg;
      inst->sreg1 = array_reg;
      inst->data.op[0].const_val = 12;
      inst->type = 1;
      D.48538 = (unsigned char) __ins_flags;
      inst->flags = D.48538;
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      if (D.48401 != 0B) goto <D.48539>; else goto <D.48540>;
      <D.48539>:
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      D.48401->next = inst;
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      inst->prev = D.48401;
      D.48400 = cfg->cbb;
      D.48400->last_ins = inst;
      goto <D.48541>;
      <D.48540>:
      D.48400 = cfg->cbb;
      D.48400 = cfg->cbb;
      D.48400->last_ins = inst;
      D.48401 = D.48400->last_ins;
      D.48400->code = D.48401;
      <D.48541>:
    }
    goto <D.48542>;
    <D.48513>:
    {
      struct MonoInst * inst;
      int __ins_flags;

      __ins_flags = 64;
      D.48543 = __ins_flags & 32;
      if (D.48543 != 0) goto <D.48544>; else goto <D.48545>;
      <D.48544>:
      D.48415 = BIT_FIELD_REF <*cfg, 32, 3424>;
      D.48416 = D.48415 & 64;
      if (D.48416 != 0) goto <D.48546>; else goto <D.48547>;
      <D.48546>:
      {
        struct MonoInst * inst;

        D.48394 = cfg->mempool;
        inst = mono_mempool_alloc (D.48394, 56);
        inst->data.op[1].const_val = 0;
        D.48548 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48548;
        inst->prev = 0B;
        D.48549 = inst->prev;
        inst->next = D.48549;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48550 = inst->sreg3;
        inst->sreg2 = D.48550;
        D.48551 = inst->sreg2;
        inst->sreg1 = D.48551;
        D.48399 = cfg->ip;
        inst->cil_code = D.48399;
        inst->dreg = -1;
        inst->sreg1 = array_reg;
        inst->data.op[1].const_val = 0;
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        if (D.48401 != 0B) goto <D.48552>; else goto <D.48553>;
        <D.48552>:
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        D.48401->next = inst;
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        inst->prev = D.48401;
        D.48400 = cfg->cbb;
        D.48400->last_ins = inst;
        goto <D.48554>;
        <D.48553>:
        D.48400 = cfg->cbb;
        D.48400 = cfg->cbb;
        D.48400->last_ins = inst;
        D.48401 = D.48400->last_ins;
        D.48400->code = D.48401;
        <D.48554>:
      }
      {
        struct MonoInst * inst;

        D.48394 = cfg->mempool;
        inst = mono_mempool_alloc (D.48394, 56);
        inst->data.op[1].const_val = 0;
        D.48555 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48555;
        inst->prev = 0B;
        D.48556 = inst->prev;
        inst->next = D.48556;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48557 = inst->sreg3;
        inst->sreg2 = D.48557;
        D.48558 = inst->sreg2;
        inst->sreg1 = D.48558;
        D.48399 = cfg->ip;
        inst->cil_code = D.48399;
        inst->data.op[1].p = "NullReferenceException";
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        if (D.48401 != 0B) goto <D.48559>; else goto <D.48560>;
        <D.48559>:
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        D.48401->next = inst;
        D.48400 = cfg->cbb;
        D.48401 = D.48400->last_ins;
        inst->prev = D.48401;
        D.48400 = cfg->cbb;
        D.48400->last_ins = inst;
        goto <D.48561>;
        <D.48560>:
        D.48400 = cfg->cbb;
        D.48400 = cfg->cbb;
        D.48400->last_ins = inst;
        D.48401 = D.48400->last_ins;
        D.48400->code = D.48401;
        <D.48561>:
      }
      goto <D.48562>;
      <D.48547>:
      <D.48562>:
      <D.48545>:
      D.48394 = cfg->mempool;
      inst = mono_mempool_alloc (D.48394, 56);
      inst->data.op[1].const_val = 0;
      D.48563 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48563;
      inst->prev = 0B;
      D.48564 = inst->prev;
      inst->next = D.48564;
      inst->opcode = 393;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48565 = inst->sreg3;
      inst->sreg2 = D.48565;
      D.48566 = inst->sreg2;
      inst->sreg1 = D.48566;
      D.48399 = cfg->ip;
      inst->cil_code = D.48399;
      inst->dreg = _length_reg;
      inst->sreg1 = array_reg;
      inst->data.op[0].const_val = 12;
      inst->type = 1;
      D.48567 = (unsigned char) __ins_flags;
      inst->flags = D.48567;
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      if (D.48401 != 0B) goto <D.48568>; else goto <D.48569>;
      <D.48568>:
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      D.48401->next = inst;
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      inst->prev = D.48401;
      D.48400 = cfg->cbb;
      D.48400->last_ins = inst;
      goto <D.48570>;
      <D.48569>:
      D.48400 = cfg->cbb;
      D.48400 = cfg->cbb;
      D.48400->last_ins = inst;
      D.48401 = D.48400->last_ins;
      D.48400->code = D.48401;
      <D.48570>:
    }
    <D.48542>:
    {
      struct MonoInst * inst;

      D.48394 = cfg->mempool;
      inst = mono_mempool_alloc (D.48394, 56);
      inst->data.op[1].const_val = 0;
      D.48571 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48571;
      inst->prev = 0B;
      D.48572 = inst->prev;
      inst->next = D.48572;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48573 = inst->sreg3;
      inst->sreg2 = D.48573;
      D.48574 = inst->sreg2;
      inst->sreg1 = D.48574;
      D.48399 = cfg->ip;
      inst->cil_code = D.48399;
      inst->dreg = -1;
      inst->sreg1 = _length_reg;
      inst->sreg2 = index2_reg;
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      if (D.48401 != 0B) goto <D.48575>; else goto <D.48576>;
      <D.48575>:
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      D.48401->next = inst;
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      inst->prev = D.48401;
      D.48400 = cfg->cbb;
      D.48400->last_ins = inst;
      goto <D.48577>;
      <D.48576>:
      D.48400 = cfg->cbb;
      D.48400 = cfg->cbb;
      D.48400->last_ins = inst;
      D.48401 = D.48400->last_ins;
      D.48400->code = D.48401;
      <D.48577>:
    }
    {
      struct MonoInst * inst;

      D.48394 = cfg->mempool;
      inst = mono_mempool_alloc (D.48394, 56);
      inst->data.op[1].const_val = 0;
      D.48578 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48578;
      inst->prev = 0B;
      D.48579 = inst->prev;
      inst->next = D.48579;
      inst->opcode = 459;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48580 = inst->sreg3;
      inst->sreg2 = D.48580;
      D.48581 = inst->sreg2;
      inst->sreg1 = D.48581;
      D.48399 = cfg->ip;
      inst->cil_code = D.48399;
      inst->data.op[1].p = "IndexOutOfRangeException";
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      if (D.48401 != 0B) goto <D.48582>; else goto <D.48583>;
      <D.48582>:
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      D.48401->next = inst;
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      inst->prev = D.48401;
      D.48400 = cfg->cbb;
      D.48400->last_ins = inst;
      goto <D.48584>;
      <D.48583>:
      D.48400 = cfg->cbb;
      D.48400 = cfg->cbb;
      D.48400->last_ins = inst;
      D.48401 = D.48400->last_ins;
      D.48400->code = D.48401;
      <D.48584>:
    }
  }
  <D.48510>:
  goto <D.48585>;
  <D.48414>:
  {
    struct MonoInst * ins;

    D.48394 = cfg->mempool;
    ins = mono_mempool_alloc (D.48394, 56);
    ins->data.op[1].const_val = 0;
    D.48586 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.48586;
    ins->prev = 0B;
    D.48587 = ins->prev;
    ins->next = D.48587;
    ins->opcode = 784;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.48588 = ins->sreg3;
    ins->sreg2 = D.48588;
    D.48589 = ins->sreg2;
    ins->sreg1 = D.48589;
    D.48399 = cfg->ip;
    ins->cil_code = D.48399;
    ins->sreg1 = array_reg;
    ins->sreg2 = index2_reg;
    ins->data.op[1].const_val = 12;
    D.48590 = ins->flags;
    D.48591 = D.48590 | 32;
    ins->flags = D.48591;
    D.48400 = cfg->cbb;
    D.48401 = D.48400->last_ins;
    if (D.48401 != 0B) goto <D.48592>; else goto <D.48593>;
    <D.48592>:
    D.48400 = cfg->cbb;
    D.48401 = D.48400->last_ins;
    D.48401->next = ins;
    D.48400 = cfg->cbb;
    D.48401 = D.48400->last_ins;
    ins->prev = D.48401;
    D.48400 = cfg->cbb;
    D.48400->last_ins = ins;
    goto <D.48594>;
    <D.48593>:
    D.48400 = cfg->cbb;
    D.48400 = cfg->cbb;
    D.48400->last_ins = ins;
    D.48401 = D.48400->last_ins;
    D.48400->code = D.48401;
    <D.48594>:
    D.48595 = cfg->flags;
    D.48596 = D.48595 | 256;
    cfg->flags = D.48596;
    D.48400 = cfg->cbb;
    D.48400->has_array_access = 1;
  }
  <D.48585>:
  <D.48411>:
  <D.48407>:
  D.48597 = alloc_ireg_mp (cfg);
  add_reg = (int) D.48597;
  if (size == 4294967295) goto <D.48598>; else goto <D.48599>;
  <D.48598>:
  {
    struct MonoInst * rgctx_ins;

    D.48600 = cfg->generic_sharing_context;
    D.48601 = D.48600 == 0B;
    D.48602 = (long int) D.48601;
    D.48603 = __builtin_expect (D.48602, 0);
    if (D.48603 != 0) goto <D.48604>; else goto <D.48605>;
    <D.48604>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4718, "cfg->generic_sharing_context");
    <D.48605>:
    context_used = mini_class_check_context_used (cfg, klass);
    D.48606 = context_used == 0;
    D.48607 = (long int) D.48606;
    D.48608 = __builtin_expect (D.48607, 0);
    if (D.48608 != 0) goto <D.48609>; else goto <D.48610>;
    <D.48609>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4720, "context_used");
    <D.48610>:
    D.48611 = &klass->byval_arg;
    rgctx_ins = emit_get_gsharedvt_info (cfg, D.48611, 13);
    {
      struct MonoInst * inst;

      D.48394 = cfg->mempool;
      inst = mono_mempool_alloc (D.48394, 56);
      inst->data.op[1].const_val = 0;
      D.48612 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48612;
      inst->prev = 0B;
      D.48613 = inst->prev;
      inst->next = D.48613;
      inst->opcode = 567;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48614 = inst->sreg3;
      inst->sreg2 = D.48614;
      D.48615 = inst->sreg2;
      inst->sreg1 = D.48615;
      D.48399 = cfg->ip;
      inst->cil_code = D.48399;
      inst->dreg = mult_reg;
      inst->sreg1 = index2_reg;
      D.48616 = rgctx_ins->dreg;
      inst->sreg2 = D.48616;
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      if (D.48401 != 0B) goto <D.48617>; else goto <D.48618>;
      <D.48617>:
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      D.48401->next = inst;
      D.48400 = cfg->cbb;
      D.48401 = D.48400->last_ins;
      inst->prev = D.48401;
      D.48400 = cfg->cbb;
      D.48400->last_ins = inst;
      goto <D.48619>;
      <D.48618>:
      D.48400 = cfg->cbb;
      D.48400 = cfg->cbb;
      D.48400->last_ins = inst;
      D.48401 = D.48400->last_ins;
      D.48400->code = D.48401;
      <D.48619>:
    }
  }
  goto <D.48620>;
  <D.48599>:
  {
    struct MonoInst * inst;

    D.48394 = cfg->mempool;
    inst = mono_mempool_alloc (D.48394, 56);
    inst->data.op[1].const_val = 0;
    D.48621 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48621;
    inst->prev = 0B;
    D.48622 = inst->prev;
    inst->next = D.48622;
    inst->opcode = 431;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48623 = inst->sreg3;
    inst->sreg2 = D.48623;
    D.48624 = inst->sreg2;
    inst->sreg1 = D.48624;
    D.48399 = cfg->ip;
    inst->cil_code = D.48399;
    inst->dreg = mult_reg;
    inst->sreg1 = index2_reg;
    size.549 = (int) size;
    inst->data.op[1].const_val = size.549;
    D.48400 = cfg->cbb;
    D.48401 = D.48400->last_ins;
    if (D.48401 != 0B) goto <D.48626>; else goto <D.48627>;
    <D.48626>:
    D.48400 = cfg->cbb;
    D.48401 = D.48400->last_ins;
    D.48401->next = inst;
    D.48400 = cfg->cbb;
    D.48401 = D.48400->last_ins;
    inst->prev = D.48401;
    D.48400 = cfg->cbb;
    D.48400->last_ins = inst;
    goto <D.48628>;
    <D.48627>:
    D.48400 = cfg->cbb;
    D.48400 = cfg->cbb;
    D.48400->last_ins = inst;
    D.48401 = D.48400->last_ins;
    D.48400->code = D.48401;
    <D.48628>:
  }
  <D.48620>:
  {
    struct MonoInst * inst;

    D.48394 = cfg->mempool;
    inst = mono_mempool_alloc (D.48394, 56);
    inst->data.op[1].const_val = 0;
    D.48629 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48629;
    inst->prev = 0B;
    D.48630 = inst->prev;
    inst->next = D.48630;
    inst->opcode = 565;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48631 = inst->sreg3;
    inst->sreg2 = D.48631;
    D.48632 = inst->sreg2;
    inst->sreg1 = D.48632;
    D.48399 = cfg->ip;
    inst->cil_code = D.48399;
    inst->dreg = add_reg;
    inst->sreg1 = array_reg;
    inst->sreg2 = mult_reg;
    D.48400 = cfg->cbb;
    D.48401 = D.48400->last_ins;
    if (D.48401 != 0B) goto <D.48633>; else goto <D.48634>;
    <D.48633>:
    D.48400 = cfg->cbb;
    D.48401 = D.48400->last_ins;
    D.48401->next = inst;
    D.48400 = cfg->cbb;
    D.48401 = D.48400->last_ins;
    inst->prev = D.48401;
    D.48400 = cfg->cbb;
    D.48400->last_ins = inst;
    goto <D.48635>;
    <D.48634>:
    D.48400 = cfg->cbb;
    D.48400 = cfg->cbb;
    D.48400->last_ins = inst;
    D.48401 = D.48400->last_ins;
    D.48400->code = D.48401;
    <D.48635>:
  }
  D.48394 = cfg->mempool;
  ins = mono_mempool_alloc (D.48394, 56);
  ins->data.op[1].const_val = 0;
  D.48636 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.48636;
  ins->prev = 0B;
  D.48637 = ins->prev;
  ins->next = D.48637;
  ins->opcode = 625;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.48638 = ins->sreg3;
  ins->sreg2 = D.48638;
  D.48639 = ins->sreg2;
  ins->sreg1 = D.48639;
  D.48399 = cfg->ip;
  ins->cil_code = D.48399;
  ins->dreg = add_reg;
  ins->sreg1 = add_reg;
  ins->data.op[1].const_val = 16;
  D.48640 = mono_class_get_element_class (klass);
  ins->klass = D.48640;
  ins->type = 5;
  D.48400 = cfg->cbb;
  D.48401 = D.48400->last_ins;
  if (D.48401 != 0B) goto <D.48641>; else goto <D.48642>;
  <D.48641>:
  D.48400 = cfg->cbb;
  D.48401 = D.48400->last_ins;
  D.48401->next = ins;
  D.48400 = cfg->cbb;
  D.48401 = D.48400->last_ins;
  ins->prev = D.48401;
  D.48400 = cfg->cbb;
  D.48400->last_ins = ins;
  goto <D.48643>;
  <D.48642>:
  D.48400 = cfg->cbb;
  D.48400 = cfg->cbb;
  D.48400->last_ins = ins;
  D.48401 = D.48400->last_ins;
  D.48400->code = D.48401;
  <D.48643>:
  D.48644 = ins;
  return D.48644;
}


array_access_to_klass (int opcode)
{
  struct MonoClass * D.48646;

  switch (opcode) <default: <D.24393>, case 144: <D.24378>, case 145: <D.24374>, case 146: <D.24380>, case 147: <D.24375>, case 148: <D.24382>, case 149: <D.24384>, case 150: <D.24385>, case 151: <D.24376>, case 152: <D.24387>, case 153: <D.24389>, case 154: <D.24391>, case 155: <D.24377>, case 156: <D.24379>, case 157: <D.24381>, case 158: <D.24383>, case 159: <D.24386>, case 160: <D.24388>, case 161: <D.24390>, case 162: <D.24392>>
  <D.24374>:
  D.48646 = mono_defaults.byte_class;
  return D.48646;
  <D.24375>:
  D.48646 = mono_defaults.uint16_class;
  return D.48646;
  <D.24376>:
  <D.24377>:
  D.48646 = mono_defaults.int_class;
  return D.48646;
  <D.24378>:
  <D.24379>:
  D.48646 = mono_defaults.sbyte_class;
  return D.48646;
  <D.24380>:
  <D.24381>:
  D.48646 = mono_defaults.int16_class;
  return D.48646;
  <D.24382>:
  <D.24383>:
  D.48646 = mono_defaults.int32_class;
  return D.48646;
  <D.24384>:
  D.48646 = mono_defaults.uint32_class;
  return D.48646;
  <D.24385>:
  <D.24386>:
  D.48646 = mono_defaults.int64_class;
  return D.48646;
  <D.24387>:
  <D.24388>:
  D.48646 = mono_defaults.single_class;
  return D.48646;
  <D.24389>:
  <D.24390>:
  D.48646 = mono_defaults.double_class;
  return D.48646;
  <D.24391>:
  <D.24392>:
  D.48646 = mono_defaults.object_class;
  return D.48646;
  <D.24393>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 1271);
  D.48646 = 0B;
  return D.48646;
}


emit_array_store (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * * sp, gboolean safety_checks)
{
  int D.48651;
  struct MonoInst * * D.48653;
  struct MonoInst * D.48654;
  short unsigned int D.48655;
  void * D.48657;
  struct MonoClass * obj_array.552;
  struct MonoClass * tmp_klass.550;
  struct MonoClass * D.48661;
  struct MonoClass * tmp_klass.551;
  _Bool D.48663;
  long int D.48664;
  long int D.48665;
  short int D.48668;
  _Bool D.48671;
  long int D.48672;
  long int D.48673;
  struct MonoInst * D.48676;
  unsigned char D.48677;
  struct MonoInst * D.48680;
  unsigned char D.48681;
  struct MonoInst * D.48684;
  struct MonoInst * D.48685;
  int D.48686;
  struct MonoInst * * D.48689;
  struct MonoInst * D.48690;
  struct MonoMemPool * D.48691;
  int D.48692;
  struct MonoInst * D.48693;
  struct MonoType * D.48694;
  unsigned int D.48695;
  short unsigned int D.48696;
  int D.48697;
  int D.48698;
  const unsigned char * D.48699;
  int D.48700;
  int D.48701;
  struct MonoClass * D.48702;
  struct MonoBasicBlock * D.48703;
  struct MonoInst * D.48704;
  short unsigned int D.48709;
  int D.48712;
  int D.48713;
  int D.48714;
  unsigned int D.48715;
  unsigned int D.48716;
  unsigned int D.48719;
  unsigned int D.48720;
  unsigned int D.48723;
  unsigned int D.48726;
  unsigned int D.48727;
  int D.48730;
  struct MonoInst * D.48731;
  int D.48732;
  int D.48733;
  int D.48737;
  struct MonoInst * D.48738;
  int D.48739;
  int D.48740;
  unsigned int D.48747;
  int D.48750;
  int D.48755;
  struct MonoInst * D.48756;
  int D.48757;
  int D.48758;
  int D.48762;
  struct MonoInst * D.48763;
  int D.48764;
  int D.48765;
  int D.48770;
  struct MonoInst * D.48771;
  int D.48772;
  int D.48773;
  unsigned char D.48774;
  int D.48779;
  int D.48784;
  struct MonoInst * D.48785;
  int D.48786;
  int D.48787;
  int D.48791;
  struct MonoInst * D.48792;
  int D.48793;
  int D.48794;
  int D.48799;
  struct MonoInst * D.48800;
  int D.48801;
  int D.48802;
  unsigned char D.48803;
  int D.48807;
  struct MonoInst * D.48808;
  int D.48809;
  int D.48810;
  int D.48814;
  struct MonoInst * D.48815;
  int D.48816;
  int D.48817;
  unsigned int D.48822;
  int D.48825;
  int D.48830;
  struct MonoInst * D.48831;
  int D.48832;
  int D.48833;
  int D.48837;
  struct MonoInst * D.48838;
  int D.48839;
  int D.48840;
  int D.48845;
  struct MonoInst * D.48846;
  int D.48847;
  int D.48848;
  unsigned char D.48849;
  int D.48854;
  int D.48859;
  struct MonoInst * D.48860;
  int D.48861;
  int D.48862;
  int D.48866;
  struct MonoInst * D.48867;
  int D.48868;
  int D.48869;
  int D.48874;
  struct MonoInst * D.48875;
  int D.48876;
  int D.48877;
  unsigned char D.48878;
  int D.48882;
  struct MonoInst * D.48883;
  int D.48884;
  int D.48885;
  int D.48889;
  struct MonoInst * D.48890;
  int D.48891;
  int D.48892;
  int D.48897;
  struct MonoInst * D.48898;
  int D.48899;
  int D.48900;
  unsigned char D.48901;
  unsigned char D.48902;
  unsigned int D.48906;
  unsigned int D.48907;
  unsigned int D.48908;
  short unsigned int D.48909;
  struct MonoClass * D.48910;
  unsigned int D.48915;
  short unsigned int D.48916;
  int D.48917;
  struct MonoClass * D.48918;
  int D.48922;

  if (safety_checks != 0) goto <D.48650>; else goto <D.48648>;
  <D.48650>:
  D.48651 = generic_class_is_reference_type (cfg, klass);
  if (D.48651 != 0) goto <D.48652>; else goto <D.48648>;
  <D.48652>:
  D.48653 = sp + 8;
  D.48654 = *D.48653;
  D.48655 = D.48654->opcode;
  if (D.48655 != 362) goto <D.48649>; else goto <D.48656>;
  <D.48656>:
  D.48653 = sp + 8;
  D.48654 = *D.48653;
  D.48657 = D.48654->data.op[0].p;
  if (D.48657 != 0B) goto <D.48649>; else goto <D.48648>;
  <D.48649>:
  {
    struct MonoClass * obj_array;
    struct MonoMethod * helper;
    struct MonoInst * iargs[3];

    try
      {
        {
          static struct MonoClass * tmp_klass;

          {
            tmp_klass.550 = tmp_klass;
            if (tmp_klass.550 == 0B) goto <D.48659>; else goto <D.48660>;
            <D.48659>:
            D.48661 = mono_defaults.object_class;
            tmp_klass.551 = mono_array_class_get (D.48661, 1);
            tmp_klass = tmp_klass.551;
            tmp_klass.550 = tmp_klass;
            D.48663 = tmp_klass.550 == 0B;
            D.48664 = (long int) D.48663;
            D.48665 = __builtin_expect (D.48664, 0);
            if (D.48665 != 0) goto <D.48666>; else goto <D.48667>;
            <D.48666>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4919, "tmp_klass");
            <D.48667>:
            <D.48660>:
          }
          obj_array.552 = tmp_klass;
        }
        obj_array = obj_array.552;
        helper = mono_marshal_get_virtual_stelemref (obj_array);
        D.48668 = helper->slot;
        if (D.48668 == 0) goto <D.48669>; else goto <D.48670>;
        <D.48669>:
        mono_class_setup_vtable (obj_array);
        <D.48670>:
        D.48668 = helper->slot;
        D.48671 = D.48668 == 0;
        D.48672 = (long int) D.48671;
        D.48673 = __builtin_expect (D.48672, 0);
        if (D.48673 != 0) goto <D.48674>; else goto <D.48675>;
        <D.48674>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4925, "helper->slot");
        <D.48675>:
        D.48676 = *sp;
        D.48677 = D.48676->type;
        if (D.48677 != 6) goto <D.48678>; else goto <D.48679>;
        <D.48678>:
        D.48680 = 0B;
        return D.48680;
        <D.48679>:
        D.48653 = sp + 8;
        D.48654 = *D.48653;
        D.48681 = D.48654->type;
        if (D.48681 != 6) goto <D.48682>; else goto <D.48683>;
        <D.48682>:
        D.48680 = 0B;
        return D.48680;
        <D.48683>:
        D.48684 = MEM[(struct MonoInst * *)sp + 8B];
        iargs[2] = D.48684;
        D.48685 = MEM[(struct MonoInst * *)sp + 4B];
        iargs[1] = D.48685;
        D.48676 = *sp;
        iargs[0] = D.48676;
        D.48676 = *sp;
        D.48680 = mono_emit_method_call (cfg, helper, &iargs, D.48676);
        return D.48680;
      }
    finally
      {
        iargs = {CLOBBER};
      }
  }
  <D.48648>:
  {
    struct MonoInst * ins;

    D.48686 = mini_is_gsharedvt_variable_klass (cfg, klass);
    if (D.48686 != 0) goto <D.48687>; else goto <D.48688>;
    <D.48687>:
    {
      struct MonoInst * addr;

      D.48676 = *sp;
      D.48689 = sp + 4;
      D.48690 = *D.48689;
      addr = mini_emit_ldelema_1_ins (cfg, klass, D.48676, D.48690, 1);
      D.48691 = cfg->mempool;
      ins = mono_mempool_alloc (D.48691, 56);
      ins->data.op[1].const_val = 0;
      D.48692 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.48692;
      ins->prev = 0B;
      D.48693 = ins->prev;
      ins->next = D.48693;
      D.48694 = &klass->byval_arg;
      D.48695 = mono_type_to_store_membase (cfg, D.48694);
      D.48696 = (short unsigned int) D.48695;
      ins->opcode = D.48696;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.48697 = ins->sreg3;
      ins->sreg2 = D.48697;
      D.48698 = ins->sreg2;
      ins->sreg1 = D.48698;
      D.48699 = cfg->ip;
      ins->cil_code = D.48699;
      D.48653 = sp + 8;
      D.48654 = *D.48653;
      D.48700 = D.48654->dreg;
      ins->sreg1 = D.48700;
      D.48701 = addr->dreg;
      ins->dreg = D.48701;
      ins->data.op[0].const_val = 0;
      D.48694 = &klass->byval_arg;
      type_to_eval_stack_type (cfg, D.48694, ins);
      D.48694 = &klass->byval_arg;
      D.48702 = mono_class_from_mono_type (D.48694);
      ins->klass = D.48702;
      D.48703 = cfg->cbb;
      D.48704 = D.48703->last_ins;
      if (D.48704 != 0B) goto <D.48705>; else goto <D.48706>;
      <D.48705>:
      D.48703 = cfg->cbb;
      D.48704 = D.48703->last_ins;
      D.48704->next = ins;
      D.48703 = cfg->cbb;
      D.48704 = D.48703->last_ins;
      ins->prev = D.48704;
      D.48703 = cfg->cbb;
      D.48703->last_ins = ins;
      goto <D.48707>;
      <D.48706>:
      D.48703 = cfg->cbb;
      D.48703 = cfg->cbb;
      D.48703->last_ins = ins;
      D.48704 = D.48703->last_ins;
      D.48703->code = D.48704;
      <D.48707>:
      ins->opcode = 387;
    }
    goto <D.48708>;
    <D.48688>:
    D.48689 = sp + 4;
    D.48690 = *D.48689;
    D.48709 = D.48690->opcode;
    if (D.48709 == 362) goto <D.48710>; else goto <D.48711>;
    <D.48710>:
    {
      int array_reg;
      int index_reg;
      int offset;

      D.48676 = *sp;
      array_reg = D.48676->dreg;
      D.48689 = sp + 4;
      D.48690 = *D.48689;
      index_reg = D.48690->dreg;
      D.48712 = mono_class_array_element_size (klass);
      D.48689 = sp + 4;
      D.48690 = *D.48689;
      D.48713 = D.48690->data.op[0].const_val;
      D.48714 = D.48712 * D.48713;
      D.48715 = (unsigned int) D.48714;
      D.48716 = D.48715 + 16;
      offset = (int) D.48716;
      if (safety_checks != 0) goto <D.48717>; else goto <D.48718>;
      <D.48717>:
      D.48719 = cfg->opt;
      D.48720 = D.48719 & 134217728;
      if (D.48720 == 0) goto <D.48721>; else goto <D.48722>;
      <D.48721>:
      D.48719 = cfg->opt;
      D.48723 = D.48719 & 262144;
      if (D.48723 == 0) goto <D.48724>; else goto <D.48725>;
      <D.48724>:
      D.48726 = BIT_FIELD_REF <*cfg, 32, 3424>;
      D.48727 = D.48726 & 64;
      if (D.48727 != 0) goto <D.48728>; else goto <D.48729>;
      <D.48728>:
      {
        struct MonoInst * inst;

        D.48691 = cfg->mempool;
        inst = mono_mempool_alloc (D.48691, 56);
        inst->data.op[1].const_val = 0;
        D.48730 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48730;
        inst->prev = 0B;
        D.48731 = inst->prev;
        inst->next = D.48731;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48732 = inst->sreg3;
        inst->sreg2 = D.48732;
        D.48733 = inst->sreg2;
        inst->sreg1 = D.48733;
        D.48699 = cfg->ip;
        inst->cil_code = D.48699;
        inst->dreg = -1;
        inst->sreg1 = array_reg;
        inst->data.op[1].const_val = 0;
        D.48703 = cfg->cbb;
        D.48704 = D.48703->last_ins;
        if (D.48704 != 0B) goto <D.48734>; else goto <D.48735>;
        <D.48734>:
        D.48703 = cfg->cbb;
        D.48704 = D.48703->last_ins;
        D.48704->next = inst;
        D.48703 = cfg->cbb;
        D.48704 = D.48703->last_ins;
        inst->prev = D.48704;
        D.48703 = cfg->cbb;
        D.48703->last_ins = inst;
        goto <D.48736>;
        <D.48735>:
        D.48703 = cfg->cbb;
        D.48703 = cfg->cbb;
        D.48703->last_ins = inst;
        D.48704 = D.48703->last_ins;
        D.48703->code = D.48704;
        <D.48736>:
      }
      {
        struct MonoInst * inst;

        D.48691 = cfg->mempool;
        inst = mono_mempool_alloc (D.48691, 56);
        inst->data.op[1].const_val = 0;
        D.48737 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48737;
        inst->prev = 0B;
        D.48738 = inst->prev;
        inst->next = D.48738;
        inst->opcode = 451;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48739 = inst->sreg3;
        inst->sreg2 = D.48739;
        D.48740 = inst->sreg2;
        inst->sreg1 = D.48740;
        D.48699 = cfg->ip;
        inst->cil_code = D.48699;
        inst->data.op[1].p = "NullReferenceException";
        D.48703 = cfg->cbb;
        D.48704 = D.48703->last_ins;
        if (D.48704 != 0B) goto <D.48741>; else goto <D.48742>;
        <D.48741>:
        D.48703 = cfg->cbb;
        D.48704 = D.48703->last_ins;
        D.48704->next = inst;
        D.48703 = cfg->cbb;
        D.48704 = D.48703->last_ins;
        inst->prev = D.48704;
        D.48703 = cfg->cbb;
        D.48703->last_ins = inst;
        goto <D.48743>;
        <D.48742>:
        D.48703 = cfg->cbb;
        D.48703 = cfg->cbb;
        D.48703->last_ins = inst;
        D.48704 = D.48703->last_ins;
        D.48703->code = D.48704;
        <D.48743>:
      }
      goto <D.48744>;
      <D.48729>:
      <D.48744>:
      if (0 != 0) goto <D.48745>; else goto <D.48746>;
      <D.48745>:
      {
        int _length_reg;

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

          __ins_flags = 32;
          D.48750 = __ins_flags & 32;
          if (D.48750 != 0) goto <D.48751>; else goto <D.48752>;
          <D.48751>:
          D.48726 = BIT_FIELD_REF <*cfg, 32, 3424>;
          D.48727 = D.48726 & 64;
          if (D.48727 != 0) goto <D.48753>; else goto <D.48754>;
          <D.48753>:
          {
            struct MonoInst * inst;

            D.48691 = cfg->mempool;
            inst = mono_mempool_alloc (D.48691, 56);
            inst->data.op[1].const_val = 0;
            D.48755 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.48755;
            inst->prev = 0B;
            D.48756 = inst->prev;
            inst->next = D.48756;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.48757 = inst->sreg3;
            inst->sreg2 = D.48757;
            D.48758 = inst->sreg2;
            inst->sreg1 = D.48758;
            D.48699 = cfg->ip;
            inst->cil_code = D.48699;
            inst->dreg = -1;
            inst->sreg1 = array_reg;
            inst->data.op[1].const_val = 0;
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            if (D.48704 != 0B) goto <D.48759>; else goto <D.48760>;
            <D.48759>:
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            D.48704->next = inst;
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            inst->prev = D.48704;
            D.48703 = cfg->cbb;
            D.48703->last_ins = inst;
            goto <D.48761>;
            <D.48760>:
            D.48703 = cfg->cbb;
            D.48703 = cfg->cbb;
            D.48703->last_ins = inst;
            D.48704 = D.48703->last_ins;
            D.48703->code = D.48704;
            <D.48761>:
          }
          {
            struct MonoInst * inst;

            D.48691 = cfg->mempool;
            inst = mono_mempool_alloc (D.48691, 56);
            inst->data.op[1].const_val = 0;
            D.48762 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.48762;
            inst->prev = 0B;
            D.48763 = inst->prev;
            inst->next = D.48763;
            inst->opcode = 451;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.48764 = inst->sreg3;
            inst->sreg2 = D.48764;
            D.48765 = inst->sreg2;
            inst->sreg1 = D.48765;
            D.48699 = cfg->ip;
            inst->cil_code = D.48699;
            inst->data.op[1].p = "NullReferenceException";
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            if (D.48704 != 0B) goto <D.48766>; else goto <D.48767>;
            <D.48766>:
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            D.48704->next = inst;
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            inst->prev = D.48704;
            D.48703 = cfg->cbb;
            D.48703->last_ins = inst;
            goto <D.48768>;
            <D.48767>:
            D.48703 = cfg->cbb;
            D.48703 = cfg->cbb;
            D.48703->last_ins = inst;
            D.48704 = D.48703->last_ins;
            D.48703->code = D.48704;
            <D.48768>:
          }
          goto <D.48769>;
          <D.48754>:
          <D.48769>:
          <D.48752>:
          D.48691 = cfg->mempool;
          inst = mono_mempool_alloc (D.48691, 56);
          inst->data.op[1].const_val = 0;
          D.48770 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.48770;
          inst->prev = 0B;
          D.48771 = inst->prev;
          inst->next = D.48771;
          inst->opcode = 393;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.48772 = inst->sreg3;
          inst->sreg2 = D.48772;
          D.48773 = inst->sreg2;
          inst->sreg1 = D.48773;
          D.48699 = cfg->ip;
          inst->cil_code = D.48699;
          inst->dreg = _length_reg;
          inst->sreg1 = array_reg;
          inst->data.op[0].const_val = 12;
          inst->type = 1;
          D.48774 = (unsigned char) __ins_flags;
          inst->flags = D.48774;
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          if (D.48704 != 0B) goto <D.48775>; else goto <D.48776>;
          <D.48775>:
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          D.48704->next = inst;
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          inst->prev = D.48704;
          D.48703 = cfg->cbb;
          D.48703->last_ins = inst;
          goto <D.48777>;
          <D.48776>:
          D.48703 = cfg->cbb;
          D.48703 = cfg->cbb;
          D.48703->last_ins = inst;
          D.48704 = D.48703->last_ins;
          D.48703->code = D.48704;
          <D.48777>:
        }
        goto <D.48778>;
        <D.48749>:
        {
          struct MonoInst * inst;
          int __ins_flags;

          __ins_flags = 64;
          D.48779 = __ins_flags & 32;
          if (D.48779 != 0) goto <D.48780>; else goto <D.48781>;
          <D.48780>:
          D.48726 = BIT_FIELD_REF <*cfg, 32, 3424>;
          D.48727 = D.48726 & 64;
          if (D.48727 != 0) goto <D.48782>; else goto <D.48783>;
          <D.48782>:
          {
            struct MonoInst * inst;

            D.48691 = cfg->mempool;
            inst = mono_mempool_alloc (D.48691, 56);
            inst->data.op[1].const_val = 0;
            D.48784 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.48784;
            inst->prev = 0B;
            D.48785 = inst->prev;
            inst->next = D.48785;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.48786 = inst->sreg3;
            inst->sreg2 = D.48786;
            D.48787 = inst->sreg2;
            inst->sreg1 = D.48787;
            D.48699 = cfg->ip;
            inst->cil_code = D.48699;
            inst->dreg = -1;
            inst->sreg1 = array_reg;
            inst->data.op[1].const_val = 0;
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            if (D.48704 != 0B) goto <D.48788>; else goto <D.48789>;
            <D.48788>:
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            D.48704->next = inst;
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            inst->prev = D.48704;
            D.48703 = cfg->cbb;
            D.48703->last_ins = inst;
            goto <D.48790>;
            <D.48789>:
            D.48703 = cfg->cbb;
            D.48703 = cfg->cbb;
            D.48703->last_ins = inst;
            D.48704 = D.48703->last_ins;
            D.48703->code = D.48704;
            <D.48790>:
          }
          {
            struct MonoInst * inst;

            D.48691 = cfg->mempool;
            inst = mono_mempool_alloc (D.48691, 56);
            inst->data.op[1].const_val = 0;
            D.48791 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.48791;
            inst->prev = 0B;
            D.48792 = inst->prev;
            inst->next = D.48792;
            inst->opcode = 451;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.48793 = inst->sreg3;
            inst->sreg2 = D.48793;
            D.48794 = inst->sreg2;
            inst->sreg1 = D.48794;
            D.48699 = cfg->ip;
            inst->cil_code = D.48699;
            inst->data.op[1].p = "NullReferenceException";
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            if (D.48704 != 0B) goto <D.48795>; else goto <D.48796>;
            <D.48795>:
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            D.48704->next = inst;
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            inst->prev = D.48704;
            D.48703 = cfg->cbb;
            D.48703->last_ins = inst;
            goto <D.48797>;
            <D.48796>:
            D.48703 = cfg->cbb;
            D.48703 = cfg->cbb;
            D.48703->last_ins = inst;
            D.48704 = D.48703->last_ins;
            D.48703->code = D.48704;
            <D.48797>:
          }
          goto <D.48798>;
          <D.48783>:
          <D.48798>:
          <D.48781>:
          D.48691 = cfg->mempool;
          inst = mono_mempool_alloc (D.48691, 56);
          inst->data.op[1].const_val = 0;
          D.48799 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.48799;
          inst->prev = 0B;
          D.48800 = inst->prev;
          inst->next = D.48800;
          inst->opcode = 393;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.48801 = inst->sreg3;
          inst->sreg2 = D.48801;
          D.48802 = inst->sreg2;
          inst->sreg1 = D.48802;
          D.48699 = cfg->ip;
          inst->cil_code = D.48699;
          inst->dreg = _length_reg;
          inst->sreg1 = array_reg;
          inst->data.op[0].const_val = 12;
          inst->type = 1;
          D.48803 = (unsigned char) __ins_flags;
          inst->flags = D.48803;
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          if (D.48704 != 0B) goto <D.48804>; else goto <D.48805>;
          <D.48804>:
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          D.48704->next = inst;
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          inst->prev = D.48704;
          D.48703 = cfg->cbb;
          D.48703->last_ins = inst;
          goto <D.48806>;
          <D.48805>:
          D.48703 = cfg->cbb;
          D.48703 = cfg->cbb;
          D.48703->last_ins = inst;
          D.48704 = D.48703->last_ins;
          D.48703->code = D.48704;
          <D.48806>:
        }
        <D.48778>:
        {
          struct MonoInst * inst;

          D.48691 = cfg->mempool;
          inst = mono_mempool_alloc (D.48691, 56);
          inst->data.op[1].const_val = 0;
          D.48807 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.48807;
          inst->prev = 0B;
          D.48808 = inst->prev;
          inst->next = D.48808;
          inst->opcode = 322;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.48809 = inst->sreg3;
          inst->sreg2 = D.48809;
          D.48810 = inst->sreg2;
          inst->sreg1 = D.48810;
          D.48699 = cfg->ip;
          inst->cil_code = D.48699;
          inst->dreg = -1;
          inst->sreg1 = _length_reg;
          inst->sreg2 = index_reg;
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          if (D.48704 != 0B) goto <D.48811>; else goto <D.48812>;
          <D.48811>:
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          D.48704->next = inst;
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          inst->prev = D.48704;
          D.48703 = cfg->cbb;
          D.48703->last_ins = inst;
          goto <D.48813>;
          <D.48812>:
          D.48703 = cfg->cbb;
          D.48703 = cfg->cbb;
          D.48703->last_ins = inst;
          D.48704 = D.48703->last_ins;
          D.48703->code = D.48704;
          <D.48813>:
        }
        {
          struct MonoInst * inst;

          D.48691 = cfg->mempool;
          inst = mono_mempool_alloc (D.48691, 56);
          inst->data.op[1].const_val = 0;
          D.48814 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.48814;
          inst->prev = 0B;
          D.48815 = inst->prev;
          inst->next = D.48815;
          inst->opcode = 459;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.48816 = inst->sreg3;
          inst->sreg2 = D.48816;
          D.48817 = inst->sreg2;
          inst->sreg1 = D.48817;
          D.48699 = cfg->ip;
          inst->cil_code = D.48699;
          inst->data.op[1].p = "IndexOutOfRangeException";
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          if (D.48704 != 0B) goto <D.48818>; else goto <D.48819>;
          <D.48818>:
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          D.48704->next = inst;
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          inst->prev = D.48704;
          D.48703 = cfg->cbb;
          D.48703->last_ins = inst;
          goto <D.48820>;
          <D.48819>:
          D.48703 = cfg->cbb;
          D.48703 = cfg->cbb;
          D.48703->last_ins = inst;
          D.48704 = D.48703->last_ins;
          D.48703->code = D.48704;
          <D.48820>:
        }
      }
      goto <D.48821>;
      <D.48746>:
      {
        int _length_reg;

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

          __ins_flags = 32;
          D.48825 = __ins_flags & 32;
          if (D.48825 != 0) goto <D.48826>; else goto <D.48827>;
          <D.48826>:
          D.48726 = BIT_FIELD_REF <*cfg, 32, 3424>;
          D.48727 = D.48726 & 64;
          if (D.48727 != 0) goto <D.48828>; else goto <D.48829>;
          <D.48828>:
          {
            struct MonoInst * inst;

            D.48691 = cfg->mempool;
            inst = mono_mempool_alloc (D.48691, 56);
            inst->data.op[1].const_val = 0;
            D.48830 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.48830;
            inst->prev = 0B;
            D.48831 = inst->prev;
            inst->next = D.48831;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.48832 = inst->sreg3;
            inst->sreg2 = D.48832;
            D.48833 = inst->sreg2;
            inst->sreg1 = D.48833;
            D.48699 = cfg->ip;
            inst->cil_code = D.48699;
            inst->dreg = -1;
            inst->sreg1 = array_reg;
            inst->data.op[1].const_val = 0;
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            if (D.48704 != 0B) goto <D.48834>; else goto <D.48835>;
            <D.48834>:
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            D.48704->next = inst;
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            inst->prev = D.48704;
            D.48703 = cfg->cbb;
            D.48703->last_ins = inst;
            goto <D.48836>;
            <D.48835>:
            D.48703 = cfg->cbb;
            D.48703 = cfg->cbb;
            D.48703->last_ins = inst;
            D.48704 = D.48703->last_ins;
            D.48703->code = D.48704;
            <D.48836>:
          }
          {
            struct MonoInst * inst;

            D.48691 = cfg->mempool;
            inst = mono_mempool_alloc (D.48691, 56);
            inst->data.op[1].const_val = 0;
            D.48837 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.48837;
            inst->prev = 0B;
            D.48838 = inst->prev;
            inst->next = D.48838;
            inst->opcode = 451;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.48839 = inst->sreg3;
            inst->sreg2 = D.48839;
            D.48840 = inst->sreg2;
            inst->sreg1 = D.48840;
            D.48699 = cfg->ip;
            inst->cil_code = D.48699;
            inst->data.op[1].p = "NullReferenceException";
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            if (D.48704 != 0B) goto <D.48841>; else goto <D.48842>;
            <D.48841>:
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            D.48704->next = inst;
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            inst->prev = D.48704;
            D.48703 = cfg->cbb;
            D.48703->last_ins = inst;
            goto <D.48843>;
            <D.48842>:
            D.48703 = cfg->cbb;
            D.48703 = cfg->cbb;
            D.48703->last_ins = inst;
            D.48704 = D.48703->last_ins;
            D.48703->code = D.48704;
            <D.48843>:
          }
          goto <D.48844>;
          <D.48829>:
          <D.48844>:
          <D.48827>:
          D.48691 = cfg->mempool;
          inst = mono_mempool_alloc (D.48691, 56);
          inst->data.op[1].const_val = 0;
          D.48845 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.48845;
          inst->prev = 0B;
          D.48846 = inst->prev;
          inst->next = D.48846;
          inst->opcode = 393;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.48847 = inst->sreg3;
          inst->sreg2 = D.48847;
          D.48848 = inst->sreg2;
          inst->sreg1 = D.48848;
          D.48699 = cfg->ip;
          inst->cil_code = D.48699;
          inst->dreg = _length_reg;
          inst->sreg1 = array_reg;
          inst->data.op[0].const_val = 12;
          inst->type = 1;
          D.48849 = (unsigned char) __ins_flags;
          inst->flags = D.48849;
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          if (D.48704 != 0B) goto <D.48850>; else goto <D.48851>;
          <D.48850>:
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          D.48704->next = inst;
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          inst->prev = D.48704;
          D.48703 = cfg->cbb;
          D.48703->last_ins = inst;
          goto <D.48852>;
          <D.48851>:
          D.48703 = cfg->cbb;
          D.48703 = cfg->cbb;
          D.48703->last_ins = inst;
          D.48704 = D.48703->last_ins;
          D.48703->code = D.48704;
          <D.48852>:
        }
        goto <D.48853>;
        <D.48824>:
        {
          struct MonoInst * inst;
          int __ins_flags;

          __ins_flags = 64;
          D.48854 = __ins_flags & 32;
          if (D.48854 != 0) goto <D.48855>; else goto <D.48856>;
          <D.48855>:
          D.48726 = BIT_FIELD_REF <*cfg, 32, 3424>;
          D.48727 = D.48726 & 64;
          if (D.48727 != 0) goto <D.48857>; else goto <D.48858>;
          <D.48857>:
          {
            struct MonoInst * inst;

            D.48691 = cfg->mempool;
            inst = mono_mempool_alloc (D.48691, 56);
            inst->data.op[1].const_val = 0;
            D.48859 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.48859;
            inst->prev = 0B;
            D.48860 = inst->prev;
            inst->next = D.48860;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.48861 = inst->sreg3;
            inst->sreg2 = D.48861;
            D.48862 = inst->sreg2;
            inst->sreg1 = D.48862;
            D.48699 = cfg->ip;
            inst->cil_code = D.48699;
            inst->dreg = -1;
            inst->sreg1 = array_reg;
            inst->data.op[1].const_val = 0;
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            if (D.48704 != 0B) goto <D.48863>; else goto <D.48864>;
            <D.48863>:
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            D.48704->next = inst;
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            inst->prev = D.48704;
            D.48703 = cfg->cbb;
            D.48703->last_ins = inst;
            goto <D.48865>;
            <D.48864>:
            D.48703 = cfg->cbb;
            D.48703 = cfg->cbb;
            D.48703->last_ins = inst;
            D.48704 = D.48703->last_ins;
            D.48703->code = D.48704;
            <D.48865>:
          }
          {
            struct MonoInst * inst;

            D.48691 = cfg->mempool;
            inst = mono_mempool_alloc (D.48691, 56);
            inst->data.op[1].const_val = 0;
            D.48866 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.48866;
            inst->prev = 0B;
            D.48867 = inst->prev;
            inst->next = D.48867;
            inst->opcode = 451;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.48868 = inst->sreg3;
            inst->sreg2 = D.48868;
            D.48869 = inst->sreg2;
            inst->sreg1 = D.48869;
            D.48699 = cfg->ip;
            inst->cil_code = D.48699;
            inst->data.op[1].p = "NullReferenceException";
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            if (D.48704 != 0B) goto <D.48870>; else goto <D.48871>;
            <D.48870>:
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            D.48704->next = inst;
            D.48703 = cfg->cbb;
            D.48704 = D.48703->last_ins;
            inst->prev = D.48704;
            D.48703 = cfg->cbb;
            D.48703->last_ins = inst;
            goto <D.48872>;
            <D.48871>:
            D.48703 = cfg->cbb;
            D.48703 = cfg->cbb;
            D.48703->last_ins = inst;
            D.48704 = D.48703->last_ins;
            D.48703->code = D.48704;
            <D.48872>:
          }
          goto <D.48873>;
          <D.48858>:
          <D.48873>:
          <D.48856>:
          D.48691 = cfg->mempool;
          inst = mono_mempool_alloc (D.48691, 56);
          inst->data.op[1].const_val = 0;
          D.48874 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.48874;
          inst->prev = 0B;
          D.48875 = inst->prev;
          inst->next = D.48875;
          inst->opcode = 393;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.48876 = inst->sreg3;
          inst->sreg2 = D.48876;
          D.48877 = inst->sreg2;
          inst->sreg1 = D.48877;
          D.48699 = cfg->ip;
          inst->cil_code = D.48699;
          inst->dreg = _length_reg;
          inst->sreg1 = array_reg;
          inst->data.op[0].const_val = 12;
          inst->type = 1;
          D.48878 = (unsigned char) __ins_flags;
          inst->flags = D.48878;
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          if (D.48704 != 0B) goto <D.48879>; else goto <D.48880>;
          <D.48879>:
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          D.48704->next = inst;
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          inst->prev = D.48704;
          D.48703 = cfg->cbb;
          D.48703->last_ins = inst;
          goto <D.48881>;
          <D.48880>:
          D.48703 = cfg->cbb;
          D.48703 = cfg->cbb;
          D.48703->last_ins = inst;
          D.48704 = D.48703->last_ins;
          D.48703->code = D.48704;
          <D.48881>:
        }
        <D.48853>:
        {
          struct MonoInst * inst;

          D.48691 = cfg->mempool;
          inst = mono_mempool_alloc (D.48691, 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;
          inst->opcode = 322;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.48884 = inst->sreg3;
          inst->sreg2 = D.48884;
          D.48885 = inst->sreg2;
          inst->sreg1 = D.48885;
          D.48699 = cfg->ip;
          inst->cil_code = D.48699;
          inst->dreg = -1;
          inst->sreg1 = _length_reg;
          inst->sreg2 = index_reg;
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          if (D.48704 != 0B) goto <D.48886>; else goto <D.48887>;
          <D.48886>:
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          D.48704->next = inst;
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          inst->prev = D.48704;
          D.48703 = cfg->cbb;
          D.48703->last_ins = inst;
          goto <D.48888>;
          <D.48887>:
          D.48703 = cfg->cbb;
          D.48703 = cfg->cbb;
          D.48703->last_ins = inst;
          D.48704 = D.48703->last_ins;
          D.48703->code = D.48704;
          <D.48888>:
        }
        {
          struct MonoInst * inst;

          D.48691 = cfg->mempool;
          inst = mono_mempool_alloc (D.48691, 56);
          inst->data.op[1].const_val = 0;
          D.48889 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.48889;
          inst->prev = 0B;
          D.48890 = inst->prev;
          inst->next = D.48890;
          inst->opcode = 459;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.48891 = inst->sreg3;
          inst->sreg2 = D.48891;
          D.48892 = inst->sreg2;
          inst->sreg1 = D.48892;
          D.48699 = cfg->ip;
          inst->cil_code = D.48699;
          inst->data.op[1].p = "IndexOutOfRangeException";
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          if (D.48704 != 0B) goto <D.48893>; else goto <D.48894>;
          <D.48893>:
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          D.48704->next = inst;
          D.48703 = cfg->cbb;
          D.48704 = D.48703->last_ins;
          inst->prev = D.48704;
          D.48703 = cfg->cbb;
          D.48703->last_ins = inst;
          goto <D.48895>;
          <D.48894>:
          D.48703 = cfg->cbb;
          D.48703 = cfg->cbb;
          D.48703->last_ins = inst;
          D.48704 = D.48703->last_ins;
          D.48703->code = D.48704;
          <D.48895>:
        }
      }
      <D.48821>:
      goto <D.48896>;
      <D.48725>:
      {
        struct MonoInst * ins;

        D.48691 = cfg->mempool;
        ins = mono_mempool_alloc (D.48691, 56);
        ins->data.op[1].const_val = 0;
        D.48897 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.48897;
        ins->prev = 0B;
        D.48898 = ins->prev;
        ins->next = D.48898;
        ins->opcode = 784;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.48899 = ins->sreg3;
        ins->sreg2 = D.48899;
        D.48900 = ins->sreg2;
        ins->sreg1 = D.48900;
        D.48699 = cfg->ip;
        ins->cil_code = D.48699;
        ins->sreg1 = array_reg;
        ins->sreg2 = index_reg;
        ins->data.op[1].const_val = 12;
        D.48901 = ins->flags;
        D.48902 = D.48901 | 32;
        ins->flags = D.48902;
        D.48703 = cfg->cbb;
        D.48704 = D.48703->last_ins;
        if (D.48704 != 0B) goto <D.48903>; else goto <D.48904>;
        <D.48903>:
        D.48703 = cfg->cbb;
        D.48704 = D.48703->last_ins;
        D.48704->next = ins;
        D.48703 = cfg->cbb;
        D.48704 = D.48703->last_ins;
        ins->prev = D.48704;
        D.48703 = cfg->cbb;
        D.48703->last_ins = ins;
        goto <D.48905>;
        <D.48904>:
        D.48703 = cfg->cbb;
        D.48703 = cfg->cbb;
        D.48703->last_ins = ins;
        D.48704 = D.48703->last_ins;
        D.48703->code = D.48704;
        <D.48905>:
        D.48906 = cfg->flags;
        D.48907 = D.48906 | 256;
        cfg->flags = D.48907;
        D.48703 = cfg->cbb;
        D.48703->has_array_access = 1;
      }
      <D.48896>:
      <D.48722>:
      <D.48718>:
      D.48691 = cfg->mempool;
      ins = mono_mempool_alloc (D.48691, 56);
      ins->data.op[1].const_val = 0;
      D.48692 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.48692;
      ins->prev = 0B;
      D.48693 = ins->prev;
      ins->next = D.48693;
      D.48694 = &klass->byval_arg;
      D.48908 = mono_type_to_store_membase (cfg, D.48694);
      D.48909 = (short unsigned int) D.48908;
      ins->opcode = D.48909;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.48697 = ins->sreg3;
      ins->sreg2 = D.48697;
      D.48698 = ins->sreg2;
      ins->sreg1 = D.48698;
      D.48699 = cfg->ip;
      ins->cil_code = D.48699;
      D.48653 = sp + 8;
      D.48654 = *D.48653;
      D.48700 = D.48654->dreg;
      ins->sreg1 = D.48700;
      ins->dreg = array_reg;
      ins->data.op[0].const_val = offset;
      D.48694 = &klass->byval_arg;
      type_to_eval_stack_type (cfg, D.48694, ins);
      D.48694 = &klass->byval_arg;
      D.48910 = mono_class_from_mono_type (D.48694);
      ins->klass = D.48910;
      D.48703 = cfg->cbb;
      D.48704 = D.48703->last_ins;
      if (D.48704 != 0B) goto <D.48911>; else goto <D.48912>;
      <D.48911>:
      D.48703 = cfg->cbb;
      D.48704 = D.48703->last_ins;
      D.48704->next = ins;
      D.48703 = cfg->cbb;
      D.48704 = D.48703->last_ins;
      ins->prev = D.48704;
      D.48703 = cfg->cbb;
      D.48703->last_ins = ins;
      goto <D.48913>;
      <D.48912>:
      D.48703 = cfg->cbb;
      D.48703 = cfg->cbb;
      D.48703->last_ins = ins;
      D.48704 = D.48703->last_ins;
      D.48703->code = D.48704;
      <D.48913>:
    }
    goto <D.48914>;
    <D.48711>:
    {
      struct MonoInst * addr;

      D.48676 = *sp;
      D.48689 = sp + 4;
      D.48690 = *D.48689;
      addr = mini_emit_ldelema_1_ins (cfg, klass, D.48676, D.48690, safety_checks);
      D.48691 = cfg->mempool;
      ins = mono_mempool_alloc (D.48691, 56);
      ins->data.op[1].const_val = 0;
      D.48692 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.48692;
      ins->prev = 0B;
      D.48693 = ins->prev;
      ins->next = D.48693;
      D.48694 = &klass->byval_arg;
      D.48915 = mono_type_to_store_membase (cfg, D.48694);
      D.48916 = (short unsigned int) D.48915;
      ins->opcode = D.48916;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.48697 = ins->sreg3;
      ins->sreg2 = D.48697;
      D.48698 = ins->sreg2;
      ins->sreg1 = D.48698;
      D.48699 = cfg->ip;
      ins->cil_code = D.48699;
      D.48653 = sp + 8;
      D.48654 = *D.48653;
      D.48700 = D.48654->dreg;
      ins->sreg1 = D.48700;
      D.48917 = addr->dreg;
      ins->dreg = D.48917;
      ins->data.op[0].const_val = 0;
      D.48694 = &klass->byval_arg;
      type_to_eval_stack_type (cfg, D.48694, ins);
      D.48694 = &klass->byval_arg;
      D.48918 = mono_class_from_mono_type (D.48694);
      ins->klass = D.48918;
      D.48703 = cfg->cbb;
      D.48704 = D.48703->last_ins;
      if (D.48704 != 0B) goto <D.48919>; else goto <D.48920>;
      <D.48919>:
      D.48703 = cfg->cbb;
      D.48704 = D.48703->last_ins;
      D.48704->next = ins;
      D.48703 = cfg->cbb;
      D.48704 = D.48703->last_ins;
      ins->prev = D.48704;
      D.48703 = cfg->cbb;
      D.48703->last_ins = ins;
      goto <D.48921>;
      <D.48920>:
      D.48703 = cfg->cbb;
      D.48703 = cfg->cbb;
      D.48703->last_ins = ins;
      D.48704 = D.48703->last_ins;
      D.48703->code = D.48704;
      <D.48921>:
      D.48922 = generic_class_is_reference_type (cfg, klass);
      if (D.48922 != 0) goto <D.48923>; else goto <D.48924>;
      <D.48923>:
      D.48653 = sp + 8;
      D.48654 = *D.48653;
      emit_write_barrier (cfg, addr, D.48654);
      <D.48924>:
    }
    <D.48914>:
    <D.48708>:
    D.48680 = ins;
    return D.48680;
  }
}


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.48927;
  struct MonoMethod * D.48928;
  int D.48929;
  struct MonoInst * D.48930;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.48927 = cfg->mempool;
  D.48928 = cfg->current_method;
  D.48929 = context_used & 2;
  entry = mono_patch_info_rgctx_entry_new (D.48927, D.48928, D.48929, 13, field, rgctx_type);
  D.48928 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.48928, context_used);
  D.48930 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.48930;
}


emit_seq_point (struct MonoCompile * cfg, struct MonoMethod * method, guint8 * ip, gboolean intr_loc, gboolean nonempty_stack)
{
  unsigned int D.48932;
  unsigned int D.48933;
  struct MonoMethod * D.48936;
  struct MonoMemPool * D.48939;
  int D.48940;
  struct MonoInst * D.48941;
  int D.48942;
  int D.48943;
  const unsigned char * D.48944;
  int ip.553;
  struct MonoMethodHeader * D.48946;
  const unsigned char * D.48947;
  int D.48948;
  int D.48949;
  _Bool D.48950;
  unsigned char D.48951;
  unsigned char D.48954;
  unsigned char D.48955;
  struct MonoBasicBlock * D.48956;
  struct MonoInst * D.48957;
  struct MonoInst * ins;

  D.48932 = BIT_FIELD_REF <*cfg, 32, 3424>;
  D.48933 = D.48932 & 32;
  if (D.48933 != 0) goto <D.48934>; else goto <D.48935>;
  <D.48934>:
  D.48936 = cfg->method;
  if (D.48936 == method) goto <D.48937>; else goto <D.48938>;
  <D.48937>:
  D.48939 = cfg->mempool;
  ins = mono_mempool_alloc (D.48939, 56);
  ins->data.op[1].const_val = 0;
  D.48940 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.48940;
  ins->prev = 0B;
  D.48941 = ins->prev;
  ins->next = D.48941;
  ins->opcode = 341;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.48942 = ins->sreg3;
  ins->sreg2 = D.48942;
  D.48943 = ins->sreg2;
  ins->sreg1 = D.48943;
  D.48944 = cfg->ip;
  ins->cil_code = D.48944;
  ip.553 = (int) ip;
  D.48946 = cfg->header;
  D.48947 = D.48946->code;
  D.48948 = (int) D.48947;
  D.48949 = ip.553 - D.48948;
  ins->data.op[1].const_val = D.48949;
  D.48950 = intr_loc != 0;
  D.48951 = (unsigned char) D.48950;
  ins->flags = D.48951;
  if (nonempty_stack != 0) goto <D.48952>; else goto <D.48953>;
  <D.48952>:
  D.48954 = ins->flags;
  D.48955 = D.48954 | 4;
  ins->flags = D.48955;
  <D.48953>:
  D.48956 = cfg->cbb;
  D.48957 = D.48956->last_ins;
  if (D.48957 != 0B) goto <D.48958>; else goto <D.48959>;
  <D.48958>:
  D.48956 = cfg->cbb;
  D.48957 = D.48956->last_ins;
  D.48957->next = ins;
  D.48956 = cfg->cbb;
  D.48957 = D.48956->last_ins;
  ins->prev = D.48957;
  D.48956 = cfg->cbb;
  D.48956->last_ins = ins;
  goto <D.48960>;
  <D.48959>:
  D.48956 = cfg->cbb;
  D.48956 = cfg->cbb;
  D.48956->last_ins = ins;
  D.48957 = D.48956->last_ins;
  D.48956->code = D.48957;
  <D.48960>:
  <D.48938>:
  <D.48935>:
}


mono_find_final_block (struct MonoCompile * cfg, unsigned char * ip, unsigned char * target, int type)
{
  struct MonoExceptionClause * D.48961;
  unsigned int i.554;
  unsigned int D.48963;
  unsigned int D.48966;
  int ip.555;
  const unsigned char * D.48968;
  int D.48969;
  int D.48970;
  unsigned int D.48971;
  unsigned int D.48974;
  unsigned int D.48975;
  int target.556;
  int D.48979;
  unsigned int D.48980;
  unsigned int D.48982;
  unsigned int type.557;
  <unnamed-unsigned:15> D.48986;
  int D.48987;
  struct GList * D.48988;
  struct MonoMethodHeader * header;
  struct MonoExceptionClause * clause;
  int i;
  struct GList * res;

  header = cfg->header;
  res = 0B;
  i = 0;
  goto <D.24155>;
  <D.24154>:
  D.48961 = header->clauses;
  i.554 = (unsigned int) i;
  D.48963 = i.554 * 24;
  clause = D.48961 + D.48963;
  D.48966 = clause->try_offset;
  ip.555 = (int) ip;
  D.48968 = header->code;
  D.48969 = (int) D.48968;
  D.48970 = ip.555 - D.48969;
  D.48971 = (unsigned int) D.48970;
  if (D.48966 <= D.48971) goto <D.48972>; else goto <D.48973>;
  <D.48972>:
  ip.555 = (int) ip;
  D.48968 = header->code;
  D.48969 = (int) D.48968;
  D.48970 = ip.555 - D.48969;
  D.48971 = (unsigned int) D.48970;
  D.48966 = clause->try_offset;
  D.48974 = clause->try_len;
  D.48975 = D.48966 + D.48974;
  if (D.48971 < D.48975) goto <D.48976>; else goto <D.48977>;
  <D.48976>:
  D.48966 = clause->try_offset;
  target.556 = (int) target;
  D.48968 = header->code;
  D.48969 = (int) D.48968;
  D.48979 = target.556 - D.48969;
  D.48980 = (unsigned int) D.48979;
  if (D.48966 > D.48980) goto <D.48964>; else goto <D.48981>;
  <D.48981>:
  target.556 = (int) target;
  D.48968 = header->code;
  D.48969 = (int) D.48968;
  D.48979 = target.556 - D.48969;
  D.48980 = (unsigned int) D.48979;
  D.48966 = clause->try_offset;
  D.48974 = clause->try_len;
  D.48975 = D.48966 + D.48974;
  if (D.48980 >= D.48975) goto <D.48964>; else goto <D.48965>;
  <D.48964>:
  D.48982 = clause->flags;
  type.557 = (unsigned int) type;
  if (D.48982 == type.557) goto <D.48984>; else goto <D.48985>;
  <D.48984>:
  res = monoeg_g_list_append (res, clause);
  <D.48985>:
  <D.48965>:
  <D.48977>:
  <D.48973>:
  i = i + 1;
  <D.24155>:
  D.48986 = header->num_clauses;
  D.48987 = (int) D.48986;
  if (D.48987 > i) goto <D.24154>; else goto <D.24156>;
  <D.24156>:
  D.48988 = res;
  return D.48988;
}


mono_get_domainvar (struct MonoCompile * cfg)
{
  struct MonoInst * D.48990;
  struct MonoClass * D.48993;
  struct MonoType * D.48994;
  struct MonoInst * D.48995;
  struct MonoInst * D.48996;

  D.48990 = cfg->domainvar;
  if (D.48990 == 0B) goto <D.48991>; else goto <D.48992>;
  <D.48991>:
  D.48993 = mono_defaults.int_class;
  D.48994 = &D.48993->byval_arg;
  D.48995 = mono_compile_create_var (cfg, D.48994, 329);
  cfg->domainvar = D.48995;
  <D.48992>:
  D.48996 = cfg->domainvar;
  return D.48996;
}


handle_cisinst (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * src)
{
  unsigned int D.48998;
  unsigned int D.48999;
  struct MonoMemPool * D.49000;
  unsigned int D.49001;
  unsigned int D.49002;
  unsigned int D.49003;
  int D.49004;
  unsigned int D.49005;
  unsigned int D.49006;
  int D.49007;
  unsigned int D.49008;
  unsigned int D.49009;
  int D.49010;
  unsigned int D.49011;
  unsigned int D.49012;
  int D.49013;
  unsigned int D.49014;
  unsigned int D.49015;
  int D.49016;
  int D.49017;
  struct MonoInst * D.49018;
  int D.49019;
  int D.49020;
  const unsigned char * D.49021;
  struct MonoBasicBlock * D.49022;
  struct MonoInst * D.49023;
  int D.49027;
  struct MonoInst * D.49028;
  int D.49029;
  int D.49030;
  unsigned int D.49033;
  unsigned int D.49034;
  int D.49035;
  unsigned char * D.49039;
  struct MonoBasicBlock * * D.49042;
  int D.49043;
  unsigned char * D.49044;
  int D.49045;
  int D.49046;
  unsigned int D.49047;
  unsigned int D.49048;
  struct MonoBasicBlock * * D.49049;
  unsigned int D.49050;
  short unsigned int D.49055;
  short unsigned int D.49056;
  short unsigned int D.49058;
  short unsigned int D.49060;
  struct MonoBasicBlock * * D.49061;
  struct MonoBasicBlock * * D.49062;
  struct MonoBasicBlock * D.49063;
  void * D.49073;
  struct MonoBasicBlock * * D.49074;
  struct MonoBasicBlock * * D.49075;
  unsigned int D.49079;
  unsigned int D.49080;
  unsigned int D.49083;
  unsigned int D.49084;
  int D.49085;
  unsigned int D.49103;
  unsigned int D.49104;
  unsigned int D.49107;
  unsigned int D.49108;
  int D.49109;
  unsigned int D.49110;
  int D.49111;
  struct MonoInst * D.49112;
  int D.49113;
  int D.49114;
  unsigned char * D.49118;
  int D.49121;
  int D.49122;
  unsigned int D.49123;
  unsigned int D.49124;
  struct MonoBasicBlock * * D.49125;
  int D.49140;
  struct MonoInst * D.49141;
  int D.49142;
  int D.49143;
  struct MonoClass * D.49147;
  unsigned int D.49148;
  int D.49149;
  struct MonoInst * D.49150;
  int D.49151;
  int D.49152;
  int D.49156;
  struct MonoInst * D.49157;
  int D.49158;
  int D.49159;
  int D.49163;
  struct MonoInst * D.49164;
  int D.49165;
  int D.49166;
  unsigned int D.49169;
  unsigned int D.49170;
  int D.49171;
  unsigned char * D.49175;
  int D.49178;
  int D.49179;
  unsigned int D.49180;
  unsigned int D.49181;
  struct MonoBasicBlock * * D.49182;
  void * D.49198;
  struct MonoBasicBlock * * D.49199;
  struct MonoBasicBlock * * D.49200;
  unsigned int D.49206;
  unsigned int D.49207;
  int D.49208;
  unsigned int D.49227;
  int D.49228;
  struct MonoInst * D.49229;
  int D.49230;
  int D.49231;
  int D.49235;
  struct MonoInst * D.49236;
  int D.49237;
  int D.49238;
  unsigned int D.49242;
  int D.49243;
  struct MonoInst * D.49244;
  int D.49245;
  int D.49246;
  int D.49250;
  struct MonoInst * D.49251;
  int D.49252;
  int D.49253;
  unsigned int D.49257;
  int D.49258;
  struct MonoInst * D.49259;
  int D.49260;
  int D.49261;
  int D.49265;
  struct MonoInst * D.49266;
  int D.49267;
  int D.49268;
  int D.49272;
  struct MonoInst * D.49273;
  int D.49274;
  int D.49275;
  unsigned int D.49278;
  unsigned int D.49279;
  int D.49280;
  unsigned char * D.49284;
  int D.49287;
  int D.49288;
  unsigned int D.49289;
  unsigned int D.49290;
  struct MonoBasicBlock * * D.49291;
  void * D.49307;
  struct MonoBasicBlock * * D.49308;
  struct MonoBasicBlock * * D.49309;
  unsigned int D.49315;
  unsigned int D.49316;
  int D.49317;
  int D.49335;
  struct MonoInst * D.49336;
  int D.49337;
  int D.49338;
  unsigned int D.49341;
  unsigned int D.49342;
  int D.49343;
  unsigned char * D.49347;
  int D.49350;
  int D.49351;
  unsigned int D.49352;
  unsigned int D.49353;
  struct MonoBasicBlock * * D.49354;
  void * D.49370;
  struct MonoBasicBlock * * D.49371;
  struct MonoBasicBlock * * D.49372;
  unsigned int D.49378;
  unsigned int D.49379;
  int D.49380;
  unsigned char * D.49398;
  int D.49401;
  int D.49402;
  unsigned int D.49403;
  unsigned int D.49404;
  struct MonoBasicBlock * * D.49405;
  unsigned char * D.49420;
  int D.49423;
  int D.49424;
  unsigned int D.49425;
  unsigned int D.49426;
  struct MonoBasicBlock * * D.49427;
  int D.49442;
  struct MonoInst * D.49443;
  int D.49444;
  int D.49445;
  int D.49449;
  struct MonoInst * D.49450;
  int D.49451;
  int D.49452;
  unsigned int D.49455;
  unsigned int D.49456;
  int D.49457;
  unsigned char * D.49461;
  int D.49464;
  int D.49465;
  unsigned int D.49466;
  unsigned int D.49467;
  struct MonoBasicBlock * * D.49468;
  void * D.49484;
  struct MonoBasicBlock * * D.49485;
  struct MonoBasicBlock * * D.49486;
  unsigned int D.49492;
  unsigned int D.49493;
  int D.49494;
  unsigned char * D.49512;
  int D.49515;
  int D.49516;
  unsigned int D.49517;
  unsigned int D.49518;
  struct MonoBasicBlock * * D.49519;
  int D.49534;
  struct MonoInst * D.49535;
  int D.49536;
  int D.49537;
  int D.49541;
  struct MonoInst * D.49542;
  int D.49543;
  int D.49544;
  unsigned int D.49547;
  unsigned int D.49548;
  int D.49549;
  unsigned char * D.49553;
  int D.49556;
  int D.49557;
  unsigned int D.49558;
  unsigned int D.49559;
  struct MonoBasicBlock * * D.49560;
  void * D.49576;
  struct MonoBasicBlock * * D.49577;
  struct MonoBasicBlock * * D.49578;
  unsigned int D.49584;
  unsigned int D.49585;
  int D.49586;
  unsigned char * D.49604;
  int D.49607;
  int D.49608;
  unsigned int D.49609;
  unsigned int D.49610;
  struct MonoBasicBlock * * D.49611;
  int D.49626;
  struct MonoInst * D.49627;
  int D.49628;
  int D.49629;
  unsigned char * D.49633;
  int D.49636;
  int D.49637;
  unsigned int D.49638;
  unsigned int D.49639;
  struct MonoBasicBlock * * D.49640;
  int D.49655;
  struct MonoInst * D.49656;
  int D.49657;
  int D.49658;
  struct MonoInst * D.49659;
  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.48998 = alloc_ireg (cfg);
  dreg = (int) D.48998;
  D.48999 = alloc_preg (cfg);
  klass_reg = (int) D.48999;
  D.49000 = cfg->mempool;
  true_bb = mono_mempool_alloc0 (D.49000, 172);
  D.49001 = cfg->num_bblocks;
  D.49002 = D.49001;
  D.49003 = D.49002 + 1;
  cfg->num_bblocks = D.49003;
  D.49004 = (int) D.49002;
  true_bb->block_num = D.49004;
  D.49000 = cfg->mempool;
  false_bb = mono_mempool_alloc0 (D.49000, 172);
  D.49001 = cfg->num_bblocks;
  D.49005 = D.49001;
  D.49006 = D.49005 + 1;
  cfg->num_bblocks = D.49006;
  D.49007 = (int) D.49005;
  false_bb->block_num = D.49007;
  D.49000 = cfg->mempool;
  end_bb = mono_mempool_alloc0 (D.49000, 172);
  D.49001 = cfg->num_bblocks;
  D.49008 = D.49001;
  D.49009 = D.49008 + 1;
  cfg->num_bblocks = D.49009;
  D.49010 = (int) D.49008;
  end_bb->block_num = D.49010;
  D.49000 = cfg->mempool;
  false2_bb = mono_mempool_alloc0 (D.49000, 172);
  D.49001 = cfg->num_bblocks;
  D.49011 = D.49001;
  D.49012 = D.49011 + 1;
  cfg->num_bblocks = D.49012;
  D.49013 = (int) D.49011;
  false2_bb->block_num = D.49013;
  D.49000 = cfg->mempool;
  no_proxy_bb = mono_mempool_alloc0 (D.49000, 172);
  D.49001 = cfg->num_bblocks;
  D.49014 = D.49001;
  D.49015 = D.49014 + 1;
  cfg->num_bblocks = D.49015;
  D.49016 = (int) D.49014;
  no_proxy_bb->block_num = D.49016;
  {
    struct MonoInst * inst;

    D.49000 = cfg->mempool;
    inst = mono_mempool_alloc (D.49000, 56);
    inst->data.op[1].const_val = 0;
    D.49017 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49017;
    inst->prev = 0B;
    D.49018 = inst->prev;
    inst->next = D.49018;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49019 = inst->sreg3;
    inst->sreg2 = D.49019;
    D.49020 = inst->sreg2;
    inst->sreg1 = D.49020;
    D.49021 = cfg->ip;
    inst->cil_code = D.49021;
    inst->dreg = -1;
    inst->sreg1 = obj_reg;
    inst->data.op[1].const_val = 0;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49024>; else goto <D.49025>;
    <D.49024>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = inst;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    inst->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    goto <D.49026>;
    <D.49025>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49026>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.49000 = cfg->mempool;
    ins = mono_mempool_alloc (D.49000, 56);
    ins->data.op[1].const_val = 0;
    D.49027 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.49027;
    ins->prev = 0B;
    D.49028 = ins->prev;
    ins->next = D.49028;
    ins->opcode = 648;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.49029 = ins->sreg3;
    ins->sreg2 = D.49029;
    D.49030 = ins->sreg2;
    ins->sreg1 = D.49030;
    D.49021 = cfg->ip;
    ins->cil_code = D.49021;
    if (0 != 0) goto <D.49031>; else goto <D.49032>;
    <D.49031>:
    D.49000 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49000, 172);
    D.49001 = cfg->num_bblocks;
    D.49033 = D.49001;
    D.49034 = D.49033 + 1;
    cfg->num_bblocks = D.49034;
    D.49035 = (int) D.49033;
    falsebb->block_num = D.49035;
    ins->data.op[0].target_block = false_bb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, false_bb);
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49036>; else goto <D.49037>;
    <D.49036>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = ins;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    ins->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    goto <D.49038>;
    <D.49037>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49038>:
    D.49039 = falsebb->cil_code;
    if (D.49039 != 0B) goto <D.49040>; else goto <D.49041>;
    <D.49040>:
    D.49042 = cfg->cil_offset_to_bb;
    D.49039 = falsebb->cil_code;
    D.49043 = (int) D.49039;
    D.49044 = cfg->cil_start;
    D.49045 = (int) D.49044;
    D.49046 = D.49043 - D.49045;
    D.49047 = (unsigned int) D.49046;
    D.49048 = D.49047 * 4;
    D.49049 = D.49042 + D.49048;
    *D.49049 = falsebb;
    <D.49041>:
    D.49050 = cfg->real_offset;
    falsebb->real_offset = D.49050;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49054>; else goto <D.49051>;
    <D.49054>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 <= 9) goto <D.49052>; else goto <D.49057>;
    <D.49057>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 <= 9) goto <D.49052>; else goto <D.49059>;
    <D.49059>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 <= 9) goto <D.49052>; else goto <D.49051>;
    <D.49052>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    D.49063 = *D.49062;
    if (D.49063 == 0B) goto <D.49064>; else goto <D.49051>;
    <D.49064>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    *D.49062 = falsebb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    goto <D.49053>;
    <D.49051>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 == 0B) goto <D.49065>; else goto <D.49067>;
    <D.49067>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 442) goto <D.49068>; else goto <D.49066>;
    <D.49068>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 759) goto <D.49069>; else goto <D.49066>;
    <D.49069>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 > 9) goto <D.49070>; else goto <D.49066>;
    <D.49070>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 > 9) goto <D.49071>; else goto <D.49066>;
    <D.49071>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 > 9) goto <D.49065>; else goto <D.49066>;
    <D.49065>:
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    <D.49066>:
    <D.49053>:
    D.49022 = cfg->cbb;
    D.49022->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49072>;
    <D.49032>:
    D.49000 = cfg->mempool;
    D.49073 = mono_mempool_alloc (D.49000, 8);
    ins->data.op[1].many_blocks = D.49073;
    D.49074 = ins->data.op[1].many_blocks;
    *D.49074 = false_bb;
    D.49074 = ins->data.op[1].many_blocks;
    D.49075 = D.49074 + 4;
    *D.49075 = 0B;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, false_bb);
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49076>; else goto <D.49077>;
    <D.49076>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = ins;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    ins->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    goto <D.49078>;
    <D.49077>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49078>:
    D.49079 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.49080 = D.49079 & 8;
    if (D.49080 == 0) goto <D.49081>; else goto <D.49082>;
    <D.49081>:
    D.49000 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49000, 172);
    D.49001 = cfg->num_bblocks;
    D.49083 = D.49001;
    D.49084 = D.49083 + 1;
    cfg->num_bblocks = D.49084;
    D.49085 = (int) D.49083;
    falsebb->block_num = D.49085;
    D.49074 = ins->data.op[1].many_blocks;
    D.49075 = D.49074 + 4;
    *D.49075 = falsebb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    D.49039 = falsebb->cil_code;
    if (D.49039 != 0B) goto <D.49086>; else goto <D.49087>;
    <D.49086>:
    D.49042 = cfg->cil_offset_to_bb;
    D.49039 = falsebb->cil_code;
    D.49043 = (int) D.49039;
    D.49044 = cfg->cil_start;
    D.49045 = (int) D.49044;
    D.49046 = D.49043 - D.49045;
    D.49047 = (unsigned int) D.49046;
    D.49048 = D.49047 * 4;
    D.49049 = D.49042 + D.49048;
    *D.49049 = falsebb;
    <D.49087>:
    D.49050 = cfg->real_offset;
    falsebb->real_offset = D.49050;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49091>; else goto <D.49088>;
    <D.49091>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 <= 9) goto <D.49089>; else goto <D.49092>;
    <D.49092>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 <= 9) goto <D.49089>; else goto <D.49093>;
    <D.49093>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 <= 9) goto <D.49089>; else goto <D.49088>;
    <D.49089>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    D.49063 = *D.49062;
    if (D.49063 == 0B) goto <D.49094>; else goto <D.49088>;
    <D.49094>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    *D.49062 = falsebb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    goto <D.49090>;
    <D.49088>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 == 0B) goto <D.49095>; else goto <D.49097>;
    <D.49097>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 442) goto <D.49098>; else goto <D.49096>;
    <D.49098>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 759) goto <D.49099>; else goto <D.49096>;
    <D.49099>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 > 9) goto <D.49100>; else goto <D.49096>;
    <D.49100>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 > 9) goto <D.49101>; else goto <D.49096>;
    <D.49101>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 > 9) goto <D.49095>; else goto <D.49096>;
    <D.49095>:
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    <D.49096>:
    <D.49090>:
    D.49022 = cfg->cbb;
    D.49022->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49102>;
    <D.49082>:
    D.49022 = cfg->cbb;
    D.49022->extended = 1;
    <D.49102>:
    <D.49072>:
  }
  D.49103 = klass->flags;
  D.49104 = D.49103 & 32;
  if (D.49104 != 0) goto <D.49105>; else goto <D.49106>;
  <D.49105>:
  D.49000 = cfg->mempool;
  interface_fail_bb = mono_mempool_alloc0 (D.49000, 172);
  D.49001 = cfg->num_bblocks;
  D.49107 = D.49001;
  D.49108 = D.49107 + 1;
  cfg->num_bblocks = D.49108;
  D.49109 = (int) D.49107;
  interface_fail_bb->block_num = D.49109;
  D.49110 = alloc_preg (cfg);
  tmp_reg = (int) D.49110;
  {
    struct MonoInst * inst;

    D.49000 = cfg->mempool;
    inst = mono_mempool_alloc (D.49000, 56);
    inst->data.op[1].const_val = 0;
    D.49111 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49111;
    inst->prev = 0B;
    D.49112 = inst->prev;
    inst->next = D.49112;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49113 = inst->sreg3;
    inst->sreg2 = D.49113;
    D.49114 = inst->sreg2;
    inst->sreg1 = D.49114;
    D.49021 = cfg->ip;
    inst->cil_code = D.49021;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49115>; else goto <D.49116>;
    <D.49115>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = inst;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    inst->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    goto <D.49117>;
    <D.49116>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49117>:
  }
  mini_emit_iface_cast (cfg, tmp_reg, klass, interface_fail_bb, true_bb);
  D.49118 = interface_fail_bb->cil_code;
  if (D.49118 != 0B) goto <D.49119>; else goto <D.49120>;
  <D.49119>:
  D.49042 = cfg->cil_offset_to_bb;
  D.49118 = interface_fail_bb->cil_code;
  D.49121 = (int) D.49118;
  D.49044 = cfg->cil_start;
  D.49045 = (int) D.49044;
  D.49122 = D.49121 - D.49045;
  D.49123 = (unsigned int) D.49122;
  D.49124 = D.49123 * 4;
  D.49125 = D.49042 + D.49124;
  *D.49125 = interface_fail_bb;
  <D.49120>:
  D.49050 = cfg->real_offset;
  interface_fail_bb->real_offset = D.49050;
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  if (D.49023 != 0B) goto <D.49129>; else goto <D.49126>;
  <D.49129>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49056 = D.49055 + 64985;
  if (D.49056 <= 9) goto <D.49127>; else goto <D.49130>;
  <D.49130>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49058 = D.49055 + 64878;
  if (D.49058 <= 9) goto <D.49127>; else goto <D.49131>;
  <D.49131>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49060 = D.49055 + 64888;
  if (D.49060 <= 9) goto <D.49127>; else goto <D.49126>;
  <D.49127>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49061 = D.49023->data.op[1].many_blocks;
  D.49062 = D.49061 + 4;
  D.49063 = *D.49062;
  if (D.49063 == 0B) goto <D.49132>; else goto <D.49126>;
  <D.49132>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49061 = D.49023->data.op[1].many_blocks;
  D.49062 = D.49061 + 4;
  *D.49062 = interface_fail_bb;
  D.49022 = cfg->cbb;
  mono_link_bblock (cfg, D.49022, interface_fail_bb);
  goto <D.49128>;
  <D.49126>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  if (D.49023 == 0B) goto <D.49133>; else goto <D.49135>;
  <D.49135>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  if (D.49055 != 442) goto <D.49136>; else goto <D.49134>;
  <D.49136>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  if (D.49055 != 759) goto <D.49137>; else goto <D.49134>;
  <D.49137>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49056 = D.49055 + 64985;
  if (D.49056 > 9) goto <D.49138>; else goto <D.49134>;
  <D.49138>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49058 = D.49055 + 64878;
  if (D.49058 > 9) goto <D.49139>; else goto <D.49134>;
  <D.49139>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49060 = D.49055 + 64888;
  if (D.49060 > 9) goto <D.49133>; else goto <D.49134>;
  <D.49133>:
  D.49022 = cfg->cbb;
  mono_link_bblock (cfg, D.49022, interface_fail_bb);
  <D.49134>:
  <D.49128>:
  D.49022 = cfg->cbb;
  D.49022->next_bb = interface_fail_bb;
  cfg->cbb = interface_fail_bb;
  {
    struct MonoInst * inst;

    D.49000 = cfg->mempool;
    inst = mono_mempool_alloc (D.49000, 56);
    inst->data.op[1].const_val = 0;
    D.49140 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49140;
    inst->prev = 0B;
    D.49141 = inst->prev;
    inst->next = D.49141;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49142 = inst->sreg3;
    inst->sreg2 = D.49142;
    D.49143 = inst->sreg2;
    inst->sreg1 = D.49143;
    D.49021 = cfg->ip;
    inst->cil_code = D.49021;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 0;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49144>; else goto <D.49145>;
    <D.49144>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = inst;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    inst->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    goto <D.49146>;
    <D.49145>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49146>:
  }
  D.49147 = mono_defaults.transparent_proxy_class;
  mini_emit_class_check_branch (cfg, klass_reg, D.49147, 653, false_bb);
  D.49148 = alloc_preg (cfg);
  tmp_reg = (int) D.49148;
  {
    struct MonoInst * inst;

    D.49000 = cfg->mempool;
    inst = mono_mempool_alloc (D.49000, 56);
    inst->data.op[1].const_val = 0;
    D.49149 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49149;
    inst->prev = 0B;
    D.49150 = inst->prev;
    inst->next = D.49150;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49151 = inst->sreg3;
    inst->sreg2 = D.49151;
    D.49152 = inst->sreg2;
    inst->sreg1 = D.49152;
    D.49021 = cfg->ip;
    inst->cil_code = D.49021;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 16;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49153>; else goto <D.49154>;
    <D.49153>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = inst;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    inst->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    goto <D.49155>;
    <D.49154>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49155>:
  }
  {
    struct MonoInst * inst;

    D.49000 = cfg->mempool;
    inst = mono_mempool_alloc (D.49000, 56);
    inst->data.op[1].const_val = 0;
    D.49156 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49156;
    inst->prev = 0B;
    D.49157 = inst->prev;
    inst->next = D.49157;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49158 = inst->sreg3;
    inst->sreg2 = D.49158;
    D.49159 = inst->sreg2;
    inst->sreg1 = D.49159;
    D.49021 = cfg->ip;
    inst->cil_code = D.49021;
    inst->dreg = -1;
    inst->sreg1 = tmp_reg;
    inst->data.op[1].const_val = 0;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49160>; else goto <D.49161>;
    <D.49160>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = inst;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    inst->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    goto <D.49162>;
    <D.49161>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49162>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.49000 = cfg->mempool;
    ins = mono_mempool_alloc (D.49000, 56);
    ins->data.op[1].const_val = 0;
    D.49163 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.49163;
    ins->prev = 0B;
    D.49164 = ins->prev;
    ins->next = D.49164;
    ins->opcode = 653;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.49165 = ins->sreg3;
    ins->sreg2 = D.49165;
    D.49166 = ins->sreg2;
    ins->sreg1 = D.49166;
    D.49021 = cfg->ip;
    ins->cil_code = D.49021;
    if (0 != 0) goto <D.49167>; else goto <D.49168>;
    <D.49167>:
    D.49000 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49000, 172);
    D.49001 = cfg->num_bblocks;
    D.49169 = D.49001;
    D.49170 = D.49169 + 1;
    cfg->num_bblocks = D.49170;
    D.49171 = (int) D.49169;
    falsebb->block_num = D.49171;
    ins->data.op[0].target_block = false2_bb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, false2_bb);
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49172>; else goto <D.49173>;
    <D.49172>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = ins;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    ins->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    goto <D.49174>;
    <D.49173>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49174>:
    D.49175 = falsebb->cil_code;
    if (D.49175 != 0B) goto <D.49176>; else goto <D.49177>;
    <D.49176>:
    D.49042 = cfg->cil_offset_to_bb;
    D.49175 = falsebb->cil_code;
    D.49178 = (int) D.49175;
    D.49044 = cfg->cil_start;
    D.49045 = (int) D.49044;
    D.49179 = D.49178 - D.49045;
    D.49180 = (unsigned int) D.49179;
    D.49181 = D.49180 * 4;
    D.49182 = D.49042 + D.49181;
    *D.49182 = falsebb;
    <D.49177>:
    D.49050 = cfg->real_offset;
    falsebb->real_offset = D.49050;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49186>; else goto <D.49183>;
    <D.49186>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 <= 9) goto <D.49184>; else goto <D.49187>;
    <D.49187>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 <= 9) goto <D.49184>; else goto <D.49188>;
    <D.49188>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 <= 9) goto <D.49184>; else goto <D.49183>;
    <D.49184>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    D.49063 = *D.49062;
    if (D.49063 == 0B) goto <D.49189>; else goto <D.49183>;
    <D.49189>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    *D.49062 = falsebb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    goto <D.49185>;
    <D.49183>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 == 0B) goto <D.49190>; else goto <D.49192>;
    <D.49192>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 442) goto <D.49193>; else goto <D.49191>;
    <D.49193>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 759) goto <D.49194>; else goto <D.49191>;
    <D.49194>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 > 9) goto <D.49195>; else goto <D.49191>;
    <D.49195>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 > 9) goto <D.49196>; else goto <D.49191>;
    <D.49196>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 > 9) goto <D.49190>; else goto <D.49191>;
    <D.49190>:
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    <D.49191>:
    <D.49185>:
    D.49022 = cfg->cbb;
    D.49022->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49197>;
    <D.49168>:
    D.49000 = cfg->mempool;
    D.49198 = mono_mempool_alloc (D.49000, 8);
    ins->data.op[1].many_blocks = D.49198;
    D.49199 = ins->data.op[1].many_blocks;
    *D.49199 = false2_bb;
    D.49199 = ins->data.op[1].many_blocks;
    D.49200 = D.49199 + 4;
    *D.49200 = 0B;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, false2_bb);
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49201>; else goto <D.49202>;
    <D.49201>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = ins;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    ins->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    goto <D.49203>;
    <D.49202>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49203>:
    D.49079 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.49080 = D.49079 & 8;
    if (D.49080 == 0) goto <D.49204>; else goto <D.49205>;
    <D.49204>:
    D.49000 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49000, 172);
    D.49001 = cfg->num_bblocks;
    D.49206 = D.49001;
    D.49207 = D.49206 + 1;
    cfg->num_bblocks = D.49207;
    D.49208 = (int) D.49206;
    falsebb->block_num = D.49208;
    D.49199 = ins->data.op[1].many_blocks;
    D.49200 = D.49199 + 4;
    *D.49200 = falsebb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    D.49175 = falsebb->cil_code;
    if (D.49175 != 0B) goto <D.49209>; else goto <D.49210>;
    <D.49209>:
    D.49042 = cfg->cil_offset_to_bb;
    D.49175 = falsebb->cil_code;
    D.49178 = (int) D.49175;
    D.49044 = cfg->cil_start;
    D.49045 = (int) D.49044;
    D.49179 = D.49178 - D.49045;
    D.49180 = (unsigned int) D.49179;
    D.49181 = D.49180 * 4;
    D.49182 = D.49042 + D.49181;
    *D.49182 = falsebb;
    <D.49210>:
    D.49050 = cfg->real_offset;
    falsebb->real_offset = D.49050;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49214>; else goto <D.49211>;
    <D.49214>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 <= 9) goto <D.49212>; else goto <D.49215>;
    <D.49215>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 <= 9) goto <D.49212>; else goto <D.49216>;
    <D.49216>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 <= 9) goto <D.49212>; else goto <D.49211>;
    <D.49212>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    D.49063 = *D.49062;
    if (D.49063 == 0B) goto <D.49217>; else goto <D.49211>;
    <D.49217>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    *D.49062 = falsebb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    goto <D.49213>;
    <D.49211>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 == 0B) goto <D.49218>; else goto <D.49220>;
    <D.49220>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 442) goto <D.49221>; else goto <D.49219>;
    <D.49221>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 759) goto <D.49222>; else goto <D.49219>;
    <D.49222>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 > 9) goto <D.49223>; else goto <D.49219>;
    <D.49223>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 > 9) goto <D.49224>; else goto <D.49219>;
    <D.49224>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 > 9) goto <D.49218>; else goto <D.49219>;
    <D.49218>:
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    <D.49219>:
    <D.49213>:
    D.49022 = cfg->cbb;
    D.49022->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49225>;
    <D.49205>:
    D.49022 = cfg->cbb;
    D.49022->extended = 1;
    <D.49225>:
    <D.49197>:
  }
  goto <D.49226>;
  <D.49106>:
  D.49227 = alloc_preg (cfg);
  tmp_reg = (int) D.49227;
  {
    struct MonoInst * inst;

    D.49000 = cfg->mempool;
    inst = mono_mempool_alloc (D.49000, 56);
    inst->data.op[1].const_val = 0;
    D.49228 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49228;
    inst->prev = 0B;
    D.49229 = inst->prev;
    inst->next = D.49229;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49230 = inst->sreg3;
    inst->sreg2 = D.49230;
    D.49231 = inst->sreg2;
    inst->sreg1 = D.49231;
    D.49021 = cfg->ip;
    inst->cil_code = D.49021;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49232>; else goto <D.49233>;
    <D.49232>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = inst;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    inst->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    goto <D.49234>;
    <D.49233>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49234>:
  }
  {
    struct MonoInst * inst;

    D.49000 = cfg->mempool;
    inst = mono_mempool_alloc (D.49000, 56);
    inst->data.op[1].const_val = 0;
    D.49235 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49235;
    inst->prev = 0B;
    D.49236 = inst->prev;
    inst->next = D.49236;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49237 = inst->sreg3;
    inst->sreg2 = D.49237;
    D.49238 = inst->sreg2;
    inst->sreg1 = D.49238;
    D.49021 = cfg->ip;
    inst->cil_code = D.49021;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 0;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49239>; else goto <D.49240>;
    <D.49239>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = inst;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    inst->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    goto <D.49241>;
    <D.49240>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49241>:
  }
  D.49147 = mono_defaults.transparent_proxy_class;
  mini_emit_class_check_branch (cfg, klass_reg, D.49147, 653, no_proxy_bb);
  D.49242 = alloc_preg (cfg);
  tmp_reg = (int) D.49242;
  {
    struct MonoInst * inst;

    D.49000 = cfg->mempool;
    inst = mono_mempool_alloc (D.49000, 56);
    inst->data.op[1].const_val = 0;
    D.49243 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49243;
    inst->prev = 0B;
    D.49244 = inst->prev;
    inst->next = D.49244;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49245 = inst->sreg3;
    inst->sreg2 = D.49245;
    D.49246 = inst->sreg2;
    inst->sreg1 = D.49246;
    D.49021 = cfg->ip;
    inst->cil_code = D.49021;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 12;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49247>; else goto <D.49248>;
    <D.49247>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = inst;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    inst->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    goto <D.49249>;
    <D.49248>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49249>:
  }
  {
    struct MonoInst * inst;

    D.49000 = cfg->mempool;
    inst = mono_mempool_alloc (D.49000, 56);
    inst->data.op[1].const_val = 0;
    D.49250 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49250;
    inst->prev = 0B;
    D.49251 = inst->prev;
    inst->next = D.49251;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49252 = inst->sreg3;
    inst->sreg2 = D.49252;
    D.49253 = inst->sreg2;
    inst->sreg1 = D.49253;
    D.49021 = cfg->ip;
    inst->cil_code = D.49021;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 8;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49254>; else goto <D.49255>;
    <D.49254>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = inst;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    inst->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    goto <D.49256>;
    <D.49255>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49256>:
  }
  D.49257 = alloc_preg (cfg);
  tmp_reg = (int) D.49257;
  {
    struct MonoInst * inst;

    D.49000 = cfg->mempool;
    inst = mono_mempool_alloc (D.49000, 56);
    inst->data.op[1].const_val = 0;
    D.49258 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49258;
    inst->prev = 0B;
    D.49259 = inst->prev;
    inst->next = D.49259;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49260 = inst->sreg3;
    inst->sreg2 = D.49260;
    D.49261 = inst->sreg2;
    inst->sreg1 = D.49261;
    D.49021 = cfg->ip;
    inst->cil_code = D.49021;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 16;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49262>; else goto <D.49263>;
    <D.49262>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = inst;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    inst->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    goto <D.49264>;
    <D.49263>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49264>:
  }
  {
    struct MonoInst * inst;

    D.49000 = cfg->mempool;
    inst = mono_mempool_alloc (D.49000, 56);
    inst->data.op[1].const_val = 0;
    D.49265 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49265;
    inst->prev = 0B;
    D.49266 = inst->prev;
    inst->next = D.49266;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49267 = inst->sreg3;
    inst->sreg2 = D.49267;
    D.49268 = inst->sreg2;
    inst->sreg1 = D.49268;
    D.49021 = cfg->ip;
    inst->cil_code = D.49021;
    inst->dreg = -1;
    inst->sreg1 = tmp_reg;
    inst->data.op[1].const_val = 0;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49269>; else goto <D.49270>;
    <D.49269>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = inst;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    inst->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    goto <D.49271>;
    <D.49270>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49271>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.49000 = cfg->mempool;
    ins = mono_mempool_alloc (D.49000, 56);
    ins->data.op[1].const_val = 0;
    D.49272 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.49272;
    ins->prev = 0B;
    D.49273 = ins->prev;
    ins->next = D.49273;
    ins->opcode = 648;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.49274 = ins->sreg3;
    ins->sreg2 = D.49274;
    D.49275 = ins->sreg2;
    ins->sreg1 = D.49275;
    D.49021 = cfg->ip;
    ins->cil_code = D.49021;
    if (0 != 0) goto <D.49276>; else goto <D.49277>;
    <D.49276>:
    D.49000 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49000, 172);
    D.49001 = cfg->num_bblocks;
    D.49278 = D.49001;
    D.49279 = D.49278 + 1;
    cfg->num_bblocks = D.49279;
    D.49280 = (int) D.49278;
    falsebb->block_num = D.49280;
    ins->data.op[0].target_block = no_proxy_bb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, no_proxy_bb);
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49281>; else goto <D.49282>;
    <D.49281>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = ins;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    ins->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    goto <D.49283>;
    <D.49282>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49283>:
    D.49284 = falsebb->cil_code;
    if (D.49284 != 0B) goto <D.49285>; else goto <D.49286>;
    <D.49285>:
    D.49042 = cfg->cil_offset_to_bb;
    D.49284 = falsebb->cil_code;
    D.49287 = (int) D.49284;
    D.49044 = cfg->cil_start;
    D.49045 = (int) D.49044;
    D.49288 = D.49287 - D.49045;
    D.49289 = (unsigned int) D.49288;
    D.49290 = D.49289 * 4;
    D.49291 = D.49042 + D.49290;
    *D.49291 = falsebb;
    <D.49286>:
    D.49050 = cfg->real_offset;
    falsebb->real_offset = D.49050;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49295>; else goto <D.49292>;
    <D.49295>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 <= 9) goto <D.49293>; else goto <D.49296>;
    <D.49296>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 <= 9) goto <D.49293>; else goto <D.49297>;
    <D.49297>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 <= 9) goto <D.49293>; else goto <D.49292>;
    <D.49293>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    D.49063 = *D.49062;
    if (D.49063 == 0B) goto <D.49298>; else goto <D.49292>;
    <D.49298>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    *D.49062 = falsebb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    goto <D.49294>;
    <D.49292>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 == 0B) goto <D.49299>; else goto <D.49301>;
    <D.49301>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 442) goto <D.49302>; else goto <D.49300>;
    <D.49302>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 759) goto <D.49303>; else goto <D.49300>;
    <D.49303>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 > 9) goto <D.49304>; else goto <D.49300>;
    <D.49304>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 > 9) goto <D.49305>; else goto <D.49300>;
    <D.49305>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 > 9) goto <D.49299>; else goto <D.49300>;
    <D.49299>:
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    <D.49300>:
    <D.49294>:
    D.49022 = cfg->cbb;
    D.49022->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49306>;
    <D.49277>:
    D.49000 = cfg->mempool;
    D.49307 = mono_mempool_alloc (D.49000, 8);
    ins->data.op[1].many_blocks = D.49307;
    D.49308 = ins->data.op[1].many_blocks;
    *D.49308 = no_proxy_bb;
    D.49308 = ins->data.op[1].many_blocks;
    D.49309 = D.49308 + 4;
    *D.49309 = 0B;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, no_proxy_bb);
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49310>; else goto <D.49311>;
    <D.49310>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = ins;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    ins->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    goto <D.49312>;
    <D.49311>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49312>:
    D.49079 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.49080 = D.49079 & 8;
    if (D.49080 == 0) goto <D.49313>; else goto <D.49314>;
    <D.49313>:
    D.49000 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49000, 172);
    D.49001 = cfg->num_bblocks;
    D.49315 = D.49001;
    D.49316 = D.49315 + 1;
    cfg->num_bblocks = D.49316;
    D.49317 = (int) D.49315;
    falsebb->block_num = D.49317;
    D.49308 = ins->data.op[1].many_blocks;
    D.49309 = D.49308 + 4;
    *D.49309 = falsebb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    D.49284 = falsebb->cil_code;
    if (D.49284 != 0B) goto <D.49318>; else goto <D.49319>;
    <D.49318>:
    D.49042 = cfg->cil_offset_to_bb;
    D.49284 = falsebb->cil_code;
    D.49287 = (int) D.49284;
    D.49044 = cfg->cil_start;
    D.49045 = (int) D.49044;
    D.49288 = D.49287 - D.49045;
    D.49289 = (unsigned int) D.49288;
    D.49290 = D.49289 * 4;
    D.49291 = D.49042 + D.49290;
    *D.49291 = falsebb;
    <D.49319>:
    D.49050 = cfg->real_offset;
    falsebb->real_offset = D.49050;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49323>; else goto <D.49320>;
    <D.49323>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 <= 9) goto <D.49321>; else goto <D.49324>;
    <D.49324>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 <= 9) goto <D.49321>; else goto <D.49325>;
    <D.49325>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 <= 9) goto <D.49321>; else goto <D.49320>;
    <D.49321>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    D.49063 = *D.49062;
    if (D.49063 == 0B) goto <D.49326>; else goto <D.49320>;
    <D.49326>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    *D.49062 = falsebb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    goto <D.49322>;
    <D.49320>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 == 0B) goto <D.49327>; else goto <D.49329>;
    <D.49329>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 442) goto <D.49330>; else goto <D.49328>;
    <D.49330>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 759) goto <D.49331>; else goto <D.49328>;
    <D.49331>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 > 9) goto <D.49332>; else goto <D.49328>;
    <D.49332>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 > 9) goto <D.49333>; else goto <D.49328>;
    <D.49333>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 > 9) goto <D.49327>; else goto <D.49328>;
    <D.49327>:
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    <D.49328>:
    <D.49322>:
    D.49022 = cfg->cbb;
    D.49022->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49334>;
    <D.49314>:
    D.49022 = cfg->cbb;
    D.49022->extended = 1;
    <D.49334>:
    <D.49306>:
  }
  mini_emit_isninst_cast (cfg, klass_reg, klass, false2_bb, true_bb);
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.49000 = cfg->mempool;
    ins = mono_mempool_alloc (D.49000, 56);
    ins->data.op[1].const_val = 0;
    D.49335 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.49335;
    ins->prev = 0B;
    D.49336 = ins->prev;
    ins->next = D.49336;
    ins->opcode = 442;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.49337 = ins->sreg3;
    ins->sreg2 = D.49337;
    D.49338 = ins->sreg2;
    ins->sreg1 = D.49338;
    D.49021 = cfg->ip;
    ins->cil_code = D.49021;
    if (1 != 0) goto <D.49339>; else goto <D.49340>;
    <D.49339>:
    D.49000 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49000, 172);
    D.49001 = cfg->num_bblocks;
    D.49341 = D.49001;
    D.49342 = D.49341 + 1;
    cfg->num_bblocks = D.49342;
    D.49343 = (int) D.49341;
    falsebb->block_num = D.49343;
    ins->data.op[0].target_block = false2_bb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, false2_bb);
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49344>; else goto <D.49345>;
    <D.49344>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = ins;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    ins->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    goto <D.49346>;
    <D.49345>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49346>:
    D.49347 = falsebb->cil_code;
    if (D.49347 != 0B) goto <D.49348>; else goto <D.49349>;
    <D.49348>:
    D.49042 = cfg->cil_offset_to_bb;
    D.49347 = falsebb->cil_code;
    D.49350 = (int) D.49347;
    D.49044 = cfg->cil_start;
    D.49045 = (int) D.49044;
    D.49351 = D.49350 - D.49045;
    D.49352 = (unsigned int) D.49351;
    D.49353 = D.49352 * 4;
    D.49354 = D.49042 + D.49353;
    *D.49354 = falsebb;
    <D.49349>:
    D.49050 = cfg->real_offset;
    falsebb->real_offset = D.49050;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49358>; else goto <D.49355>;
    <D.49358>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 <= 9) goto <D.49356>; else goto <D.49359>;
    <D.49359>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 <= 9) goto <D.49356>; else goto <D.49360>;
    <D.49360>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 <= 9) goto <D.49356>; else goto <D.49355>;
    <D.49356>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    D.49063 = *D.49062;
    if (D.49063 == 0B) goto <D.49361>; else goto <D.49355>;
    <D.49361>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    *D.49062 = falsebb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    goto <D.49357>;
    <D.49355>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 == 0B) goto <D.49362>; else goto <D.49364>;
    <D.49364>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 442) goto <D.49365>; else goto <D.49363>;
    <D.49365>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 759) goto <D.49366>; else goto <D.49363>;
    <D.49366>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 > 9) goto <D.49367>; else goto <D.49363>;
    <D.49367>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 > 9) goto <D.49368>; else goto <D.49363>;
    <D.49368>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 > 9) goto <D.49362>; else goto <D.49363>;
    <D.49362>:
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    <D.49363>:
    <D.49357>:
    D.49022 = cfg->cbb;
    D.49022->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49369>;
    <D.49340>:
    D.49000 = cfg->mempool;
    D.49370 = mono_mempool_alloc (D.49000, 8);
    ins->data.op[1].many_blocks = D.49370;
    D.49371 = ins->data.op[1].many_blocks;
    *D.49371 = false2_bb;
    D.49371 = ins->data.op[1].many_blocks;
    D.49372 = D.49371 + 4;
    *D.49372 = 0B;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, false2_bb);
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49373>; else goto <D.49374>;
    <D.49373>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = ins;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    ins->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    goto <D.49375>;
    <D.49374>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49375>:
    D.49079 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.49080 = D.49079 & 8;
    if (D.49080 == 0) goto <D.49376>; else goto <D.49377>;
    <D.49376>:
    D.49000 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49000, 172);
    D.49001 = cfg->num_bblocks;
    D.49378 = D.49001;
    D.49379 = D.49378 + 1;
    cfg->num_bblocks = D.49379;
    D.49380 = (int) D.49378;
    falsebb->block_num = D.49380;
    D.49371 = ins->data.op[1].many_blocks;
    D.49372 = D.49371 + 4;
    *D.49372 = falsebb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    D.49347 = falsebb->cil_code;
    if (D.49347 != 0B) goto <D.49381>; else goto <D.49382>;
    <D.49381>:
    D.49042 = cfg->cil_offset_to_bb;
    D.49347 = falsebb->cil_code;
    D.49350 = (int) D.49347;
    D.49044 = cfg->cil_start;
    D.49045 = (int) D.49044;
    D.49351 = D.49350 - D.49045;
    D.49352 = (unsigned int) D.49351;
    D.49353 = D.49352 * 4;
    D.49354 = D.49042 + D.49353;
    *D.49354 = falsebb;
    <D.49382>:
    D.49050 = cfg->real_offset;
    falsebb->real_offset = D.49050;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49386>; else goto <D.49383>;
    <D.49386>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 <= 9) goto <D.49384>; else goto <D.49387>;
    <D.49387>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 <= 9) goto <D.49384>; else goto <D.49388>;
    <D.49388>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 <= 9) goto <D.49384>; else goto <D.49383>;
    <D.49384>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    D.49063 = *D.49062;
    if (D.49063 == 0B) goto <D.49389>; else goto <D.49383>;
    <D.49389>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    *D.49062 = falsebb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    goto <D.49385>;
    <D.49383>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 == 0B) goto <D.49390>; else goto <D.49392>;
    <D.49392>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 442) goto <D.49393>; else goto <D.49391>;
    <D.49393>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 759) goto <D.49394>; else goto <D.49391>;
    <D.49394>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 > 9) goto <D.49395>; else goto <D.49391>;
    <D.49395>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 > 9) goto <D.49396>; else goto <D.49391>;
    <D.49396>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 > 9) goto <D.49390>; else goto <D.49391>;
    <D.49390>:
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    <D.49391>:
    <D.49385>:
    D.49022 = cfg->cbb;
    D.49022->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49397>;
    <D.49377>:
    D.49022 = cfg->cbb;
    D.49022->extended = 1;
    <D.49397>:
    <D.49369>:
  }
  D.49398 = no_proxy_bb->cil_code;
  if (D.49398 != 0B) goto <D.49399>; else goto <D.49400>;
  <D.49399>:
  D.49042 = cfg->cil_offset_to_bb;
  D.49398 = no_proxy_bb->cil_code;
  D.49401 = (int) D.49398;
  D.49044 = cfg->cil_start;
  D.49045 = (int) D.49044;
  D.49402 = D.49401 - D.49045;
  D.49403 = (unsigned int) D.49402;
  D.49404 = D.49403 * 4;
  D.49405 = D.49042 + D.49404;
  *D.49405 = no_proxy_bb;
  <D.49400>:
  D.49050 = cfg->real_offset;
  no_proxy_bb->real_offset = D.49050;
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  if (D.49023 != 0B) goto <D.49409>; else goto <D.49406>;
  <D.49409>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49056 = D.49055 + 64985;
  if (D.49056 <= 9) goto <D.49407>; else goto <D.49410>;
  <D.49410>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49058 = D.49055 + 64878;
  if (D.49058 <= 9) goto <D.49407>; else goto <D.49411>;
  <D.49411>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49060 = D.49055 + 64888;
  if (D.49060 <= 9) goto <D.49407>; else goto <D.49406>;
  <D.49407>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49061 = D.49023->data.op[1].many_blocks;
  D.49062 = D.49061 + 4;
  D.49063 = *D.49062;
  if (D.49063 == 0B) goto <D.49412>; else goto <D.49406>;
  <D.49412>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49061 = D.49023->data.op[1].many_blocks;
  D.49062 = D.49061 + 4;
  *D.49062 = no_proxy_bb;
  D.49022 = cfg->cbb;
  mono_link_bblock (cfg, D.49022, no_proxy_bb);
  goto <D.49408>;
  <D.49406>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  if (D.49023 == 0B) goto <D.49413>; else goto <D.49415>;
  <D.49415>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  if (D.49055 != 442) goto <D.49416>; else goto <D.49414>;
  <D.49416>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  if (D.49055 != 759) goto <D.49417>; else goto <D.49414>;
  <D.49417>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49056 = D.49055 + 64985;
  if (D.49056 > 9) goto <D.49418>; else goto <D.49414>;
  <D.49418>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49058 = D.49055 + 64878;
  if (D.49058 > 9) goto <D.49419>; else goto <D.49414>;
  <D.49419>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49060 = D.49055 + 64888;
  if (D.49060 > 9) goto <D.49413>; else goto <D.49414>;
  <D.49413>:
  D.49022 = cfg->cbb;
  mono_link_bblock (cfg, D.49022, no_proxy_bb);
  <D.49414>:
  <D.49408>:
  D.49022 = cfg->cbb;
  D.49022->next_bb = no_proxy_bb;
  cfg->cbb = no_proxy_bb;
  mini_emit_isninst_cast (cfg, klass_reg, klass, false_bb, true_bb);
  <D.49226>:
  D.49420 = false_bb->cil_code;
  if (D.49420 != 0B) goto <D.49421>; else goto <D.49422>;
  <D.49421>:
  D.49042 = cfg->cil_offset_to_bb;
  D.49420 = false_bb->cil_code;
  D.49423 = (int) D.49420;
  D.49044 = cfg->cil_start;
  D.49045 = (int) D.49044;
  D.49424 = D.49423 - D.49045;
  D.49425 = (unsigned int) D.49424;
  D.49426 = D.49425 * 4;
  D.49427 = D.49042 + D.49426;
  *D.49427 = false_bb;
  <D.49422>:
  D.49050 = cfg->real_offset;
  false_bb->real_offset = D.49050;
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  if (D.49023 != 0B) goto <D.49431>; else goto <D.49428>;
  <D.49431>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49056 = D.49055 + 64985;
  if (D.49056 <= 9) goto <D.49429>; else goto <D.49432>;
  <D.49432>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49058 = D.49055 + 64878;
  if (D.49058 <= 9) goto <D.49429>; else goto <D.49433>;
  <D.49433>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49060 = D.49055 + 64888;
  if (D.49060 <= 9) goto <D.49429>; else goto <D.49428>;
  <D.49429>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49061 = D.49023->data.op[1].many_blocks;
  D.49062 = D.49061 + 4;
  D.49063 = *D.49062;
  if (D.49063 == 0B) goto <D.49434>; else goto <D.49428>;
  <D.49434>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49061 = D.49023->data.op[1].many_blocks;
  D.49062 = D.49061 + 4;
  *D.49062 = false_bb;
  D.49022 = cfg->cbb;
  mono_link_bblock (cfg, D.49022, false_bb);
  goto <D.49430>;
  <D.49428>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  if (D.49023 == 0B) goto <D.49435>; else goto <D.49437>;
  <D.49437>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  if (D.49055 != 442) goto <D.49438>; else goto <D.49436>;
  <D.49438>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  if (D.49055 != 759) goto <D.49439>; else goto <D.49436>;
  <D.49439>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49056 = D.49055 + 64985;
  if (D.49056 > 9) goto <D.49440>; else goto <D.49436>;
  <D.49440>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49058 = D.49055 + 64878;
  if (D.49058 > 9) goto <D.49441>; else goto <D.49436>;
  <D.49441>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49060 = D.49055 + 64888;
  if (D.49060 > 9) goto <D.49435>; else goto <D.49436>;
  <D.49435>:
  D.49022 = cfg->cbb;
  mono_link_bblock (cfg, D.49022, false_bb);
  <D.49436>:
  <D.49430>:
  D.49022 = cfg->cbb;
  D.49022->next_bb = false_bb;
  cfg->cbb = false_bb;
  {
    struct MonoInst * inst;

    D.49000 = cfg->mempool;
    inst = mono_mempool_alloc (D.49000, 56);
    inst->data.op[1].const_val = 0;
    D.49442 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49442;
    inst->prev = 0B;
    D.49443 = inst->prev;
    inst->next = D.49443;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49444 = inst->sreg3;
    inst->sreg2 = D.49444;
    D.49445 = inst->sreg2;
    inst->sreg1 = D.49445;
    D.49021 = cfg->ip;
    inst->cil_code = D.49021;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 1;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49446>; else goto <D.49447>;
    <D.49446>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = inst;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    inst->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    goto <D.49448>;
    <D.49447>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49448>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.49000 = cfg->mempool;
    ins = mono_mempool_alloc (D.49000, 56);
    ins->data.op[1].const_val = 0;
    D.49449 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.49449;
    ins->prev = 0B;
    D.49450 = ins->prev;
    ins->next = D.49450;
    ins->opcode = 442;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.49451 = ins->sreg3;
    ins->sreg2 = D.49451;
    D.49452 = ins->sreg2;
    ins->sreg1 = D.49452;
    D.49021 = cfg->ip;
    ins->cil_code = D.49021;
    if (1 != 0) goto <D.49453>; else goto <D.49454>;
    <D.49453>:
    D.49000 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49000, 172);
    D.49001 = cfg->num_bblocks;
    D.49455 = D.49001;
    D.49456 = D.49455 + 1;
    cfg->num_bblocks = D.49456;
    D.49457 = (int) D.49455;
    falsebb->block_num = D.49457;
    ins->data.op[0].target_block = end_bb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, end_bb);
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49458>; else goto <D.49459>;
    <D.49458>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = ins;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    ins->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    goto <D.49460>;
    <D.49459>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49460>:
    D.49461 = falsebb->cil_code;
    if (D.49461 != 0B) goto <D.49462>; else goto <D.49463>;
    <D.49462>:
    D.49042 = cfg->cil_offset_to_bb;
    D.49461 = falsebb->cil_code;
    D.49464 = (int) D.49461;
    D.49044 = cfg->cil_start;
    D.49045 = (int) D.49044;
    D.49465 = D.49464 - D.49045;
    D.49466 = (unsigned int) D.49465;
    D.49467 = D.49466 * 4;
    D.49468 = D.49042 + D.49467;
    *D.49468 = falsebb;
    <D.49463>:
    D.49050 = cfg->real_offset;
    falsebb->real_offset = D.49050;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49472>; else goto <D.49469>;
    <D.49472>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 <= 9) goto <D.49470>; else goto <D.49473>;
    <D.49473>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 <= 9) goto <D.49470>; else goto <D.49474>;
    <D.49474>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 <= 9) goto <D.49470>; else goto <D.49469>;
    <D.49470>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    D.49063 = *D.49062;
    if (D.49063 == 0B) goto <D.49475>; else goto <D.49469>;
    <D.49475>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    *D.49062 = falsebb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    goto <D.49471>;
    <D.49469>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 == 0B) goto <D.49476>; else goto <D.49478>;
    <D.49478>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 442) goto <D.49479>; else goto <D.49477>;
    <D.49479>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 759) goto <D.49480>; else goto <D.49477>;
    <D.49480>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 > 9) goto <D.49481>; else goto <D.49477>;
    <D.49481>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 > 9) goto <D.49482>; else goto <D.49477>;
    <D.49482>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 > 9) goto <D.49476>; else goto <D.49477>;
    <D.49476>:
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    <D.49477>:
    <D.49471>:
    D.49022 = cfg->cbb;
    D.49022->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49483>;
    <D.49454>:
    D.49000 = cfg->mempool;
    D.49484 = mono_mempool_alloc (D.49000, 8);
    ins->data.op[1].many_blocks = D.49484;
    D.49485 = ins->data.op[1].many_blocks;
    *D.49485 = end_bb;
    D.49485 = ins->data.op[1].many_blocks;
    D.49486 = D.49485 + 4;
    *D.49486 = 0B;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, end_bb);
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49487>; else goto <D.49488>;
    <D.49487>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = ins;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    ins->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    goto <D.49489>;
    <D.49488>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49489>:
    D.49079 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.49080 = D.49079 & 8;
    if (D.49080 == 0) goto <D.49490>; else goto <D.49491>;
    <D.49490>:
    D.49000 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49000, 172);
    D.49001 = cfg->num_bblocks;
    D.49492 = D.49001;
    D.49493 = D.49492 + 1;
    cfg->num_bblocks = D.49493;
    D.49494 = (int) D.49492;
    falsebb->block_num = D.49494;
    D.49485 = ins->data.op[1].many_blocks;
    D.49486 = D.49485 + 4;
    *D.49486 = falsebb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    D.49461 = falsebb->cil_code;
    if (D.49461 != 0B) goto <D.49495>; else goto <D.49496>;
    <D.49495>:
    D.49042 = cfg->cil_offset_to_bb;
    D.49461 = falsebb->cil_code;
    D.49464 = (int) D.49461;
    D.49044 = cfg->cil_start;
    D.49045 = (int) D.49044;
    D.49465 = D.49464 - D.49045;
    D.49466 = (unsigned int) D.49465;
    D.49467 = D.49466 * 4;
    D.49468 = D.49042 + D.49467;
    *D.49468 = falsebb;
    <D.49496>:
    D.49050 = cfg->real_offset;
    falsebb->real_offset = D.49050;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49500>; else goto <D.49497>;
    <D.49500>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 <= 9) goto <D.49498>; else goto <D.49501>;
    <D.49501>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 <= 9) goto <D.49498>; else goto <D.49502>;
    <D.49502>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 <= 9) goto <D.49498>; else goto <D.49497>;
    <D.49498>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    D.49063 = *D.49062;
    if (D.49063 == 0B) goto <D.49503>; else goto <D.49497>;
    <D.49503>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    *D.49062 = falsebb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    goto <D.49499>;
    <D.49497>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 == 0B) goto <D.49504>; else goto <D.49506>;
    <D.49506>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 442) goto <D.49507>; else goto <D.49505>;
    <D.49507>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 759) goto <D.49508>; else goto <D.49505>;
    <D.49508>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 > 9) goto <D.49509>; else goto <D.49505>;
    <D.49509>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 > 9) goto <D.49510>; else goto <D.49505>;
    <D.49510>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 > 9) goto <D.49504>; else goto <D.49505>;
    <D.49504>:
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    <D.49505>:
    <D.49499>:
    D.49022 = cfg->cbb;
    D.49022->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49511>;
    <D.49491>:
    D.49022 = cfg->cbb;
    D.49022->extended = 1;
    <D.49511>:
    <D.49483>:
  }
  D.49512 = false2_bb->cil_code;
  if (D.49512 != 0B) goto <D.49513>; else goto <D.49514>;
  <D.49513>:
  D.49042 = cfg->cil_offset_to_bb;
  D.49512 = false2_bb->cil_code;
  D.49515 = (int) D.49512;
  D.49044 = cfg->cil_start;
  D.49045 = (int) D.49044;
  D.49516 = D.49515 - D.49045;
  D.49517 = (unsigned int) D.49516;
  D.49518 = D.49517 * 4;
  D.49519 = D.49042 + D.49518;
  *D.49519 = false2_bb;
  <D.49514>:
  D.49050 = cfg->real_offset;
  false2_bb->real_offset = D.49050;
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  if (D.49023 != 0B) goto <D.49523>; else goto <D.49520>;
  <D.49523>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49056 = D.49055 + 64985;
  if (D.49056 <= 9) goto <D.49521>; else goto <D.49524>;
  <D.49524>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49058 = D.49055 + 64878;
  if (D.49058 <= 9) goto <D.49521>; else goto <D.49525>;
  <D.49525>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49060 = D.49055 + 64888;
  if (D.49060 <= 9) goto <D.49521>; else goto <D.49520>;
  <D.49521>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49061 = D.49023->data.op[1].many_blocks;
  D.49062 = D.49061 + 4;
  D.49063 = *D.49062;
  if (D.49063 == 0B) goto <D.49526>; else goto <D.49520>;
  <D.49526>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49061 = D.49023->data.op[1].many_blocks;
  D.49062 = D.49061 + 4;
  *D.49062 = false2_bb;
  D.49022 = cfg->cbb;
  mono_link_bblock (cfg, D.49022, false2_bb);
  goto <D.49522>;
  <D.49520>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  if (D.49023 == 0B) goto <D.49527>; else goto <D.49529>;
  <D.49529>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  if (D.49055 != 442) goto <D.49530>; else goto <D.49528>;
  <D.49530>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  if (D.49055 != 759) goto <D.49531>; else goto <D.49528>;
  <D.49531>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49056 = D.49055 + 64985;
  if (D.49056 > 9) goto <D.49532>; else goto <D.49528>;
  <D.49532>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49058 = D.49055 + 64878;
  if (D.49058 > 9) goto <D.49533>; else goto <D.49528>;
  <D.49533>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49060 = D.49055 + 64888;
  if (D.49060 > 9) goto <D.49527>; else goto <D.49528>;
  <D.49527>:
  D.49022 = cfg->cbb;
  mono_link_bblock (cfg, D.49022, false2_bb);
  <D.49528>:
  <D.49522>:
  D.49022 = cfg->cbb;
  D.49022->next_bb = false2_bb;
  cfg->cbb = false2_bb;
  {
    struct MonoInst * inst;

    D.49000 = cfg->mempool;
    inst = mono_mempool_alloc (D.49000, 56);
    inst->data.op[1].const_val = 0;
    D.49534 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49534;
    inst->prev = 0B;
    D.49535 = inst->prev;
    inst->next = D.49535;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49536 = inst->sreg3;
    inst->sreg2 = D.49536;
    D.49537 = inst->sreg2;
    inst->sreg1 = D.49537;
    D.49021 = cfg->ip;
    inst->cil_code = D.49021;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 2;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49538>; else goto <D.49539>;
    <D.49538>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = inst;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    inst->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    goto <D.49540>;
    <D.49539>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49540>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.49000 = cfg->mempool;
    ins = mono_mempool_alloc (D.49000, 56);
    ins->data.op[1].const_val = 0;
    D.49541 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.49541;
    ins->prev = 0B;
    D.49542 = ins->prev;
    ins->next = D.49542;
    ins->opcode = 442;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.49543 = ins->sreg3;
    ins->sreg2 = D.49543;
    D.49544 = ins->sreg2;
    ins->sreg1 = D.49544;
    D.49021 = cfg->ip;
    ins->cil_code = D.49021;
    if (1 != 0) goto <D.49545>; else goto <D.49546>;
    <D.49545>:
    D.49000 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49000, 172);
    D.49001 = cfg->num_bblocks;
    D.49547 = D.49001;
    D.49548 = D.49547 + 1;
    cfg->num_bblocks = D.49548;
    D.49549 = (int) D.49547;
    falsebb->block_num = D.49549;
    ins->data.op[0].target_block = end_bb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, end_bb);
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49550>; else goto <D.49551>;
    <D.49550>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = ins;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    ins->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    goto <D.49552>;
    <D.49551>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49552>:
    D.49553 = falsebb->cil_code;
    if (D.49553 != 0B) goto <D.49554>; else goto <D.49555>;
    <D.49554>:
    D.49042 = cfg->cil_offset_to_bb;
    D.49553 = falsebb->cil_code;
    D.49556 = (int) D.49553;
    D.49044 = cfg->cil_start;
    D.49045 = (int) D.49044;
    D.49557 = D.49556 - D.49045;
    D.49558 = (unsigned int) D.49557;
    D.49559 = D.49558 * 4;
    D.49560 = D.49042 + D.49559;
    *D.49560 = falsebb;
    <D.49555>:
    D.49050 = cfg->real_offset;
    falsebb->real_offset = D.49050;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49564>; else goto <D.49561>;
    <D.49564>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 <= 9) goto <D.49562>; else goto <D.49565>;
    <D.49565>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 <= 9) goto <D.49562>; else goto <D.49566>;
    <D.49566>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 <= 9) goto <D.49562>; else goto <D.49561>;
    <D.49562>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    D.49063 = *D.49062;
    if (D.49063 == 0B) goto <D.49567>; else goto <D.49561>;
    <D.49567>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    *D.49062 = falsebb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    goto <D.49563>;
    <D.49561>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 == 0B) goto <D.49568>; else goto <D.49570>;
    <D.49570>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 442) goto <D.49571>; else goto <D.49569>;
    <D.49571>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 759) goto <D.49572>; else goto <D.49569>;
    <D.49572>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 > 9) goto <D.49573>; else goto <D.49569>;
    <D.49573>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 > 9) goto <D.49574>; else goto <D.49569>;
    <D.49574>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 > 9) goto <D.49568>; else goto <D.49569>;
    <D.49568>:
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    <D.49569>:
    <D.49563>:
    D.49022 = cfg->cbb;
    D.49022->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49575>;
    <D.49546>:
    D.49000 = cfg->mempool;
    D.49576 = mono_mempool_alloc (D.49000, 8);
    ins->data.op[1].many_blocks = D.49576;
    D.49577 = ins->data.op[1].many_blocks;
    *D.49577 = end_bb;
    D.49577 = ins->data.op[1].many_blocks;
    D.49578 = D.49577 + 4;
    *D.49578 = 0B;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, end_bb);
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49579>; else goto <D.49580>;
    <D.49579>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = ins;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    ins->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    goto <D.49581>;
    <D.49580>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = ins;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49581>:
    D.49079 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.49080 = D.49079 & 8;
    if (D.49080 == 0) goto <D.49582>; else goto <D.49583>;
    <D.49582>:
    D.49000 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49000, 172);
    D.49001 = cfg->num_bblocks;
    D.49584 = D.49001;
    D.49585 = D.49584 + 1;
    cfg->num_bblocks = D.49585;
    D.49586 = (int) D.49584;
    falsebb->block_num = D.49586;
    D.49577 = ins->data.op[1].many_blocks;
    D.49578 = D.49577 + 4;
    *D.49578 = falsebb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    D.49553 = falsebb->cil_code;
    if (D.49553 != 0B) goto <D.49587>; else goto <D.49588>;
    <D.49587>:
    D.49042 = cfg->cil_offset_to_bb;
    D.49553 = falsebb->cil_code;
    D.49556 = (int) D.49553;
    D.49044 = cfg->cil_start;
    D.49045 = (int) D.49044;
    D.49557 = D.49556 - D.49045;
    D.49558 = (unsigned int) D.49557;
    D.49559 = D.49558 * 4;
    D.49560 = D.49042 + D.49559;
    *D.49560 = falsebb;
    <D.49588>:
    D.49050 = cfg->real_offset;
    falsebb->real_offset = D.49050;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49592>; else goto <D.49589>;
    <D.49592>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 <= 9) goto <D.49590>; else goto <D.49593>;
    <D.49593>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 <= 9) goto <D.49590>; else goto <D.49594>;
    <D.49594>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 <= 9) goto <D.49590>; else goto <D.49589>;
    <D.49590>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    D.49063 = *D.49062;
    if (D.49063 == 0B) goto <D.49595>; else goto <D.49589>;
    <D.49595>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49061 = D.49023->data.op[1].many_blocks;
    D.49062 = D.49061 + 4;
    *D.49062 = falsebb;
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    goto <D.49591>;
    <D.49589>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 == 0B) goto <D.49596>; else goto <D.49598>;
    <D.49598>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 442) goto <D.49599>; else goto <D.49597>;
    <D.49599>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    if (D.49055 != 759) goto <D.49600>; else goto <D.49597>;
    <D.49600>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49056 = D.49055 + 64985;
    if (D.49056 > 9) goto <D.49601>; else goto <D.49597>;
    <D.49601>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49058 = D.49055 + 64878;
    if (D.49058 > 9) goto <D.49602>; else goto <D.49597>;
    <D.49602>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49055 = D.49023->opcode;
    D.49060 = D.49055 + 64888;
    if (D.49060 > 9) goto <D.49596>; else goto <D.49597>;
    <D.49596>:
    D.49022 = cfg->cbb;
    mono_link_bblock (cfg, D.49022, falsebb);
    <D.49597>:
    <D.49591>:
    D.49022 = cfg->cbb;
    D.49022->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49603>;
    <D.49583>:
    D.49022 = cfg->cbb;
    D.49022->extended = 1;
    <D.49603>:
    <D.49575>:
  }
  D.49604 = true_bb->cil_code;
  if (D.49604 != 0B) goto <D.49605>; else goto <D.49606>;
  <D.49605>:
  D.49042 = cfg->cil_offset_to_bb;
  D.49604 = true_bb->cil_code;
  D.49607 = (int) D.49604;
  D.49044 = cfg->cil_start;
  D.49045 = (int) D.49044;
  D.49608 = D.49607 - D.49045;
  D.49609 = (unsigned int) D.49608;
  D.49610 = D.49609 * 4;
  D.49611 = D.49042 + D.49610;
  *D.49611 = true_bb;
  <D.49606>:
  D.49050 = cfg->real_offset;
  true_bb->real_offset = D.49050;
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  if (D.49023 != 0B) goto <D.49615>; else goto <D.49612>;
  <D.49615>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49056 = D.49055 + 64985;
  if (D.49056 <= 9) goto <D.49613>; else goto <D.49616>;
  <D.49616>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49058 = D.49055 + 64878;
  if (D.49058 <= 9) goto <D.49613>; else goto <D.49617>;
  <D.49617>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49060 = D.49055 + 64888;
  if (D.49060 <= 9) goto <D.49613>; else goto <D.49612>;
  <D.49613>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49061 = D.49023->data.op[1].many_blocks;
  D.49062 = D.49061 + 4;
  D.49063 = *D.49062;
  if (D.49063 == 0B) goto <D.49618>; else goto <D.49612>;
  <D.49618>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49061 = D.49023->data.op[1].many_blocks;
  D.49062 = D.49061 + 4;
  *D.49062 = true_bb;
  D.49022 = cfg->cbb;
  mono_link_bblock (cfg, D.49022, true_bb);
  goto <D.49614>;
  <D.49612>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  if (D.49023 == 0B) goto <D.49619>; else goto <D.49621>;
  <D.49621>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  if (D.49055 != 442) goto <D.49622>; else goto <D.49620>;
  <D.49622>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  if (D.49055 != 759) goto <D.49623>; else goto <D.49620>;
  <D.49623>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49056 = D.49055 + 64985;
  if (D.49056 > 9) goto <D.49624>; else goto <D.49620>;
  <D.49624>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49058 = D.49055 + 64878;
  if (D.49058 > 9) goto <D.49625>; else goto <D.49620>;
  <D.49625>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49060 = D.49055 + 64888;
  if (D.49060 > 9) goto <D.49619>; else goto <D.49620>;
  <D.49619>:
  D.49022 = cfg->cbb;
  mono_link_bblock (cfg, D.49022, true_bb);
  <D.49620>:
  <D.49614>:
  D.49022 = cfg->cbb;
  D.49022->next_bb = true_bb;
  cfg->cbb = true_bb;
  {
    struct MonoInst * inst;

    D.49000 = cfg->mempool;
    inst = mono_mempool_alloc (D.49000, 56);
    inst->data.op[1].const_val = 0;
    D.49626 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49626;
    inst->prev = 0B;
    D.49627 = inst->prev;
    inst->next = D.49627;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49628 = inst->sreg3;
    inst->sreg2 = D.49628;
    D.49629 = inst->sreg2;
    inst->sreg1 = D.49629;
    D.49021 = cfg->ip;
    inst->cil_code = D.49021;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 0;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    if (D.49023 != 0B) goto <D.49630>; else goto <D.49631>;
    <D.49630>:
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    D.49023->next = inst;
    D.49022 = cfg->cbb;
    D.49023 = D.49022->last_ins;
    inst->prev = D.49023;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    goto <D.49632>;
    <D.49631>:
    D.49022 = cfg->cbb;
    D.49022 = cfg->cbb;
    D.49022->last_ins = inst;
    D.49023 = D.49022->last_ins;
    D.49022->code = D.49023;
    <D.49632>:
  }
  D.49633 = end_bb->cil_code;
  if (D.49633 != 0B) goto <D.49634>; else goto <D.49635>;
  <D.49634>:
  D.49042 = cfg->cil_offset_to_bb;
  D.49633 = end_bb->cil_code;
  D.49636 = (int) D.49633;
  D.49044 = cfg->cil_start;
  D.49045 = (int) D.49044;
  D.49637 = D.49636 - D.49045;
  D.49638 = (unsigned int) D.49637;
  D.49639 = D.49638 * 4;
  D.49640 = D.49042 + D.49639;
  *D.49640 = end_bb;
  <D.49635>:
  D.49050 = cfg->real_offset;
  end_bb->real_offset = D.49050;
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  if (D.49023 != 0B) goto <D.49644>; else goto <D.49641>;
  <D.49644>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49056 = D.49055 + 64985;
  if (D.49056 <= 9) goto <D.49642>; else goto <D.49645>;
  <D.49645>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49058 = D.49055 + 64878;
  if (D.49058 <= 9) goto <D.49642>; else goto <D.49646>;
  <D.49646>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49060 = D.49055 + 64888;
  if (D.49060 <= 9) goto <D.49642>; else goto <D.49641>;
  <D.49642>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49061 = D.49023->data.op[1].many_blocks;
  D.49062 = D.49061 + 4;
  D.49063 = *D.49062;
  if (D.49063 == 0B) goto <D.49647>; else goto <D.49641>;
  <D.49647>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49061 = D.49023->data.op[1].many_blocks;
  D.49062 = D.49061 + 4;
  *D.49062 = end_bb;
  D.49022 = cfg->cbb;
  mono_link_bblock (cfg, D.49022, end_bb);
  goto <D.49643>;
  <D.49641>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  if (D.49023 == 0B) goto <D.49648>; else goto <D.49650>;
  <D.49650>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  if (D.49055 != 442) goto <D.49651>; else goto <D.49649>;
  <D.49651>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  if (D.49055 != 759) goto <D.49652>; else goto <D.49649>;
  <D.49652>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49056 = D.49055 + 64985;
  if (D.49056 > 9) goto <D.49653>; else goto <D.49649>;
  <D.49653>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49058 = D.49055 + 64878;
  if (D.49058 > 9) goto <D.49654>; else goto <D.49649>;
  <D.49654>:
  D.49022 = cfg->cbb;
  D.49023 = D.49022->last_ins;
  D.49055 = D.49023->opcode;
  D.49060 = D.49055 + 64888;
  if (D.49060 > 9) goto <D.49648>; else goto <D.49649>;
  <D.49648>:
  D.49022 = cfg->cbb;
  mono_link_bblock (cfg, D.49022, end_bb);
  <D.49649>:
  <D.49643>:
  D.49022 = cfg->cbb;
  D.49022->next_bb = end_bb;
  cfg->cbb = end_bb;
  D.49000 = cfg->mempool;
  ins = mono_mempool_alloc (D.49000, 56);
  ins->data.op[1].const_val = 0;
  D.49655 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.49655;
  ins->prev = 0B;
  D.49656 = ins->prev;
  ins->next = D.49656;
  ins->opcode = 362;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.49657 = ins->sreg3;
  ins->sreg2 = D.49657;
  D.49658 = ins->sreg2;
  ins->sreg1 = D.49658;
  D.49021 = cfg->ip;
  ins->cil_code = D.49021;
  ins->dreg = dreg;
  ins->type = 1;
  D.49659 = ins;
  return D.49659;
}


handle_ccastclass (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * src)
{
  unsigned int D.49661;
  unsigned int D.49662;
  unsigned int D.49663;
  struct MonoMemPool * D.49664;
  unsigned int D.49665;
  unsigned int D.49666;
  unsigned int D.49667;
  int D.49668;
  unsigned int D.49669;
  unsigned int D.49670;
  int D.49671;
  int D.49672;
  struct MonoInst * D.49673;
  int D.49674;
  int D.49675;
  const unsigned char * D.49676;
  struct MonoBasicBlock * D.49677;
  struct MonoInst * D.49678;
  int D.49682;
  struct MonoInst * D.49683;
  int D.49684;
  int D.49685;
  unsigned int D.49688;
  unsigned int D.49689;
  int D.49690;
  unsigned char * D.49694;
  struct MonoBasicBlock * * D.49697;
  int D.49698;
  unsigned char * D.49699;
  int D.49700;
  int D.49701;
  unsigned int D.49702;
  unsigned int D.49703;
  struct MonoBasicBlock * * D.49704;
  unsigned int D.49705;
  short unsigned int D.49710;
  short unsigned int D.49711;
  short unsigned int D.49713;
  short unsigned int D.49715;
  struct MonoBasicBlock * * D.49716;
  struct MonoBasicBlock * * D.49717;
  struct MonoBasicBlock * D.49718;
  void * D.49728;
  struct MonoBasicBlock * * D.49729;
  struct MonoBasicBlock * * D.49730;
  unsigned int D.49734;
  unsigned int D.49735;
  unsigned int D.49738;
  unsigned int D.49739;
  int D.49740;
  unsigned int D.49758;
  unsigned int D.49759;
  unsigned int D.49762;
  unsigned int D.49763;
  int D.49764;
  int D.49765;
  struct MonoInst * D.49766;
  int D.49767;
  int D.49768;
  unsigned char * D.49772;
  int D.49775;
  int D.49776;
  unsigned int D.49777;
  unsigned int D.49778;
  struct MonoBasicBlock * * D.49779;
  int D.49794;
  struct MonoInst * D.49795;
  int D.49796;
  int D.49797;
  struct MonoClass * D.49801;
  unsigned int D.49802;
  int D.49803;
  struct MonoInst * D.49804;
  int D.49805;
  int D.49806;
  int D.49810;
  struct MonoInst * D.49811;
  int D.49812;
  int D.49813;
  int D.49817;
  struct MonoInst * D.49818;
  int D.49819;
  int D.49820;
  int D.49824;
  struct MonoInst * D.49825;
  int D.49826;
  int D.49827;
  int D.49831;
  struct MonoInst * D.49832;
  int D.49833;
  int D.49834;
  unsigned int D.49837;
  unsigned int D.49838;
  int D.49839;
  unsigned char * D.49843;
  int D.49846;
  int D.49847;
  unsigned int D.49848;
  unsigned int D.49849;
  struct MonoBasicBlock * * D.49850;
  void * D.49866;
  struct MonoBasicBlock * * D.49867;
  struct MonoBasicBlock * * D.49868;
  unsigned int D.49874;
  unsigned int D.49875;
  int D.49876;
  unsigned int D.49895;
  unsigned int D.49896;
  int D.49897;
  int D.49898;
  struct MonoInst * D.49899;
  int D.49900;
  int D.49901;
  int D.49905;
  struct MonoInst * D.49906;
  int D.49907;
  int D.49908;
  unsigned int D.49912;
  int D.49913;
  struct MonoInst * D.49914;
  int D.49915;
  int D.49916;
  int D.49920;
  struct MonoInst * D.49921;
  int D.49922;
  int D.49923;
  unsigned int D.49927;
  int D.49928;
  struct MonoInst * D.49929;
  int D.49930;
  int D.49931;
  int D.49935;
  struct MonoInst * D.49936;
  int D.49937;
  int D.49938;
  int D.49942;
  struct MonoInst * D.49943;
  int D.49944;
  int D.49945;
  unsigned int D.49948;
  unsigned int D.49949;
  int D.49950;
  unsigned char * D.49954;
  int D.49957;
  int D.49958;
  unsigned int D.49959;
  unsigned int D.49960;
  struct MonoBasicBlock * * D.49961;
  void * D.49977;
  struct MonoBasicBlock * * D.49978;
  struct MonoBasicBlock * * D.49979;
  unsigned int D.49985;
  unsigned int D.49986;
  int D.49987;
  unsigned int D.50005;
  unsigned int D.50006;
  int D.50007;
  unsigned char * D.50008;
  int D.50011;
  int D.50012;
  unsigned int D.50013;
  unsigned int D.50014;
  struct MonoBasicBlock * * D.50015;
  int D.50030;
  struct MonoInst * D.50031;
  int D.50032;
  int D.50033;
  int D.50037;
  struct MonoInst * D.50038;
  int D.50039;
  int D.50040;
  unsigned int D.50043;
  unsigned int D.50044;
  int D.50045;
  unsigned char * D.50049;
  int D.50052;
  int D.50053;
  unsigned int D.50054;
  unsigned int D.50055;
  struct MonoBasicBlock * * D.50056;
  void * D.50072;
  struct MonoBasicBlock * * D.50073;
  struct MonoBasicBlock * * D.50074;
  unsigned int D.50080;
  unsigned int D.50081;
  int D.50082;
  unsigned char * D.50100;
  int D.50103;
  int D.50104;
  unsigned int D.50105;
  unsigned int D.50106;
  struct MonoBasicBlock * * D.50107;
  unsigned char * D.50122;
  int D.50125;
  int D.50126;
  unsigned int D.50127;
  unsigned int D.50128;
  struct MonoBasicBlock * * D.50129;
  int D.50144;
  struct MonoInst * D.50145;
  int D.50146;
  int D.50147;
  unsigned char * D.50151;
  int D.50154;
  int D.50155;
  unsigned int D.50156;
  unsigned int D.50157;
  struct MonoBasicBlock * * D.50158;
  int D.50173;
  struct MonoInst * D.50174;
  int D.50175;
  int D.50176;
  struct MonoInst * D.50177;
  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.49661 = alloc_ireg (cfg);
  dreg = (int) D.49661;
  D.49662 = alloc_preg (cfg);
  tmp_reg = (int) D.49662;
  D.49663 = alloc_preg (cfg);
  klass_reg = (int) D.49663;
  D.49664 = cfg->mempool;
  end_bb = mono_mempool_alloc0 (D.49664, 172);
  D.49665 = cfg->num_bblocks;
  D.49666 = D.49665;
  D.49667 = D.49666 + 1;
  cfg->num_bblocks = D.49667;
  D.49668 = (int) D.49666;
  end_bb->block_num = D.49668;
  D.49664 = cfg->mempool;
  ok_result_bb = mono_mempool_alloc0 (D.49664, 172);
  D.49665 = cfg->num_bblocks;
  D.49669 = D.49665;
  D.49670 = D.49669 + 1;
  cfg->num_bblocks = D.49670;
  D.49671 = (int) D.49669;
  ok_result_bb->block_num = D.49671;
  {
    struct MonoInst * inst;

    D.49664 = cfg->mempool;
    inst = mono_mempool_alloc (D.49664, 56);
    inst->data.op[1].const_val = 0;
    D.49672 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49672;
    inst->prev = 0B;
    D.49673 = inst->prev;
    inst->next = D.49673;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49674 = inst->sreg3;
    inst->sreg2 = D.49674;
    D.49675 = inst->sreg2;
    inst->sreg1 = D.49675;
    D.49676 = cfg->ip;
    inst->cil_code = D.49676;
    inst->dreg = -1;
    inst->sreg1 = obj_reg;
    inst->data.op[1].const_val = 0;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49679>; else goto <D.49680>;
    <D.49679>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = inst;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    inst->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    goto <D.49681>;
    <D.49680>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.49681>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.49664 = cfg->mempool;
    ins = mono_mempool_alloc (D.49664, 56);
    ins->data.op[1].const_val = 0;
    D.49682 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.49682;
    ins->prev = 0B;
    D.49683 = ins->prev;
    ins->next = D.49683;
    ins->opcode = 648;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.49684 = ins->sreg3;
    ins->sreg2 = D.49684;
    D.49685 = ins->sreg2;
    ins->sreg1 = D.49685;
    D.49676 = cfg->ip;
    ins->cil_code = D.49676;
    if (0 != 0) goto <D.49686>; else goto <D.49687>;
    <D.49686>:
    D.49664 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49664, 172);
    D.49665 = cfg->num_bblocks;
    D.49688 = D.49665;
    D.49689 = D.49688 + 1;
    cfg->num_bblocks = D.49689;
    D.49690 = (int) D.49688;
    falsebb->block_num = D.49690;
    ins->data.op[0].target_block = ok_result_bb;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, ok_result_bb);
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49691>; else goto <D.49692>;
    <D.49691>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = ins;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    ins->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = ins;
    goto <D.49693>;
    <D.49692>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = ins;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.49693>:
    D.49694 = falsebb->cil_code;
    if (D.49694 != 0B) goto <D.49695>; else goto <D.49696>;
    <D.49695>:
    D.49697 = cfg->cil_offset_to_bb;
    D.49694 = falsebb->cil_code;
    D.49698 = (int) D.49694;
    D.49699 = cfg->cil_start;
    D.49700 = (int) D.49699;
    D.49701 = D.49698 - D.49700;
    D.49702 = (unsigned int) D.49701;
    D.49703 = D.49702 * 4;
    D.49704 = D.49697 + D.49703;
    *D.49704 = falsebb;
    <D.49696>:
    D.49705 = cfg->real_offset;
    falsebb->real_offset = D.49705;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49709>; else goto <D.49706>;
    <D.49709>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49711 = D.49710 + 64985;
    if (D.49711 <= 9) goto <D.49707>; else goto <D.49712>;
    <D.49712>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49713 = D.49710 + 64878;
    if (D.49713 <= 9) goto <D.49707>; else goto <D.49714>;
    <D.49714>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49715 = D.49710 + 64888;
    if (D.49715 <= 9) goto <D.49707>; else goto <D.49706>;
    <D.49707>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49716 = D.49678->data.op[1].many_blocks;
    D.49717 = D.49716 + 4;
    D.49718 = *D.49717;
    if (D.49718 == 0B) goto <D.49719>; else goto <D.49706>;
    <D.49719>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49716 = D.49678->data.op[1].many_blocks;
    D.49717 = D.49716 + 4;
    *D.49717 = falsebb;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    goto <D.49708>;
    <D.49706>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 == 0B) goto <D.49720>; else goto <D.49722>;
    <D.49722>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    if (D.49710 != 442) goto <D.49723>; else goto <D.49721>;
    <D.49723>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    if (D.49710 != 759) goto <D.49724>; else goto <D.49721>;
    <D.49724>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49711 = D.49710 + 64985;
    if (D.49711 > 9) goto <D.49725>; else goto <D.49721>;
    <D.49725>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49713 = D.49710 + 64878;
    if (D.49713 > 9) goto <D.49726>; else goto <D.49721>;
    <D.49726>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49715 = D.49710 + 64888;
    if (D.49715 > 9) goto <D.49720>; else goto <D.49721>;
    <D.49720>:
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    <D.49721>:
    <D.49708>:
    D.49677 = cfg->cbb;
    D.49677->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49727>;
    <D.49687>:
    D.49664 = cfg->mempool;
    D.49728 = mono_mempool_alloc (D.49664, 8);
    ins->data.op[1].many_blocks = D.49728;
    D.49729 = ins->data.op[1].many_blocks;
    *D.49729 = ok_result_bb;
    D.49729 = ins->data.op[1].many_blocks;
    D.49730 = D.49729 + 4;
    *D.49730 = 0B;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, ok_result_bb);
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49731>; else goto <D.49732>;
    <D.49731>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = ins;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    ins->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = ins;
    goto <D.49733>;
    <D.49732>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = ins;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.49733>:
    D.49734 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.49735 = D.49734 & 8;
    if (D.49735 == 0) goto <D.49736>; else goto <D.49737>;
    <D.49736>:
    D.49664 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49664, 172);
    D.49665 = cfg->num_bblocks;
    D.49738 = D.49665;
    D.49739 = D.49738 + 1;
    cfg->num_bblocks = D.49739;
    D.49740 = (int) D.49738;
    falsebb->block_num = D.49740;
    D.49729 = ins->data.op[1].many_blocks;
    D.49730 = D.49729 + 4;
    *D.49730 = falsebb;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    D.49694 = falsebb->cil_code;
    if (D.49694 != 0B) goto <D.49741>; else goto <D.49742>;
    <D.49741>:
    D.49697 = cfg->cil_offset_to_bb;
    D.49694 = falsebb->cil_code;
    D.49698 = (int) D.49694;
    D.49699 = cfg->cil_start;
    D.49700 = (int) D.49699;
    D.49701 = D.49698 - D.49700;
    D.49702 = (unsigned int) D.49701;
    D.49703 = D.49702 * 4;
    D.49704 = D.49697 + D.49703;
    *D.49704 = falsebb;
    <D.49742>:
    D.49705 = cfg->real_offset;
    falsebb->real_offset = D.49705;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49746>; else goto <D.49743>;
    <D.49746>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49711 = D.49710 + 64985;
    if (D.49711 <= 9) goto <D.49744>; else goto <D.49747>;
    <D.49747>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49713 = D.49710 + 64878;
    if (D.49713 <= 9) goto <D.49744>; else goto <D.49748>;
    <D.49748>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49715 = D.49710 + 64888;
    if (D.49715 <= 9) goto <D.49744>; else goto <D.49743>;
    <D.49744>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49716 = D.49678->data.op[1].many_blocks;
    D.49717 = D.49716 + 4;
    D.49718 = *D.49717;
    if (D.49718 == 0B) goto <D.49749>; else goto <D.49743>;
    <D.49749>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49716 = D.49678->data.op[1].many_blocks;
    D.49717 = D.49716 + 4;
    *D.49717 = falsebb;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    goto <D.49745>;
    <D.49743>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 == 0B) goto <D.49750>; else goto <D.49752>;
    <D.49752>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    if (D.49710 != 442) goto <D.49753>; else goto <D.49751>;
    <D.49753>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    if (D.49710 != 759) goto <D.49754>; else goto <D.49751>;
    <D.49754>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49711 = D.49710 + 64985;
    if (D.49711 > 9) goto <D.49755>; else goto <D.49751>;
    <D.49755>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49713 = D.49710 + 64878;
    if (D.49713 > 9) goto <D.49756>; else goto <D.49751>;
    <D.49756>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49715 = D.49710 + 64888;
    if (D.49715 > 9) goto <D.49750>; else goto <D.49751>;
    <D.49750>:
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    <D.49751>:
    <D.49745>:
    D.49677 = cfg->cbb;
    D.49677->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49757>;
    <D.49737>:
    D.49677 = cfg->cbb;
    D.49677->extended = 1;
    <D.49757>:
    <D.49727>:
  }
  save_cast_details (cfg, klass, obj_reg, 0, 0B);
  D.49758 = klass->flags;
  D.49759 = D.49758 & 32;
  if (D.49759 != 0) goto <D.49760>; else goto <D.49761>;
  <D.49760>:
  D.49664 = cfg->mempool;
  interface_fail_bb = mono_mempool_alloc0 (D.49664, 172);
  D.49665 = cfg->num_bblocks;
  D.49762 = D.49665;
  D.49763 = D.49762 + 1;
  cfg->num_bblocks = D.49763;
  D.49764 = (int) D.49762;
  interface_fail_bb->block_num = D.49764;
  {
    struct MonoInst * inst;

    D.49664 = cfg->mempool;
    inst = mono_mempool_alloc (D.49664, 56);
    inst->data.op[1].const_val = 0;
    D.49765 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49765;
    inst->prev = 0B;
    D.49766 = inst->prev;
    inst->next = D.49766;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49767 = inst->sreg3;
    inst->sreg2 = D.49767;
    D.49768 = inst->sreg2;
    inst->sreg1 = D.49768;
    D.49676 = cfg->ip;
    inst->cil_code = D.49676;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49769>; else goto <D.49770>;
    <D.49769>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = inst;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    inst->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    goto <D.49771>;
    <D.49770>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.49771>:
  }
  mini_emit_iface_cast (cfg, tmp_reg, klass, interface_fail_bb, ok_result_bb);
  D.49772 = interface_fail_bb->cil_code;
  if (D.49772 != 0B) goto <D.49773>; else goto <D.49774>;
  <D.49773>:
  D.49697 = cfg->cil_offset_to_bb;
  D.49772 = interface_fail_bb->cil_code;
  D.49775 = (int) D.49772;
  D.49699 = cfg->cil_start;
  D.49700 = (int) D.49699;
  D.49776 = D.49775 - D.49700;
  D.49777 = (unsigned int) D.49776;
  D.49778 = D.49777 * 4;
  D.49779 = D.49697 + D.49778;
  *D.49779 = interface_fail_bb;
  <D.49774>:
  D.49705 = cfg->real_offset;
  interface_fail_bb->real_offset = D.49705;
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  if (D.49678 != 0B) goto <D.49783>; else goto <D.49780>;
  <D.49783>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49711 = D.49710 + 64985;
  if (D.49711 <= 9) goto <D.49781>; else goto <D.49784>;
  <D.49784>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49713 = D.49710 + 64878;
  if (D.49713 <= 9) goto <D.49781>; else goto <D.49785>;
  <D.49785>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49715 = D.49710 + 64888;
  if (D.49715 <= 9) goto <D.49781>; else goto <D.49780>;
  <D.49781>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49716 = D.49678->data.op[1].many_blocks;
  D.49717 = D.49716 + 4;
  D.49718 = *D.49717;
  if (D.49718 == 0B) goto <D.49786>; else goto <D.49780>;
  <D.49786>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49716 = D.49678->data.op[1].many_blocks;
  D.49717 = D.49716 + 4;
  *D.49717 = interface_fail_bb;
  D.49677 = cfg->cbb;
  mono_link_bblock (cfg, D.49677, interface_fail_bb);
  goto <D.49782>;
  <D.49780>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  if (D.49678 == 0B) goto <D.49787>; else goto <D.49789>;
  <D.49789>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  if (D.49710 != 442) goto <D.49790>; else goto <D.49788>;
  <D.49790>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  if (D.49710 != 759) goto <D.49791>; else goto <D.49788>;
  <D.49791>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49711 = D.49710 + 64985;
  if (D.49711 > 9) goto <D.49792>; else goto <D.49788>;
  <D.49792>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49713 = D.49710 + 64878;
  if (D.49713 > 9) goto <D.49793>; else goto <D.49788>;
  <D.49793>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49715 = D.49710 + 64888;
  if (D.49715 > 9) goto <D.49787>; else goto <D.49788>;
  <D.49787>:
  D.49677 = cfg->cbb;
  mono_link_bblock (cfg, D.49677, interface_fail_bb);
  <D.49788>:
  <D.49782>:
  D.49677 = cfg->cbb;
  D.49677->next_bb = interface_fail_bb;
  cfg->cbb = interface_fail_bb;
  {
    struct MonoInst * inst;

    D.49664 = cfg->mempool;
    inst = mono_mempool_alloc (D.49664, 56);
    inst->data.op[1].const_val = 0;
    D.49794 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49794;
    inst->prev = 0B;
    D.49795 = inst->prev;
    inst->next = D.49795;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49796 = inst->sreg3;
    inst->sreg2 = D.49796;
    D.49797 = inst->sreg2;
    inst->sreg1 = D.49797;
    D.49676 = cfg->ip;
    inst->cil_code = D.49676;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 0;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49798>; else goto <D.49799>;
    <D.49798>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = inst;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    inst->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    goto <D.49800>;
    <D.49799>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.49800>:
  }
  D.49801 = mono_defaults.transparent_proxy_class;
  mini_emit_class_check (cfg, klass_reg, D.49801);
  D.49802 = alloc_preg (cfg);
  tmp_reg = (int) D.49802;
  {
    struct MonoInst * inst;

    D.49664 = cfg->mempool;
    inst = mono_mempool_alloc (D.49664, 56);
    inst->data.op[1].const_val = 0;
    D.49803 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49803;
    inst->prev = 0B;
    D.49804 = inst->prev;
    inst->next = D.49804;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49805 = inst->sreg3;
    inst->sreg2 = D.49805;
    D.49806 = inst->sreg2;
    inst->sreg1 = D.49806;
    D.49676 = cfg->ip;
    inst->cil_code = D.49676;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 16;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49807>; else goto <D.49808>;
    <D.49807>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = inst;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    inst->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    goto <D.49809>;
    <D.49808>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.49809>:
  }
  {
    struct MonoInst * inst;

    D.49664 = cfg->mempool;
    inst = mono_mempool_alloc (D.49664, 56);
    inst->data.op[1].const_val = 0;
    D.49810 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49810;
    inst->prev = 0B;
    D.49811 = inst->prev;
    inst->next = D.49811;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49812 = inst->sreg3;
    inst->sreg2 = D.49812;
    D.49813 = inst->sreg2;
    inst->sreg1 = D.49813;
    D.49676 = cfg->ip;
    inst->cil_code = D.49676;
    inst->dreg = -1;
    inst->sreg1 = tmp_reg;
    inst->data.op[1].const_val = 0;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49814>; else goto <D.49815>;
    <D.49814>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = inst;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    inst->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    goto <D.49816>;
    <D.49815>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.49816>:
  }
  {
    struct MonoInst * inst;

    D.49664 = cfg->mempool;
    inst = mono_mempool_alloc (D.49664, 56);
    inst->data.op[1].const_val = 0;
    D.49817 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49817;
    inst->prev = 0B;
    D.49818 = inst->prev;
    inst->next = D.49818;
    inst->opcode = 451;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49819 = inst->sreg3;
    inst->sreg2 = D.49819;
    D.49820 = inst->sreg2;
    inst->sreg1 = D.49820;
    D.49676 = cfg->ip;
    inst->cil_code = D.49676;
    inst->data.op[1].p = "InvalidCastException";
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49821>; else goto <D.49822>;
    <D.49821>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = inst;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    inst->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    goto <D.49823>;
    <D.49822>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.49823>:
  }
  {
    struct MonoInst * inst;

    D.49664 = cfg->mempool;
    inst = mono_mempool_alloc (D.49664, 56);
    inst->data.op[1].const_val = 0;
    D.49824 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49824;
    inst->prev = 0B;
    D.49825 = inst->prev;
    inst->next = D.49825;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49826 = inst->sreg3;
    inst->sreg2 = D.49826;
    D.49827 = inst->sreg2;
    inst->sreg1 = D.49827;
    D.49676 = cfg->ip;
    inst->cil_code = D.49676;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 1;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49828>; else goto <D.49829>;
    <D.49828>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = inst;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    inst->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    goto <D.49830>;
    <D.49829>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.49830>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.49664 = cfg->mempool;
    ins = mono_mempool_alloc (D.49664, 56);
    ins->data.op[1].const_val = 0;
    D.49831 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.49831;
    ins->prev = 0B;
    D.49832 = ins->prev;
    ins->next = D.49832;
    ins->opcode = 442;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.49833 = ins->sreg3;
    ins->sreg2 = D.49833;
    D.49834 = ins->sreg2;
    ins->sreg1 = D.49834;
    D.49676 = cfg->ip;
    ins->cil_code = D.49676;
    if (1 != 0) goto <D.49835>; else goto <D.49836>;
    <D.49835>:
    D.49664 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49664, 172);
    D.49665 = cfg->num_bblocks;
    D.49837 = D.49665;
    D.49838 = D.49837 + 1;
    cfg->num_bblocks = D.49838;
    D.49839 = (int) D.49837;
    falsebb->block_num = D.49839;
    ins->data.op[0].target_block = end_bb;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, end_bb);
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49840>; else goto <D.49841>;
    <D.49840>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = ins;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    ins->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = ins;
    goto <D.49842>;
    <D.49841>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = ins;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.49842>:
    D.49843 = falsebb->cil_code;
    if (D.49843 != 0B) goto <D.49844>; else goto <D.49845>;
    <D.49844>:
    D.49697 = cfg->cil_offset_to_bb;
    D.49843 = falsebb->cil_code;
    D.49846 = (int) D.49843;
    D.49699 = cfg->cil_start;
    D.49700 = (int) D.49699;
    D.49847 = D.49846 - D.49700;
    D.49848 = (unsigned int) D.49847;
    D.49849 = D.49848 * 4;
    D.49850 = D.49697 + D.49849;
    *D.49850 = falsebb;
    <D.49845>:
    D.49705 = cfg->real_offset;
    falsebb->real_offset = D.49705;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49854>; else goto <D.49851>;
    <D.49854>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49711 = D.49710 + 64985;
    if (D.49711 <= 9) goto <D.49852>; else goto <D.49855>;
    <D.49855>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49713 = D.49710 + 64878;
    if (D.49713 <= 9) goto <D.49852>; else goto <D.49856>;
    <D.49856>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49715 = D.49710 + 64888;
    if (D.49715 <= 9) goto <D.49852>; else goto <D.49851>;
    <D.49852>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49716 = D.49678->data.op[1].many_blocks;
    D.49717 = D.49716 + 4;
    D.49718 = *D.49717;
    if (D.49718 == 0B) goto <D.49857>; else goto <D.49851>;
    <D.49857>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49716 = D.49678->data.op[1].many_blocks;
    D.49717 = D.49716 + 4;
    *D.49717 = falsebb;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    goto <D.49853>;
    <D.49851>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 == 0B) goto <D.49858>; else goto <D.49860>;
    <D.49860>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    if (D.49710 != 442) goto <D.49861>; else goto <D.49859>;
    <D.49861>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    if (D.49710 != 759) goto <D.49862>; else goto <D.49859>;
    <D.49862>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49711 = D.49710 + 64985;
    if (D.49711 > 9) goto <D.49863>; else goto <D.49859>;
    <D.49863>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49713 = D.49710 + 64878;
    if (D.49713 > 9) goto <D.49864>; else goto <D.49859>;
    <D.49864>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49715 = D.49710 + 64888;
    if (D.49715 > 9) goto <D.49858>; else goto <D.49859>;
    <D.49858>:
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    <D.49859>:
    <D.49853>:
    D.49677 = cfg->cbb;
    D.49677->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49865>;
    <D.49836>:
    D.49664 = cfg->mempool;
    D.49866 = mono_mempool_alloc (D.49664, 8);
    ins->data.op[1].many_blocks = D.49866;
    D.49867 = ins->data.op[1].many_blocks;
    *D.49867 = end_bb;
    D.49867 = ins->data.op[1].many_blocks;
    D.49868 = D.49867 + 4;
    *D.49868 = 0B;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, end_bb);
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49869>; else goto <D.49870>;
    <D.49869>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = ins;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    ins->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = ins;
    goto <D.49871>;
    <D.49870>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = ins;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.49871>:
    D.49734 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.49735 = D.49734 & 8;
    if (D.49735 == 0) goto <D.49872>; else goto <D.49873>;
    <D.49872>:
    D.49664 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49664, 172);
    D.49665 = cfg->num_bblocks;
    D.49874 = D.49665;
    D.49875 = D.49874 + 1;
    cfg->num_bblocks = D.49875;
    D.49876 = (int) D.49874;
    falsebb->block_num = D.49876;
    D.49867 = ins->data.op[1].many_blocks;
    D.49868 = D.49867 + 4;
    *D.49868 = falsebb;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    D.49843 = falsebb->cil_code;
    if (D.49843 != 0B) goto <D.49877>; else goto <D.49878>;
    <D.49877>:
    D.49697 = cfg->cil_offset_to_bb;
    D.49843 = falsebb->cil_code;
    D.49846 = (int) D.49843;
    D.49699 = cfg->cil_start;
    D.49700 = (int) D.49699;
    D.49847 = D.49846 - D.49700;
    D.49848 = (unsigned int) D.49847;
    D.49849 = D.49848 * 4;
    D.49850 = D.49697 + D.49849;
    *D.49850 = falsebb;
    <D.49878>:
    D.49705 = cfg->real_offset;
    falsebb->real_offset = D.49705;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49882>; else goto <D.49879>;
    <D.49882>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49711 = D.49710 + 64985;
    if (D.49711 <= 9) goto <D.49880>; else goto <D.49883>;
    <D.49883>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49713 = D.49710 + 64878;
    if (D.49713 <= 9) goto <D.49880>; else goto <D.49884>;
    <D.49884>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49715 = D.49710 + 64888;
    if (D.49715 <= 9) goto <D.49880>; else goto <D.49879>;
    <D.49880>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49716 = D.49678->data.op[1].many_blocks;
    D.49717 = D.49716 + 4;
    D.49718 = *D.49717;
    if (D.49718 == 0B) goto <D.49885>; else goto <D.49879>;
    <D.49885>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49716 = D.49678->data.op[1].many_blocks;
    D.49717 = D.49716 + 4;
    *D.49717 = falsebb;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    goto <D.49881>;
    <D.49879>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 == 0B) goto <D.49886>; else goto <D.49888>;
    <D.49888>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    if (D.49710 != 442) goto <D.49889>; else goto <D.49887>;
    <D.49889>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    if (D.49710 != 759) goto <D.49890>; else goto <D.49887>;
    <D.49890>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49711 = D.49710 + 64985;
    if (D.49711 > 9) goto <D.49891>; else goto <D.49887>;
    <D.49891>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49713 = D.49710 + 64878;
    if (D.49713 > 9) goto <D.49892>; else goto <D.49887>;
    <D.49892>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49715 = D.49710 + 64888;
    if (D.49715 > 9) goto <D.49886>; else goto <D.49887>;
    <D.49886>:
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    <D.49887>:
    <D.49881>:
    D.49677 = cfg->cbb;
    D.49677->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49893>;
    <D.49873>:
    D.49677 = cfg->cbb;
    D.49677->extended = 1;
    <D.49893>:
    <D.49865>:
  }
  goto <D.49894>;
  <D.49761>:
  D.49664 = cfg->mempool;
  no_proxy_bb = mono_mempool_alloc0 (D.49664, 172);
  D.49665 = cfg->num_bblocks;
  D.49895 = D.49665;
  D.49896 = D.49895 + 1;
  cfg->num_bblocks = D.49896;
  D.49897 = (int) D.49895;
  no_proxy_bb->block_num = D.49897;
  {
    struct MonoInst * inst;

    D.49664 = cfg->mempool;
    inst = mono_mempool_alloc (D.49664, 56);
    inst->data.op[1].const_val = 0;
    D.49898 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49898;
    inst->prev = 0B;
    D.49899 = inst->prev;
    inst->next = D.49899;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49900 = inst->sreg3;
    inst->sreg2 = D.49900;
    D.49901 = inst->sreg2;
    inst->sreg1 = D.49901;
    D.49676 = cfg->ip;
    inst->cil_code = D.49676;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49902>; else goto <D.49903>;
    <D.49902>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = inst;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    inst->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    goto <D.49904>;
    <D.49903>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.49904>:
  }
  {
    struct MonoInst * inst;

    D.49664 = cfg->mempool;
    inst = mono_mempool_alloc (D.49664, 56);
    inst->data.op[1].const_val = 0;
    D.49905 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49905;
    inst->prev = 0B;
    D.49906 = inst->prev;
    inst->next = D.49906;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49907 = inst->sreg3;
    inst->sreg2 = D.49907;
    D.49908 = inst->sreg2;
    inst->sreg1 = D.49908;
    D.49676 = cfg->ip;
    inst->cil_code = D.49676;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 0;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49909>; else goto <D.49910>;
    <D.49909>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = inst;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    inst->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    goto <D.49911>;
    <D.49910>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.49911>:
  }
  D.49801 = mono_defaults.transparent_proxy_class;
  mini_emit_class_check_branch (cfg, klass_reg, D.49801, 653, no_proxy_bb);
  D.49912 = alloc_preg (cfg);
  tmp_reg = (int) D.49912;
  {
    struct MonoInst * inst;

    D.49664 = cfg->mempool;
    inst = mono_mempool_alloc (D.49664, 56);
    inst->data.op[1].const_val = 0;
    D.49913 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49913;
    inst->prev = 0B;
    D.49914 = inst->prev;
    inst->next = D.49914;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49915 = inst->sreg3;
    inst->sreg2 = D.49915;
    D.49916 = inst->sreg2;
    inst->sreg1 = D.49916;
    D.49676 = cfg->ip;
    inst->cil_code = D.49676;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 12;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49917>; else goto <D.49918>;
    <D.49917>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = inst;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    inst->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    goto <D.49919>;
    <D.49918>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.49919>:
  }
  {
    struct MonoInst * inst;

    D.49664 = cfg->mempool;
    inst = mono_mempool_alloc (D.49664, 56);
    inst->data.op[1].const_val = 0;
    D.49920 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49920;
    inst->prev = 0B;
    D.49921 = inst->prev;
    inst->next = D.49921;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49922 = inst->sreg3;
    inst->sreg2 = D.49922;
    D.49923 = inst->sreg2;
    inst->sreg1 = D.49923;
    D.49676 = cfg->ip;
    inst->cil_code = D.49676;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 8;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49924>; else goto <D.49925>;
    <D.49924>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = inst;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    inst->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    goto <D.49926>;
    <D.49925>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.49926>:
  }
  D.49927 = alloc_preg (cfg);
  tmp_reg = (int) D.49927;
  {
    struct MonoInst * inst;

    D.49664 = cfg->mempool;
    inst = mono_mempool_alloc (D.49664, 56);
    inst->data.op[1].const_val = 0;
    D.49928 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49928;
    inst->prev = 0B;
    D.49929 = inst->prev;
    inst->next = D.49929;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49930 = inst->sreg3;
    inst->sreg2 = D.49930;
    D.49931 = inst->sreg2;
    inst->sreg1 = D.49931;
    D.49676 = cfg->ip;
    inst->cil_code = D.49676;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 16;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49932>; else goto <D.49933>;
    <D.49932>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = inst;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    inst->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    goto <D.49934>;
    <D.49933>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.49934>:
  }
  {
    struct MonoInst * inst;

    D.49664 = cfg->mempool;
    inst = mono_mempool_alloc (D.49664, 56);
    inst->data.op[1].const_val = 0;
    D.49935 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49935;
    inst->prev = 0B;
    D.49936 = inst->prev;
    inst->next = D.49936;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49937 = inst->sreg3;
    inst->sreg2 = D.49937;
    D.49938 = inst->sreg2;
    inst->sreg1 = D.49938;
    D.49676 = cfg->ip;
    inst->cil_code = D.49676;
    inst->dreg = -1;
    inst->sreg1 = tmp_reg;
    inst->data.op[1].const_val = 0;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49939>; else goto <D.49940>;
    <D.49939>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = inst;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    inst->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    goto <D.49941>;
    <D.49940>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.49941>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.49664 = cfg->mempool;
    ins = mono_mempool_alloc (D.49664, 56);
    ins->data.op[1].const_val = 0;
    D.49942 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.49942;
    ins->prev = 0B;
    D.49943 = ins->prev;
    ins->next = D.49943;
    ins->opcode = 648;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.49944 = ins->sreg3;
    ins->sreg2 = D.49944;
    D.49945 = ins->sreg2;
    ins->sreg1 = D.49945;
    D.49676 = cfg->ip;
    ins->cil_code = D.49676;
    if (0 != 0) goto <D.49946>; else goto <D.49947>;
    <D.49946>:
    D.49664 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49664, 172);
    D.49665 = cfg->num_bblocks;
    D.49948 = D.49665;
    D.49949 = D.49948 + 1;
    cfg->num_bblocks = D.49949;
    D.49950 = (int) D.49948;
    falsebb->block_num = D.49950;
    ins->data.op[0].target_block = no_proxy_bb;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, no_proxy_bb);
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49951>; else goto <D.49952>;
    <D.49951>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = ins;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    ins->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = ins;
    goto <D.49953>;
    <D.49952>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = ins;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.49953>:
    D.49954 = falsebb->cil_code;
    if (D.49954 != 0B) goto <D.49955>; else goto <D.49956>;
    <D.49955>:
    D.49697 = cfg->cil_offset_to_bb;
    D.49954 = falsebb->cil_code;
    D.49957 = (int) D.49954;
    D.49699 = cfg->cil_start;
    D.49700 = (int) D.49699;
    D.49958 = D.49957 - D.49700;
    D.49959 = (unsigned int) D.49958;
    D.49960 = D.49959 * 4;
    D.49961 = D.49697 + D.49960;
    *D.49961 = falsebb;
    <D.49956>:
    D.49705 = cfg->real_offset;
    falsebb->real_offset = D.49705;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49965>; else goto <D.49962>;
    <D.49965>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49711 = D.49710 + 64985;
    if (D.49711 <= 9) goto <D.49963>; else goto <D.49966>;
    <D.49966>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49713 = D.49710 + 64878;
    if (D.49713 <= 9) goto <D.49963>; else goto <D.49967>;
    <D.49967>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49715 = D.49710 + 64888;
    if (D.49715 <= 9) goto <D.49963>; else goto <D.49962>;
    <D.49963>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49716 = D.49678->data.op[1].many_blocks;
    D.49717 = D.49716 + 4;
    D.49718 = *D.49717;
    if (D.49718 == 0B) goto <D.49968>; else goto <D.49962>;
    <D.49968>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49716 = D.49678->data.op[1].many_blocks;
    D.49717 = D.49716 + 4;
    *D.49717 = falsebb;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    goto <D.49964>;
    <D.49962>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 == 0B) goto <D.49969>; else goto <D.49971>;
    <D.49971>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    if (D.49710 != 442) goto <D.49972>; else goto <D.49970>;
    <D.49972>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    if (D.49710 != 759) goto <D.49973>; else goto <D.49970>;
    <D.49973>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49711 = D.49710 + 64985;
    if (D.49711 > 9) goto <D.49974>; else goto <D.49970>;
    <D.49974>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49713 = D.49710 + 64878;
    if (D.49713 > 9) goto <D.49975>; else goto <D.49970>;
    <D.49975>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49715 = D.49710 + 64888;
    if (D.49715 > 9) goto <D.49969>; else goto <D.49970>;
    <D.49969>:
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    <D.49970>:
    <D.49964>:
    D.49677 = cfg->cbb;
    D.49677->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.49976>;
    <D.49947>:
    D.49664 = cfg->mempool;
    D.49977 = mono_mempool_alloc (D.49664, 8);
    ins->data.op[1].many_blocks = D.49977;
    D.49978 = ins->data.op[1].many_blocks;
    *D.49978 = no_proxy_bb;
    D.49978 = ins->data.op[1].many_blocks;
    D.49979 = D.49978 + 4;
    *D.49979 = 0B;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, no_proxy_bb);
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49980>; else goto <D.49981>;
    <D.49980>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = ins;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    ins->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = ins;
    goto <D.49982>;
    <D.49981>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = ins;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.49982>:
    D.49734 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.49735 = D.49734 & 8;
    if (D.49735 == 0) goto <D.49983>; else goto <D.49984>;
    <D.49983>:
    D.49664 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49664, 172);
    D.49665 = cfg->num_bblocks;
    D.49985 = D.49665;
    D.49986 = D.49985 + 1;
    cfg->num_bblocks = D.49986;
    D.49987 = (int) D.49985;
    falsebb->block_num = D.49987;
    D.49978 = ins->data.op[1].many_blocks;
    D.49979 = D.49978 + 4;
    *D.49979 = falsebb;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    D.49954 = falsebb->cil_code;
    if (D.49954 != 0B) goto <D.49988>; else goto <D.49989>;
    <D.49988>:
    D.49697 = cfg->cil_offset_to_bb;
    D.49954 = falsebb->cil_code;
    D.49957 = (int) D.49954;
    D.49699 = cfg->cil_start;
    D.49700 = (int) D.49699;
    D.49958 = D.49957 - D.49700;
    D.49959 = (unsigned int) D.49958;
    D.49960 = D.49959 * 4;
    D.49961 = D.49697 + D.49960;
    *D.49961 = falsebb;
    <D.49989>:
    D.49705 = cfg->real_offset;
    falsebb->real_offset = D.49705;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.49993>; else goto <D.49990>;
    <D.49993>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49711 = D.49710 + 64985;
    if (D.49711 <= 9) goto <D.49991>; else goto <D.49994>;
    <D.49994>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49713 = D.49710 + 64878;
    if (D.49713 <= 9) goto <D.49991>; else goto <D.49995>;
    <D.49995>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49715 = D.49710 + 64888;
    if (D.49715 <= 9) goto <D.49991>; else goto <D.49990>;
    <D.49991>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49716 = D.49678->data.op[1].many_blocks;
    D.49717 = D.49716 + 4;
    D.49718 = *D.49717;
    if (D.49718 == 0B) goto <D.49996>; else goto <D.49990>;
    <D.49996>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49716 = D.49678->data.op[1].many_blocks;
    D.49717 = D.49716 + 4;
    *D.49717 = falsebb;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    goto <D.49992>;
    <D.49990>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 == 0B) goto <D.49997>; else goto <D.49999>;
    <D.49999>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    if (D.49710 != 442) goto <D.50000>; else goto <D.49998>;
    <D.50000>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    if (D.49710 != 759) goto <D.50001>; else goto <D.49998>;
    <D.50001>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49711 = D.49710 + 64985;
    if (D.49711 > 9) goto <D.50002>; else goto <D.49998>;
    <D.50002>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49713 = D.49710 + 64878;
    if (D.49713 > 9) goto <D.50003>; else goto <D.49998>;
    <D.50003>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49715 = D.49710 + 64888;
    if (D.49715 > 9) goto <D.49997>; else goto <D.49998>;
    <D.49997>:
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    <D.49998>:
    <D.49992>:
    D.49677 = cfg->cbb;
    D.49677->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.50004>;
    <D.49984>:
    D.49677 = cfg->cbb;
    D.49677->extended = 1;
    <D.50004>:
    <D.49976>:
  }
  D.49664 = cfg->mempool;
  fail_1_bb = mono_mempool_alloc0 (D.49664, 172);
  D.49665 = cfg->num_bblocks;
  D.50005 = D.49665;
  D.50006 = D.50005 + 1;
  cfg->num_bblocks = D.50006;
  D.50007 = (int) D.50005;
  fail_1_bb->block_num = D.50007;
  mini_emit_isninst_cast (cfg, klass_reg, klass, fail_1_bb, ok_result_bb);
  D.50008 = fail_1_bb->cil_code;
  if (D.50008 != 0B) goto <D.50009>; else goto <D.50010>;
  <D.50009>:
  D.49697 = cfg->cil_offset_to_bb;
  D.50008 = fail_1_bb->cil_code;
  D.50011 = (int) D.50008;
  D.49699 = cfg->cil_start;
  D.49700 = (int) D.49699;
  D.50012 = D.50011 - D.49700;
  D.50013 = (unsigned int) D.50012;
  D.50014 = D.50013 * 4;
  D.50015 = D.49697 + D.50014;
  *D.50015 = fail_1_bb;
  <D.50010>:
  D.49705 = cfg->real_offset;
  fail_1_bb->real_offset = D.49705;
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  if (D.49678 != 0B) goto <D.50019>; else goto <D.50016>;
  <D.50019>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49711 = D.49710 + 64985;
  if (D.49711 <= 9) goto <D.50017>; else goto <D.50020>;
  <D.50020>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49713 = D.49710 + 64878;
  if (D.49713 <= 9) goto <D.50017>; else goto <D.50021>;
  <D.50021>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49715 = D.49710 + 64888;
  if (D.49715 <= 9) goto <D.50017>; else goto <D.50016>;
  <D.50017>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49716 = D.49678->data.op[1].many_blocks;
  D.49717 = D.49716 + 4;
  D.49718 = *D.49717;
  if (D.49718 == 0B) goto <D.50022>; else goto <D.50016>;
  <D.50022>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49716 = D.49678->data.op[1].many_blocks;
  D.49717 = D.49716 + 4;
  *D.49717 = fail_1_bb;
  D.49677 = cfg->cbb;
  mono_link_bblock (cfg, D.49677, fail_1_bb);
  goto <D.50018>;
  <D.50016>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  if (D.49678 == 0B) goto <D.50023>; else goto <D.50025>;
  <D.50025>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  if (D.49710 != 442) goto <D.50026>; else goto <D.50024>;
  <D.50026>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  if (D.49710 != 759) goto <D.50027>; else goto <D.50024>;
  <D.50027>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49711 = D.49710 + 64985;
  if (D.49711 > 9) goto <D.50028>; else goto <D.50024>;
  <D.50028>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49713 = D.49710 + 64878;
  if (D.49713 > 9) goto <D.50029>; else goto <D.50024>;
  <D.50029>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49715 = D.49710 + 64888;
  if (D.49715 > 9) goto <D.50023>; else goto <D.50024>;
  <D.50023>:
  D.49677 = cfg->cbb;
  mono_link_bblock (cfg, D.49677, fail_1_bb);
  <D.50024>:
  <D.50018>:
  D.49677 = cfg->cbb;
  D.49677->next_bb = fail_1_bb;
  cfg->cbb = fail_1_bb;
  {
    struct MonoInst * inst;

    D.49664 = cfg->mempool;
    inst = mono_mempool_alloc (D.49664, 56);
    inst->data.op[1].const_val = 0;
    D.50030 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50030;
    inst->prev = 0B;
    D.50031 = inst->prev;
    inst->next = D.50031;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50032 = inst->sreg3;
    inst->sreg2 = D.50032;
    D.50033 = inst->sreg2;
    inst->sreg1 = D.50033;
    D.49676 = cfg->ip;
    inst->cil_code = D.49676;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 1;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.50034>; else goto <D.50035>;
    <D.50034>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = inst;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    inst->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    goto <D.50036>;
    <D.50035>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.50036>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.49664 = cfg->mempool;
    ins = mono_mempool_alloc (D.49664, 56);
    ins->data.op[1].const_val = 0;
    D.50037 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.50037;
    ins->prev = 0B;
    D.50038 = ins->prev;
    ins->next = D.50038;
    ins->opcode = 442;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.50039 = ins->sreg3;
    ins->sreg2 = D.50039;
    D.50040 = ins->sreg2;
    ins->sreg1 = D.50040;
    D.49676 = cfg->ip;
    ins->cil_code = D.49676;
    if (1 != 0) goto <D.50041>; else goto <D.50042>;
    <D.50041>:
    D.49664 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49664, 172);
    D.49665 = cfg->num_bblocks;
    D.50043 = D.49665;
    D.50044 = D.50043 + 1;
    cfg->num_bblocks = D.50044;
    D.50045 = (int) D.50043;
    falsebb->block_num = D.50045;
    ins->data.op[0].target_block = end_bb;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, end_bb);
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.50046>; else goto <D.50047>;
    <D.50046>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = ins;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    ins->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = ins;
    goto <D.50048>;
    <D.50047>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = ins;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.50048>:
    D.50049 = falsebb->cil_code;
    if (D.50049 != 0B) goto <D.50050>; else goto <D.50051>;
    <D.50050>:
    D.49697 = cfg->cil_offset_to_bb;
    D.50049 = falsebb->cil_code;
    D.50052 = (int) D.50049;
    D.49699 = cfg->cil_start;
    D.49700 = (int) D.49699;
    D.50053 = D.50052 - D.49700;
    D.50054 = (unsigned int) D.50053;
    D.50055 = D.50054 * 4;
    D.50056 = D.49697 + D.50055;
    *D.50056 = falsebb;
    <D.50051>:
    D.49705 = cfg->real_offset;
    falsebb->real_offset = D.49705;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.50060>; else goto <D.50057>;
    <D.50060>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49711 = D.49710 + 64985;
    if (D.49711 <= 9) goto <D.50058>; else goto <D.50061>;
    <D.50061>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49713 = D.49710 + 64878;
    if (D.49713 <= 9) goto <D.50058>; else goto <D.50062>;
    <D.50062>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49715 = D.49710 + 64888;
    if (D.49715 <= 9) goto <D.50058>; else goto <D.50057>;
    <D.50058>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49716 = D.49678->data.op[1].many_blocks;
    D.49717 = D.49716 + 4;
    D.49718 = *D.49717;
    if (D.49718 == 0B) goto <D.50063>; else goto <D.50057>;
    <D.50063>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49716 = D.49678->data.op[1].many_blocks;
    D.49717 = D.49716 + 4;
    *D.49717 = falsebb;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    goto <D.50059>;
    <D.50057>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 == 0B) goto <D.50064>; else goto <D.50066>;
    <D.50066>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    if (D.49710 != 442) goto <D.50067>; else goto <D.50065>;
    <D.50067>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    if (D.49710 != 759) goto <D.50068>; else goto <D.50065>;
    <D.50068>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49711 = D.49710 + 64985;
    if (D.49711 > 9) goto <D.50069>; else goto <D.50065>;
    <D.50069>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49713 = D.49710 + 64878;
    if (D.49713 > 9) goto <D.50070>; else goto <D.50065>;
    <D.50070>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49715 = D.49710 + 64888;
    if (D.49715 > 9) goto <D.50064>; else goto <D.50065>;
    <D.50064>:
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    <D.50065>:
    <D.50059>:
    D.49677 = cfg->cbb;
    D.49677->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.50071>;
    <D.50042>:
    D.49664 = cfg->mempool;
    D.50072 = mono_mempool_alloc (D.49664, 8);
    ins->data.op[1].many_blocks = D.50072;
    D.50073 = ins->data.op[1].many_blocks;
    *D.50073 = end_bb;
    D.50073 = ins->data.op[1].many_blocks;
    D.50074 = D.50073 + 4;
    *D.50074 = 0B;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, end_bb);
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.50075>; else goto <D.50076>;
    <D.50075>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = ins;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    ins->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = ins;
    goto <D.50077>;
    <D.50076>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = ins;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.50077>:
    D.49734 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.49735 = D.49734 & 8;
    if (D.49735 == 0) goto <D.50078>; else goto <D.50079>;
    <D.50078>:
    D.49664 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.49664, 172);
    D.49665 = cfg->num_bblocks;
    D.50080 = D.49665;
    D.50081 = D.50080 + 1;
    cfg->num_bblocks = D.50081;
    D.50082 = (int) D.50080;
    falsebb->block_num = D.50082;
    D.50073 = ins->data.op[1].many_blocks;
    D.50074 = D.50073 + 4;
    *D.50074 = falsebb;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    D.50049 = falsebb->cil_code;
    if (D.50049 != 0B) goto <D.50083>; else goto <D.50084>;
    <D.50083>:
    D.49697 = cfg->cil_offset_to_bb;
    D.50049 = falsebb->cil_code;
    D.50052 = (int) D.50049;
    D.49699 = cfg->cil_start;
    D.49700 = (int) D.49699;
    D.50053 = D.50052 - D.49700;
    D.50054 = (unsigned int) D.50053;
    D.50055 = D.50054 * 4;
    D.50056 = D.49697 + D.50055;
    *D.50056 = falsebb;
    <D.50084>:
    D.49705 = cfg->real_offset;
    falsebb->real_offset = D.49705;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.50088>; else goto <D.50085>;
    <D.50088>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49711 = D.49710 + 64985;
    if (D.49711 <= 9) goto <D.50086>; else goto <D.50089>;
    <D.50089>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49713 = D.49710 + 64878;
    if (D.49713 <= 9) goto <D.50086>; else goto <D.50090>;
    <D.50090>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49715 = D.49710 + 64888;
    if (D.49715 <= 9) goto <D.50086>; else goto <D.50085>;
    <D.50086>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49716 = D.49678->data.op[1].many_blocks;
    D.49717 = D.49716 + 4;
    D.49718 = *D.49717;
    if (D.49718 == 0B) goto <D.50091>; else goto <D.50085>;
    <D.50091>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49716 = D.49678->data.op[1].many_blocks;
    D.49717 = D.49716 + 4;
    *D.49717 = falsebb;
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    goto <D.50087>;
    <D.50085>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 == 0B) goto <D.50092>; else goto <D.50094>;
    <D.50094>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    if (D.49710 != 442) goto <D.50095>; else goto <D.50093>;
    <D.50095>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    if (D.49710 != 759) goto <D.50096>; else goto <D.50093>;
    <D.50096>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49711 = D.49710 + 64985;
    if (D.49711 > 9) goto <D.50097>; else goto <D.50093>;
    <D.50097>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49713 = D.49710 + 64878;
    if (D.49713 > 9) goto <D.50098>; else goto <D.50093>;
    <D.50098>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49710 = D.49678->opcode;
    D.49715 = D.49710 + 64888;
    if (D.49715 > 9) goto <D.50092>; else goto <D.50093>;
    <D.50092>:
    D.49677 = cfg->cbb;
    mono_link_bblock (cfg, D.49677, falsebb);
    <D.50093>:
    <D.50087>:
    D.49677 = cfg->cbb;
    D.49677->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.50099>;
    <D.50079>:
    D.49677 = cfg->cbb;
    D.49677->extended = 1;
    <D.50099>:
    <D.50071>:
  }
  D.50100 = no_proxy_bb->cil_code;
  if (D.50100 != 0B) goto <D.50101>; else goto <D.50102>;
  <D.50101>:
  D.49697 = cfg->cil_offset_to_bb;
  D.50100 = no_proxy_bb->cil_code;
  D.50103 = (int) D.50100;
  D.49699 = cfg->cil_start;
  D.49700 = (int) D.49699;
  D.50104 = D.50103 - D.49700;
  D.50105 = (unsigned int) D.50104;
  D.50106 = D.50105 * 4;
  D.50107 = D.49697 + D.50106;
  *D.50107 = no_proxy_bb;
  <D.50102>:
  D.49705 = cfg->real_offset;
  no_proxy_bb->real_offset = D.49705;
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  if (D.49678 != 0B) goto <D.50111>; else goto <D.50108>;
  <D.50111>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49711 = D.49710 + 64985;
  if (D.49711 <= 9) goto <D.50109>; else goto <D.50112>;
  <D.50112>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49713 = D.49710 + 64878;
  if (D.49713 <= 9) goto <D.50109>; else goto <D.50113>;
  <D.50113>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49715 = D.49710 + 64888;
  if (D.49715 <= 9) goto <D.50109>; else goto <D.50108>;
  <D.50109>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49716 = D.49678->data.op[1].many_blocks;
  D.49717 = D.49716 + 4;
  D.49718 = *D.49717;
  if (D.49718 == 0B) goto <D.50114>; else goto <D.50108>;
  <D.50114>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49716 = D.49678->data.op[1].many_blocks;
  D.49717 = D.49716 + 4;
  *D.49717 = no_proxy_bb;
  D.49677 = cfg->cbb;
  mono_link_bblock (cfg, D.49677, no_proxy_bb);
  goto <D.50110>;
  <D.50108>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  if (D.49678 == 0B) goto <D.50115>; else goto <D.50117>;
  <D.50117>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  if (D.49710 != 442) goto <D.50118>; else goto <D.50116>;
  <D.50118>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  if (D.49710 != 759) goto <D.50119>; else goto <D.50116>;
  <D.50119>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49711 = D.49710 + 64985;
  if (D.49711 > 9) goto <D.50120>; else goto <D.50116>;
  <D.50120>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49713 = D.49710 + 64878;
  if (D.49713 > 9) goto <D.50121>; else goto <D.50116>;
  <D.50121>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49715 = D.49710 + 64888;
  if (D.49715 > 9) goto <D.50115>; else goto <D.50116>;
  <D.50115>:
  D.49677 = cfg->cbb;
  mono_link_bblock (cfg, D.49677, no_proxy_bb);
  <D.50116>:
  <D.50110>:
  D.49677 = cfg->cbb;
  D.49677->next_bb = no_proxy_bb;
  cfg->cbb = no_proxy_bb;
  mini_emit_castclass (cfg, obj_reg, klass_reg, klass, ok_result_bb);
  <D.49894>:
  D.50122 = ok_result_bb->cil_code;
  if (D.50122 != 0B) goto <D.50123>; else goto <D.50124>;
  <D.50123>:
  D.49697 = cfg->cil_offset_to_bb;
  D.50122 = ok_result_bb->cil_code;
  D.50125 = (int) D.50122;
  D.49699 = cfg->cil_start;
  D.49700 = (int) D.49699;
  D.50126 = D.50125 - D.49700;
  D.50127 = (unsigned int) D.50126;
  D.50128 = D.50127 * 4;
  D.50129 = D.49697 + D.50128;
  *D.50129 = ok_result_bb;
  <D.50124>:
  D.49705 = cfg->real_offset;
  ok_result_bb->real_offset = D.49705;
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  if (D.49678 != 0B) goto <D.50133>; else goto <D.50130>;
  <D.50133>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49711 = D.49710 + 64985;
  if (D.49711 <= 9) goto <D.50131>; else goto <D.50134>;
  <D.50134>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49713 = D.49710 + 64878;
  if (D.49713 <= 9) goto <D.50131>; else goto <D.50135>;
  <D.50135>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49715 = D.49710 + 64888;
  if (D.49715 <= 9) goto <D.50131>; else goto <D.50130>;
  <D.50131>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49716 = D.49678->data.op[1].many_blocks;
  D.49717 = D.49716 + 4;
  D.49718 = *D.49717;
  if (D.49718 == 0B) goto <D.50136>; else goto <D.50130>;
  <D.50136>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49716 = D.49678->data.op[1].many_blocks;
  D.49717 = D.49716 + 4;
  *D.49717 = ok_result_bb;
  D.49677 = cfg->cbb;
  mono_link_bblock (cfg, D.49677, ok_result_bb);
  goto <D.50132>;
  <D.50130>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  if (D.49678 == 0B) goto <D.50137>; else goto <D.50139>;
  <D.50139>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  if (D.49710 != 442) goto <D.50140>; else goto <D.50138>;
  <D.50140>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  if (D.49710 != 759) goto <D.50141>; else goto <D.50138>;
  <D.50141>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49711 = D.49710 + 64985;
  if (D.49711 > 9) goto <D.50142>; else goto <D.50138>;
  <D.50142>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49713 = D.49710 + 64878;
  if (D.49713 > 9) goto <D.50143>; else goto <D.50138>;
  <D.50143>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49715 = D.49710 + 64888;
  if (D.49715 > 9) goto <D.50137>; else goto <D.50138>;
  <D.50137>:
  D.49677 = cfg->cbb;
  mono_link_bblock (cfg, D.49677, ok_result_bb);
  <D.50138>:
  <D.50132>:
  D.49677 = cfg->cbb;
  D.49677->next_bb = ok_result_bb;
  cfg->cbb = ok_result_bb;
  {
    struct MonoInst * inst;

    D.49664 = cfg->mempool;
    inst = mono_mempool_alloc (D.49664, 56);
    inst->data.op[1].const_val = 0;
    D.50144 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50144;
    inst->prev = 0B;
    D.50145 = inst->prev;
    inst->next = D.50145;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50146 = inst->sreg3;
    inst->sreg2 = D.50146;
    D.50147 = inst->sreg2;
    inst->sreg1 = D.50147;
    D.49676 = cfg->ip;
    inst->cil_code = D.49676;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 0;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    if (D.49678 != 0B) goto <D.50148>; else goto <D.50149>;
    <D.50148>:
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    D.49678->next = inst;
    D.49677 = cfg->cbb;
    D.49678 = D.49677->last_ins;
    inst->prev = D.49678;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    goto <D.50150>;
    <D.50149>:
    D.49677 = cfg->cbb;
    D.49677 = cfg->cbb;
    D.49677->last_ins = inst;
    D.49678 = D.49677->last_ins;
    D.49677->code = D.49678;
    <D.50150>:
  }
  D.50151 = end_bb->cil_code;
  if (D.50151 != 0B) goto <D.50152>; else goto <D.50153>;
  <D.50152>:
  D.49697 = cfg->cil_offset_to_bb;
  D.50151 = end_bb->cil_code;
  D.50154 = (int) D.50151;
  D.49699 = cfg->cil_start;
  D.49700 = (int) D.49699;
  D.50155 = D.50154 - D.49700;
  D.50156 = (unsigned int) D.50155;
  D.50157 = D.50156 * 4;
  D.50158 = D.49697 + D.50157;
  *D.50158 = end_bb;
  <D.50153>:
  D.49705 = cfg->real_offset;
  end_bb->real_offset = D.49705;
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  if (D.49678 != 0B) goto <D.50162>; else goto <D.50159>;
  <D.50162>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49711 = D.49710 + 64985;
  if (D.49711 <= 9) goto <D.50160>; else goto <D.50163>;
  <D.50163>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49713 = D.49710 + 64878;
  if (D.49713 <= 9) goto <D.50160>; else goto <D.50164>;
  <D.50164>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49715 = D.49710 + 64888;
  if (D.49715 <= 9) goto <D.50160>; else goto <D.50159>;
  <D.50160>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49716 = D.49678->data.op[1].many_blocks;
  D.49717 = D.49716 + 4;
  D.49718 = *D.49717;
  if (D.49718 == 0B) goto <D.50165>; else goto <D.50159>;
  <D.50165>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49716 = D.49678->data.op[1].many_blocks;
  D.49717 = D.49716 + 4;
  *D.49717 = end_bb;
  D.49677 = cfg->cbb;
  mono_link_bblock (cfg, D.49677, end_bb);
  goto <D.50161>;
  <D.50159>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  if (D.49678 == 0B) goto <D.50166>; else goto <D.50168>;
  <D.50168>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  if (D.49710 != 442) goto <D.50169>; else goto <D.50167>;
  <D.50169>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  if (D.49710 != 759) goto <D.50170>; else goto <D.50167>;
  <D.50170>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49711 = D.49710 + 64985;
  if (D.49711 > 9) goto <D.50171>; else goto <D.50167>;
  <D.50171>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49713 = D.49710 + 64878;
  if (D.49713 > 9) goto <D.50172>; else goto <D.50167>;
  <D.50172>:
  D.49677 = cfg->cbb;
  D.49678 = D.49677->last_ins;
  D.49710 = D.49678->opcode;
  D.49715 = D.49710 + 64888;
  if (D.49715 > 9) goto <D.50166>; else goto <D.50167>;
  <D.50166>:
  D.49677 = cfg->cbb;
  mono_link_bblock (cfg, D.49677, end_bb);
  <D.50167>:
  <D.50161>:
  D.49677 = cfg->cbb;
  D.49677->next_bb = end_bb;
  cfg->cbb = end_bb;
  D.49664 = cfg->mempool;
  ins = mono_mempool_alloc (D.49664, 56);
  ins->data.op[1].const_val = 0;
  D.50173 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.50173;
  ins->prev = 0B;
  D.50174 = ins->prev;
  ins->next = D.50174;
  ins->opcode = 362;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.50175 = ins->sreg3;
  ins->sreg2 = D.50175;
  D.50176 = ins->sreg2;
  ins->sreg1 = D.50176;
  D.49676 = cfg->ip;
  ins->cil_code = D.49676;
  ins->dreg = dreg;
  ins->type = 1;
  D.50177 = ins;
  return D.50177;
}


emit_memory_barrier (struct MonoCompile * cfg, int kind)
{
  struct MonoMemPool * D.50179;
  int D.50180;
  struct MonoInst * D.50181;
  int D.50182;
  int D.50183;
  const unsigned char * D.50184;
  struct MonoBasicBlock * D.50185;
  struct MonoInst * D.50186;
  struct MonoInst * D.50190;
  struct MonoInst * ins;

  ins = 0B;
  D.50179 = cfg->mempool;
  ins = mono_mempool_alloc (D.50179, 56);
  ins->data.op[1].const_val = 0;
  D.50180 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.50180;
  ins->prev = 0B;
  D.50181 = ins->prev;
  ins->next = D.50181;
  ins->opcode = 813;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.50182 = ins->sreg3;
  ins->sreg2 = D.50182;
  D.50183 = ins->sreg2;
  ins->sreg1 = D.50183;
  D.50184 = cfg->ip;
  ins->cil_code = D.50184;
  D.50185 = cfg->cbb;
  D.50186 = D.50185->last_ins;
  if (D.50186 != 0B) goto <D.50187>; else goto <D.50188>;
  <D.50187>:
  D.50185 = cfg->cbb;
  D.50186 = D.50185->last_ins;
  D.50186->next = ins;
  D.50185 = cfg->cbb;
  D.50186 = D.50185->last_ins;
  ins->prev = D.50186;
  D.50185 = cfg->cbb;
  D.50185->last_ins = ins;
  goto <D.50189>;
  <D.50188>:
  D.50185 = cfg->cbb;
  D.50185 = cfg->cbb;
  D.50185->last_ins = ins;
  D.50186 = D.50185->last_ins;
  D.50185->code = D.50186;
  <D.50189>:
  ins->backend.memory_barrier_kind = kind;
  D.50190 = ins;
  return D.50190;
}


type_from_op (struct MonoInst * ins, struct MonoInst * src1, struct MonoInst * src2)
{
  short unsigned int D.50192;
  int D.50193;
  unsigned char D.50194;
  int D.50195;
  unsigned char D.50196;
  int D.50197;
  char D.50198;
  unsigned char D.50199;
  unsigned char D.50200;
  int D.50201;
  short unsigned int D.50202;
  short unsigned int D.50203;
  char D.50204;
  unsigned char D.50205;
  char D.50206;
  unsigned char D.50207;
  char D.50208;
  _Bool D.50209;
  unsigned char D.50210;
  char D.50217;
  _Bool D.50218;
  unsigned char D.50219;
  short unsigned int D.50222;
  short unsigned int D.50223;
  short unsigned int D.50224;
  short unsigned int D.50225;
  unsigned char D.50226;
  int D.50227;
  int D.50228;
  _Bool D.50229;
  unsigned char D.50230;
  char D.50231;
  unsigned char D.50232;
  short unsigned int D.50233;
  short unsigned int D.50234;
  unsigned char D.50235;
  short unsigned int D.50239;
  short unsigned int D.50240;
  short unsigned int D.50242;
  short unsigned int D.50243;
  short unsigned int D.50244;
  short unsigned int D.50245;
  short unsigned int D.50247;
  short unsigned int D.50248;
  struct MonoClass * D.50253;

  D.50192 = ins->opcode;
  D.50193 = (int) D.50192;
  switch (D.50193) <default: <D.24319>, case 59: <D.24242>, case 60: <D.24243>, case 61: <D.24244>, case 62: <D.24245>, case 63: <D.24246>, case 64: <D.24247>, case 65: <D.24248>, case 66: <D.24249>, case 67: <D.24250>, case 68: <D.24251>, case 88: <D.24224>, case 89: <D.24225>, case 90: <D.24226>, case 91: <D.24227>, case 92: <D.24230>, case 93: <D.24228>, case 94: <D.24231>, case 95: <D.24232>, case 96: <D.24233>, case 97: <D.24234>, case 98: <D.24235>, case 99: <D.24236>, case 100: <D.24237>, case 101: <D.24257>, case 102: <D.24258>, case 103: <D.24259>, case 104: <D.24260>, case 105: <D.24261>, case 106: <D.24289>, case 107: <D.24295>, case 108: <D.24296>, case 109: <D.24262>, case 110: <D.24290>, case 118: <D.24263>, case 130: <D.24276>, case 131: <D.24277>, case 132: <D.24278>, case 133: <D.24294>, case 134: <D.24279>, case 135: <D.24280>, case 136: <D.24281>, case 137: <D.24293>, case 138: <D.24274>, case 139: <D.24275>, case 179: <D.24268>, case 180: <D.24269>, case 181: <D.24270>, case 182: <D.24271>, case 183: <D.24272>, case 184: <D.24273>, case 185: <D.24291>, case 186: <D.24292>, case 209: <D.24298>, case 210: <D.24299>, case 211: <D.24300>, case 212: <D.24301>, case 213: <D.24302>, case 214: <D.24303>, case 215: <D.24304>, case 216: <D.24305>, case 217: <D.24306>, case 218: <D.24307>, case 219: <D.24308>, case 224: <D.24282>, case 322: <D.24238>, case 325: <D.24239>, case 326: <D.24240>, case 327: <D.24241>, case 388: <D.24309>, case 389: <D.24310>, case 390: <D.24311>, case 391: <D.24312>, case 392: <D.24313>, case 393: <D.24314>, case 394: <D.24315>, case 395: <D.24316>, case 396: <D.24317>, case 397: <D.24318>, case 446: <D.24252>, case 447: <D.24253>, case 448: <D.24254>, case 449: <D.24255>, case 450: <D.24256>, case 728: <D.24297>>
  <D.24224>:
  <D.24225>:
  <D.24226>:
  <D.24227>:
  <D.24228>:
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50196 = src2->type;
  D.50197 = (int) D.50196;
  D.50198 = bin_num_table[D.50195][D.50197];
  D.50199 = (unsigned char) D.50198;
  ins->type = D.50199;
  D.50192 = ins->opcode;
  D.50200 = ins->type;
  D.50201 = (int) D.50200;
  D.50202 = binops_op_map[D.50201];
  D.50203 = D.50192 + D.50202;
  ins->opcode = D.50203;
  goto <D.24229>;
  <D.24230>:
  <D.24231>:
  <D.24232>:
  <D.24233>:
  <D.24234>:
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50196 = src2->type;
  D.50197 = (int) D.50196;
  D.50204 = bin_int_table[D.50195][D.50197];
  D.50205 = (unsigned char) D.50204;
  ins->type = D.50205;
  D.50192 = ins->opcode;
  D.50200 = ins->type;
  D.50201 = (int) D.50200;
  D.50202 = binops_op_map[D.50201];
  D.50203 = D.50192 + D.50202;
  ins->opcode = D.50203;
  goto <D.24229>;
  <D.24235>:
  <D.24236>:
  <D.24237>:
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50196 = src2->type;
  D.50197 = (int) D.50196;
  D.50206 = shift_table[D.50195][D.50197];
  D.50207 = (unsigned char) D.50206;
  ins->type = D.50207;
  D.50192 = ins->opcode;
  D.50200 = ins->type;
  D.50201 = (int) D.50200;
  D.50202 = binops_op_map[D.50201];
  D.50203 = D.50192 + D.50202;
  ins->opcode = D.50203;
  goto <D.24229>;
  <D.24238>:
  <D.24239>:
  <D.24240>:
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50196 = src2->type;
  D.50197 = (int) D.50196;
  D.50208 = bin_comp_table[D.50195][D.50197];
  D.50209 = D.50208 != 0;
  D.50210 = (unsigned char) D.50209;
  ins->type = D.50210;
  D.50194 = src1->type;
  if (D.50194 == 2) goto <D.50211>; else goto <D.50212>;
  <D.50211>:
  ins->opcode = 325;
  goto <D.50213>;
  <D.50212>:
  D.50194 = src1->type;
  if (D.50194 == 4) goto <D.50214>; else goto <D.50215>;
  <D.50214>:
  ins->opcode = 324;
  goto <D.50216>;
  <D.50215>:
  ins->opcode = 326;
  <D.50216>:
  <D.50213>:
  goto <D.24229>;
  <D.24241>:
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50217 = bin_comp_table[D.50195][D.50195];
  D.50218 = D.50217 != 0;
  D.50219 = (unsigned char) D.50218;
  ins->type = D.50219;
  D.50194 = src1->type;
  if (D.50194 == 2) goto <D.50220>; else goto <D.50221>;
  <D.50220>:
  ins->opcode = 328;
  <D.50221>:
  goto <D.24229>;
  <D.24242>:
  <D.24243>:
  <D.24244>:
  <D.24245>:
  <D.24246>:
  <D.24247>:
  <D.24248>:
  <D.24249>:
  <D.24250>:
  <D.24251>:
  D.50192 = ins->opcode;
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50222 = beqops_op_map[D.50195];
  D.50223 = D.50192 + D.50222;
  ins->opcode = D.50223;
  goto <D.24229>;
  <D.24252>:
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50196 = src2->type;
  D.50197 = (int) D.50196;
  D.50208 = bin_comp_table[D.50195][D.50197];
  D.50209 = D.50208 != 0;
  D.50210 = (unsigned char) D.50209;
  ins->type = D.50210;
  D.50192 = ins->opcode;
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50224 = ceqops_op_map[D.50195];
  D.50225 = D.50192 + D.50224;
  ins->opcode = D.50225;
  goto <D.24229>;
  <D.24253>:
  <D.24254>:
  <D.24255>:
  <D.24256>:
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50196 = src2->type;
  D.50197 = (int) D.50196;
  D.50208 = bin_comp_table[D.50195][D.50197];
  D.50226 = (unsigned char) D.50208;
  D.50227 = (int) D.50226;
  D.50228 = D.50227 & 1;
  D.50229 = D.50228 != 0;
  D.50230 = (unsigned char) D.50229;
  ins->type = D.50230;
  D.50192 = ins->opcode;
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50224 = ceqops_op_map[D.50195];
  D.50225 = D.50192 + D.50224;
  ins->opcode = D.50225;
  goto <D.24229>;
  <D.24257>:
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50231 = neg_table[D.50195];
  D.50232 = (unsigned char) D.50231;
  ins->type = D.50232;
  D.50192 = ins->opcode;
  D.50200 = ins->type;
  D.50201 = (int) D.50200;
  D.50233 = unops_op_map[D.50201];
  D.50234 = D.50192 + D.50233;
  ins->opcode = D.50234;
  goto <D.24229>;
  <D.24258>:
  D.50194 = src1->type;
  D.50235 = D.50194 + 255;
  if (D.50235 <= 2) goto <D.50236>; else goto <D.50237>;
  <D.50236>:
  D.50194 = src1->type;
  ins->type = D.50194;
  goto <D.50238>;
  <D.50237>:
  ins->type = 0;
  <D.50238>:
  D.50192 = ins->opcode;
  D.50200 = ins->type;
  D.50201 = (int) D.50200;
  D.50233 = unops_op_map[D.50201];
  D.50234 = D.50192 + D.50233;
  ins->opcode = D.50234;
  goto <D.24229>;
  <D.24259>:
  <D.24260>:
  <D.24261>:
  <D.24262>:
  ins->type = 1;
  D.50192 = ins->opcode;
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50239 = unops_op_map[D.50195];
  D.50240 = D.50192 + D.50239;
  ins->opcode = D.50240;
  goto <D.24229>;
  <D.24263>:
  ins->type = 4;
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  switch (D.50195) <default: <D.50241>, case 1: <D.24264>, case 2: <D.24267>, case 3: <D.24265>>
  <D.24264>:
  <D.24265>:
  ins->opcode = 588;
  goto <D.24266>;
  <D.24267>:
  ins->opcode = 536;
  goto <D.24266>;
  <D.50241>:
  <D.24266>:
  goto <D.24229>;
  <D.24268>:
  <D.24269>:
  <D.24270>:
  <D.24271>:
  <D.24272>:
  <D.24273>:
  ins->type = 1;
  D.50192 = ins->opcode;
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50242 = ovf3ops_op_map[D.50195];
  D.50243 = D.50192 + D.50242;
  ins->opcode = D.50243;
  goto <D.24229>;
  <D.24274>:
  <D.24275>:
  ins->type = 3;
  D.50192 = ins->opcode;
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50244 = ovf2ops_op_map[D.50195];
  D.50245 = D.50192 + D.50244;
  ins->opcode = D.50245;
  goto <D.24229>;
  <D.24276>:
  <D.24277>:
  <D.24278>:
  <D.24279>:
  <D.24280>:
  <D.24281>:
  ins->type = 1;
  D.50192 = ins->opcode;
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50244 = ovf2ops_op_map[D.50195];
  D.50245 = D.50192 + D.50244;
  ins->opcode = D.50245;
  goto <D.24229>;
  <D.24282>:
  ins->type = 3;
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  switch (D.50195) <default: <D.50246>, case 1: <D.24283>, case 2: <D.24287>, case 3: <D.24285>, case 4: <D.24288>, case 5: <D.24286>>
  <D.24283>:
  ins->opcode = 589;
  goto <D.24284>;
  <D.24285>:
  <D.24286>:
  ins->opcode = 424;
  goto <D.24284>;
  <D.24287>:
  ins->opcode = 537;
  goto <D.24284>;
  <D.24288>:
  ins->opcode = 727;
  goto <D.24284>;
  <D.50246>:
  <D.24284>:
  goto <D.24229>;
  <D.24289>:
  <D.24290>:
  ins->type = 2;
  D.50192 = ins->opcode;
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50239 = unops_op_map[D.50195];
  D.50240 = D.50192 + D.50239;
  ins->opcode = D.50240;
  goto <D.24229>;
  <D.24291>:
  <D.24292>:
  ins->type = 2;
  D.50192 = ins->opcode;
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50242 = ovf3ops_op_map[D.50195];
  D.50243 = D.50192 + D.50242;
  ins->opcode = D.50243;
  goto <D.24229>;
  <D.24293>:
  <D.24294>:
  ins->type = 2;
  D.50192 = ins->opcode;
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50244 = ovf2ops_op_map[D.50195];
  D.50245 = D.50192 + D.50244;
  ins->opcode = D.50245;
  goto <D.24229>;
  <D.24295>:
  <D.24296>:
  ins->type = 4;
  D.50192 = ins->opcode;
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50239 = unops_op_map[D.50195];
  D.50240 = D.50192 + D.50239;
  ins->opcode = D.50240;
  goto <D.24229>;
  <D.24297>:
  ins->type = 4;
  goto <D.24229>;
  <D.24298>:
  <D.24299>:
  ins->type = 1;
  D.50192 = ins->opcode;
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50247 = ovfops_op_map[D.50195];
  D.50248 = D.50192 + D.50247;
  ins->opcode = D.50248;
  goto <D.24229>;
  <D.24300>:
  <D.24301>:
  <D.24302>:
  ins->type = 3;
  D.50192 = ins->opcode;
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50247 = ovfops_op_map[D.50195];
  D.50248 = D.50192 + D.50247;
  ins->opcode = D.50248;
  goto <D.24229>;
  <D.24303>:
  <D.24304>:
  <D.24305>:
  <D.24306>:
  <D.24307>:
  <D.24308>:
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50196 = src2->type;
  D.50197 = (int) D.50196;
  D.50198 = bin_num_table[D.50195][D.50197];
  D.50199 = (unsigned char) D.50198;
  ins->type = D.50199;
  D.50192 = ins->opcode;
  D.50194 = src1->type;
  D.50195 = (int) D.50194;
  D.50247 = ovfops_op_map[D.50195];
  D.50248 = D.50192 + D.50247;
  ins->opcode = D.50248;
  D.50200 = ins->type;
  if (D.50200 == 4) goto <D.50249>; else goto <D.50250>;
  <D.50249>:
  ins->type = 0;
  <D.50250>:
  goto <D.24229>;
  <D.24309>:
  ins->type = 3;
  goto <D.24229>;
  <D.24310>:
  <D.24311>:
  <D.24312>:
  <D.24313>:
  <D.24314>:
  <D.24315>:
  ins->type = 3;
  goto <D.24229>;
  <D.24316>:
  ins->type = 2;
  goto <D.24229>;
  <D.24317>:
  <D.24318>:
  ins->type = 4;
  goto <D.24229>;
  <D.24319>:
  D.50192 = ins->opcode;
  D.50193 = (int) D.50192;
  monoeg_g_log (0B, 4, "opcode 0x%04x not handled in type from op", D.50193);
  <D.24320>:
  goto <D.24320>;
  <D.24229>:
  D.50200 = ins->type;
  if (D.50200 == 5) goto <D.50251>; else goto <D.50252>;
  <D.50251>:
  D.50253 = mono_defaults.object_class;
  ins->klass = D.50253;
  <D.50252>:
}


mono_save_token_info (struct MonoCompile * cfg, struct MonoImage * image, guint32 token, void * key)
{
  unsigned int D.50255;
  unsigned int D.50256;
  struct MonoGenericContext * D.50259;
  unsigned int D.50262;
  struct MonoMemPool * D.50265;
  struct GHashTable * D.50266;

  D.50255 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.50256 = D.50255 & 64;
  if (D.50256 != 0) goto <D.50257>; else goto <D.50258>;
  <D.50257>:
  D.50259 = cfg->generic_context;
  if (D.50259 == 0B) goto <D.50260>; else goto <D.50261>;
  <D.50260>:
  D.50262 = token >> 24;
  if (D.50262 != 0) goto <D.50263>; else goto <D.50264>;
  <D.50263>:
  {
    struct MonoJumpInfoToken * jump_info_token;

    D.50265 = cfg->mempool;
    jump_info_token = mono_mempool_alloc0 (D.50265, 20);
    jump_info_token->image = image;
    jump_info_token->token = token;
    D.50266 = cfg->token_info_hash;
    monoeg_g_hash_table_insert_replace (D.50266, key, jump_info_token, 0);
  }
  <D.50264>:
  <D.50261>:
  <D.50258>:
}


ip_in_bb (struct MonoCompile * cfg, struct MonoBasicBlock * bb, const guint8 * ip)
{
  struct MonoBasicBlock * * D.50267;
  int ip.558;
  unsigned char * D.50269;
  int D.50270;
  int D.50271;
  unsigned int D.50272;
  unsigned int D.50273;
  struct MonoBasicBlock * * D.50274;
  gboolean D.50275;
  int iftmp.559;
  struct MonoBasicBlock * b;

  D.50267 = cfg->cil_offset_to_bb;
  ip.558 = (int) ip;
  D.50269 = cfg->cil_start;
  D.50270 = (int) D.50269;
  D.50271 = ip.558 - D.50270;
  D.50272 = (unsigned int) D.50271;
  D.50273 = D.50272 * 4;
  D.50274 = D.50267 + D.50273;
  b = *D.50274;
  if (b == 0B) goto <D.50277>; else goto <D.50280>;
  <D.50280>:
  if (b == bb) goto <D.50277>; else goto <D.50278>;
  <D.50277>:
  iftmp.559 = 1;
  goto <D.50279>;
  <D.50278>:
  iftmp.559 = 0;
  <D.50279>:
  D.50275 = iftmp.559;
  return D.50275;
}


handle_delegate_ctor (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * target, struct MonoMethod * method, int context_used)
{
  struct MonoInst * D.50284;
  short unsigned int D.50287;
  void * D.50289;
  struct MonoMemPool * D.50290;
  int D.50291;
  struct MonoInst * D.50292;
  int D.50293;
  int D.50294;
  const unsigned char * D.50295;
  int D.50296;
  int D.50297;
  struct MonoBasicBlock * D.50298;
  struct MonoInst * D.50299;
  unsigned int D.50303;
  unsigned int D.50304;
  unsigned int D.50307;
  int D.50308;
  struct MonoInst * D.50309;
  int D.50310;
  int D.50311;
  int D.50315;
  struct MonoInst * D.50316;
  int D.50317;
  int D.50318;
  int D.50319;
  unsigned int D.50325;
  unsigned int D.50329;
  unsigned int D.50330;
  unsigned int D.50333;
  unsigned int D.50334;
  union mono_mutex_t * D.50340;
  _Bool D.50343;
  long int D.50344;
  long int D.50345;
  void * D.50348;
  struct GHashTable * D.50349;
  struct GHashTable * D.50352;
  _Bool D.50357;
  long int D.50358;
  long int D.50359;
  unsigned int D.50362;
  int D.50365;
  struct MonoInst * D.50366;
  guint16 iftmp.560;
  int D.50371;
  int D.50372;
  unsigned int D.50373;
  int D.50374;
  unsigned int D.50379;
  int D.50380;
  int D.50384;
  struct MonoInst * D.50385;
  int D.50386;
  int D.50387;
  int D.50388;
  int D.50394;
  struct MonoInst * D.50395;
  guint16 iftmp.561;
  int D.50400;
  int D.50401;
  unsigned int D.50402;
  int D.50403;
  struct MonoDomain * D.50408;
  unsigned int D.50409;
  int D.50410;
  int D.50414;
  struct MonoInst * D.50415;
  int D.50416;
  int D.50417;
  int D.50418;
  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.50282>; else goto <D.50283>;
  <D.50282>:
  D.50284 = 0B;
  return D.50284;
  <D.50283>:
  D.50287 = target->opcode;
  if (D.50287 != 362) goto <D.50285>; else goto <D.50288>;
  <D.50288>:
  D.50289 = target->data.op[0].p;
  if (D.50289 != 0B) goto <D.50285>; else goto <D.50286>;
  <D.50285>:
  {
    struct MonoInst * inst;

    D.50290 = cfg->mempool;
    inst = mono_mempool_alloc (D.50290, 56);
    inst->data.op[1].const_val = 0;
    D.50291 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50291;
    inst->prev = 0B;
    D.50292 = inst->prev;
    inst->next = D.50292;
    inst->opcode = 374;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50293 = inst->sreg3;
    inst->sreg2 = D.50293;
    D.50294 = inst->sreg2;
    inst->sreg1 = D.50294;
    D.50295 = cfg->ip;
    inst->cil_code = D.50295;
    D.50296 = target->dreg;
    inst->sreg1 = D.50296;
    D.50297 = obj->dreg;
    inst->dreg = D.50297;
    inst->data.op[0].const_val = 16;
    D.50298 = cfg->cbb;
    D.50299 = D.50298->last_ins;
    if (D.50299 != 0B) goto <D.50300>; else goto <D.50301>;
    <D.50300>:
    D.50298 = cfg->cbb;
    D.50299 = D.50298->last_ins;
    D.50299->next = inst;
    D.50298 = cfg->cbb;
    D.50299 = D.50298->last_ins;
    inst->prev = D.50299;
    D.50298 = cfg->cbb;
    D.50298->last_ins = inst;
    goto <D.50302>;
    <D.50301>:
    D.50298 = cfg->cbb;
    D.50298 = cfg->cbb;
    D.50298->last_ins = inst;
    D.50299 = D.50298->last_ins;
    D.50298->code = D.50299;
    <D.50302>:
  }
  D.50303 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.50304 = D.50303 & 268435456;
  if (D.50304 != 0) goto <D.50305>; else goto <D.50306>;
  <D.50305>:
  D.50307 = alloc_preg (cfg);
  dreg = (int) D.50307;
  D.50290 = cfg->mempool;
  ptr = mono_mempool_alloc (D.50290, 56);
  ptr->data.op[1].const_val = 0;
  D.50308 = ptr->data.op[1].const_val;
  ptr->data.op[0].const_val = D.50308;
  ptr->prev = 0B;
  D.50309 = ptr->prev;
  ptr->next = D.50309;
  ptr->opcode = 625;
  ptr->flags = 0;
  ptr->type = 0;
  ptr->dreg = -1;
  ptr->sreg3 = -1;
  D.50310 = ptr->sreg3;
  ptr->sreg2 = D.50310;
  D.50311 = ptr->sreg2;
  ptr->sreg1 = D.50311;
  D.50295 = cfg->ip;
  ptr->cil_code = D.50295;
  ptr->dreg = dreg;
  D.50297 = obj->dreg;
  ptr->sreg1 = D.50297;
  ptr->data.op[1].const_val = 16;
  D.50298 = cfg->cbb;
  D.50299 = D.50298->last_ins;
  if (D.50299 != 0B) goto <D.50312>; else goto <D.50313>;
  <D.50312>:
  D.50298 = cfg->cbb;
  D.50299 = D.50298->last_ins;
  D.50299->next = ptr;
  D.50298 = cfg->cbb;
  D.50299 = D.50298->last_ins;
  ptr->prev = D.50299;
  D.50298 = cfg->cbb;
  D.50298->last_ins = ptr;
  goto <D.50314>;
  <D.50313>:
  D.50298 = cfg->cbb;
  D.50298 = cfg->cbb;
  D.50298->last_ins = ptr;
  D.50299 = D.50298->last_ins;
  D.50298->code = D.50299;
  <D.50314>:
  emit_write_barrier (cfg, ptr, target);
  <D.50306>:
  <D.50286>:
  method_ins = emit_get_rgctx_method (cfg, context_used, method, 5);
  {
    struct MonoInst * inst;

    D.50290 = cfg->mempool;
    inst = mono_mempool_alloc (D.50290, 56);
    inst->data.op[1].const_val = 0;
    D.50315 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50315;
    inst->prev = 0B;
    D.50316 = inst->prev;
    inst->next = D.50316;
    inst->opcode = 374;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50317 = inst->sreg3;
    inst->sreg2 = D.50317;
    D.50318 = inst->sreg2;
    inst->sreg1 = D.50318;
    D.50295 = cfg->ip;
    inst->cil_code = D.50295;
    D.50319 = method_ins->dreg;
    inst->sreg1 = D.50319;
    D.50297 = obj->dreg;
    inst->dreg = D.50297;
    inst->data.op[0].const_val = 20;
    D.50298 = cfg->cbb;
    D.50299 = D.50298->last_ins;
    if (D.50299 != 0B) goto <D.50320>; else goto <D.50321>;
    <D.50320>:
    D.50298 = cfg->cbb;
    D.50299 = D.50298->last_ins;
    D.50299->next = inst;
    D.50298 = cfg->cbb;
    D.50299 = D.50298->last_ins;
    inst->prev = D.50299;
    D.50298 = cfg->cbb;
    D.50298->last_ins = inst;
    goto <D.50322>;
    <D.50321>:
    D.50298 = cfg->cbb;
    D.50298 = cfg->cbb;
    D.50298->last_ins = inst;
    D.50299 = D.50298->last_ins;
    D.50298->code = D.50299;
    <D.50322>:
  }
  D.50303 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.50304 = D.50303 & 268435456;
  if (D.50304 != 0) goto <D.50323>; else goto <D.50324>;
  <D.50323>:
  D.50325 = alloc_preg (cfg);
  dreg = (int) D.50325;
  D.50290 = cfg->mempool;
  ptr = mono_mempool_alloc (D.50290, 56);
  ptr->data.op[1].const_val = 0;
  D.50308 = ptr->data.op[1].const_val;
  ptr->data.op[0].const_val = D.50308;
  ptr->prev = 0B;
  D.50309 = ptr->prev;
  ptr->next = D.50309;
  ptr->opcode = 625;
  ptr->flags = 0;
  ptr->type = 0;
  ptr->dreg = -1;
  ptr->sreg3 = -1;
  D.50310 = ptr->sreg3;
  ptr->sreg2 = D.50310;
  D.50311 = ptr->sreg2;
  ptr->sreg1 = D.50311;
  D.50295 = cfg->ip;
  ptr->cil_code = D.50295;
  ptr->dreg = dreg;
  D.50297 = obj->dreg;
  ptr->sreg1 = D.50297;
  ptr->data.op[1].const_val = 20;
  D.50298 = cfg->cbb;
  D.50299 = D.50298->last_ins;
  if (D.50299 != 0B) goto <D.50326>; else goto <D.50327>;
  <D.50326>:
  D.50298 = cfg->cbb;
  D.50299 = D.50298->last_ins;
  D.50299->next = ptr;
  D.50298 = cfg->cbb;
  D.50299 = D.50298->last_ins;
  ptr->prev = D.50299;
  D.50298 = cfg->cbb;
  D.50298->last_ins = ptr;
  goto <D.50328>;
  <D.50327>:
  D.50298 = cfg->cbb;
  D.50298 = cfg->cbb;
  D.50298->last_ins = ptr;
  D.50299 = D.50298->last_ins;
  D.50298->code = D.50299;
  <D.50328>:
  emit_write_barrier (cfg, ptr, method_ins);
  <D.50324>:
  D.50329 = BIT_FIELD_REF <*method, 32, 160>;
  D.50330 = D.50329 & 512;
  if (D.50330 == 0) goto <D.50331>; else goto <D.50332>;
  <D.50331>:
  D.50333 = cfg->opt;
  D.50334 = D.50333 & 512;
  if (D.50334 == 0) goto <D.50335>; else goto <D.50336>;
  <D.50335>:
  {
    struct MonoInst * code_slot_ins;

    if (context_used != 0) goto <D.50337>; else goto <D.50338>;
    <D.50337>:
    code_slot_ins = emit_get_rgctx_method (cfg, context_used, method, 11);
    goto <D.50339>;
    <D.50338>:
    domain = mono_domain_get ();
    {
      int ret;

      D.50340 = &domain->lock.mutex;
      ret = pthread_mutex_lock (D.50340);
      if (ret != 0) goto <D.50341>; else goto <D.50342>;
      <D.50341>:
      monoeg_g_log (0B, 16, "Bad call to mono_mutex_lock result %d", ret);
      <D.50342>:
      D.50343 = ret != 0;
      D.50344 = (long int) D.50343;
      D.50345 = __builtin_expect (D.50344, 0);
      if (D.50345 != 0) goto <D.50346>; else goto <D.50347>;
      <D.50346>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4431, "ret == 0");
      <D.50347>:
    }
    D.50348 = domain->runtime_info;
    D.50349 = MEM[(struct MonoJitDomainInfo *)D.50348].method_code_hash;
    if (D.50349 == 0B) goto <D.50350>; else goto <D.50351>;
    <D.50350>:
    D.50348 = domain->runtime_info;
    D.50352 = monoeg_g_hash_table_new (0B, 0B);
    MEM[(struct MonoJitDomainInfo *)D.50348].method_code_hash = D.50352;
    <D.50351>:
    D.50348 = domain->runtime_info;
    D.50349 = MEM[(struct MonoJitDomainInfo *)D.50348].method_code_hash;
    code_slot = monoeg_g_hash_table_lookup (D.50349, method);
    if (code_slot == 0B) goto <D.50353>; else goto <D.50354>;
    <D.50353>:
    code_slot = mono_domain_alloc0 (domain, 4);
    D.50348 = domain->runtime_info;
    D.50349 = MEM[(struct MonoJitDomainInfo *)D.50348].method_code_hash;
    monoeg_g_hash_table_insert_replace (D.50349, method, code_slot, 0);
    <D.50354>:
    {
      int ret;

      D.50340 = &domain->lock.mutex;
      ret = pthread_mutex_unlock (D.50340);
      if (ret != 0) goto <D.50355>; else goto <D.50356>;
      <D.50355>:
      monoeg_g_log (0B, 16, "Bad call to mono_mutex_unlock result %d", ret);
      <D.50356>:
      D.50357 = ret != 0;
      D.50358 = (long int) D.50357;
      D.50359 = __builtin_expect (D.50358, 0);
      if (D.50359 != 0) goto <D.50360>; else goto <D.50361>;
      <D.50360>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4439, "ret == 0");
      <D.50361>:
    }
    D.50303 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.50362 = D.50303 & 64;
    if (D.50362 != 0) goto <D.50363>; else goto <D.50364>;
    <D.50363>:
    D.50290 = cfg->mempool;
    code_slot_ins = mono_mempool_alloc (D.50290, 56);
    code_slot_ins->data.op[1].const_val = 0;
    D.50365 = code_slot_ins->data.op[1].const_val;
    code_slot_ins->data.op[0].const_val = D.50365;
    code_slot_ins->prev = 0B;
    D.50366 = code_slot_ins->prev;
    code_slot_ins->next = D.50366;
    D.50303 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.50362 = D.50303 & 64;
    if (D.50362 != 0) goto <D.50368>; else goto <D.50369>;
    <D.50368>:
    iftmp.560 = 732;
    goto <D.50370>;
    <D.50369>:
    iftmp.560 = 362;
    <D.50370>:
    code_slot_ins->opcode = iftmp.560;
    code_slot_ins->flags = 0;
    code_slot_ins->type = 0;
    code_slot_ins->dreg = -1;
    code_slot_ins->sreg3 = -1;
    D.50371 = code_slot_ins->sreg3;
    code_slot_ins->sreg2 = D.50371;
    D.50372 = code_slot_ins->sreg2;
    code_slot_ins->sreg1 = D.50372;
    D.50295 = cfg->ip;
    code_slot_ins->cil_code = D.50295;
    code_slot_ins->data.op[0].p = method;
    code_slot_ins->data.op[1].src = 50B;
    code_slot_ins->type = 3;
    D.50373 = alloc_dreg (cfg, 3);
    D.50374 = (int) D.50373;
    code_slot_ins->dreg = D.50374;
    D.50298 = cfg->cbb;
    D.50299 = D.50298->last_ins;
    if (D.50299 != 0B) goto <D.50375>; else goto <D.50376>;
    <D.50375>:
    D.50298 = cfg->cbb;
    D.50299 = D.50298->last_ins;
    D.50299->next = code_slot_ins;
    D.50298 = cfg->cbb;
    D.50299 = D.50298->last_ins;
    code_slot_ins->prev = D.50299;
    D.50298 = cfg->cbb;
    D.50298->last_ins = code_slot_ins;
    goto <D.50377>;
    <D.50376>:
    D.50298 = cfg->cbb;
    D.50298 = cfg->cbb;
    D.50298->last_ins = code_slot_ins;
    D.50299 = D.50298->last_ins;
    D.50298->code = D.50299;
    <D.50377>:
    goto <D.50378>;
    <D.50364>:
    D.50290 = cfg->mempool;
    code_slot_ins = mono_mempool_alloc (D.50290, 56);
    code_slot_ins->data.op[1].const_val = 0;
    D.50365 = code_slot_ins->data.op[1].const_val;
    code_slot_ins->data.op[0].const_val = D.50365;
    code_slot_ins->prev = 0B;
    D.50366 = code_slot_ins->prev;
    code_slot_ins->next = D.50366;
    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.50371 = code_slot_ins->sreg3;
    code_slot_ins->sreg2 = D.50371;
    D.50372 = code_slot_ins->sreg2;
    code_slot_ins->sreg1 = D.50372;
    D.50295 = cfg->ip;
    code_slot_ins->cil_code = D.50295;
    code_slot_ins->data.op[0].p = code_slot;
    code_slot_ins->type = 3;
    D.50379 = alloc_dreg (cfg, 3);
    D.50380 = (int) D.50379;
    code_slot_ins->dreg = D.50380;
    D.50298 = cfg->cbb;
    D.50299 = D.50298->last_ins;
    if (D.50299 != 0B) goto <D.50381>; else goto <D.50382>;
    <D.50381>:
    D.50298 = cfg->cbb;
    D.50299 = D.50298->last_ins;
    D.50299->next = code_slot_ins;
    D.50298 = cfg->cbb;
    D.50299 = D.50298->last_ins;
    code_slot_ins->prev = D.50299;
    D.50298 = cfg->cbb;
    D.50298->last_ins = code_slot_ins;
    goto <D.50383>;
    <D.50382>:
    D.50298 = cfg->cbb;
    D.50298 = cfg->cbb;
    D.50298->last_ins = code_slot_ins;
    D.50299 = D.50298->last_ins;
    D.50298->code = D.50299;
    <D.50383>:
    <D.50378>:
    <D.50339>:
    {
      struct MonoInst * inst;

      D.50290 = cfg->mempool;
      inst = mono_mempool_alloc (D.50290, 56);
      inst->data.op[1].const_val = 0;
      D.50384 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50384;
      inst->prev = 0B;
      D.50385 = inst->prev;
      inst->next = D.50385;
      inst->opcode = 374;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50386 = inst->sreg3;
      inst->sreg2 = D.50386;
      D.50387 = inst->sreg2;
      inst->sreg1 = D.50387;
      D.50295 = cfg->ip;
      inst->cil_code = D.50295;
      D.50388 = code_slot_ins->dreg;
      inst->sreg1 = D.50388;
      D.50297 = obj->dreg;
      inst->dreg = D.50297;
      inst->data.op[0].const_val = 28;
      D.50298 = cfg->cbb;
      D.50299 = D.50298->last_ins;
      if (D.50299 != 0B) goto <D.50389>; else goto <D.50390>;
      <D.50389>:
      D.50298 = cfg->cbb;
      D.50299 = D.50298->last_ins;
      D.50299->next = inst;
      D.50298 = cfg->cbb;
      D.50299 = D.50298->last_ins;
      inst->prev = D.50299;
      D.50298 = cfg->cbb;
      D.50298->last_ins = inst;
      goto <D.50391>;
      <D.50390>:
      D.50298 = cfg->cbb;
      D.50298 = cfg->cbb;
      D.50298->last_ins = inst;
      D.50299 = D.50298->last_ins;
      D.50298->code = D.50299;
      <D.50391>:
    }
  }
  <D.50336>:
  <D.50332>:
  D.50303 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.50362 = D.50303 & 64;
  if (D.50362 != 0) goto <D.50392>; else goto <D.50393>;
  <D.50392>:
  D.50290 = cfg->mempool;
  tramp_ins = mono_mempool_alloc (D.50290, 56);
  tramp_ins->data.op[1].const_val = 0;
  D.50394 = tramp_ins->data.op[1].const_val;
  tramp_ins->data.op[0].const_val = D.50394;
  tramp_ins->prev = 0B;
  D.50395 = tramp_ins->prev;
  tramp_ins->next = D.50395;
  D.50303 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.50362 = D.50303 & 64;
  if (D.50362 != 0) goto <D.50397>; else goto <D.50398>;
  <D.50397>:
  iftmp.561 = 732;
  goto <D.50399>;
  <D.50398>:
  iftmp.561 = 362;
  <D.50399>:
  tramp_ins->opcode = iftmp.561;
  tramp_ins->flags = 0;
  tramp_ins->type = 0;
  tramp_ins->dreg = -1;
  tramp_ins->sreg3 = -1;
  D.50400 = tramp_ins->sreg3;
  tramp_ins->sreg2 = D.50400;
  D.50401 = tramp_ins->sreg2;
  tramp_ins->sreg1 = D.50401;
  D.50295 = cfg->ip;
  tramp_ins->cil_code = D.50295;
  tramp_ins->data.op[0].p = klass;
  tramp_ins->data.op[1].src = 30B;
  tramp_ins->type = 3;
  D.50402 = alloc_dreg (cfg, 3);
  D.50403 = (int) D.50402;
  tramp_ins->dreg = D.50403;
  D.50298 = cfg->cbb;
  D.50299 = D.50298->last_ins;
  if (D.50299 != 0B) goto <D.50404>; else goto <D.50405>;
  <D.50404>:
  D.50298 = cfg->cbb;
  D.50299 = D.50298->last_ins;
  D.50299->next = tramp_ins;
  D.50298 = cfg->cbb;
  D.50299 = D.50298->last_ins;
  tramp_ins->prev = D.50299;
  D.50298 = cfg->cbb;
  D.50298->last_ins = tramp_ins;
  goto <D.50406>;
  <D.50405>:
  D.50298 = cfg->cbb;
  D.50298 = cfg->cbb;
  D.50298->last_ins = tramp_ins;
  D.50299 = D.50298->last_ins;
  D.50298->code = D.50299;
  <D.50406>:
  goto <D.50407>;
  <D.50393>:
  D.50408 = cfg->domain;
  trampoline = mono_create_delegate_trampoline (D.50408, klass);
  D.50290 = cfg->mempool;
  tramp_ins = mono_mempool_alloc (D.50290, 56);
  tramp_ins->data.op[1].const_val = 0;
  D.50394 = tramp_ins->data.op[1].const_val;
  tramp_ins->data.op[0].const_val = D.50394;
  tramp_ins->prev = 0B;
  D.50395 = tramp_ins->prev;
  tramp_ins->next = D.50395;
  tramp_ins->opcode = 362;
  tramp_ins->flags = 0;
  tramp_ins->type = 0;
  tramp_ins->dreg = -1;
  tramp_ins->sreg3 = -1;
  D.50400 = tramp_ins->sreg3;
  tramp_ins->sreg2 = D.50400;
  D.50401 = tramp_ins->sreg2;
  tramp_ins->sreg1 = D.50401;
  D.50295 = cfg->ip;
  tramp_ins->cil_code = D.50295;
  tramp_ins->data.op[0].p = trampoline;
  tramp_ins->type = 3;
  D.50409 = alloc_dreg (cfg, 3);
  D.50410 = (int) D.50409;
  tramp_ins->dreg = D.50410;
  D.50298 = cfg->cbb;
  D.50299 = D.50298->last_ins;
  if (D.50299 != 0B) goto <D.50411>; else goto <D.50412>;
  <D.50411>:
  D.50298 = cfg->cbb;
  D.50299 = D.50298->last_ins;
  D.50299->next = tramp_ins;
  D.50298 = cfg->cbb;
  D.50299 = D.50298->last_ins;
  tramp_ins->prev = D.50299;
  D.50298 = cfg->cbb;
  D.50298->last_ins = tramp_ins;
  goto <D.50413>;
  <D.50412>:
  D.50298 = cfg->cbb;
  D.50298 = cfg->cbb;
  D.50298->last_ins = tramp_ins;
  D.50299 = D.50298->last_ins;
  D.50298->code = D.50299;
  <D.50413>:
  <D.50407>:
  {
    struct MonoInst * inst;

    D.50290 = cfg->mempool;
    inst = mono_mempool_alloc (D.50290, 56);
    inst->data.op[1].const_val = 0;
    D.50414 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50414;
    inst->prev = 0B;
    D.50415 = inst->prev;
    inst->next = D.50415;
    inst->opcode = 374;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50416 = inst->sreg3;
    inst->sreg2 = D.50416;
    D.50417 = inst->sreg2;
    inst->sreg1 = D.50417;
    D.50295 = cfg->ip;
    inst->cil_code = D.50295;
    D.50418 = tramp_ins->dreg;
    inst->sreg1 = D.50418;
    D.50297 = obj->dreg;
    inst->dreg = D.50297;
    inst->data.op[0].const_val = 12;
    D.50298 = cfg->cbb;
    D.50299 = D.50298->last_ins;
    if (D.50299 != 0B) goto <D.50419>; else goto <D.50420>;
    <D.50419>:
    D.50298 = cfg->cbb;
    D.50299 = D.50298->last_ins;
    D.50299->next = inst;
    D.50298 = cfg->cbb;
    D.50299 = D.50298->last_ins;
    inst->prev = D.50299;
    D.50298 = cfg->cbb;
    D.50298->last_ins = inst;
    goto <D.50421>;
    <D.50420>:
    D.50298 = cfg->cbb;
    D.50298 = cfg->cbb;
    D.50298->last_ins = inst;
    D.50299 = D.50298->last_ins;
    D.50298->code = D.50299;
    <D.50421>:
  }
  D.50284 = obj;
  return D.50284;
}


mini_get_method (struct MonoCompile * cfg, struct MonoMethod * m, guint32 token, struct MonoClass * klass, struct MonoGenericContext * context)
{
  struct MonoGenericSharingContext * D.50427;
  struct MonoClass * D.50430;
  struct MonoType * D.50431;
  int D.50432;
  struct MonoMethod * D.50435;
  struct MonoMethod * method;

  method = mini_get_method_allow_open (m, token, klass, context);
  if (method != 0B) goto <D.50423>; else goto <D.50424>;
  <D.50423>:
  if (cfg != 0B) goto <D.50425>; else goto <D.50426>;
  <D.50425>:
  D.50427 = cfg->generic_sharing_context;
  if (D.50427 == 0B) goto <D.50428>; else goto <D.50429>;
  <D.50428>:
  D.50430 = method->klass;
  D.50431 = &D.50430->byval_arg;
  D.50432 = mono_class_is_open_constructed_type (D.50431);
  if (D.50432 != 0) goto <D.50433>; else goto <D.50434>;
  <D.50433>:
  D.50435 = 0B;
  return D.50435;
  <D.50434>:
  <D.50429>:
  <D.50426>:
  <D.50424>:
  D.50435 = method;
  return D.50435;
}


check_linkdemand (struct MonoCompile * cfg, struct MonoMethod * caller, struct MonoMethod * callee)
{
  struct MonoMethod * D.50437;
  unsigned char D.50440;
  gboolean D.50443;
  struct MonoDomain * D.50444;
  struct MonoMemPool * D.50449;
  void * D.50450;
  struct MonoInst * D.50451;
  int D.50452;
  struct MonoInst * D.50453;
  int D.50454;
  int D.50455;
  const unsigned char * D.50456;
  unsigned int D.50457;
  int D.50458;
  void * D.50459;
  struct MonoInst * D.50460;
  int D.50461;
  struct MonoInst * D.50462;
  guint16 iftmp.562;
  unsigned int D.50464;
  unsigned int D.50465;
  int D.50469;
  int D.50470;
  unsigned int D.50471;
  int D.50472;
  struct MonoMethod * D.50473;
  unsigned int D.50475;
  guint32 result;

  D.50437 = cfg->method;
  if (D.50437 != caller) goto <D.50438>; else goto <D.50439>;
  <D.50438>:
  D.50440 = mono_method_has_declsec (callee);
  if (D.50440 != 0) goto <D.50441>; else goto <D.50442>;
  <D.50441>:
  D.50443 = 1;
  return D.50443;
  <D.50442>:
  <D.50439>:
  D.50444 = cfg->domain;
  result = mono_declsec_linkdemand (D.50444, caller, callee);
  if (result == 0) goto <D.50445>; else goto <D.50446>;
  <D.50445>:
  D.50443 = 0;
  return D.50443;
  <D.50446>:
  if (result == 4) goto <D.50447>; else goto <D.50448>;
  <D.50447>:
  {
    struct MonoSecurityManager * secman;
    struct MonoInst * args[2];

    try
      {
        secman = mono_security_manager_get_methods ();
        D.50449 = cfg->mempool;
        D.50450 = mono_mempool_alloc (D.50449, 56);
        args[0] = D.50450;
        D.50451 = args[0];
        D.50451 = args[0];
        D.50451->data.op[1].const_val = 0;
        D.50452 = D.50451->data.op[1].const_val;
        D.50451->data.op[0].const_val = D.50452;
        D.50451 = args[0];
        D.50451 = args[0];
        D.50451->prev = 0B;
        D.50453 = D.50451->prev;
        D.50451->next = D.50453;
        D.50451 = args[0];
        D.50451->opcode = 362;
        D.50451 = args[0];
        D.50451->flags = 0;
        D.50451 = args[0];
        D.50451->type = 0;
        D.50451 = args[0];
        D.50451->dreg = -1;
        D.50451 = args[0];
        D.50451 = args[0];
        D.50451 = args[0];
        D.50451->sreg3 = -1;
        D.50454 = D.50451->sreg3;
        D.50451->sreg2 = D.50454;
        D.50455 = D.50451->sreg2;
        D.50451->sreg1 = D.50455;
        D.50451 = args[0];
        D.50456 = cfg->ip;
        D.50451->cil_code = D.50456;
        D.50451 = args[0];
        D.50451->data.op[0].const_val = 4;
        D.50451 = args[0];
        D.50451->type = 1;
        D.50451 = args[0];
        D.50457 = alloc_dreg (cfg, 1);
        D.50458 = (int) D.50457;
        D.50451->dreg = D.50458;
        D.50449 = cfg->mempool;
        D.50459 = mono_mempool_alloc (D.50449, 56);
        args[1] = D.50459;
        D.50460 = args[1];
        D.50460 = args[1];
        D.50460->data.op[1].const_val = 0;
        D.50461 = D.50460->data.op[1].const_val;
        D.50460->data.op[0].const_val = D.50461;
        D.50460 = args[1];
        D.50460 = args[1];
        D.50460->prev = 0B;
        D.50462 = D.50460->prev;
        D.50460->next = D.50462;
        D.50460 = args[1];
        D.50464 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.50465 = D.50464 & 64;
        if (D.50465 != 0) goto <D.50466>; else goto <D.50467>;
        <D.50466>:
        iftmp.562 = 732;
        goto <D.50468>;
        <D.50467>:
        iftmp.562 = 362;
        <D.50468>:
        D.50460->opcode = iftmp.562;
        D.50460 = args[1];
        D.50460->flags = 0;
        D.50460 = args[1];
        D.50460->type = 0;
        D.50460 = args[1];
        D.50460->dreg = -1;
        D.50460 = args[1];
        D.50460 = args[1];
        D.50460 = args[1];
        D.50460->sreg3 = -1;
        D.50469 = D.50460->sreg3;
        D.50460->sreg2 = D.50469;
        D.50470 = D.50460->sreg2;
        D.50460->sreg1 = D.50470;
        D.50460 = args[1];
        D.50456 = cfg->ip;
        D.50460->cil_code = D.50456;
        D.50460 = args[1];
        D.50460->data.op[0].p = caller;
        D.50460 = args[1];
        D.50460->data.op[1].src = 6B;
        D.50460 = args[1];
        D.50460->type = 3;
        D.50460 = args[1];
        D.50471 = alloc_dreg (cfg, 3);
        D.50472 = (int) D.50471;
        D.50460->dreg = D.50472;
        D.50473 = secman->linkdemandsecurityexception;
        mono_emit_method_call (cfg, D.50473, &args, 0B);
      }
    finally
      {
        args = {CLOBBER};
      }
  }
  goto <D.50474>;
  <D.50448>:
  D.50475 = cfg->exception_type;
  if (D.50475 == 0) goto <D.50476>; else goto <D.50477>;
  <D.50476>:
  mono_cfg_set_exception (cfg, 1);
  cfg->exception_data = result;
  D.50443 = 1;
  return D.50443;
  <D.50477>:
  <D.50474>:
  D.50443 = 0;
  return D.50443;
}


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.50479;
  struct MonoException * ex;

  D.50479 = get_original_method (caller);
  ex = mono_security_core_clr_is_call_allowed (D.50479, callee);
  if (ex != 0B) goto <D.50480>; else goto <D.50481>;
  <D.50480>:
  emit_throw_exception (cfg, ex);
  <D.50481>:
}


emit_optimized_ldloca_ir (struct MonoCompile * cfg, unsigned char * ip, unsigned char * end, int size)
{
  unsigned char * D.50484;
  unsigned char D.50485;
  const unsigned char * D.50487;
  short unsigned int D.50488;
  unsigned char * D.50489;
  unsigned char D.50492;
  struct MonoBasicBlock * D.50497;
  const guint8 * D.50498;
  int D.50499;
  unsigned int D.50502;
  struct MonoMethod * D.50503;
  unsigned int token.563;
  struct MonoGenericContext * D.50505;
  unsigned char D.50509;
  struct MonoDebugOptions * D.50510;
  int D.50511;
  struct MonoType * D.50513;
  unsigned char * D.50514;
  int local;
  int token;
  struct MonoClass * klass;
  struct MonoType * type;
  void load_error = <<< error >>>;

  if (size == 1) goto <D.50482>; else goto <D.50483>;
  <D.50482>:
  D.50484 = ip + 1;
  D.50485 = *D.50484;
  local = (int) D.50485;
  ip = ip + 2;
  goto <D.50486>;
  <D.50483>:
  D.50487 = ip + 2;
  D.50488 = mono_read16 (D.50487);
  local = (int) D.50488;
  ip = ip + 4;
  <D.50486>:
  D.50489 = ip + 6;
  if (D.50489 < end) goto <D.50490>; else goto <D.50491>;
  <D.50490>:
  D.50492 = *ip;
  if (D.50492 == 254) goto <D.50493>; else goto <D.50494>;
  <D.50493>:
  D.50484 = ip + 1;
  D.50485 = *D.50484;
  if (D.50485 == 21) goto <D.50495>; else goto <D.50496>;
  <D.50495>:
  D.50497 = cfg->cbb;
  D.50498 = ip + 1;
  D.50499 = ip_in_bb (cfg, D.50497, D.50498);
  if (D.50499 != 0) goto <D.50500>; else goto <D.50501>;
  <D.50500>:
  D.50487 = ip + 2;
  D.50502 = mono_read32 (D.50487);
  token = (int) D.50502;
  D.50503 = cfg->current_method;
  token.563 = (unsigned int) token;
  D.50505 = cfg->generic_context;
  klass = mini_get_class (D.50503, token.563, D.50505);
  if (klass == 0B) goto <D.50506>; else goto <D.50508>;
  <D.50508>:
  D.50509 = klass->exception_type;
  if (D.50509 != 0) goto <D.50506>; else goto <D.50507>;
  <D.50506>:
  cfg->exception_ptr = klass;
  D.50510 = mini_get_debug_options ();
  D.50511 = D.50510->break_on_unverified;
  if (D.50511 != 0) goto <D.50512>; else goto load_error;
  <D.50512>:
  raise (5);
  <D.50507>:
  D.50513 = &klass->byval_arg;
  type = mini_replace_type (D.50513);
  emit_init_local (cfg, local, type);
  D.50514 = ip + 6;
  return D.50514;
  <D.50501>:
  <D.50496>:
  <D.50494>:
  <D.50491>:
  load_error:
  D.50514 = 0B;
  return D.50514;
}


target_type_is_incompatible (struct MonoCompile * cfg, struct MonoType * target, struct MonoInst * arg)
{
  unsigned int D.50516;
  unsigned int D.50517;
  unsigned char D.50520;
  int D.50523;
  struct MonoClass * D.50524;
  struct MonoClass * D.50525;
  _Bool D.50526;
  unsigned char D.50529;
  int D.50530;
  int D.50561;
  struct MonoGenericSharingContext * D.50570;
  _Bool D.50571;
  long int D.50572;
  long int D.50573;
  int D.50576;
  struct MonoType * simple_type;
  struct MonoClass * klass;

  target = mini_replace_type (target);
  D.50516 = BIT_FIELD_REF <*target, 32, 32>;
  D.50517 = D.50516 & 1073741824;
  if (D.50517 != 0) goto <D.50518>; else goto <D.50519>;
  <D.50518>:
  D.50520 = arg->type;
  if (D.50520 == 5) goto <D.50521>; else goto <D.50522>;
  <D.50521>:
  D.50524 = arg->klass;
  D.50525 = mono_class_from_mono_type (target);
  D.50526 = D.50524 != D.50525;
  D.50523 = (int) D.50526;
  return D.50523;
  <D.50522>:
  D.50520 = arg->type;
  if (D.50520 == 3) goto <D.50527>; else goto <D.50528>;
  <D.50527>:
  D.50523 = 0;
  return D.50523;
  <D.50528>:
  D.50523 = 1;
  return D.50523;
  <D.50519>:
  simple_type = mono_type_get_underlying_type (target);
  D.50529 = simple_type->type;
  D.50530 = (int) D.50529;
  switch (D.50530) <default: <D.24818>, case 1: <D.24791>, case 2: <D.24794>, case 3: <D.24797>, case 4: <D.24792>, case 5: <D.24793>, case 6: <D.24795>, case 7: <D.24796>, case 8: <D.24798>, case 9: <D.24799>, case 10: <D.24809>, case 11: <D.24810>, case 12: <D.24811>, case 13: <D.24812>, case 14: <D.24805>, case 15: <D.24800>, case 17: <D.24813>, case 18: <D.24804>, case 19: <D.24816>, case 20: <D.24808>, case 21: <D.24815>, case 22: <D.24814>, case 24: <D.24801>, case 25: <D.24802>, case 27: <D.24803>, case 28: <D.24806>, case 29: <D.24807>, case 30: <D.24817>>
  <D.24791>:
  D.50523 = 1;
  return D.50523;
  <D.24792>:
  <D.24793>:
  <D.24794>:
  <D.24795>:
  <D.24796>:
  <D.24797>:
  <D.24798>:
  <D.24799>:
  D.50520 = arg->type;
  if (D.50520 != 1) goto <D.50531>; else goto <D.50532>;
  <D.50531>:
  D.50520 = arg->type;
  if (D.50520 != 3) goto <D.50533>; else goto <D.50534>;
  <D.50533>:
  D.50523 = 1;
  return D.50523;
  <D.50534>:
  <D.50532>:
  D.50523 = 0;
  return D.50523;
  <D.24800>:
  D.50520 = arg->type;
  if (D.50520 != 1) goto <D.50535>; else goto <D.50536>;
  <D.50535>:
  D.50520 = arg->type;
  if (D.50520 != 3) goto <D.50537>; else goto <D.50538>;
  <D.50537>:
  D.50520 = arg->type;
  if (D.50520 != 5) goto <D.50539>; else goto <D.50540>;
  <D.50539>:
  D.50523 = 1;
  return D.50523;
  <D.50540>:
  <D.50538>:
  <D.50536>:
  D.50523 = 0;
  return D.50523;
  <D.24801>:
  <D.24802>:
  <D.24803>:
  D.50520 = arg->type;
  if (D.50520 != 1) goto <D.50541>; else goto <D.50542>;
  <D.50541>:
  D.50520 = arg->type;
  if (D.50520 != 3) goto <D.50543>; else goto <D.50544>;
  <D.50543>:
  D.50520 = arg->type;
  if (D.50520 != 5) goto <D.50545>; else goto <D.50546>;
  <D.50545>:
  D.50523 = 1;
  return D.50523;
  <D.50546>:
  <D.50544>:
  <D.50542>:
  D.50523 = 0;
  return D.50523;
  <D.24804>:
  <D.24805>:
  <D.24806>:
  <D.24807>:
  <D.24808>:
  D.50520 = arg->type;
  if (D.50520 != 6) goto <D.50547>; else goto <D.50548>;
  <D.50547>:
  D.50523 = 1;
  return D.50523;
  <D.50548>:
  D.50523 = 0;
  return D.50523;
  <D.24809>:
  <D.24810>:
  D.50520 = arg->type;
  if (D.50520 != 2) goto <D.50549>; else goto <D.50550>;
  <D.50549>:
  D.50523 = 1;
  return D.50523;
  <D.50550>:
  D.50523 = 0;
  return D.50523;
  <D.24811>:
  <D.24812>:
  D.50520 = arg->type;
  if (D.50520 != 4) goto <D.50551>; else goto <D.50552>;
  <D.50551>:
  D.50523 = 1;
  return D.50523;
  <D.50552>:
  D.50523 = 0;
  return D.50523;
  <D.24813>:
  D.50520 = arg->type;
  if (D.50520 != 7) goto <D.50553>; else goto <D.50554>;
  <D.50553>:
  D.50523 = 1;
  return D.50523;
  <D.50554>:
  klass = mono_class_from_mono_type (simple_type);
  D.50524 = arg->klass;
  if (D.50524 != klass) goto <D.50555>; else goto <D.50556>;
  <D.50555>:
  D.50523 = 1;
  return D.50523;
  <D.50556>:
  D.50523 = 0;
  return D.50523;
  <D.24814>:
  D.50520 = arg->type;
  if (D.50520 != 7) goto <D.50557>; else goto <D.50558>;
  <D.50557>:
  D.50523 = 1;
  return D.50523;
  <D.50558>:
  klass = mono_class_from_mono_type (simple_type);
  D.50524 = arg->klass;
  if (D.50524 != klass) goto <D.50559>; else goto <D.50560>;
  <D.50559>:
  D.50523 = 1;
  return D.50523;
  <D.50560>:
  D.50523 = 0;
  return D.50523;
  <D.24815>:
  D.50561 = mono_type_generic_inst_is_valuetype (simple_type);
  if (D.50561 != 0) goto <D.50562>; else goto <D.50563>;
  <D.50562>:
  D.50520 = arg->type;
  if (D.50520 != 7) goto <D.50564>; else goto <D.50565>;
  <D.50564>:
  D.50523 = 1;
  return D.50523;
  <D.50565>:
  klass = mono_class_from_mono_type (simple_type);
  D.50524 = arg->klass;
  if (D.50524 != klass) goto <D.50566>; else goto <D.50567>;
  <D.50566>:
  D.50523 = 1;
  return D.50523;
  <D.50567>:
  D.50523 = 0;
  return D.50523;
  <D.50563>:
  D.50520 = arg->type;
  if (D.50520 != 6) goto <D.50568>; else goto <D.50569>;
  <D.50568>:
  D.50523 = 1;
  return D.50523;
  <D.50569>:
  D.50523 = 0;
  return D.50523;
  <D.24816>:
  <D.24817>:
  D.50570 = cfg->generic_sharing_context;
  D.50571 = D.50570 == 0B;
  D.50572 = (long int) D.50571;
  D.50573 = __builtin_expect (D.50572, 0);
  if (D.50573 != 0) goto <D.50574>; else goto <D.50575>;
  <D.50574>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2160, "cfg->generic_sharing_context");
  <D.50575>:
  D.50576 = mini_type_var_is_vt (cfg, simple_type);
  if (D.50576 != 0) goto <D.50577>; else goto <D.50578>;
  <D.50577>:
  D.50520 = arg->type;
  if (D.50520 != 7) goto <D.50579>; else goto <D.50580>;
  <D.50579>:
  D.50523 = 1;
  return D.50523;
  <D.50580>:
  goto <D.50581>;
  <D.50578>:
  D.50520 = arg->type;
  if (D.50520 != 6) goto <D.50582>; else goto <D.50583>;
  <D.50582>:
  D.50523 = 1;
  return D.50523;
  <D.50583>:
  <D.50581>:
  D.50523 = 0;
  return D.50523;
  <D.24818>:
  D.50529 = simple_type->type;
  D.50530 = (int) D.50529;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in target_type_is_incompatible", D.50530);
  <D.24819>:
  goto <D.24819>;
  D.50523 = 1;
  return D.50523;
}


emit_stloc_ir (struct MonoCompile * cfg, struct MonoInst * * sp, struct MonoMethodHeader * header, int n)
{
  struct MonoType * D.50585;
  struct MonoBasicBlock * D.50589;
  struct MonoInst * D.50590;
  struct MonoInst * D.50591;
  short unsigned int D.50593;
  short unsigned int D.50594;
  struct MonoInst * * D.50596;
  unsigned int n.564;
  unsigned int D.50598;
  struct MonoInst * * D.50599;
  struct MonoInst * D.50600;
  int D.50601;
  struct MonoMemPool * D.50602;
  int D.50603;
  struct MonoInst * D.50604;
  int D.50605;
  int D.50606;
  const unsigned char * D.50607;
  struct MonoType * D.50608;
  unsigned int D.50609;
  short unsigned int D.50610;
  struct MonoClass * D.50611;
  int D.50612;
  short unsigned int D.50613;
  struct MonoClass * D.50616;
  struct MonoInst * ins;
  guint32 opcode;

  D.50585 = header->locals[n];
  opcode = mono_type_to_regmove (cfg, D.50585);
  if (opcode == 424) goto <D.50588>; else goto <D.50586>;
  <D.50588>:
  D.50589 = cfg->cbb;
  D.50590 = D.50589->last_ins;
  D.50591 = *sp;
  if (D.50590 == D.50591) goto <D.50592>; else goto <D.50586>;
  <D.50592>:
  D.50591 = *sp;
  D.50593 = D.50591->opcode;
  D.50594 = D.50593 + 65174;
  if (D.50594 <= 1) goto <D.50595>; else goto <D.50586>;
  <D.50595>:
  D.50591 = *sp;
  D.50596 = cfg->locals;
  n.564 = (unsigned int) n;
  D.50598 = n.564 * 4;
  D.50599 = D.50596 + D.50598;
  D.50600 = *D.50599;
  D.50601 = D.50600->dreg;
  D.50591->dreg = D.50601;
  goto <D.50587>;
  <D.50586>:
  D.50602 = cfg->mempool;
  ins = mono_mempool_alloc (D.50602, 56);
  ins->data.op[1].const_val = 0;
  D.50603 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.50603;
  ins->prev = 0B;
  D.50604 = ins->prev;
  ins->next = D.50604;
  ins->opcode = 424;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.50605 = ins->sreg3;
  ins->sreg2 = D.50605;
  D.50606 = ins->sreg2;
  ins->sreg1 = D.50606;
  D.50607 = cfg->ip;
  ins->cil_code = D.50607;
  D.50596 = cfg->locals;
  n.564 = (unsigned int) n;
  D.50598 = n.564 * 4;
  D.50599 = D.50596 + D.50598;
  D.50600 = *D.50599;
  D.50608 = D.50600->data.op[1].vtype;
  D.50609 = mono_type_to_regmove (cfg, D.50608);
  D.50610 = (short unsigned int) D.50609;
  ins->opcode = D.50610;
  D.50596 = cfg->locals;
  n.564 = (unsigned int) n;
  D.50598 = n.564 * 4;
  D.50599 = D.50596 + D.50598;
  D.50600 = *D.50599;
  D.50611 = D.50600->klass;
  ins->klass = D.50611;
  D.50591 = *sp;
  D.50612 = D.50591->dreg;
  ins->sreg1 = D.50612;
  D.50596 = cfg->locals;
  n.564 = (unsigned int) n;
  D.50598 = n.564 * 4;
  D.50599 = D.50596 + D.50598;
  D.50600 = *D.50599;
  D.50601 = D.50600->dreg;
  ins->dreg = D.50601;
  D.50613 = ins->opcode;
  if (D.50613 == 427) goto <D.50614>; else goto <D.50615>;
  <D.50614>:
  D.50596 = cfg->locals;
  n.564 = (unsigned int) n;
  D.50598 = n.564 * 4;
  D.50599 = D.50596 + D.50598;
  D.50600 = *D.50599;
  D.50608 = D.50600->data.op[1].vtype;
  D.50616 = mono_class_from_mono_type (D.50608);
  ins->klass = D.50616;
  <D.50615>:
  D.50589 = cfg->cbb;
  D.50590 = D.50589->last_ins;
  if (D.50590 != 0B) goto <D.50617>; else goto <D.50618>;
  <D.50617>:
  D.50589 = cfg->cbb;
  D.50590 = D.50589->last_ins;
  D.50590->next = ins;
  D.50589 = cfg->cbb;
  D.50590 = D.50589->last_ins;
  ins->prev = D.50590;
  D.50589 = cfg->cbb;
  D.50589->last_ins = ins;
  goto <D.50619>;
  <D.50618>:
  D.50589 = cfg->cbb;
  D.50589 = cfg->cbb;
  D.50589->last_ins = ins;
  D.50590 = D.50589->last_ins;
  D.50589->code = D.50590;
  <D.50619>:
  <D.50587>:
}


generic_class_is_reference_type (struct MonoCompile * cfg, struct MonoClass * klass)
{
  gboolean D.50620;
  struct MonoType * D.50621;

  D.50621 = &klass->byval_arg;
  D.50620 = mini_type_is_reference (cfg, D.50621);
  return D.50620;
}


mini_get_class (struct MonoMethod * method, guint32 token, struct MonoGenericContext * context)
{
  unsigned int D.50623;
  unsigned int D.50624;
  struct MonoClass * D.50630;
  struct MonoImage * D.50631;
  struct MonoClass * D.50634;
  struct MonoClass * klass;

  D.50623 = BIT_FIELD_REF <*method, 32, 160>;
  D.50624 = D.50623 & 124;
  if (D.50624 != 0) goto <D.50625>; else goto <D.50626>;
  <D.50625>:
  klass = mono_method_get_wrapper_data (method, token);
  if (context != 0B) goto <D.50627>; else goto <D.50628>;
  <D.50627>:
  klass = mono_class_inflate_generic_class (klass, context);
  <D.50628>:
  goto <D.50629>;
  <D.50626>:
  D.50630 = method->klass;
  D.50631 = D.50630->image;
  klass = mono_class_get_full (D.50631, token, context);
  <D.50629>:
  if (klass != 0B) goto <D.50632>; else goto <D.50633>;
  <D.50632>:
  mono_class_init (klass);
  <D.50633>:
  D.50634 = klass;
  return D.50634;
}


handle_gsharedvt_ldaddr (struct MonoCompile * cfg)
{
  struct MonoMemPool * D.50636;
  int D.50637;
  struct MonoInst * D.50638;
  int D.50639;
  int D.50640;
  const unsigned char * D.50641;
  struct MonoInst * D.50642;
  int D.50643;
  struct MonoBasicBlock * D.50644;
  struct MonoInst * D.50645;
  struct MonoInst * D.50649;
  int D.50650;
  struct MonoInst * use;

  D.50636 = cfg->mempool;
  use = mono_mempool_alloc (D.50636, 56);
  use->data.op[1].const_val = 0;
  D.50637 = use->data.op[1].const_val;
  use->data.op[0].const_val = D.50637;
  use->prev = 0B;
  D.50638 = use->prev;
  use->next = D.50638;
  use->opcode = 796;
  use->flags = 0;
  use->type = 0;
  use->dreg = -1;
  use->sreg3 = -1;
  D.50639 = use->sreg3;
  use->sreg2 = D.50639;
  D.50640 = use->sreg2;
  use->sreg1 = D.50640;
  D.50641 = cfg->ip;
  use->cil_code = D.50641;
  D.50642 = cfg->gsharedvt_info_var;
  D.50643 = D.50642->dreg;
  use->sreg1 = D.50643;
  D.50644 = cfg->cbb;
  D.50645 = D.50644->last_ins;
  if (D.50645 != 0B) goto <D.50646>; else goto <D.50647>;
  <D.50646>:
  D.50644 = cfg->cbb;
  D.50645 = D.50644->last_ins;
  D.50645->next = use;
  D.50644 = cfg->cbb;
  D.50645 = D.50644->last_ins;
  use->prev = D.50645;
  D.50644 = cfg->cbb;
  D.50644->last_ins = use;
  goto <D.50648>;
  <D.50647>:
  D.50644 = cfg->cbb;
  D.50644 = cfg->cbb;
  D.50644->last_ins = use;
  D.50645 = D.50644->last_ins;
  D.50644->code = D.50645;
  <D.50648>:
  D.50636 = cfg->mempool;
  use = mono_mempool_alloc (D.50636, 56);
  use->data.op[1].const_val = 0;
  D.50637 = use->data.op[1].const_val;
  use->data.op[0].const_val = D.50637;
  use->prev = 0B;
  D.50638 = use->prev;
  use->next = D.50638;
  use->opcode = 796;
  use->flags = 0;
  use->type = 0;
  use->dreg = -1;
  use->sreg3 = -1;
  D.50639 = use->sreg3;
  use->sreg2 = D.50639;
  D.50640 = use->sreg2;
  use->sreg1 = D.50640;
  D.50641 = cfg->ip;
  use->cil_code = D.50641;
  D.50649 = cfg->gsharedvt_locals_var;
  D.50650 = D.50649->dreg;
  use->sreg1 = D.50650;
  D.50644 = cfg->cbb;
  D.50645 = D.50644->last_ins;
  if (D.50645 != 0B) goto <D.50651>; else goto <D.50652>;
  <D.50651>:
  D.50644 = cfg->cbb;
  D.50645 = D.50644->last_ins;
  D.50645->next = use;
  D.50644 = cfg->cbb;
  D.50645 = D.50644->last_ins;
  use->prev = D.50645;
  D.50644 = cfg->cbb;
  D.50644->last_ins = use;
  goto <D.50653>;
  <D.50652>:
  D.50644 = cfg->cbb;
  D.50644 = cfg->cbb;
  D.50644->last_ins = use;
  D.50645 = D.50644->last_ins;
  D.50644->code = D.50645;
  <D.50653>:
}


mono_emit_load_got_addr (struct MonoCompile * cfg)
{
  struct MonoInst * D.50656;
  unsigned int D.50658;
  unsigned int D.50659;
  struct MonoMemPool * D.50660;
  int D.50661;
  struct MonoInst * D.50662;
  int D.50663;
  int D.50664;
  const unsigned char * D.50665;
  struct MonoMethodHeader * D.50666;
  const unsigned char * D.50667;
  int D.50668;
  struct MonoBasicBlock * D.50669;
  struct MonoInst * D.50670;
  struct MonoInst * D.50674;
  int D.50678;
  struct MonoInst * D.50679;
  int D.50680;
  int D.50681;
  struct MonoBasicBlock * D.50682;
  struct MonoInst * D.50683;
  struct MonoInst * getaddr;
  struct MonoInst * dummy_use;

  D.50656 = cfg->got_var;
  if (D.50656 == 0B) goto <D.50654>; else goto <D.50657>;
  <D.50657>:
  D.50658 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.50659 = D.50658 & 512;
  if (D.50659 != 0) goto <D.50654>; else goto <D.50655>;
  <D.50654>:
  return;
  <D.50655>:
  D.50660 = cfg->mempool;
  getaddr = mono_mempool_alloc (D.50660, 56);
  getaddr->data.op[1].const_val = 0;
  D.50661 = getaddr->data.op[1].const_val;
  getaddr->data.op[0].const_val = D.50661;
  getaddr->prev = 0B;
  D.50662 = getaddr->prev;
  getaddr->next = D.50662;
  getaddr->opcode = 795;
  getaddr->flags = 0;
  getaddr->type = 0;
  getaddr->dreg = -1;
  getaddr->sreg3 = -1;
  D.50663 = getaddr->sreg3;
  getaddr->sreg2 = D.50663;
  D.50664 = getaddr->sreg2;
  getaddr->sreg1 = D.50664;
  D.50665 = cfg->ip;
  getaddr->cil_code = D.50665;
  D.50666 = cfg->header;
  D.50667 = D.50666->code;
  getaddr->cil_code = D.50667;
  D.50656 = cfg->got_var;
  D.50668 = D.50656->dreg;
  getaddr->dreg = D.50668;
  D.50669 = cfg->bb_entry;
  D.50670 = D.50669->code;
  if (D.50670 != 0B) goto <D.50671>; else goto <D.50672>;
  <D.50671>:
  D.50669 = cfg->bb_entry;
  D.50670 = D.50669->code;
  getaddr->next = D.50670;
  D.50669 = cfg->bb_entry;
  D.50669->code = getaddr;
  goto <D.50673>;
  <D.50672>:
  D.50669 = cfg->bb_entry;
  D.50674 = D.50669->last_ins;
  if (D.50674 != 0B) goto <D.50675>; else goto <D.50676>;
  <D.50675>:
  D.50669 = cfg->bb_entry;
  D.50674 = D.50669->last_ins;
  D.50674->next = getaddr;
  D.50669 = cfg->bb_entry;
  D.50674 = D.50669->last_ins;
  getaddr->prev = D.50674;
  D.50669 = cfg->bb_entry;
  D.50669->last_ins = getaddr;
  goto <D.50677>;
  <D.50676>:
  D.50669 = cfg->bb_entry;
  D.50669 = cfg->bb_entry;
  D.50669->last_ins = getaddr;
  D.50674 = D.50669->last_ins;
  D.50669->code = D.50674;
  <D.50677>:
  <D.50673>:
  cfg->got_var_allocated = 1;
  D.50660 = cfg->mempool;
  dummy_use = mono_mempool_alloc (D.50660, 56);
  dummy_use->data.op[1].const_val = 0;
  D.50678 = dummy_use->data.op[1].const_val;
  dummy_use->data.op[0].const_val = D.50678;
  dummy_use->prev = 0B;
  D.50679 = dummy_use->prev;
  dummy_use->next = D.50679;
  dummy_use->opcode = 796;
  dummy_use->flags = 0;
  dummy_use->type = 0;
  dummy_use->dreg = -1;
  dummy_use->sreg3 = -1;
  D.50680 = dummy_use->sreg3;
  dummy_use->sreg2 = D.50680;
  D.50681 = dummy_use->sreg2;
  dummy_use->sreg1 = D.50681;
  D.50665 = cfg->ip;
  dummy_use->cil_code = D.50665;
  D.50656 = cfg->got_var;
  D.50668 = D.50656->dreg;
  dummy_use->sreg1 = D.50668;
  D.50682 = cfg->bb_exit;
  D.50683 = D.50682->last_ins;
  if (D.50683 != 0B) goto <D.50684>; else goto <D.50685>;
  <D.50684>:
  D.50682 = cfg->bb_exit;
  D.50683 = D.50682->last_ins;
  D.50683->next = dummy_use;
  D.50682 = cfg->bb_exit;
  D.50683 = D.50682->last_ins;
  dummy_use->prev = D.50683;
  D.50682 = cfg->bb_exit;
  D.50682->last_ins = dummy_use;
  goto <D.50686>;
  <D.50685>:
  D.50682 = cfg->bb_exit;
  D.50682 = cfg->bb_exit;
  D.50682->last_ins = dummy_use;
  D.50683 = D.50682->last_ins;
  D.50682->code = D.50683;
  <D.50686>:
}


emit_init_local (struct MonoCompile * cfg, int local, struct MonoType * type)
{
  struct MonoInst * * D.50688;
  unsigned int local.565;
  unsigned int D.50690;
  struct MonoInst * * D.50691;
  unsigned char D.50694;
  <unnamed type> D.50695;
  unsigned int D.50696;
  struct MonoMemPool * D.50697;
  int D.50698;
  struct MonoInst * D.50699;
  int D.50700;
  int D.50701;
  const unsigned char * D.50702;
  struct MonoInst * D.50703;
  struct MonoType * D.50704;
  unsigned int D.50705;
  short unsigned int D.50706;
  struct MonoClass * D.50707;
  struct MonoBasicBlock * D.50708;
  struct MonoInst * D.50709;
  int D.50710;
  int D.50711;
  short unsigned int D.50712;
  struct MonoClass * D.50715;
  int D.50720;
  struct MonoInst * var;

  D.50688 = cfg->locals;
  local.565 = (unsigned int) local;
  D.50690 = local.565 * 4;
  D.50691 = D.50688 + D.50690;
  var = *D.50691;
  if (0 != 0) goto <D.50692>; else goto <D.50693>;
  <D.50692>:
  {
    struct MonoInst * store;
    int reg;

    D.50694 = var->type;
    D.50695 = (<unnamed type>) D.50694;
    D.50696 = alloc_dreg (cfg, D.50695);
    reg = (int) D.50696;
    emit_init_rvar (cfg, reg, type);
    D.50697 = cfg->mempool;
    store = mono_mempool_alloc (D.50697, 56);
    store->data.op[1].const_val = 0;
    D.50698 = store->data.op[1].const_val;
    store->data.op[0].const_val = D.50698;
    store->prev = 0B;
    D.50699 = store->prev;
    store->next = D.50699;
    store->opcode = 424;
    store->flags = 0;
    store->type = 0;
    store->dreg = -1;
    store->sreg3 = -1;
    D.50700 = store->sreg3;
    store->sreg2 = D.50700;
    D.50701 = store->sreg2;
    store->sreg1 = D.50701;
    D.50702 = cfg->ip;
    store->cil_code = D.50702;
    D.50688 = cfg->locals;
    local.565 = (unsigned int) local;
    D.50690 = local.565 * 4;
    D.50691 = D.50688 + D.50690;
    D.50703 = *D.50691;
    D.50704 = D.50703->data.op[1].vtype;
    D.50705 = mono_type_to_regmove (cfg, D.50704);
    D.50706 = (short unsigned int) D.50705;
    store->opcode = D.50706;
    D.50688 = cfg->locals;
    local.565 = (unsigned int) local;
    D.50690 = local.565 * 4;
    D.50691 = D.50688 + D.50690;
    D.50703 = *D.50691;
    D.50707 = D.50703->klass;
    store->klass = D.50707;
    D.50708 = cfg->cbb;
    D.50709 = D.50708->last_ins;
    D.50710 = D.50709->dreg;
    store->sreg1 = D.50710;
    D.50688 = cfg->locals;
    local.565 = (unsigned int) local;
    D.50690 = local.565 * 4;
    D.50691 = D.50688 + D.50690;
    D.50703 = *D.50691;
    D.50711 = D.50703->dreg;
    store->dreg = D.50711;
    D.50712 = store->opcode;
    if (D.50712 == 427) goto <D.50713>; else goto <D.50714>;
    <D.50713>:
    D.50688 = cfg->locals;
    local.565 = (unsigned int) local;
    D.50690 = local.565 * 4;
    D.50691 = D.50688 + D.50690;
    D.50703 = *D.50691;
    D.50704 = D.50703->data.op[1].vtype;
    D.50715 = mono_class_from_mono_type (D.50704);
    store->klass = D.50715;
    <D.50714>:
    D.50708 = cfg->cbb;
    D.50709 = D.50708->last_ins;
    if (D.50709 != 0B) goto <D.50716>; else goto <D.50717>;
    <D.50716>:
    D.50708 = cfg->cbb;
    D.50709 = D.50708->last_ins;
    D.50709->next = store;
    D.50708 = cfg->cbb;
    D.50709 = D.50708->last_ins;
    store->prev = D.50709;
    D.50708 = cfg->cbb;
    D.50708->last_ins = store;
    goto <D.50718>;
    <D.50717>:
    D.50708 = cfg->cbb;
    D.50708 = cfg->cbb;
    D.50708->last_ins = store;
    D.50709 = D.50708->last_ins;
    D.50708->code = D.50709;
    <D.50718>:
  }
  goto <D.50719>;
  <D.50693>:
  D.50720 = var->dreg;
  emit_init_rvar (cfg, D.50720, type);
  <D.50719>:
}


emit_push_lmf (struct MonoCompile * cfg)
{
  unsigned int D.50721;
  unsigned int D.50722;
  unsigned int D.50727;
  int D.50729;
  _Bool D.50731;
  long int D.50732;
  long int D.50733;
  struct MonoBasicBlock * D.50736;
  struct MonoInst * D.50737;
  struct MonoMemPool * D.50741;
  int D.50742;
  struct MonoInst * D.50743;
  int D.50744;
  int D.50745;
  const unsigned char * D.50746;
  struct MonoInst * D.50747;
  unsigned char D.50748;
  unsigned char D.50749;
  struct MonoClass * D.50750;
  unsigned int D.50751;
  int D.50752;
  int D.50753;
  _Bool D.50754;
  long int D.50755;
  long int D.50756;
  struct MonoType * D.50759;
  int D.50760;
  _Bool iftmp.566;
  int D.50764;
  int iftmp.567;
  unsigned char D.50771;
  struct MonoInst * iftmp.568;
  int D.50777;
  int D.50778;
  unsigned int D.50779;
  unsigned int D.50780;
  struct MonoInst * * D.50783;
  sizetype D.50784;
  sizetype D.50785;
  sizetype D.50786;
  struct MonoInst * * D.50787;
  struct MonoInst * iftmp.569;
  int D.50790;
  unsigned int D.50791;
  sizetype D.50794;
  sizetype D.50795;
  struct MonoInst * * D.50796;
  _Bool D.50798;
  long int D.50799;
  long int D.50800;
  _Bool D.50803;
  long int D.50804;
  long int D.50805;
  unsigned char D.50808;
  unsigned char D.50809;
  unsigned char D.50810;
  unsigned char D.50811;
  int D.50815;
  struct MonoInst * D.50819;
  struct MonoClass * D.50822;
  struct MonoType * D.50823;
  struct MonoInst * D.50824;
  int D.50831;
  unsigned int D.50832;
  int D.50833;
  int D.50836;
  _Bool iftmp.570;
  int D.50840;
  int iftmp.571;
  struct MonoInst * iftmp.572;
  struct MonoInst * iftmp.573;
  _Bool D.50859;
  long int D.50860;
  long int D.50861;
  _Bool D.50864;
  long int D.50865;
  long int D.50866;
  unsigned char D.50869;
  unsigned char D.50870;
  unsigned char D.50871;
  unsigned char D.50872;
  unsigned int D.50876;
  int lmf_reg;
  int prev_lmf_reg;
  struct MonoInst * ins;
  struct MonoInst * lmf_ins;

  D.50721 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.50722 = D.50721 & 67108864;
  if (D.50722 == 0) goto <D.50723>; else goto <D.50724>;
  <D.50723>:
  return;
  <D.50724>:
  D.50721 = BIT_FIELD_REF <*cfg, 32, 3392>;
  D.50727 = D.50721 & 134217728;
  if (D.50727 != 0) goto <D.50728>; else goto <D.50725>;
  <D.50728>:
  D.50729 = mini_tls_get_supported (cfg, 3);
  if (D.50729 != 0) goto <D.50730>; else goto <D.50725>;
  <D.50730>:
  lmf_ins = mono_get_lmf_intrinsic (cfg);
  D.50731 = lmf_ins == 0B;
  D.50732 = (long int) D.50731;
  D.50733 = __builtin_expect (D.50732, 0);
  if (D.50733 != 0) goto <D.50734>; else goto <D.50735>;
  <D.50734>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1922, "lmf_ins");
  <D.50735>:
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  if (D.50737 != 0B) goto <D.50738>; else goto <D.50739>;
  <D.50738>:
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  D.50737->next = lmf_ins;
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  lmf_ins->prev = D.50737;
  D.50736 = cfg->cbb;
  D.50736->last_ins = lmf_ins;
  goto <D.50740>;
  <D.50739>:
  D.50736 = cfg->cbb;
  D.50736 = cfg->cbb;
  D.50736->last_ins = lmf_ins;
  D.50737 = D.50736->last_ins;
  D.50736->code = D.50737;
  <D.50740>:
  D.50741 = cfg->mempool;
  ins = mono_mempool_alloc (D.50741, 56);
  ins->data.op[1].const_val = 0;
  D.50742 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.50742;
  ins->prev = 0B;
  D.50743 = ins->prev;
  ins->next = D.50743;
  ins->opcode = 314;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.50744 = ins->sreg3;
  ins->sreg2 = D.50744;
  D.50745 = ins->sreg2;
  ins->sreg1 = D.50745;
  D.50746 = cfg->ip;
  ins->cil_code = D.50746;
  D.50747 = cfg->lmf_var;
  ins->data.op[0].p = D.50747;
  D.50747 = cfg->lmf_var;
  D.50747 = cfg->lmf_var;
  D.50748 = D.50747->flags;
  D.50749 = D.50748 | 16;
  D.50747->flags = D.50749;
  ins->type = 5;
  D.50747 = cfg->lmf_var;
  D.50750 = D.50747->klass;
  ins->klass = D.50750;
  D.50751 = alloc_dreg (cfg, 5);
  D.50752 = (int) D.50751;
  ins->dreg = D.50752;
  cfg->has_indirection = 1;
  D.50753 = cfg->gsharedvt;
  D.50754 = D.50753 != 0;
  D.50755 = (long int) D.50754;
  D.50756 = __builtin_expect (D.50755, 0);
  if (D.50756 != 0) goto <D.50757>; else goto <D.50758>;
  <D.50757>:
  D.50747 = cfg->lmf_var;
  D.50759 = D.50747->data.op[1].vtype;
  D.50760 = mini_is_gsharedvt_variable_type (cfg, D.50759);
  if (D.50760 != 0) goto <D.50761>; else goto <D.50762>;
  <D.50761>:
  handle_gsharedvt_ldaddr (cfg);
  <D.50762>:
  <D.50758>:
  D.50764 = mono_arch_is_soft_float ();
  if (D.50764 != 0) goto <D.50765>; else goto <D.50766>;
  <D.50765>:
  D.50747 = cfg->lmf_var;
  D.50771 = D.50747->type;
  if (D.50771 == 2) goto <D.50768>; else goto <D.50772>;
  <D.50772>:
  D.50747 = cfg->lmf_var;
  D.50771 = D.50747->type;
  if (D.50771 == 4) goto <D.50768>; else goto <D.50769>;
  <D.50768>:
  iftmp.567 = 1;
  goto <D.50770>;
  <D.50769>:
  iftmp.567 = 0;
  <D.50770>:
  iftmp.566 = (_Bool) iftmp.567;
  goto <D.50773>;
  <D.50766>:
  D.50747 = cfg->lmf_var;
  D.50771 = D.50747->type;
  iftmp.566 = D.50771 == 2;
  <D.50773>:
  if (iftmp.566 != 0) goto <D.50774>; else goto <D.50775>;
  <D.50774>:
  {
    struct MonoInst * var1;
    struct MonoInst * var2;

    D.50747 = cfg->lmf_var;
    D.50777 = D.50747->dreg;
    D.50778 = D.50777 + 1;
    D.50779 = (unsigned int) D.50778;
    D.50780 = cfg->vreg_to_inst_len;
    if (D.50779 < D.50780) goto <D.50781>; else goto <D.50782>;
    <D.50781>:
    D.50783 = cfg->vreg_to_inst;
    D.50747 = cfg->lmf_var;
    D.50777 = D.50747->dreg;
    D.50784 = (sizetype) D.50777;
    D.50785 = D.50784 + 1;
    D.50786 = D.50785 * 4;
    D.50787 = D.50783 + D.50786;
    iftmp.568 = *D.50787;
    goto <D.50788>;
    <D.50782>:
    iftmp.568 = 0B;
    <D.50788>:
    var1 = iftmp.568;
    D.50747 = cfg->lmf_var;
    D.50777 = D.50747->dreg;
    D.50790 = D.50777 + 2;
    D.50791 = (unsigned int) D.50790;
    D.50780 = cfg->vreg_to_inst_len;
    if (D.50791 < D.50780) goto <D.50792>; else goto <D.50793>;
    <D.50792>:
    D.50783 = cfg->vreg_to_inst;
    D.50747 = cfg->lmf_var;
    D.50777 = D.50747->dreg;
    D.50784 = (sizetype) D.50777;
    D.50794 = D.50784 + 2;
    D.50795 = D.50794 * 4;
    D.50796 = D.50783 + D.50795;
    iftmp.569 = *D.50796;
    goto <D.50797>;
    <D.50793>:
    iftmp.569 = 0B;
    <D.50797>:
    var2 = iftmp.569;
    D.50798 = var1 == 0B;
    D.50799 = (long int) D.50798;
    D.50800 = __builtin_expect (D.50799, 0);
    if (D.50800 != 0) goto <D.50801>; else goto <D.50802>;
    <D.50801>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1924, "var1");
    <D.50802>:
    D.50803 = var2 == 0B;
    D.50804 = (long int) D.50803;
    D.50805 = __builtin_expect (D.50804, 0);
    if (D.50805 != 0) goto <D.50806>; else goto <D.50807>;
    <D.50806>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1924, "var2");
    <D.50807>:
    D.50808 = var1->flags;
    D.50809 = D.50808 | 16;
    var1->flags = D.50809;
    D.50810 = var2->flags;
    D.50811 = D.50810 | 16;
    var2->flags = D.50811;
  }
  <D.50775>:
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  if (D.50737 != 0B) goto <D.50812>; else goto <D.50813>;
  <D.50812>:
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  D.50737->next = ins;
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  ins->prev = D.50737;
  D.50736 = cfg->cbb;
  D.50736->last_ins = ins;
  goto <D.50814>;
  <D.50813>:
  D.50736 = cfg->cbb;
  D.50736 = cfg->cbb;
  D.50736->last_ins = ins;
  D.50737 = D.50736->last_ins;
  D.50736->code = D.50737;
  <D.50814>:
  lmf_reg = ins->dreg;
  D.50741 = cfg->mempool;
  ins = mono_mempool_alloc (D.50741, 56);
  ins->data.op[1].const_val = 0;
  D.50742 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.50742;
  ins->prev = 0B;
  D.50743 = ins->prev;
  ins->next = D.50743;
  ins->opcode = 374;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.50744 = ins->sreg3;
  ins->sreg2 = D.50744;
  D.50745 = ins->sreg2;
  ins->sreg1 = D.50745;
  D.50746 = cfg->ip;
  ins->cil_code = D.50746;
  D.50815 = lmf_ins->dreg;
  ins->sreg1 = D.50815;
  ins->dreg = lmf_reg;
  ins->data.op[0].const_val = 0;
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  if (D.50737 != 0B) goto <D.50816>; else goto <D.50817>;
  <D.50816>:
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  D.50737->next = ins;
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  ins->prev = D.50737;
  D.50736 = cfg->cbb;
  D.50736->last_ins = ins;
  goto <D.50818>;
  <D.50817>:
  D.50736 = cfg->cbb;
  D.50736 = cfg->cbb;
  D.50736->last_ins = ins;
  D.50737 = D.50736->last_ins;
  D.50736->code = D.50737;
  <D.50818>:
  emit_tls_set (cfg, lmf_reg, 3);
  goto <D.50726>;
  <D.50725>:
  D.50819 = cfg->lmf_addr_var;
  if (D.50819 == 0B) goto <D.50820>; else goto <D.50821>;
  <D.50820>:
  D.50822 = mono_defaults.int_class;
  D.50823 = &D.50822->byval_arg;
  D.50824 = mono_compile_create_var (cfg, D.50823, 329);
  cfg->lmf_addr_var = D.50824;
  <D.50821>:
  lmf_ins = mono_get_lmf_addr_intrinsic (cfg);
  if (lmf_ins != 0B) goto <D.50825>; else goto <D.50826>;
  <D.50825>:
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  if (D.50737 != 0B) goto <D.50827>; else goto <D.50828>;
  <D.50827>:
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  D.50737->next = lmf_ins;
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  lmf_ins->prev = D.50737;
  D.50736 = cfg->cbb;
  D.50736->last_ins = lmf_ins;
  goto <D.50829>;
  <D.50828>:
  D.50736 = cfg->cbb;
  D.50736 = cfg->cbb;
  D.50736->last_ins = lmf_ins;
  D.50737 = D.50736->last_ins;
  D.50736->code = D.50737;
  <D.50829>:
  goto <D.50830>;
  <D.50826>:
  lmf_ins = mono_emit_jit_icall (cfg, mono_get_lmf_addr, 0B);
  <D.50830>:
  D.50819 = cfg->lmf_addr_var;
  D.50831 = D.50819->dreg;
  lmf_ins->dreg = D.50831;
  D.50741 = cfg->mempool;
  ins = mono_mempool_alloc (D.50741, 56);
  ins->data.op[1].const_val = 0;
  D.50742 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.50742;
  ins->prev = 0B;
  D.50743 = ins->prev;
  ins->next = D.50743;
  ins->opcode = 314;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.50744 = ins->sreg3;
  ins->sreg2 = D.50744;
  D.50745 = ins->sreg2;
  ins->sreg1 = D.50745;
  D.50746 = cfg->ip;
  ins->cil_code = D.50746;
  D.50747 = cfg->lmf_var;
  ins->data.op[0].p = D.50747;
  D.50747 = cfg->lmf_var;
  D.50747 = cfg->lmf_var;
  D.50748 = D.50747->flags;
  D.50749 = D.50748 | 16;
  D.50747->flags = D.50749;
  ins->type = 5;
  D.50747 = cfg->lmf_var;
  D.50750 = D.50747->klass;
  ins->klass = D.50750;
  D.50832 = alloc_dreg (cfg, 5);
  D.50833 = (int) D.50832;
  ins->dreg = D.50833;
  cfg->has_indirection = 1;
  D.50753 = cfg->gsharedvt;
  D.50754 = D.50753 != 0;
  D.50755 = (long int) D.50754;
  D.50756 = __builtin_expect (D.50755, 0);
  if (D.50756 != 0) goto <D.50834>; else goto <D.50835>;
  <D.50834>:
  D.50747 = cfg->lmf_var;
  D.50759 = D.50747->data.op[1].vtype;
  D.50836 = mini_is_gsharedvt_variable_type (cfg, D.50759);
  if (D.50836 != 0) goto <D.50837>; else goto <D.50838>;
  <D.50837>:
  handle_gsharedvt_ldaddr (cfg);
  <D.50838>:
  <D.50835>:
  D.50840 = mono_arch_is_soft_float ();
  if (D.50840 != 0) goto <D.50841>; else goto <D.50842>;
  <D.50841>:
  D.50747 = cfg->lmf_var;
  D.50771 = D.50747->type;
  if (D.50771 == 2) goto <D.50844>; else goto <D.50847>;
  <D.50847>:
  D.50747 = cfg->lmf_var;
  D.50771 = D.50747->type;
  if (D.50771 == 4) goto <D.50844>; else goto <D.50845>;
  <D.50844>:
  iftmp.571 = 1;
  goto <D.50846>;
  <D.50845>:
  iftmp.571 = 0;
  <D.50846>:
  iftmp.570 = (_Bool) iftmp.571;
  goto <D.50848>;
  <D.50842>:
  D.50747 = cfg->lmf_var;
  D.50771 = D.50747->type;
  iftmp.570 = D.50771 == 2;
  <D.50848>:
  if (iftmp.570 != 0) goto <D.50849>; else goto <D.50850>;
  <D.50849>:
  {
    struct MonoInst * var1;
    struct MonoInst * var2;

    D.50747 = cfg->lmf_var;
    D.50777 = D.50747->dreg;
    D.50778 = D.50777 + 1;
    D.50779 = (unsigned int) D.50778;
    D.50780 = cfg->vreg_to_inst_len;
    if (D.50779 < D.50780) goto <D.50852>; else goto <D.50853>;
    <D.50852>:
    D.50783 = cfg->vreg_to_inst;
    D.50747 = cfg->lmf_var;
    D.50777 = D.50747->dreg;
    D.50784 = (sizetype) D.50777;
    D.50785 = D.50784 + 1;
    D.50786 = D.50785 * 4;
    D.50787 = D.50783 + D.50786;
    iftmp.572 = *D.50787;
    goto <D.50854>;
    <D.50853>:
    iftmp.572 = 0B;
    <D.50854>:
    var1 = iftmp.572;
    D.50747 = cfg->lmf_var;
    D.50777 = D.50747->dreg;
    D.50790 = D.50777 + 2;
    D.50791 = (unsigned int) D.50790;
    D.50780 = cfg->vreg_to_inst_len;
    if (D.50791 < D.50780) goto <D.50856>; else goto <D.50857>;
    <D.50856>:
    D.50783 = cfg->vreg_to_inst;
    D.50747 = cfg->lmf_var;
    D.50777 = D.50747->dreg;
    D.50784 = (sizetype) D.50777;
    D.50794 = D.50784 + 2;
    D.50795 = D.50794 * 4;
    D.50796 = D.50783 + D.50795;
    iftmp.573 = *D.50796;
    goto <D.50858>;
    <D.50857>:
    iftmp.573 = 0B;
    <D.50858>:
    var2 = iftmp.573;
    D.50859 = var1 == 0B;
    D.50860 = (long int) D.50859;
    D.50861 = __builtin_expect (D.50860, 0);
    if (D.50861 != 0) goto <D.50862>; else goto <D.50863>;
    <D.50862>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1944, "var1");
    <D.50863>:
    D.50864 = var2 == 0B;
    D.50865 = (long int) D.50864;
    D.50866 = __builtin_expect (D.50865, 0);
    if (D.50866 != 0) goto <D.50867>; else goto <D.50868>;
    <D.50867>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1944, "var2");
    <D.50868>:
    D.50869 = var1->flags;
    D.50870 = D.50869 | 16;
    var1->flags = D.50870;
    D.50871 = var2->flags;
    D.50872 = D.50871 | 16;
    var2->flags = D.50872;
  }
  <D.50850>:
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  if (D.50737 != 0B) goto <D.50873>; else goto <D.50874>;
  <D.50873>:
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  D.50737->next = ins;
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  ins->prev = D.50737;
  D.50736 = cfg->cbb;
  D.50736->last_ins = ins;
  goto <D.50875>;
  <D.50874>:
  D.50736 = cfg->cbb;
  D.50736 = cfg->cbb;
  D.50736->last_ins = ins;
  D.50737 = D.50736->last_ins;
  D.50736->code = D.50737;
  <D.50875>:
  lmf_reg = ins->dreg;
  D.50876 = alloc_preg (cfg);
  prev_lmf_reg = (int) D.50876;
  D.50741 = cfg->mempool;
  ins = mono_mempool_alloc (D.50741, 56);
  ins->data.op[1].const_val = 0;
  D.50742 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.50742;
  ins->prev = 0B;
  D.50743 = ins->prev;
  ins->next = D.50743;
  ins->opcode = 388;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.50744 = ins->sreg3;
  ins->sreg2 = D.50744;
  D.50745 = ins->sreg2;
  ins->sreg1 = D.50745;
  D.50746 = cfg->ip;
  ins->cil_code = D.50746;
  ins->dreg = prev_lmf_reg;
  D.50819 = cfg->lmf_addr_var;
  D.50831 = D.50819->dreg;
  ins->sreg1 = D.50831;
  ins->data.op[0].const_val = 0;
  ins->type = 1;
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  if (D.50737 != 0B) goto <D.50877>; else goto <D.50878>;
  <D.50877>:
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  D.50737->next = ins;
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  ins->prev = D.50737;
  D.50736 = cfg->cbb;
  D.50736->last_ins = ins;
  goto <D.50879>;
  <D.50878>:
  D.50736 = cfg->cbb;
  D.50736 = cfg->cbb;
  D.50736->last_ins = ins;
  D.50737 = D.50736->last_ins;
  D.50736->code = D.50737;
  <D.50879>:
  D.50741 = cfg->mempool;
  ins = mono_mempool_alloc (D.50741, 56);
  ins->data.op[1].const_val = 0;
  D.50742 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.50742;
  ins->prev = 0B;
  D.50743 = ins->prev;
  ins->next = D.50743;
  ins->opcode = 374;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.50744 = ins->sreg3;
  ins->sreg2 = D.50744;
  D.50745 = ins->sreg2;
  ins->sreg1 = D.50745;
  D.50746 = cfg->ip;
  ins->cil_code = D.50746;
  ins->sreg1 = prev_lmf_reg;
  ins->dreg = lmf_reg;
  ins->data.op[0].const_val = 0;
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  if (D.50737 != 0B) goto <D.50880>; else goto <D.50881>;
  <D.50880>:
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  D.50737->next = ins;
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  ins->prev = D.50737;
  D.50736 = cfg->cbb;
  D.50736->last_ins = ins;
  goto <D.50882>;
  <D.50881>:
  D.50736 = cfg->cbb;
  D.50736 = cfg->cbb;
  D.50736->last_ins = ins;
  D.50737 = D.50736->last_ins;
  D.50736->code = D.50737;
  <D.50882>:
  D.50741 = cfg->mempool;
  ins = mono_mempool_alloc (D.50741, 56);
  ins->data.op[1].const_val = 0;
  D.50742 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.50742;
  ins->prev = 0B;
  D.50743 = ins->prev;
  ins->next = D.50743;
  ins->opcode = 374;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.50744 = ins->sreg3;
  ins->sreg2 = D.50744;
  D.50745 = ins->sreg2;
  ins->sreg1 = D.50745;
  D.50746 = cfg->ip;
  ins->cil_code = D.50746;
  ins->sreg1 = lmf_reg;
  D.50819 = cfg->lmf_addr_var;
  D.50831 = D.50819->dreg;
  ins->dreg = D.50831;
  ins->data.op[0].const_val = 0;
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  if (D.50737 != 0B) goto <D.50883>; else goto <D.50884>;
  <D.50883>:
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  D.50737->next = ins;
  D.50736 = cfg->cbb;
  D.50737 = D.50736->last_ins;
  ins->prev = D.50737;
  D.50736 = cfg->cbb;
  D.50736->last_ins = ins;
  goto <D.50885>;
  <D.50884>:
  D.50736 = cfg->cbb;
  D.50736 = cfg->cbb;
  D.50736->last_ins = ins;
  D.50737 = D.50736->last_ins;
  D.50736->code = D.50737;
  <D.50885>:
  <D.50726>:
}


mono_find_block_region (struct MonoCompile * cfg, int offset)
{
  struct MonoExceptionClause * D.50887;
  unsigned int i.574;
  unsigned int D.50889;
  unsigned int D.50890;
  unsigned int offset.575;
  unsigned int D.50894;
  unsigned int D.50897;
  int D.50900;
  int D.50901;
  int D.50902;
  unsigned int D.50903;
  unsigned int D.50904;
  unsigned int D.50905;
  unsigned int D.50908;
  unsigned int D.50909;
  unsigned int D.50914;
  unsigned int D.50917;
  unsigned int D.50918;
  unsigned int D.50919;
  unsigned int D.50922;
  unsigned int D.50923;
  <unnamed-unsigned:15> D.50926;
  int D.50927;
  struct MonoMethodHeader * header;
  struct MonoExceptionClause * clause;
  int i;

  header = cfg->header;
  i = 0;
  goto <D.24142>;
  <D.24141>:
  D.50887 = header->clauses;
  i.574 = (unsigned int) i;
  D.50889 = i.574 * 24;
  clause = D.50887 + D.50889;
  D.50890 = clause->flags;
  if (D.50890 == 1) goto <D.50891>; else goto <D.50892>;
  <D.50891>:
  offset.575 = (unsigned int) offset;
  D.50894 = clause->data.filter_offset;
  if (offset.575 >= D.50894) goto <D.50895>; else goto <D.50896>;
  <D.50895>:
  offset.575 = (unsigned int) offset;
  D.50897 = clause->handler_offset;
  if (offset.575 < D.50897) goto <D.50898>; else goto <D.50899>;
  <D.50898>:
  D.50901 = i + 1;
  D.50902 = D.50901 << 8;
  D.50903 = (unsigned int) D.50902;
  D.50890 = clause->flags;
  D.50904 = D.50903 | D.50890;
  D.50905 = D.50904 | 128;
  D.50900 = (int) D.50905;
  return D.50900;
  <D.50899>:
  <D.50896>:
  <D.50892>:
  D.50897 = clause->handler_offset;
  offset.575 = (unsigned int) offset;
  if (D.50897 <= offset.575) goto <D.50906>; else goto <D.50907>;
  <D.50906>:
  offset.575 = (unsigned int) offset;
  D.50897 = clause->handler_offset;
  D.50908 = clause->handler_len;
  D.50909 = D.50897 + D.50908;
  if (offset.575 < D.50909) goto <D.50910>; else goto <D.50911>;
  <D.50910>:
  D.50890 = clause->flags;
  if (D.50890 == 2) goto <D.50912>; else goto <D.50913>;
  <D.50912>:
  D.50901 = i + 1;
  D.50902 = D.50901 << 8;
  D.50903 = (unsigned int) D.50902;
  D.50890 = clause->flags;
  D.50904 = D.50903 | D.50890;
  D.50914 = D.50904 | 16;
  D.50900 = (int) D.50914;
  return D.50900;
  <D.50913>:
  D.50890 = clause->flags;
  if (D.50890 == 4) goto <D.50915>; else goto <D.50916>;
  <D.50915>:
  D.50901 = i + 1;
  D.50902 = D.50901 << 8;
  D.50903 = (unsigned int) D.50902;
  D.50890 = clause->flags;
  D.50904 = D.50903 | D.50890;
  D.50917 = D.50904 | 64;
  D.50900 = (int) D.50917;
  return D.50900;
  <D.50916>:
  D.50901 = i + 1;
  D.50902 = D.50901 << 8;
  D.50903 = (unsigned int) D.50902;
  D.50890 = clause->flags;
  D.50904 = D.50903 | D.50890;
  D.50918 = D.50904 | 32;
  D.50900 = (int) D.50918;
  return D.50900;
  <D.50911>:
  <D.50907>:
  D.50919 = clause->try_offset;
  offset.575 = (unsigned int) offset;
  if (D.50919 <= offset.575) goto <D.50920>; else goto <D.50921>;
  <D.50920>:
  offset.575 = (unsigned int) offset;
  D.50919 = clause->try_offset;
  D.50922 = clause->try_len;
  D.50923 = D.50919 + D.50922;
  if (offset.575 < D.50923) goto <D.50924>; else goto <D.50925>;
  <D.50924>:
  D.50901 = i + 1;
  D.50902 = D.50901 << 8;
  D.50903 = (unsigned int) D.50902;
  D.50890 = clause->flags;
  D.50904 = D.50903 | D.50890;
  D.50900 = (int) D.50904;
  return D.50900;
  <D.50925>:
  <D.50921>:
  i = i + 1;
  <D.24142>:
  D.50926 = header->num_clauses;
  D.50927 = (int) D.50926;
  if (D.50927 > i) goto <D.24141>; else goto <D.24143>;
  <D.24143>:
  D.50900 = -1;
  return D.50900;
}


mono_create_spvar_for_region (struct MonoCompile * cfg, int region)
{
  struct GHashTable * D.50929;
  const void * region.576;
  struct MonoClass * D.50933;
  struct MonoType * D.50934;
  unsigned char D.50935;
  unsigned char D.50936;
  void * region.577;
  struct MonoInst * var;

  D.50929 = cfg->spvars;
  region.576 = (const void *) region;
  var = monoeg_g_hash_table_lookup (D.50929, region.576);
  if (var != 0B) goto <D.50931>; else goto <D.50932>;
  <D.50931>:
  return;
  <D.50932>:
  D.50933 = mono_defaults.int_class;
  D.50934 = &D.50933->byval_arg;
  var = mono_compile_create_var (cfg, D.50934, 329);
  D.50935 = var->flags;
  D.50936 = D.50935 | 4;
  var->flags = D.50936;
  D.50929 = cfg->spvars;
  region.577 = (void *) region;
  monoeg_g_hash_table_insert_replace (D.50929, region.577, var, 0);
}


set_exception_type_from_invalid_il (struct MonoCompile * cfg, struct MonoMethod * method, unsigned char * ip)
{
  unsigned int D.50939;
  gchar * D.50943;
  struct MonoMemPool * D.50944;
  struct GSList * D.50945;
  struct GSList * D.50946;
  char * method_fname;
  char * method_code;
  struct MonoMethodHeader * header;

  method_fname = mono_method_full_name (method, 1);
  header = mono_method_get_header (method);
  D.50939 = header->code_size;
  if (D.50939 == 0) goto <D.50940>; else goto <D.50941>;
  <D.50940>:
  method_code = monoeg_strdup ("method body is empty.");
  goto <D.50942>;
  <D.50941>:
  method_code = mono_disasm_code_one (0B, method, ip, 0B);
  <D.50942>:
  mono_cfg_set_exception (cfg, 3);
  D.50943 = monoeg_g_strdup_printf ("Invalid IL code in %s: %s\n", method_fname, method_code);
  cfg->exception_message = D.50943;
  monoeg_g_free (method_fname);
  monoeg_g_free (method_code);
  D.50944 = cfg->mempool;
  D.50945 = cfg->headers_to_free;
  D.50946 = g_slist_prepend_mempool (D.50944, D.50945, header);
  cfg->headers_to_free = D.50946;
}


monoeg_strdup (const gchar * str)
{
  gchar * D.50949;

  if (str != 0B) goto <D.50947>; else goto <D.50948>;
  <D.50947>:
  D.50949 = __strdup (str);
  return D.50949;
  <D.50948>:
  D.50949 = 0B;
  return D.50949;
}


g_slist_prepend_mempool (struct MonoMemPool * mp, struct GSList * list, void * data)
{
  struct GSList * D.50951;
  struct GSList * new_list;

  new_list = mono_mempool_alloc (mp, 8);
  new_list->data = data;
  new_list->next = list;
  D.50951 = new_list;
  return D.50951;
}


mono_op_to_op_imm (int opcode)
{
  int D.50953;

  switch (opcode) <default: <D.50954>, case 322: <D.27702>, case 325: <D.27704>, case 326: <D.27703>, case 338: <D.27713>, case 344: <D.27709>, case 347: <D.27710>, case 350: <D.27712>, case 353: <D.27711>, case 374: <D.27705>, case 375: <D.27706>, case 376: <D.27707>, case 377: <D.27708>, case 479: <D.27694>, case 480: <D.27695>, case 486: <D.27696>, case 487: <D.27697>, case 488: <D.27698>, case 489: <D.27699>, case 490: <D.27700>, case 491: <D.27701>, case 565: <D.27681>, case 566: <D.27682>, case 567: <D.27687>, case 568: <D.27683>, case 569: <D.27684>, case 570: <D.27685>, case 571: <D.27686>, case 572: <D.27688>, case 573: <D.27689>, case 574: <D.27690>, case 575: <D.27691>, case 576: <D.27692>, case 577: <D.27693>>
  <D.27681>:
  D.50953 = 625;
  return D.50953;
  <D.27682>:
  D.50953 = 626;
  return D.50953;
  <D.27683>:
  D.50953 = 628;
  return D.50953;
  <D.27684>:
  D.50953 = 629;
  return D.50953;
  <D.27685>:
  D.50953 = 630;
  return D.50953;
  <D.27686>:
  D.50953 = 631;
  return D.50953;
  <D.27687>:
  D.50953 = 627;
  return D.50953;
  <D.27688>:
  D.50953 = 632;
  return D.50953;
  <D.27689>:
  D.50953 = 633;
  return D.50953;
  <D.27690>:
  D.50953 = 634;
  return D.50953;
  <D.27691>:
  D.50953 = 635;
  return D.50953;
  <D.27692>:
  D.50953 = 636;
  return D.50953;
  <D.27693>:
  D.50953 = 637;
  return D.50953;
  <D.27694>:
  D.50953 = 538;
  return D.50953;
  <D.27695>:
  D.50953 = 539;
  return D.50953;
  <D.27696>:
  D.50953 = 541;
  return D.50953;
  <D.27697>:
  D.50953 = 542;
  return D.50953;
  <D.27698>:
  D.50953 = 543;
  return D.50953;
  <D.27699>:
  D.50953 = 544;
  return D.50953;
  <D.27700>:
  D.50953 = 545;
  return D.50953;
  <D.27701>:
  D.50953 = 546;
  return D.50953;
  <D.27702>:
  D.50953 = 323;
  return D.50953;
  <D.27703>:
  D.50953 = 327;
  return D.50953;
  <D.27704>:
  D.50953 = 328;
  return D.50953;
  <D.27705>:
  D.50953 = 381;
  return D.50953;
  <D.27706>:
  D.50953 = 382;
  return D.50953;
  <D.27707>:
  D.50953 = 383;
  return D.50953;
  <D.27708>:
  D.50953 = 384;
  return D.50953;
  <D.27709>:
  D.50953 = 343;
  return D.50953;
  <D.27710>:
  D.50953 = 346;
  return D.50953;
  <D.27711>:
  D.50953 = 352;
  return D.50953;
  <D.27712>:
  D.50953 = 349;
  return D.50953;
  <D.27713>:
  D.50953 = 339;
  return D.50953;
  <D.50954>:
  D.50953 = -1;
  return D.50953;
}


mono_load_membase_to_load_mem (int opcode)
{
  int D.50956;

  D.50956 = -1;
  return D.50956;
}


mono_op_to_op_imm_noemul (int opcode)
{
  int D.50958;

  switch (opcode) <default: <D.27766>, case 489: <D.27764>, case 490: <D.27763>, case 491: <D.27765>>
  <D.27763>:
  <D.27764>:
  <D.27765>:
  D.50958 = -1;
  return D.50958;
  <D.27766>:
  D.50958 = mono_op_to_op_imm (opcode);
  return D.50958;
}


mono_handle_global_vregs (struct MonoCompile * cfg)
{
  struct MonoMemPool * D.50960;
  unsigned int D.50961;
  unsigned int D.50962;
  unsigned int D.50963;
  unsigned int D.50964;
  int D.50967;
  short unsigned int D.50968;
  int D.50969;
  int D.50970;
  int D.50971;
  _Bool D.50972;
  long int D.50973;
  long int D.50974;
  _Bool D.50977;
  long int D.50978;
  long int D.50979;
  char D.50984;
  const char * D.50990;
  char D.50991;
  const char * D.50997;
  char D.50998;
  const char * D.51004;
  char D.51005;
  unsigned int vreg.578;
  unsigned int D.51013;
  struct MonoInst * * D.51015;
  unsigned int vreg.579;
  unsigned int D.51017;
  struct MonoInst * * D.51018;
  struct MonoInst * D.51019;
  struct MonoClass * D.51020;
  struct MonoType * D.51021;
  struct MonoInst * iftmp.580;
  int D.51025;
  unsigned int D.51026;
  sizetype vreg.581;
  sizetype D.51030;
  sizetype D.51031;
  struct MonoInst * * D.51032;
  struct MonoInst * iftmp.582;
  unsigned char D.51038;
  unsigned char D.51039;
  struct MonoInst * iftmp.583;
  int D.51041;
  unsigned int D.51042;
  sizetype D.51045;
  sizetype D.51046;
  struct MonoInst * * D.51047;
  struct MonoInst * iftmp.584;
  unsigned char D.51053;
  unsigned char D.51054;
  _Bool D.51055;
  long int D.51056;
  long int D.51057;
  gint32 * D.51060;
  int D.51063;
  int D.51078;
  unsigned int D.51081;
  gboolean * D.51083;
  gboolean * D.51084;
  int D.51085;
  struct MonoClass * D.51087;
  struct MonoType * D.51088;
  struct MonoClass * D.51089;
  struct MonoType * D.51090;
  struct MonoClass * D.51091;
  struct MonoType * D.51092;
  struct MonoClass * D.51093;
  struct MonoType * D.51094;
  struct MonoInst * * D.51095;
  unsigned int i.585;
  unsigned int D.51097;
  struct MonoInst * * D.51098;
  struct MonoMethodVar * D.51099;
  unsigned int D.51100;
  unsigned char D.51101;
  int D.51102;
  int D.51103;
  short unsigned int D.51105;
  struct MonoInst * D.51108;
  unsigned char D.51111;
  int D.51112;
  int D.51113;
  int D.51116;
  unsigned int D.51117;
  unsigned int D.51118;
  gint32 * D.51119;
  int D.51120;
  struct MonoClass * D.51123;
  unsigned char D.51124;
  unsigned int D.51127;
  unsigned int D.51128;
  struct MonoInst * D.51131;
  struct MonoInst * D.51134;
  struct MonoInst * D.51137;
  unsigned int D.51142;
  unsigned char D.51143;
  struct MonoInst * * D.51144;
  unsigned int i.586;
  unsigned int D.51147;
  unsigned int D.51150;
  unsigned int pos.587;
  unsigned char D.51154;
  int D.51155;
  int D.51156;
  unsigned int pos.588;
  unsigned int D.51162;
  struct MonoInst * * D.51163;
  struct MonoInst * D.51164;
  struct MonoInst * D.51165;
  unsigned int D.51166;
  struct MonoMethodVar * D.51167;
  struct MonoMethodVar * D.51168;
  unsigned char D.51169;
  struct MonoInst * iftmp.589;
  int D.51173;
  int D.51174;
  unsigned int D.51175;
  sizetype D.51178;
  sizetype D.51179;
  sizetype D.51180;
  struct MonoInst * * D.51181;
  struct MonoInst * iftmp.590;
  int D.51184;
  unsigned int D.51185;
  sizetype D.51188;
  sizetype D.51189;
  struct MonoInst * * D.51190;
  gint32 * vreg_to_bb;
  struct MonoBasicBlock * bb;
  int i;
  int pos;

  D.50960 = cfg->mempool;
  D.50961 = cfg->next_vreg;
  D.50962 = D.50961 * 4;
  D.50963 = D.50962 + 1;
  vreg_to_bb = mono_mempool_alloc0 (D.50960, D.50963);
  bb = cfg->bb_entry;
  goto <D.27795>;
  <D.27794>:
  {
    struct MonoInst * ins;
    int block_num;

    ins = bb->code;
    block_num = bb->block_num;
    D.50964 = cfg->verbose_level;
    if (D.50964 > 2) goto <D.50965>; else goto <D.50966>;
    <D.50965>:
    D.50967 = bb->block_num;
    printf ("\nHANDLE-GLOBAL-VREGS BLOCK %d:\n", D.50967);
    <D.50966>:
    cfg->cbb = bb;
    goto <D.27792>;
    <D.27791>:
    {
      const char * spec;
      int regtype;
      int regindex;
      gint32 prev_bb;

      D.50968 = ins->opcode;
      D.50969 = (int) D.50968;
      D.50970 = D.50969 + -313;
      D.50971 = D.50970 * 4;
      spec = &ins_info[D.50971];
      regtype = 0;
      D.50964 = cfg->verbose_level;
      D.50972 = D.50964 > 2;
      D.50973 = (long int) D.50972;
      D.50974 = __builtin_expect (D.50973, 0);
      if (D.50974 != 0) goto <D.50975>; else goto <D.50976>;
      <D.50975>:
      mono_print_ins (ins);
      <D.50976>:
      D.50968 = ins->opcode;
      D.50977 = D.50968 <= 312;
      D.50978 = (long int) D.50977;
      D.50979 = __builtin_expect (D.50978, 0);
      if (D.50979 != 0) goto <D.50980>; else goto <D.50981>;
      <D.50980>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12539, "ins->opcode >= MONO_CEE_LAST");
      <D.50981>:
      regindex = 0;
      goto <D.27789>;
      <D.27788>:
      {
        int vreg;

        vreg = 0;
        if (regindex == 0) goto <D.50982>; else goto <D.50983>;
        <D.50982>:
        D.50984 = *spec;
        regtype = (int) D.50984;
        if (regtype == 32) goto <D.50985>; else goto <D.50986>;
        <D.50985>:
        // predicted unlikely by continue predictor.
        goto <D.27781>;
        <D.50986>:
        vreg = ins->dreg;
        goto <D.50987>;
        <D.50983>:
        if (regindex == 1) goto <D.50988>; else goto <D.50989>;
        <D.50988>:
        D.50990 = spec + 1;
        D.50991 = *D.50990;
        regtype = (int) D.50991;
        if (regtype == 32) goto <D.50992>; else goto <D.50993>;
        <D.50992>:
        // predicted unlikely by continue predictor.
        goto <D.27781>;
        <D.50993>:
        vreg = ins->sreg1;
        goto <D.50994>;
        <D.50989>:
        if (regindex == 2) goto <D.50995>; else goto <D.50996>;
        <D.50995>:
        D.50997 = spec + 2;
        D.50998 = *D.50997;
        regtype = (int) D.50998;
        if (regtype == 32) goto <D.50999>; else goto <D.51000>;
        <D.50999>:
        // predicted unlikely by continue predictor.
        goto <D.27781>;
        <D.51000>:
        vreg = ins->sreg2;
        goto <D.51001>;
        <D.50996>:
        if (regindex == 3) goto <D.51002>; else goto <D.51003>;
        <D.51002>:
        D.51004 = spec + 3;
        D.51005 = *D.51004;
        regtype = (int) D.51005;
        if (regtype == 32) goto <D.51006>; else goto <D.51007>;
        <D.51006>:
        // predicted unlikely by continue predictor.
        goto <D.27781>;
        <D.51007>:
        vreg = ins->sreg3;
        <D.51003>:
        <D.51001>:
        <D.50994>:
        <D.50987>:
        if (regtype == 108) goto <D.51008>; else goto <D.51009>;
        <D.51008>:
        vreg.578 = (unsigned int) vreg;
        D.51013 = cfg->vreg_to_inst_len;
        if (vreg.578 >= D.51013) goto <D.51010>; else goto <D.51014>;
        <D.51014>:
        D.51015 = cfg->vreg_to_inst;
        vreg.579 = (unsigned int) vreg;
        D.51017 = vreg.579 * 4;
        D.51018 = D.51015 + D.51017;
        D.51019 = *D.51018;
        if (D.51019 == 0B) goto <D.51010>; else goto <D.51011>;
        <D.51010>:
        D.51020 = mono_defaults.int64_class;
        D.51021 = &D.51020->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.51021, 329, vreg);
        D.50964 = cfg->verbose_level;
        if (D.50964 > 2) goto <D.51022>; else goto <D.51023>;
        <D.51022>:
        printf ("LONG VREG R%d made global.\n", vreg);
        <D.51023>:
        <D.51011>:
        D.51025 = vreg + 1;
        D.51026 = (unsigned int) D.51025;
        D.51013 = cfg->vreg_to_inst_len;
        if (D.51026 < D.51013) goto <D.51027>; else goto <D.51028>;
        <D.51027>:
        D.51015 = cfg->vreg_to_inst;
        vreg.581 = (sizetype) vreg;
        D.51030 = vreg.581 + 1;
        D.51031 = D.51030 * 4;
        D.51032 = D.51015 + D.51031;
        iftmp.580 = *D.51032;
        goto <D.51033>;
        <D.51028>:
        iftmp.580 = 0B;
        <D.51033>:
        D.51025 = vreg + 1;
        D.51026 = (unsigned int) D.51025;
        D.51013 = cfg->vreg_to_inst_len;
        if (D.51026 < D.51013) goto <D.51035>; else goto <D.51036>;
        <D.51035>:
        D.51015 = cfg->vreg_to_inst;
        vreg.581 = (sizetype) vreg;
        D.51030 = vreg.581 + 1;
        D.51031 = D.51030 * 4;
        D.51032 = D.51015 + D.51031;
        iftmp.582 = *D.51032;
        goto <D.51037>;
        <D.51036>:
        iftmp.582 = 0B;
        <D.51037>:
        D.51038 = iftmp.582->flags;
        D.51039 = D.51038 | 4;
        iftmp.580->flags = D.51039;
        D.51041 = vreg + 2;
        D.51042 = (unsigned int) D.51041;
        D.51013 = cfg->vreg_to_inst_len;
        if (D.51042 < D.51013) goto <D.51043>; else goto <D.51044>;
        <D.51043>:
        D.51015 = cfg->vreg_to_inst;
        vreg.581 = (sizetype) vreg;
        D.51045 = vreg.581 + 2;
        D.51046 = D.51045 * 4;
        D.51047 = D.51015 + D.51046;
        iftmp.583 = *D.51047;
        goto <D.51048>;
        <D.51044>:
        iftmp.583 = 0B;
        <D.51048>:
        D.51041 = vreg + 2;
        D.51042 = (unsigned int) D.51041;
        D.51013 = cfg->vreg_to_inst_len;
        if (D.51042 < D.51013) goto <D.51050>; else goto <D.51051>;
        <D.51050>:
        D.51015 = cfg->vreg_to_inst;
        vreg.581 = (sizetype) vreg;
        D.51045 = vreg.581 + 2;
        D.51046 = D.51045 * 4;
        D.51047 = D.51015 + D.51046;
        iftmp.584 = *D.51047;
        goto <D.51052>;
        <D.51051>:
        iftmp.584 = 0B;
        <D.51052>:
        D.51053 = iftmp.584->flags;
        D.51054 = D.51053 | 4;
        iftmp.583->flags = D.51054;
        <D.51009>:
        D.51055 = vreg == -1;
        D.51056 = (long int) D.51055;
        D.51057 = __builtin_expect (D.51056, 0);
        if (D.51057 != 0) goto <D.51058>; else goto <D.51059>;
        <D.51058>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12590, "vreg != -1");
        <D.51059>:
        vreg.579 = (unsigned int) vreg;
        D.51017 = vreg.579 * 4;
        D.51060 = vreg_to_bb + D.51017;
        prev_bb = *D.51060;
        if (prev_bb == 0) goto <D.51061>; else goto <D.51062>;
        <D.51061>:
        vreg.579 = (unsigned int) vreg;
        D.51017 = vreg.579 * 4;
        D.51060 = vreg_to_bb + D.51017;
        D.51063 = block_num + 1;
        *D.51060 = D.51063;
        goto <D.51064>;
        <D.51062>:
        D.51063 = block_num + 1;
        if (D.51063 != prev_bb) goto <D.51065>; else goto <D.51066>;
        <D.51065>:
        if (prev_bb != -1) goto <D.51067>; else goto <D.51068>;
        <D.51067>:
        if (regtype == 105) goto <D.51069>; else goto <D.51071>;
        <D.51071>:
        if (regtype == 102) goto <D.51069>; else goto <D.51070>;
        <D.51069>:
        if (vreg <= 31) goto <D.51072>; else goto <D.51073>;
        <D.51072>:
        // predicted unlikely by continue predictor.
        goto <D.27781>;
        <D.51073>:
        <D.51070>:
        vreg.578 = (unsigned int) vreg;
        D.51013 = cfg->vreg_to_inst_len;
        if (vreg.578 >= D.51013) goto <D.51074>; else goto <D.51075>;
        <D.51075>:
        D.51015 = cfg->vreg_to_inst;
        vreg.579 = (unsigned int) vreg;
        D.51017 = vreg.579 * 4;
        D.51018 = D.51015 + D.51017;
        D.51019 = *D.51018;
        if (D.51019 == 0B) goto <D.51074>; else goto <D.27783>;
        <D.51074>:
        D.50964 = cfg->verbose_level;
        D.50972 = D.50964 > 2;
        D.50973 = (long int) D.50972;
        D.50974 = __builtin_expect (D.50973, 0);
        if (D.50974 != 0) goto <D.51076>; else goto <D.51077>;
        <D.51076>:
        vreg.579 = (unsigned int) vreg;
        D.51017 = vreg.579 * 4;
        D.51060 = vreg_to_bb + D.51017;
        D.51078 = *D.51060;
        printf ("VREG R%d used in BB%d and BB%d made global.\n", vreg, D.51078, block_num);
        <D.51077>:
        switch (regtype) <default: <D.27787>, case 102: <D.27785>, case 105: <D.27782>, case 108: <D.27784>, case 118: <D.27786>>
        <D.27782>:
        vreg.578 = (unsigned int) vreg;
        D.51081 = cfg->vreg_is_ref_len;
        if (vreg.578 < D.51081) goto <D.51082>; else goto <D.51079>;
        <D.51082>:
        D.51083 = cfg->vreg_is_ref;
        vreg.579 = (unsigned int) vreg;
        D.51017 = vreg.579 * 4;
        D.51084 = D.51083 + D.51017;
        D.51085 = *D.51084;
        if (D.51085 != 0) goto <D.51086>; else goto <D.51079>;
        <D.51086>:
        D.51087 = mono_defaults.object_class;
        D.51088 = &D.51087->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.51088, 329, vreg);
        goto <D.51080>;
        <D.51079>:
        D.51089 = mono_defaults.int_class;
        D.51090 = &D.51089->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.51090, 329, vreg);
        <D.51080>:
        goto <D.27783>;
        <D.27784>:
        D.51020 = mono_defaults.int64_class;
        D.51021 = &D.51020->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.51021, 329, vreg);
        goto <D.27783>;
        <D.27785>:
        D.51091 = mono_defaults.double_class;
        D.51092 = &D.51091->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.51092, 329, vreg);
        goto <D.27783>;
        <D.27786>:
        D.51093 = ins->klass;
        D.51094 = &D.51093->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.51094, 329, vreg);
        goto <D.27783>;
        <D.27787>:
        monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12621);
        <D.27783>:
        vreg.579 = (unsigned int) vreg;
        D.51017 = vreg.579 * 4;
        D.51060 = vreg_to_bb + D.51017;
        *D.51060 = -1;
        <D.51068>:
        <D.51066>:
        <D.51064>:
      }
      <D.27781>:
      regindex = regindex + 1;
      <D.27789>:
      if (regindex <= 3) goto <D.27788>; else goto <D.27790>;
      <D.27790>:
    }
    ins = ins->next;
    <D.27792>:
    if (ins != 0B) goto <D.27791>; else goto <D.27793>;
    <D.27793>:
  }
  bb = bb->next_bb;
  <D.27795>:
  if (bb != 0B) goto <D.27794>; else goto <D.27796>;
  <D.27796>:
  i = 0;
  goto <D.27807>;
  <D.27806>:
  {
    struct MonoInst * var;
    struct MonoMethodVar * vmv;

    D.51095 = cfg->varinfo;
    i.585 = (unsigned int) i;
    D.51097 = i.585 * 4;
    D.51098 = D.51095 + D.51097;
    var = *D.51098;
    D.51099 = cfg->vars;
    i.585 = (unsigned int) i;
    D.51100 = i.585 * 56;
    vmv = D.51099 + D.51100;
    D.51101 = var->type;
    D.51102 = (int) D.51101;
    switch (D.51102) <default: <D.51145>, case 1: <D.27799>, case 3: <D.27801>, case 4: <D.27804>, case 5: <D.27802>, case 6: <D.27800>, case 7: <D.27803>>
    <D.27799>:
    <D.27800>:
    <D.27801>:
    <D.27802>:
    <D.27803>:
    <D.27804>:
    D.51103 = mono_arch_is_soft_float ();
    if (D.51103 != 0) goto <D.27805>; else goto <D.51104>;
    <D.51104>:
    D.51105 = var->opcode;
    if (D.51105 != 330) goto <D.51106>; else goto <D.51107>;
    <D.51106>:
    D.51108 = cfg->ret;
    if (D.51108 != var) goto <D.51109>; else goto <D.51110>;
    <D.51109>:
    D.51111 = var->flags;
    D.51112 = (int) D.51111;
    D.51113 = D.51112 & 20;
    if (D.51113 == 0) goto <D.51114>; else goto <D.51115>;
    <D.51114>:
    D.51116 = var->dreg;
    D.51117 = (unsigned int) D.51116;
    D.51118 = D.51117 * 4;
    D.51119 = vreg_to_bb + D.51118;
    D.51120 = *D.51119;
    if (D.51120 != -1) goto <D.51121>; else goto <D.51122>;
    <D.51121>:
    D.51123 = var->klass;
    D.51124 = D.51123->byval_arg.type;
    if (D.51124 != 12) goto <D.51125>; else goto <D.51126>;
    <D.51125>:
    D.51127 = BIT_FIELD_REF <*cfg, 32, 3392>;
    D.51128 = D.51127 & 4194304;
    if (D.51128 == 0) goto <D.51129>; else goto <D.51130>;
    <D.51129>:
    D.51131 = cfg->gsharedvt_info_var;
    if (D.51131 != var) goto <D.51132>; else goto <D.51133>;
    <D.51132>:
    D.51134 = cfg->gsharedvt_locals_var;
    if (D.51134 != var) goto <D.51135>; else goto <D.51136>;
    <D.51135>:
    D.51137 = cfg->lmf_addr_var;
    if (D.51137 != var) goto <D.51138>; else goto <D.51139>;
    <D.51138>:
    D.50964 = cfg->verbose_level;
    D.50972 = D.50964 > 2;
    D.50973 = (long int) D.50972;
    D.50974 = __builtin_expect (D.50973, 0);
    if (D.50974 != 0) goto <D.51140>; else goto <D.51141>;
    <D.51140>:
    D.51116 = var->dreg;
    D.51142 = vmv->idx;
    printf ("CONVERTED R%d(%d) TO VREG.\n", D.51116, D.51142);
    <D.51141>:
    D.51111 = var->flags;
    D.51143 = D.51111 | 2;
    var->flags = D.51143;
    D.51015 = cfg->vreg_to_inst;
    D.51116 = var->dreg;
    D.51117 = (unsigned int) D.51116;
    D.51118 = D.51117 * 4;
    D.51144 = D.51015 + D.51118;
    *D.51144 = 0B;
    <D.51139>:
    <D.51136>:
    <D.51133>:
    <D.51130>:
    <D.51126>:
    <D.51122>:
    <D.51115>:
    <D.51110>:
    <D.51107>:
    goto <D.27805>;
    <D.51145>:
    <D.27805>:
  }
  i = i + 1;
  <D.27807>:
  i.586 = (unsigned int) i;
  D.51147 = cfg->num_varinfo;
  if (i.586 < D.51147) goto <D.27806>; else goto <D.27808>;
  <D.27808>:
  pos = 0;
  i = 0;
  goto <D.27812>;
  <D.27811>:
  {
    struct MonoInst * var;

    D.51095 = cfg->varinfo;
    i.585 = (unsigned int) i;
    D.51097 = i.585 * 4;
    D.51098 = D.51095 + D.51097;
    var = *D.51098;
    if (pos < i) goto <D.51148>; else goto <D.51149>;
    <D.51148>:
    D.51150 = cfg->locals_start;
    i.586 = (unsigned int) i;
    if (D.51150 == i.586) goto <D.51151>; else goto <D.51152>;
    <D.51151>:
    pos.587 = (unsigned int) pos;
    cfg->locals_start = pos.587;
    <D.51152>:
    <D.51149>:
    D.51154 = var->flags;
    D.51155 = (int) D.51154;
    D.51156 = D.51155 & 2;
    if (D.51156 == 0) goto <D.51157>; else goto <D.51158>;
    <D.51157>:
    if (pos < i) goto <D.51159>; else goto <D.51160>;
    <D.51159>:
    D.51095 = cfg->varinfo;
    pos.588 = (unsigned int) pos;
    D.51162 = pos.588 * 4;
    D.51163 = D.51095 + D.51162;
    D.51095 = cfg->varinfo;
    i.585 = (unsigned int) i;
    D.51097 = i.585 * 4;
    D.51098 = D.51095 + D.51097;
    D.51164 = *D.51098;
    *D.51163 = D.51164;
    D.51095 = cfg->varinfo;
    pos.588 = (unsigned int) pos;
    D.51162 = pos.588 * 4;
    D.51163 = D.51095 + D.51162;
    D.51165 = *D.51163;
    D.51165->data.op[0].const_val = pos;
    D.51099 = cfg->vars;
    pos.588 = (unsigned int) pos;
    D.51166 = pos.588 * 56;
    D.51167 = D.51099 + D.51166;
    D.51099 = cfg->vars;
    i.585 = (unsigned int) i;
    D.51100 = i.585 * 56;
    D.51168 = D.51099 + D.51100;
    memcpy (D.51167, D.51168, 56);
    D.51099 = cfg->vars;
    pos.588 = (unsigned int) pos;
    D.51166 = pos.588 * 56;
    D.51167 = D.51099 + D.51166;
    pos.587 = (unsigned int) pos;
    D.51167->idx = pos.587;
    D.51095 = cfg->varinfo;
    pos.588 = (unsigned int) pos;
    D.51162 = pos.588 * 4;
    D.51163 = D.51095 + D.51162;
    D.51165 = *D.51163;
    D.51169 = D.51165->type;
    if (D.51169 == 2) goto <D.51170>; else goto <D.51171>;
    <D.51170>:
    {
      struct MonoInst * var1;

      D.51095 = cfg->varinfo;
      pos.588 = (unsigned int) pos;
      D.51162 = pos.588 * 4;
      D.51163 = D.51095 + D.51162;
      D.51165 = *D.51163;
      D.51173 = D.51165->dreg;
      D.51174 = D.51173 + 1;
      D.51175 = (unsigned int) D.51174;
      D.51013 = cfg->vreg_to_inst_len;
      if (D.51175 < D.51013) goto <D.51176>; else goto <D.51177>;
      <D.51176>:
      D.51015 = cfg->vreg_to_inst;
      D.51095 = cfg->varinfo;
      pos.588 = (unsigned int) pos;
      D.51162 = pos.588 * 4;
      D.51163 = D.51095 + D.51162;
      D.51165 = *D.51163;
      D.51173 = D.51165->dreg;
      D.51178 = (sizetype) D.51173;
      D.51179 = D.51178 + 1;
      D.51180 = D.51179 * 4;
      D.51181 = D.51015 + D.51180;
      iftmp.589 = *D.51181;
      goto <D.51182>;
      <D.51177>:
      iftmp.589 = 0B;
      <D.51182>:
      var1 = iftmp.589;
      var1->data.op[0].const_val = pos;
      D.51095 = cfg->varinfo;
      pos.588 = (unsigned int) pos;
      D.51162 = pos.588 * 4;
      D.51163 = D.51095 + D.51162;
      D.51165 = *D.51163;
      D.51173 = D.51165->dreg;
      D.51184 = D.51173 + 2;
      D.51185 = (unsigned int) D.51184;
      D.51013 = cfg->vreg_to_inst_len;
      if (D.51185 < D.51013) goto <D.51186>; else goto <D.51187>;
      <D.51186>:
      D.51015 = cfg->vreg_to_inst;
      D.51095 = cfg->varinfo;
      pos.588 = (unsigned int) pos;
      D.51162 = pos.588 * 4;
      D.51163 = D.51095 + D.51162;
      D.51165 = *D.51163;
      D.51173 = D.51165->dreg;
      D.51178 = (sizetype) D.51173;
      D.51188 = D.51178 + 2;
      D.51189 = D.51188 * 4;
      D.51190 = D.51015 + D.51189;
      iftmp.590 = *D.51190;
      goto <D.51191>;
      <D.51187>:
      iftmp.590 = 0B;
      <D.51191>:
      var1 = iftmp.590;
      var1->data.op[0].const_val = pos;
    }
    <D.51171>:
    <D.51160>:
    pos = pos + 1;
    <D.51158>:
  }
  i = i + 1;
  <D.27812>:
  i.586 = (unsigned int) i;
  D.51147 = cfg->num_varinfo;
  if (i.586 < D.51147) goto <D.27811>; else goto <D.27813>;
  <D.27813>:
  pos.587 = (unsigned int) pos;
  cfg->num_varinfo = pos.587;
  D.51150 = cfg->locals_start;
  D.51147 = cfg->num_varinfo;
  if (D.51150 > D.51147) goto <D.51192>; else goto <D.51193>;
  <D.51192>:
  D.51147 = cfg->num_varinfo;
  cfg->locals_start = D.51147;
  <D.51193>:
}


memcpy (void * restrict __dest, const void * restrict __src, size_t __len)
{
  void * D.51194;
  unsigned int D.51195;

  D.51195 = __builtin_object_size (__dest, 0);
  D.51194 = __builtin___memcpy_chk (__dest, __src, __len, D.51195);
  return D.51194;
}


mono_spill_global_vars (struct MonoCompile * cfg, gboolean * need_local_opts)
{
  struct MonoInst * * D.51197;
  unsigned int D.51198;
  struct MonoInst * * D.51199;
  short unsigned int D.51200;
  unsigned char D.51203;
  int D.51204;
  int D.51205;
  unsigned char D.51208;
  int D.51209;
  _Bool D.51211;
  long int D.51212;
  long int D.51213;
  struct MonoInst * iftmp.591;
  int D.51217;
  int D.51218;
  unsigned int D.51219;
  unsigned int D.51220;
  struct MonoInst * * D.51223;
  sizetype D.51224;
  sizetype D.51225;
  sizetype D.51226;
  struct MonoInst * * D.51227;
  _Bool D.51229;
  long int D.51230;
  long int D.51231;
  int D.51234;
  int D.51235;
  struct MonoInst * iftmp.592;
  int D.51237;
  unsigned int D.51238;
  sizetype D.51241;
  sizetype D.51242;
  struct MonoInst * * D.51243;
  int D.51247;
  unsigned int D.51248;
  unsigned int D.51249;
  unsigned int D.51250;
  short unsigned int D.51253;
  unsigned char D.51256;
  unsigned char D.51257;
  int D.51258;
  unsigned int D.51261;
  unsigned int D.51262;
  struct MonoType * D.51263;
  int D.51264;
  unsigned int D.51267;
  int D.51270;
  unsigned int D.51271;
  unsigned int D.51272;
  int * D.51273;
  int D.51274;
  struct MonoMemPool * D.51276;
  unsigned int D.51277;
  int D.51280;
  guint32 * D.51281;
  unsigned int D.51282;
  unsigned int D.51283;
  guint32 * D.51284;
  short unsigned int D.51285;
  int D.51286;
  int D.51287;
  int D.51288;
  _Bool D.51289;
  long int D.51290;
  long int D.51291;
  short unsigned int D.51298;
  short unsigned int D.51301;
  int D.51304;
  struct MonoInst * D.51306;
  short unsigned int D.51307;
  int D.51310;
  int D.51311;
  int D.51317;
  unsigned int D.51318;
  unsigned int D.51319;
  int * D.51320;
  int D.51321;
  _Bool D.51323;
  long int D.51324;
  long int D.51325;
  int D.51328;
  int D.51329;
  _Bool D.51334;
  long int D.51335;
  long int D.51336;
  _Bool D.51339;
  long int D.51340;
  long int D.51341;
  _Bool D.51344;
  long int D.51345;
  long int D.51346;
  short unsigned int D.51349;
  unsigned int D.51352;
  int D.51353;
  struct MonoInst * D.51354;
  int D.51355;
  int D.51356;
  const unsigned char * D.51357;
  int D.51358;
  int D.51359;
  unsigned int D.51364;
  int D.51365;
  struct MonoInst * D.51366;
  int D.51367;
  int D.51368;
  unsigned int idx.593;
  unsigned int D.51370;
  unsigned int D.51371;
  int D.51372;
  unsigned int D.51373;
  short unsigned int D.51374;
  int D.51377;
  struct MonoInst * D.51378;
  int D.51379;
  int D.51380;
  int D.51381;
  int D.51382;
  int D.51386;
  _Bool D.51390;
  long int D.51391;
  long int D.51392;
  short unsigned int D.51397;
  int D.51400;
  char D.51401;
  char D.51402;
  short unsigned int D.51404;
  int D.51409;
  int D.51410;
  int D.51411;
  signed char D.51412;
  int D.51413;
  int iftmp.594;
  _Bool D.51421;
  long int D.51422;
  long int D.51423;
  unsigned int D.51428;
  unsigned int D.51431;
  unsigned int D.51432;
  struct MonoInst * * D.51433;
  struct MonoInst * D.51434;
  struct MonoInst * iftmp.595;
  struct MonoType * D.51441;
  unsigned int D.51442;
  short unsigned int D.51443;
  int D.51446;
  const char * D.51452;
  char D.51453;
  guint32 * D.51455;
  unsigned int D.51456;
  int D.51458;
  _Bool D.51460;
  long int D.51461;
  long int D.51462;
  int D.51468;
  short unsigned int D.51469;
  int D.51470;
  int D.51471;
  unsigned int D.51476;
  unsigned int D.51477;
  int D.51478;
  int D.51481;
  struct MonoInst * D.51482;
  int D.51483;
  int D.51484;
  int D.51485;
  int D.51486;
  int D.51487;
  _Bool D.51489;
  long int D.51490;
  long int D.51491;
  int D.51500;
  int D.51501;
  short unsigned int D.51502;
  short unsigned int D.51509;
  int D.51513;
  int D.51515;
  short unsigned int D.51516;
  unsigned char D.51517;
  int D.51518;
  int D.51519;
  unsigned int dreg.596;
  unsigned int D.51525;
  struct MonoInst * * D.51526;
  struct MonoInst * D.51527;
  struct MonoBasicBlock * * D.51530;
  signed char D.51535;
  int D.51538;
  struct MonoInst * D.51539;
  int D.51540;
  int D.51541;
  int D.51542;
  sizetype D.51543;
  const char * D.51544;
  char D.51545;
  int iftmp.597;
  _Bool D.51553;
  long int D.51554;
  long int D.51555;
  unsigned int sreg.598;
  unsigned int sreg.599;
  unsigned int D.51564;
  struct MonoInst * * D.51565;
  struct MonoInst * D.51566;
  struct MonoInst * iftmp.600;
  short unsigned int D.51573;
  int D.51576;
  struct MonoInst * * D.51577;
  struct MonoBasicBlock * * D.51578;
  unsigned char D.51583;
  signed char D.51584;
  int D.51587;
  struct MonoInst * D.51588;
  int D.51589;
  int D.51590;
  _Bool D.51591;
  long int D.51592;
  long int D.51593;
  struct MonoType * D.51596;
  _Bool D.51597;
  long int D.51598;
  long int D.51599;
  guint32 * D.51602;
  unsigned int D.51603;
  _Bool D.51606;
  long int D.51607;
  long int D.51608;
  int D.51613;
  int load_opcode.601;
  int D.51618;
  int D.51620;
  short unsigned int D.51621;
  int D.51622;
  int D.51623;
  int D.51627;
  int D.51629;
  short unsigned int D.51630;
  unsigned int D.51635;
  int D.51636;
  int D.51637;
  _Bool D.51644;
  long int D.51645;
  long int D.51646;
  unsigned int D.51649;
  unsigned int D.51650;
  guint32 * D.51651;
  _Bool D.51652;
  long int D.51653;
  long int D.51654;
  unsigned int lvregs_len.602;
  unsigned int D.51658;
  guint32 * D.51659;
  unsigned int D.51660;
  int D.51663;
  struct MonoInst * D.51664;
  int D.51665;
  int D.51666;
  int D.51667;
  int D.51668;
  int D.51669;
  _Bool D.51671;
  long int D.51672;
  long int D.51673;
  short unsigned int D.51676;
  struct MonoInst * * D.51679;
  struct MonoBasicBlock * * D.51680;
  int D.51687;
  struct MonoInst * D.51688;
  int D.51689;
  int D.51690;
  _Bool D.51693;
  long int D.51694;
  long int D.51695;
  unsigned int prev_dreg.603;
  unsigned int D.51699;
  guint32 * D.51700;
  unsigned int lvregs_len.604;
  unsigned int D.51704;
  guint32 * D.51705;
  unsigned int prev_dreg.605;
  short unsigned int D.51712;
  short unsigned int D.51714;
  short unsigned int D.51716;
  short unsigned int D.51718;
  short unsigned int D.51720;
  short unsigned int D.51722;
  unsigned int D.51728;
  unsigned int D.51729;
  struct MonoBitSet * D.51732;
  struct MonoInst * D.51735;
  struct MonoMethodVar * D.51738;
  unsigned int D.51739;
  int iftmp.606;
  int D.51743;
  unsigned int D.51744;
  unsigned int D.51746;
  unsigned int D.51747;
  struct MonoInst * * D.51748;
  struct MonoInst * D.51749;
  struct MonoInst * iftmp.607;
  unsigned char D.51755;
  int D.51756;
  int D.51757;
  _Bool D.51759;
  long int D.51760;
  long int D.51761;
  struct MonoBitSet * D.51764;
  unsigned int D.51765;
  unsigned int D.51766;
  int i.608;
  int D.51768;
  unsigned int D.51769;
  unsigned int D.51770;
  struct MonoInst * * D.51773;
  struct MonoInst * D.51774;
  struct MonoBasicBlock * * D.51777;
  unsigned int D.51778;
  unsigned int D.51779;
  struct MonoInst * * D.51782;
  struct MonoInst * D.51783;
  struct MonoBasicBlock * * D.51784;
  struct MonoInst * D.51785;
  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.27839>;
      <D.27838>:
      {
        struct MonoInst * ins;

        D.51197 = cfg->varinfo;
        D.51198 = i * 4;
        D.51199 = D.51197 + D.51198;
        ins = *D.51199;
        D.51200 = ins->opcode;
        if (D.51200 != 366) goto <D.51201>; else goto <D.51202>;
        <D.51201>:
        D.51203 = ins->flags;
        D.51204 = (int) D.51203;
        D.51205 = D.51204 & 2;
        if (D.51205 == 0) goto <D.51206>; else goto <D.51207>;
        <D.51206>:
        D.51208 = ins->type;
        D.51209 = (int) D.51208;
        switch (D.51209) <default: <D.27837>, case 2: <D.27834>, case 4: <D.27833>>
        <D.27833>:
        <D.27834>:
        {
          struct MonoInst * tree;

          D.51208 = ins->type;
          if (D.51208 == 4) goto <D.27836>; else goto <D.51210>;
          <D.51210>:
          D.51200 = ins->opcode;
          D.51211 = D.51200 != 367;
          D.51212 = (long int) D.51211;
          D.51213 = __builtin_expect (D.51212, 0);
          if (D.51213 != 0) goto <D.51214>; else goto <D.51215>;
          <D.51214>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12789, "ins->opcode == OP_REGOFFSET");
          <D.51215>:
          D.51217 = ins->dreg;
          D.51218 = D.51217 + 1;
          D.51219 = (unsigned int) D.51218;
          D.51220 = cfg->vreg_to_inst_len;
          if (D.51219 < D.51220) goto <D.51221>; else goto <D.51222>;
          <D.51221>:
          D.51223 = cfg->vreg_to_inst;
          D.51217 = ins->dreg;
          D.51224 = (sizetype) D.51217;
          D.51225 = D.51224 + 1;
          D.51226 = D.51225 * 4;
          D.51227 = D.51223 + D.51226;
          iftmp.591 = *D.51227;
          goto <D.51228>;
          <D.51222>:
          iftmp.591 = 0B;
          <D.51228>:
          tree = iftmp.591;
          D.51229 = tree == 0B;
          D.51230 = (long int) D.51229;
          D.51231 = __builtin_expect (D.51230, 0);
          if (D.51231 != 0) goto <D.51232>; else goto <D.51233>;
          <D.51232>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12792, "tree");
          <D.51233>:
          tree->opcode = 367;
          D.51234 = ins->sreg1;
          tree->sreg1 = D.51234;
          D.51235 = ins->data.op[0].const_val;
          tree->data.op[0].const_val = D.51235;
          D.51217 = ins->dreg;
          D.51237 = D.51217 + 2;
          D.51238 = (unsigned int) D.51237;
          D.51220 = cfg->vreg_to_inst_len;
          if (D.51238 < D.51220) goto <D.51239>; else goto <D.51240>;
          <D.51239>:
          D.51223 = cfg->vreg_to_inst;
          D.51217 = ins->dreg;
          D.51224 = (sizetype) D.51217;
          D.51241 = D.51224 + 2;
          D.51242 = D.51241 * 4;
          D.51243 = D.51223 + D.51242;
          iftmp.592 = *D.51243;
          goto <D.51244>;
          <D.51240>:
          iftmp.592 = 0B;
          <D.51244>:
          tree = iftmp.592;
          D.51229 = tree == 0B;
          D.51230 = (long int) D.51229;
          D.51231 = __builtin_expect (D.51230, 0);
          if (D.51231 != 0) goto <D.51245>; else goto <D.51246>;
          <D.51245>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12798, "tree");
          <D.51246>:
          tree->opcode = 367;
          D.51234 = ins->sreg1;
          tree->sreg1 = D.51234;
          D.51235 = ins->data.op[0].const_val;
          D.51247 = D.51235 + 4;
          tree->data.op[0].const_val = D.51247;
          goto <D.27836>;
        }
        <D.27837>:
        goto <D.27836>;
        <D.27836>:
        <D.51207>:
        <D.51202>:
      }
      i = i + 1;
      <D.27839>:
      D.51248 = cfg->num_varinfo;
      if (D.51248 > i) goto <D.27838>; else goto <D.27840>;
      <D.27840>:
      D.51249 = BIT_FIELD_REF <*cfg, 32, 3424>;
      D.51250 = D.51249 & 128;
      if (D.51250 != 0) goto <D.51251>; else goto <D.51252>;
      <D.51251>:
      i = 0;
      goto <D.27843>;
      <D.27842>:
      {
        struct MonoInst * ins;

        D.51197 = cfg->varinfo;
        D.51198 = i * 4;
        D.51199 = D.51197 + D.51198;
        ins = *D.51199;
        D.51253 = ins->opcode;
        if (D.51253 == 366) goto <D.51254>; else goto <D.51255>;
        <D.51254>:
        D.51256 = ins->flags;
        D.51257 = D.51256 | 128;
        ins->flags = D.51257;
        <D.51255>:
      }
      i = i + 1;
      <D.27843>:
      D.51248 = cfg->num_varinfo;
      if (D.51248 > i) goto <D.27842>; else goto <D.27844>;
      <D.27844>:
      <D.51252>:
      D.51258 = cfg->gsharedvt;
      if (D.51258 != 0) goto <D.51259>; else goto <D.51260>;
      <D.51259>:
      D.51261 = cfg->next_vreg;
      D.51262 = D.51261 * 4;
      gsharedvt_vreg_to_idx = monoeg_malloc0 (D.51262);
      i = 0;
      goto <D.27848>;
      <D.27847>:
      {
        struct MonoInst * ins;
        int idx;

        D.51197 = cfg->varinfo;
        D.51198 = i * 4;
        D.51199 = D.51197 + D.51198;
        ins = *D.51199;
        D.51263 = ins->data.op[1].vtype;
        D.51264 = mini_is_gsharedvt_variable_type (cfg, D.51263);
        if (D.51264 != 0) goto <D.51265>; else goto <D.51266>;
        <D.51265>:
        D.51267 = cfg->locals_start;
        if (D.51267 <= i) goto <D.51268>; else goto <D.51269>;
        <D.51268>:
        D.51263 = ins->data.op[1].vtype;
        idx = get_gsharedvt_info_slot (cfg, D.51263, 21);
        D.51270 = ins->dreg;
        D.51271 = (unsigned int) D.51270;
        D.51272 = D.51271 * 4;
        D.51273 = gsharedvt_vreg_to_idx + D.51272;
        D.51274 = idx + 1;
        *D.51273 = D.51274;
        ins->opcode = 331;
        ins->data.op[1].const_val = idx;
        goto <D.51275>;
        <D.51269>:
        D.51270 = ins->dreg;
        D.51271 = (unsigned int) D.51270;
        D.51272 = D.51271 * 4;
        D.51273 = gsharedvt_vreg_to_idx + D.51272;
        *D.51273 = -1;
        ins->opcode = 332;
        <D.51275>:
        <D.51266>:
      }
      i = i + 1;
      <D.27848>:
      D.51248 = cfg->num_varinfo;
      if (D.51248 > i) goto <D.27847>; else goto <D.27849>;
      <D.27849>:
      <D.51260>:
      D.51261 = cfg->next_vreg;
      orig_next_vreg = (int) D.51261;
      D.51276 = cfg->mempool;
      D.51261 = cfg->next_vreg;
      D.51262 = D.51261 * 4;
      vreg_to_lvreg = mono_mempool_alloc0 (D.51276, D.51262);
      D.51276 = cfg->mempool;
      lvregs = mono_mempool_alloc (D.51276, 4096);
      lvregs_len = 0;
      D.51261 = cfg->next_vreg;
      D.51262 = D.51261 * 4;
      live_range_start = monoeg_malloc0 (D.51262);
      D.51261 = cfg->next_vreg;
      D.51262 = D.51261 * 4;
      live_range_end = monoeg_malloc0 (D.51262);
      D.51261 = cfg->next_vreg;
      D.51262 = D.51261 * 4;
      live_range_start_bb = monoeg_malloc (D.51262);
      D.51261 = cfg->next_vreg;
      D.51262 = D.51261 * 4;
      live_range_end_bb = monoeg_malloc (D.51262);
      bb = cfg->bb_entry;
      goto <D.27908>;
      <D.27907>:
      {
        struct MonoInst * ins;

        D.51277 = cfg->verbose_level;
        if (D.51277 > 2) goto <D.51278>; else goto <D.51279>;
        <D.51278>:
        D.51280 = bb->block_num;
        printf ("\nSPILL BLOCK %d:\n", D.51280);
        <D.51279>:
        i = 0;
        goto <D.27852>;
        <D.27851>:
        D.51198 = i * 4;
        D.51281 = lvregs + D.51198;
        D.51282 = *D.51281;
        D.51283 = D.51282 * 4;
        D.51284 = vreg_to_lvreg + D.51283;
        *D.51284 = 0;
        i = i + 1;
        <D.27852>:
        if (i < lvregs_len) goto <D.27851>; else goto <D.27853>;
        <D.27853>:
        lvregs_len = 0;
        cfg->cbb = bb;
        ins = bb->code;
        goto <D.27900>;
        <D.27899>:
        {
          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.51285 = ins->opcode;
              D.51286 = (int) D.51285;
              D.51287 = D.51286 + -313;
              D.51288 = D.51287 * 4;
              spec = &ins_info[D.51288];
              D.51277 = cfg->verbose_level;
              D.51289 = D.51277 > 2;
              D.51290 = (long int) D.51289;
              D.51291 = __builtin_expect (D.51290, 0);
              if (D.51291 != 0) goto <D.51292>; else goto <D.51293>;
              <D.51292>:
              mono_print_ins (ins);
              <D.51293>:
              D.51285 = ins->opcode;
              if (D.51285 == 316) goto <D.51294>; else goto <D.51295>;
              <D.51294>:
              // predicted unlikely by continue predictor.
              goto <D.27864>;
              <D.51295>:
              D.51285 = ins->opcode;
              if (D.51285 == 314) goto <D.51296>; else goto <D.51297>;
              <D.51296>:
              {
                struct MonoInst * var;

                var = ins->data.op[0].p;
                D.51298 = var->opcode;
                if (D.51298 == 368) goto <D.51299>; else goto <D.51300>;
                <D.51299>:
                {
                  struct MonoInst * vtaddr;

                  vtaddr = var->data.op[0].src;
                  D.51301 = vtaddr->opcode;
                  if (D.51301 == 366) goto <D.51302>; else goto <D.51303>;
                  <D.51302>:
                  ins->opcode = 424;
                  D.51304 = vtaddr->dreg;
                  ins->sreg1 = D.51304;
                  goto <D.51305>;
                  <D.51303>:
                  D.51306 = var->data.op[0].src;
                  D.51307 = D.51306->opcode;
                  if (D.51307 == 367) goto <D.51308>; else goto <D.51309>;
                  <D.51308>:
                  ins->opcode = 388;
                  D.51310 = vtaddr->sreg1;
                  ins->sreg1 = D.51310;
                  D.51311 = vtaddr->data.op[0].const_val;
                  ins->data.op[0].const_val = D.51311;
                  goto <D.51312>;
                  <D.51309>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12918);
                  <D.51312>:
                  <D.51305>:
                }
                goto <D.51313>;
                <D.51300>:
                D.51258 = cfg->gsharedvt;
                if (D.51258 != 0) goto <D.51316>; else goto <D.51314>;
                <D.51316>:
                D.51317 = var->dreg;
                D.51318 = (unsigned int) D.51317;
                D.51319 = D.51318 * 4;
                D.51320 = gsharedvt_vreg_to_idx + D.51319;
                D.51321 = *D.51320;
                if (D.51321 < 0) goto <D.51322>; else goto <D.51314>;
                <D.51322>:
                D.51298 = var->opcode;
                D.51323 = D.51298 != 332;
                D.51324 = (long int) D.51323;
                D.51325 = __builtin_expect (D.51324, 0);
                if (D.51325 != 0) goto <D.51326>; else goto <D.51327>;
                <D.51326>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12921, "var->opcode == OP_GSHAREDVT_ARG_REGOFFSET");
                <D.51327>:
                ins->opcode = 388;
                D.51328 = var->sreg1;
                ins->sreg1 = D.51328;
                D.51329 = var->data.op[0].const_val;
                ins->data.op[0].const_val = D.51329;
                goto <D.51315>;
                <D.51314>:
                D.51258 = cfg->gsharedvt;
                if (D.51258 != 0) goto <D.51332>; else goto <D.51330>;
                <D.51332>:
                D.51317 = var->dreg;
                D.51318 = (unsigned int) D.51317;
                D.51319 = D.51318 * 4;
                D.51320 = gsharedvt_vreg_to_idx + D.51319;
                D.51321 = *D.51320;
                if (D.51321 != 0) goto <D.51333>; else goto <D.51330>;
                <D.51333>:
                {
                  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.51317 = var->dreg;
                  D.51318 = (unsigned int) D.51317;
                  D.51319 = D.51318 * 4;
                  D.51320 = gsharedvt_vreg_to_idx + D.51319;
                  D.51321 = *D.51320;
                  idx = D.51321 + -1;
                  info_var = cfg->gsharedvt_info_var;
                  locals_var = cfg->gsharedvt_locals_var;
                  D.51298 = var->opcode;
                  D.51334 = D.51298 != 331;
                  D.51335 = (long int) D.51334;
                  D.51336 = __builtin_expect (D.51335, 0);
                  if (D.51336 != 0) goto <D.51337>; else goto <D.51338>;
                  <D.51337>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12938, "var->opcode == OP_GSHAREDVT_LOCAL");
                  <D.51338>:
                  D.51339 = info_var == 0B;
                  D.51340 = (long int) D.51339;
                  D.51341 = __builtin_expect (D.51340, 0);
                  if (D.51341 != 0) goto <D.51342>; else goto <D.51343>;
                  <D.51342>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12940, "info_var");
                  <D.51343>:
                  D.51344 = locals_var == 0B;
                  D.51345 = (long int) D.51344;
                  D.51346 = __builtin_expect (D.51345, 0);
                  if (D.51346 != 0) goto <D.51347>; else goto <D.51348>;
                  <D.51347>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12941, "locals_var");
                  <D.51348>:
                  cfg->gsharedvt_locals_var_ins = 0B;
                  D.51349 = info_var->opcode;
                  if (D.51349 == 367) goto <D.51350>; else goto <D.51351>;
                  <D.51350>:
                  D.51352 = alloc_ireg (cfg);
                  reg1 = (int) D.51352;
                  D.51276 = cfg->mempool;
                  load = mono_mempool_alloc (D.51276, 56);
                  load->data.op[1].const_val = 0;
                  D.51353 = load->data.op[1].const_val;
                  load->data.op[0].const_val = D.51353;
                  load->prev = 0B;
                  D.51354 = load->prev;
                  load->next = D.51354;
                  load->opcode = 388;
                  load->flags = 0;
                  load->type = 0;
                  load->dreg = -1;
                  load->sreg3 = -1;
                  D.51355 = load->sreg3;
                  load->sreg2 = D.51355;
                  D.51356 = load->sreg2;
                  load->sreg1 = D.51356;
                  D.51357 = cfg->ip;
                  load->cil_code = D.51357;
                  load->dreg = reg1;
                  D.51358 = info_var->sreg1;
                  load->sreg1 = D.51358;
                  D.51359 = info_var->data.op[0].const_val;
                  load->data.op[0].const_val = D.51359;
                  load->type = 1;
                  goto <D.51360>;
                  <D.51351>:
                  D.51349 = info_var->opcode;
                  if (D.51349 == 366) goto <D.51361>; else goto <D.51362>;
                  <D.51361>:
                  load = 0B;
                  reg1 = info_var->dreg;
                  goto <D.51363>;
                  <D.51362>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12954);
                  <D.51363>:
                  <D.51360>:
                  D.51364 = alloc_ireg (cfg);
                  reg2 = (int) D.51364;
                  D.51276 = cfg->mempool;
                  load2 = mono_mempool_alloc (D.51276, 56);
                  load2->data.op[1].const_val = 0;
                  D.51365 = load2->data.op[1].const_val;
                  load2->data.op[0].const_val = D.51365;
                  load2->prev = 0B;
                  D.51366 = load2->prev;
                  load2->next = D.51366;
                  load2->opcode = 393;
                  load2->flags = 0;
                  load2->type = 0;
                  load2->dreg = -1;
                  load2->sreg3 = -1;
                  D.51367 = load2->sreg3;
                  load2->sreg2 = D.51367;
                  D.51368 = load2->sreg2;
                  load2->sreg1 = D.51368;
                  D.51357 = cfg->ip;
                  load2->cil_code = D.51357;
                  load2->dreg = reg2;
                  load2->sreg1 = reg1;
                  idx.593 = (unsigned int) idx;
                  D.51370 = idx.593 + 1;
                  D.51371 = D.51370 * 4;
                  D.51372 = (int) D.51371;
                  load2->data.op[0].const_val = D.51372;
                  load2->type = 1;
                  D.51373 = alloc_ireg (cfg);
                  reg3 = (int) D.51373;
                  D.51374 = locals_var->opcode;
                  if (D.51374 == 367) goto <D.51375>; else goto <D.51376>;
                  <D.51375>:
                  D.51276 = cfg->mempool;
                  load3 = mono_mempool_alloc (D.51276, 56);
                  load3->data.op[1].const_val = 0;
                  D.51377 = load3->data.op[1].const_val;
                  load3->data.op[0].const_val = D.51377;
                  load3->prev = 0B;
                  D.51378 = load3->prev;
                  load3->next = D.51378;
                  load3->opcode = 388;
                  load3->flags = 0;
                  load3->type = 0;
                  load3->dreg = -1;
                  load3->sreg3 = -1;
                  D.51379 = load3->sreg3;
                  load3->sreg2 = D.51379;
                  D.51380 = load3->sreg2;
                  load3->sreg1 = D.51380;
                  D.51357 = cfg->ip;
                  load3->cil_code = D.51357;
                  load3->dreg = reg3;
                  D.51381 = locals_var->sreg1;
                  load3->sreg1 = D.51381;
                  D.51382 = locals_var->data.op[0].const_val;
                  load3->data.op[0].const_val = D.51382;
                  load3->type = 1;
                  goto <D.51383>;
                  <D.51376>:
                  D.51374 = locals_var->opcode;
                  if (D.51374 == 366) goto <D.51384>; else goto <D.51385>;
                  <D.51384>:
                  D.51276 = cfg->mempool;
                  load3 = mono_mempool_alloc (D.51276, 56);
                  load3->data.op[1].const_val = 0;
                  D.51377 = load3->data.op[1].const_val;
                  load3->data.op[0].const_val = D.51377;
                  load3->prev = 0B;
                  D.51378 = load3->prev;
                  load3->next = D.51378;
                  load3->opcode = 424;
                  load3->flags = 0;
                  load3->type = 0;
                  load3->dreg = -1;
                  load3->sreg3 = -1;
                  D.51379 = load3->sreg3;
                  load3->sreg2 = D.51379;
                  D.51380 = load3->sreg2;
                  load3->sreg1 = D.51380;
                  D.51357 = cfg->ip;
                  load3->cil_code = D.51357;
                  load3->dreg = reg3;
                  D.51386 = locals_var->dreg;
                  load3->sreg1 = D.51386;
                  goto <D.51387>;
                  <D.51385>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12965);
                  <D.51387>:
                  <D.51383>:
                  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.51388>; else goto <D.51389>;
                  <D.51388>:
                  mono_bblock_insert_before_ins (bb, load2, load);
                  <D.51389>:
                }
                goto <D.51331>;
                <D.51330>:
                D.51298 = var->opcode;
                D.51390 = D.51298 != 367;
                D.51391 = (long int) D.51390;
                D.51392 = __builtin_expect (D.51391, 0);
                if (D.51392 != 0) goto <D.51393>; else goto <D.51394>;
                <D.51393>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12977, "var->opcode == OP_REGOFFSET");
                <D.51394>:
                ins->opcode = 429;
                D.51328 = var->sreg1;
                ins->sreg1 = D.51328;
                D.51329 = var->data.op[0].const_val;
                ins->data.op[1].const_val = D.51329;
                <D.51331>:
                <D.51315>:
                <D.51313>:
                *need_local_opts = 1;
                D.51285 = ins->opcode;
                D.51286 = (int) D.51285;
                D.51287 = D.51286 + -313;
                D.51288 = D.51287 * 4;
                spec = &ins_info[D.51288];
              }
              <D.51297>:
              D.51285 = ins->opcode;
              if (D.51285 <= 312) goto <D.51395>; else goto <D.51396>;
              <D.51395>:
              mono_print_ins (ins);
              monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12990);
              <D.51396>:
              D.51285 = ins->opcode;
              D.51397 = D.51285 + 65162;
              if (D.51397 <= 13) goto <D.51398>; else goto <D.51399>;
              <D.51398>:
              tmp_reg = ins->dreg;
              D.51400 = ins->sreg2;
              ins->dreg = D.51400;
              ins->sreg2 = tmp_reg;
              store = 1;
              spec2[0] = 32;
              D.51401 = MEM[(const char *)spec + 1B];
              spec2[1] = D.51401;
              D.51402 = *spec;
              spec2[2] = D.51402;
              spec2[3] = 32;
              spec = &spec2;
              goto <D.51403>;
              <D.51399>:
              D.51285 = ins->opcode;
              D.51404 = D.51285 + 65126;
              if (D.51404 <= 6) goto <D.51405>; else goto <D.51406>;
              <D.51405>:
              monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 13010);
              <D.51406>:
              store = 0;
              <D.51403>:
              no_lvreg = 0;
              D.51277 = cfg->verbose_level;
              D.51289 = D.51277 > 2;
              D.51290 = (long int) D.51289;
              D.51291 = __builtin_expect (D.51290, 0);
              if (D.51291 != 0) goto <D.51407>; else goto <D.51408>;
              <D.51407>:
              D.51409 = ins->dreg;
              printf ("\t %.3s %d", spec, D.51409);
              D.51410 = ins->sreg1;
              sregs[0] = D.51410;
              D.51400 = ins->sreg2;
              sregs[1] = D.51400;
              D.51411 = ins->sreg3;
              sregs[2] = D.51411;
              D.51285 = ins->opcode;
              D.51286 = (int) D.51285;
              D.51287 = D.51286 + -313;
              D.51412 = ins_sreg_counts[D.51287];
              num_sregs = (int) D.51412;
              srcindex = 0;
              goto <D.27877>;
              <D.27876>:
              D.51413 = sregs[srcindex];
              printf (" %d", D.51413);
              srcindex = srcindex + 1;
              <D.27877>:
              if (srcindex < num_sregs) goto <D.27876>; else goto <D.27878>;
              <D.27878>:
              printf ("\n");
              <D.51408>:
              D.51402 = *spec;
              regtype = (int) D.51402;
              D.51409 = ins->dreg;
              if (D.51409 != -1) goto <D.51415>; else goto <D.51419>;
              <D.51419>:
              if (regtype != 32) goto <D.51415>; else goto <D.51416>;
              <D.51415>:
              D.51409 = ins->dreg;
              if (D.51409 == -1) goto <D.51417>; else goto <D.51420>;
              <D.51420>:
              if (regtype == 32) goto <D.51417>; else goto <D.51416>;
              <D.51417>:
              iftmp.594 = 1;
              goto <D.51418>;
              <D.51416>:
              iftmp.594 = 0;
              <D.51418>:
              D.51421 = iftmp.594 != 0;
              D.51422 = (long int) D.51421;
              D.51423 = __builtin_expect (D.51422, 0);
              if (D.51423 != 0) goto <D.51424>; else goto <D.51425>;
              <D.51424>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13027, "((ins->dreg == -1) && (regtype == \' \')) || ((ins->dreg != -1) && (regtype != \' \'))");
              <D.51425>:
              prev_dreg = -1;
              D.51409 = ins->dreg;
              if (D.51409 != -1) goto <D.51426>; else goto <D.51427>;
              <D.51426>:
              D.51409 = ins->dreg;
              D.51428 = (unsigned int) D.51409;
              D.51220 = cfg->vreg_to_inst_len;
              if (D.51428 < D.51220) goto <D.51429>; else goto <D.51430>;
              <D.51429>:
              D.51223 = cfg->vreg_to_inst;
              D.51409 = ins->dreg;
              D.51431 = (unsigned int) D.51409;
              D.51432 = D.51431 * 4;
              D.51433 = D.51223 + D.51432;
              D.51434 = *D.51433;
              if (D.51434 != 0B) goto <D.51435>; else goto <D.51436>;
              <D.51435>:
              {
                struct MonoInst * var;
                struct MonoInst * store_ins;
                int store_opcode;
                struct MonoInst * def_ins;
                int dreg;

                D.51409 = ins->dreg;
                D.51428 = (unsigned int) D.51409;
                D.51220 = cfg->vreg_to_inst_len;
                if (D.51428 < D.51220) goto <D.51438>; else goto <D.51439>;
                <D.51438>:
                D.51223 = cfg->vreg_to_inst;
                D.51409 = ins->dreg;
                D.51431 = (unsigned int) D.51409;
                D.51432 = D.51431 * 4;
                D.51433 = D.51223 + D.51432;
                iftmp.595 = *D.51433;
                goto <D.51440>;
                <D.51439>:
                iftmp.595 = 0B;
                <D.51440>:
                var = iftmp.595;
                def_ins = ins;
                dreg = ins->dreg;
                D.51441 = var->data.op[1].vtype;
                D.51442 = mono_type_to_store_membase (cfg, D.51441);
                store_opcode = (int) D.51442;
                D.51443 = var->opcode;
                if (D.51443 == 366) goto <D.51444>; else goto <D.51445>;
                <D.51444>:
                D.51446 = var->dreg;
                ins->dreg = D.51446;
                goto <D.51447>;
                <D.51445>:
                D.51409 = ins->dreg;
                D.51410 = ins->sreg1;
                if (D.51409 == D.51410) goto <D.51450>; else goto <D.51448>;
                <D.51450>:
                D.51402 = *spec;
                if (D.51402 == 105) goto <D.51451>; else goto <D.51448>;
                <D.51451>:
                D.51452 = spec + 1;
                D.51453 = *D.51452;
                if (D.51453 == 105) goto <D.51454>; else goto <D.51448>;
                <D.51454>:
                D.51409 = ins->dreg;
                D.51431 = (unsigned int) D.51409;
                D.51432 = D.51431 * 4;
                D.51455 = vreg_to_lvreg + D.51432;
                D.51456 = *D.51455;
                if (D.51456 == 0) goto <D.51457>; else goto <D.51448>;
                <D.51457>:
                D.51285 = ins->opcode;
                D.51286 = (int) D.51285;
                D.51458 = op_to_op_dest_membase (store_opcode, D.51286);
                if (D.51458 != -1) goto <D.51459>; else goto <D.51448>;
                <D.51459>:
                D.51443 = var->opcode;
                D.51460 = D.51443 != 367;
                D.51461 = (long int) D.51460;
                D.51462 = __builtin_expect (D.51461, 0);
                if (D.51462 != 0) goto <D.51463>; else goto <D.51464>;
                <D.51463>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13045, "var->opcode == OP_REGOFFSET");
                <D.51464>:
                D.51285 = ins->opcode;
                if (D.51285 == 424) goto <D.51465>; else goto <D.51466>;
                <D.51465>:
                ins->opcode = 316;
                ins->dreg = -1;
                ins->sreg3 = -1;
                D.51411 = ins->sreg3;
                ins->sreg2 = D.51411;
                D.51400 = ins->sreg2;
                ins->sreg1 = D.51400;
                def_ins = 0B;
                goto <D.51467>;
                <D.51466>:
                D.51285 = ins->opcode;
                D.51286 = (int) D.51285;
                D.51468 = op_to_op_dest_membase (store_opcode, D.51286);
                D.51469 = (short unsigned int) D.51468;
                ins->opcode = D.51469;
                D.51470 = var->sreg1;
                ins->sreg1 = D.51470;
                D.51471 = var->data.op[0].const_val;
                ins->data.op[0].const_val = D.51471;
                ins->dreg = -1;
                <D.51467>:
                D.51285 = ins->opcode;
                D.51286 = (int) D.51285;
                D.51287 = D.51286 + -313;
                D.51288 = D.51287 * 4;
                spec = &ins_info[D.51288];
                goto <D.51449>;
                <D.51448>:
                {
                  guint32 lvreg;

                  D.51443 = var->opcode;
                  D.51460 = D.51443 != 367;
                  D.51461 = (long int) D.51460;
                  D.51462 = __builtin_expect (D.51461, 0);
                  if (D.51462 != 0) goto <D.51472>; else goto <D.51473>;
                  <D.51472>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13059, "var->opcode == OP_REGOFFSET");
                  <D.51473>:
                  prev_dreg = ins->dreg;
                  D.51409 = ins->dreg;
                  D.51431 = (unsigned int) D.51409;
                  D.51432 = D.51431 * 4;
                  D.51455 = vreg_to_lvreg + D.51432;
                  *D.51455 = 0;
                  lvreg = 0;
                  if (0 != 0) goto <D.51474>; else goto <D.51475>;
                  <D.51474>:
                  regtype = 108;
                  store_opcode = 378;
                  <D.51475>:
                  D.51476 = stacktypes[regtype];
                  D.51477 = alloc_dreg (cfg, D.51476);
                  D.51478 = (int) D.51477;
                  ins->dreg = D.51478;
                  if (regtype == 108) goto <D.51479>; else goto <D.51480>;
                  <D.51479>:
                  D.51276 = cfg->mempool;
                  store_ins = mono_mempool_alloc (D.51276, 56);
                  store_ins->data.op[1].const_val = 0;
                  D.51481 = store_ins->data.op[1].const_val;
                  store_ins->data.op[0].const_val = D.51481;
                  store_ins->prev = 0B;
                  D.51482 = store_ins->prev;
                  store_ins->next = D.51482;
                  store_ins->opcode = 377;
                  store_ins->flags = 0;
                  store_ins->type = 0;
                  store_ins->dreg = -1;
                  store_ins->sreg3 = -1;
                  D.51483 = store_ins->sreg3;
                  store_ins->sreg2 = D.51483;
                  D.51484 = store_ins->sreg2;
                  store_ins->sreg1 = D.51484;
                  D.51357 = cfg->ip;
                  store_ins->cil_code = D.51357;
                  D.51409 = ins->dreg;
                  D.51485 = D.51409 + 1;
                  store_ins->sreg1 = D.51485;
                  D.51470 = var->sreg1;
                  store_ins->dreg = D.51470;
                  D.51471 = var->data.op[0].const_val;
                  store_ins->data.op[0].const_val = D.51471;
                  mono_bblock_insert_after_ins (bb, ins, store_ins);
                  D.51276 = cfg->mempool;
                  store_ins = mono_mempool_alloc (D.51276, 56);
                  store_ins->data.op[1].const_val = 0;
                  D.51481 = store_ins->data.op[1].const_val;
                  store_ins->data.op[0].const_val = D.51481;
                  store_ins->prev = 0B;
                  D.51482 = store_ins->prev;
                  store_ins->next = D.51482;
                  store_ins->opcode = 377;
                  store_ins->flags = 0;
                  store_ins->type = 0;
                  store_ins->dreg = -1;
                  store_ins->sreg3 = -1;
                  D.51483 = store_ins->sreg3;
                  store_ins->sreg2 = D.51483;
                  D.51484 = store_ins->sreg2;
                  store_ins->sreg1 = D.51484;
                  D.51357 = cfg->ip;
                  store_ins->cil_code = D.51357;
                  D.51409 = ins->dreg;
                  D.51486 = D.51409 + 2;
                  store_ins->sreg1 = D.51486;
                  D.51470 = var->sreg1;
                  store_ins->dreg = D.51470;
                  D.51471 = var->data.op[0].const_val;
                  D.51487 = D.51471 + 4;
                  store_ins->data.op[0].const_val = D.51487;
                  mono_bblock_insert_after_ins (bb, ins, store_ins);
                  def_ins = store_ins;
                  goto <D.51488>;
                  <D.51480>:
                  D.51489 = store_opcode == 387;
                  D.51490 = (long int) D.51489;
                  D.51491 = __builtin_expect (D.51490, 0);
                  if (D.51491 != 0) goto <D.51492>; else goto <D.51493>;
                  <D.51492>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13086, "store_opcode != OP_STOREV_MEMBASE");
                  <D.51493>:
                  if (lvreg == 0) goto <D.51497>; else goto <D.51494>;
                  <D.51497>:
                  D.51285 = ins->opcode;
                  if (D.51285 == 362) goto <D.51495>; else goto <D.51498>;
                  <D.51498>:
                  D.51285 = ins->opcode;
                  if (D.51285 == 363) goto <D.51499>; else goto <D.51494>;
                  <D.51499>:
                  D.51500 = ins->data.op[0].const_val;
                  if (D.51500 == 0) goto <D.51495>; else goto <D.51494>;
                  <D.51495>:
                  D.51501 = store_membase_reg_to_store_membase_imm (store_opcode);
                  D.51502 = (short unsigned int) D.51501;
                  ins->opcode = D.51502;
                  D.51500 = ins->data.op[0].const_val;
                  ins->data.op[1].const_val = D.51500;
                  D.51470 = var->sreg1;
                  ins->dreg = D.51470;
                  D.51471 = var->data.op[0].const_val;
                  ins->data.op[0].const_val = D.51471;
                  D.51285 = ins->opcode;
                  D.51286 = (int) D.51285;
                  D.51287 = D.51286 + -313;
                  D.51288 = D.51287 * 4;
                  spec = &ins_info[D.51288];
                  goto <D.51496>;
                  <D.51494>:
                  if (lvreg == 0) goto <D.51506>; else goto <D.51503>;
                  <D.51506>:
                  D.51285 = ins->opcode;
                  if (D.51285 == 424) goto <D.51504>; else goto <D.51507>;
                  <D.51507>:
                  D.51285 = ins->opcode;
                  if (D.51285 == 426) goto <D.51504>; else goto <D.51508>;
                  <D.51508>:
                  D.51285 = ins->opcode;
                  if (D.51285 == 425) goto <D.51504>; else goto <D.51503>;
                  <D.51504>:
                  D.51509 = (short unsigned int) store_opcode;
                  ins->opcode = D.51509;
                  D.51470 = var->sreg1;
                  ins->dreg = D.51470;
                  D.51471 = var->data.op[0].const_val;
                  ins->data.op[0].const_val = D.51471;
                  no_lvreg = 1;
                  tmp_reg = ins->dreg;
                  D.51400 = ins->sreg2;
                  ins->dreg = D.51400;
                  ins->sreg2 = tmp_reg;
                  store = 1;
                  spec2[0] = 32;
                  D.51401 = MEM[(const char *)spec + 1B];
                  spec2[1] = D.51401;
                  D.51402 = *spec;
                  spec2[2] = D.51402;
                  spec2[3] = 32;
                  spec = &spec2;
                  goto <D.51505>;
                  <D.51503>:
                  if (lvreg == 0) goto <D.51512>; else goto <D.51510>;
                  <D.51512>:
                  D.51285 = ins->opcode;
                  D.51286 = (int) D.51285;
                  D.51513 = op_to_op_store_membase (store_opcode, D.51286);
                  if (D.51513 != -1) goto <D.51514>; else goto <D.51510>;
                  <D.51514>:
                  D.51285 = ins->opcode;
                  D.51286 = (int) D.51285;
                  D.51515 = op_to_op_store_membase (store_opcode, D.51286);
                  D.51516 = (short unsigned int) D.51515;
                  ins->opcode = D.51516;
                  ins->dreg = -1;
                  D.51470 = var->sreg1;
                  ins->sreg1 = D.51470;
                  D.51471 = var->data.op[0].const_val;
                  ins->data.op[0].const_val = D.51471;
                  D.51285 = ins->opcode;
                  D.51286 = (int) D.51285;
                  D.51287 = D.51286 + -313;
                  D.51288 = D.51287 * 4;
                  spec = &ins_info[D.51288];
                  goto <D.51511>;
                  <D.51510>:
                  D.51276 = cfg->mempool;
                  store_ins = mono_mempool_alloc (D.51276, 56);
                  store_ins->data.op[1].const_val = 0;
                  D.51481 = store_ins->data.op[1].const_val;
                  store_ins->data.op[0].const_val = D.51481;
                  store_ins->prev = 0B;
                  D.51482 = store_ins->prev;
                  store_ins->next = D.51482;
                  D.51509 = (short unsigned int) store_opcode;
                  store_ins->opcode = D.51509;
                  store_ins->flags = 0;
                  store_ins->type = 0;
                  store_ins->dreg = -1;
                  store_ins->sreg3 = -1;
                  D.51483 = store_ins->sreg3;
                  store_ins->sreg2 = D.51483;
                  D.51484 = store_ins->sreg2;
                  store_ins->sreg1 = D.51484;
                  D.51357 = cfg->ip;
                  store_ins->cil_code = D.51357;
                  D.51409 = ins->dreg;
                  store_ins->sreg1 = D.51409;
                  D.51470 = var->sreg1;
                  store_ins->dreg = D.51470;
                  D.51471 = var->data.op[0].const_val;
                  store_ins->data.op[0].const_val = D.51471;
                  mono_bblock_insert_after_ins (bb, ins, store_ins);
                  def_ins = store_ins;
                  D.51517 = var->flags;
                  D.51518 = (int) D.51517;
                  D.51519 = D.51518 & 20;
                  if (D.51519 == 0) goto <D.51520>; else goto <D.51521>;
                  <D.51520>:
                  dest_has_lvreg = 1;
                  <D.51521>:
                  <D.51511>:
                  <D.51505>:
                  <D.51496>:
                  <D.51488>:
                }
                <D.51449>:
                <D.51447>:
                if (def_ins != 0B) goto <D.51522>; else goto <D.51523>;
                <D.51522>:
                dreg.596 = (unsigned int) dreg;
                D.51525 = dreg.596 * 4;
                D.51526 = live_range_start + D.51525;
                D.51527 = *D.51526;
                if (D.51527 == 0B) goto <D.51528>; else goto <D.51529>;
                <D.51528>:
                dreg.596 = (unsigned int) dreg;
                D.51525 = dreg.596 * 4;
                D.51526 = live_range_start + D.51525;
                *D.51526 = def_ins;
                dreg.596 = (unsigned int) dreg;
                D.51525 = dreg.596 * 4;
                D.51530 = live_range_start_bb + D.51525;
                *D.51530 = bb;
                <D.51529>:
                <D.51523>:
                D.51249 = BIT_FIELD_REF <*cfg, 32, 3424>;
                D.51250 = D.51249 & 128;
                if (D.51250 != 0) goto <D.51531>; else goto <D.51532>;
                <D.51531>:
                if (def_ins != 0B) goto <D.51533>; else goto <D.51534>;
                <D.51533>:
                D.51517 = var->flags;
                D.51535 = (signed char) D.51517;
                if (D.51535 < 0) goto <D.51536>; else goto <D.51537>;
                <D.51536>:
                {
                  struct MonoInst * tmp;

                  D.51276 = cfg->mempool;
                  tmp = mono_mempool_alloc (D.51276, 56);
                  tmp->data.op[1].const_val = 0;
                  D.51538 = tmp->data.op[1].const_val;
                  tmp->data.op[0].const_val = D.51538;
                  tmp->prev = 0B;
                  D.51539 = tmp->prev;
                  tmp->next = D.51539;
                  tmp->opcode = 838;
                  tmp->flags = 0;
                  tmp->type = 0;
                  tmp->dreg = -1;
                  tmp->sreg3 = -1;
                  D.51540 = tmp->sreg3;
                  tmp->sreg2 = D.51540;
                  D.51541 = tmp->sreg2;
                  tmp->sreg1 = D.51541;
                  D.51357 = cfg->ip;
                  tmp->cil_code = D.51357;
                  tmp->data.op[1].const_val = dreg;
                  mono_bblock_insert_after_ins (bb, def_ins, tmp);
                }
                <D.51537>:
                <D.51534>:
                <D.51532>:
              }
              <D.51436>:
              <D.51430>:
              <D.51427>:
              D.51410 = ins->sreg1;
              sregs[0] = D.51410;
              D.51400 = ins->sreg2;
              sregs[1] = D.51400;
              D.51411 = ins->sreg3;
              sregs[2] = D.51411;
              D.51285 = ins->opcode;
              D.51286 = (int) D.51285;
              D.51287 = D.51286 + -313;
              D.51412 = ins_sreg_counts[D.51287];
              num_sregs = (int) D.51412;
              srcindex = 0;
              goto <D.27894>;
              <D.27893>:
              D.51542 = srcindex + 1;
              D.51543 = (sizetype) D.51542;
              D.51544 = spec + D.51543;
              D.51545 = *D.51544;
              regtype = (int) D.51545;
              sreg = sregs[srcindex];
              if (sreg != -1) goto <D.51547>; else goto <D.51551>;
              <D.51551>:
              if (regtype != 32) goto <D.51547>; else goto <D.51548>;
              <D.51547>:
              if (sreg == -1) goto <D.51549>; else goto <D.51552>;
              <D.51552>:
              if (regtype == 32) goto <D.51549>; else goto <D.51548>;
              <D.51549>:
              iftmp.597 = 1;
              goto <D.51550>;
              <D.51548>:
              iftmp.597 = 0;
              <D.51550>:
              D.51553 = iftmp.597 != 0;
              D.51554 = (long int) D.51553;
              D.51555 = __builtin_expect (D.51554, 0);
              if (D.51555 != 0) goto <D.51556>; else goto <D.51557>;
              <D.51556>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13163, "((sreg == -1) && (regtype == \' \')) || ((sreg != -1) && (regtype != \' \'))");
              <D.51557>:
              if (sreg != -1) goto <D.51558>; else goto <D.51559>;
              <D.51558>:
              sreg.598 = (unsigned int) sreg;
              D.51220 = cfg->vreg_to_inst_len;
              if (sreg.598 < D.51220) goto <D.51561>; else goto <D.51562>;
              <D.51561>:
              D.51223 = cfg->vreg_to_inst;
              sreg.599 = (unsigned int) sreg;
              D.51564 = sreg.599 * 4;
              D.51565 = D.51223 + D.51564;
              D.51566 = *D.51565;
              if (D.51566 != 0B) goto <D.51567>; else goto <D.51568>;
              <D.51567>:
              {
                struct MonoInst * var;
                struct MonoInst * use_ins;
                struct MonoInst * load_ins;
                guint32 load_opcode;

                sreg.598 = (unsigned int) sreg;
                D.51220 = cfg->vreg_to_inst_len;
                if (sreg.598 < D.51220) goto <D.51570>; else goto <D.51571>;
                <D.51570>:
                D.51223 = cfg->vreg_to_inst;
                sreg.599 = (unsigned int) sreg;
                D.51564 = sreg.599 * 4;
                D.51565 = D.51223 + D.51564;
                iftmp.600 = *D.51565;
                goto <D.51572>;
                <D.51571>:
                iftmp.600 = 0B;
                <D.51572>:
                var = iftmp.600;
                use_ins = ins;
                D.51573 = var->opcode;
                if (D.51573 == 366) goto <D.51574>; else goto <D.51575>;
                <D.51574>:
                D.51576 = var->dreg;
                sregs[srcindex] = D.51576;
                sreg.599 = (unsigned int) sreg;
                D.51564 = sreg.599 * 4;
                D.51577 = live_range_end + D.51564;
                *D.51577 = use_ins;
                sreg.599 = (unsigned int) sreg;
                D.51564 = sreg.599 * 4;
                D.51578 = live_range_end_bb + D.51564;
                *D.51578 = bb;
                D.51249 = BIT_FIELD_REF <*cfg, 32, 3424>;
                D.51250 = D.51249 & 128;
                if (D.51250 != 0) goto <D.51579>; else goto <D.51580>;
                <D.51579>:
                D.51576 = var->dreg;
                if (D.51576 < orig_next_vreg) goto <D.51581>; else goto <D.51582>;
                <D.51581>:
                D.51583 = var->flags;
                D.51584 = (signed char) D.51583;
                if (D.51584 < 0) goto <D.51585>; else goto <D.51586>;
                <D.51585>:
                {
                  struct MonoInst * tmp;

                  D.51276 = cfg->mempool;
                  tmp = mono_mempool_alloc (D.51276, 56);
                  tmp->data.op[1].const_val = 0;
                  D.51587 = tmp->data.op[1].const_val;
                  tmp->data.op[0].const_val = D.51587;
                  tmp->prev = 0B;
                  D.51588 = tmp->prev;
                  tmp->next = D.51588;
                  tmp->opcode = 839;
                  tmp->flags = 0;
                  tmp->type = 0;
                  tmp->dreg = -1;
                  tmp->sreg3 = -1;
                  D.51589 = tmp->sreg3;
                  tmp->sreg2 = D.51589;
                  D.51590 = tmp->sreg2;
                  tmp->sreg1 = D.51590;
                  D.51357 = cfg->ip;
                  tmp->cil_code = D.51357;
                  tmp->data.op[1].const_val = sreg;
                  mono_bblock_insert_after_ins (bb, ins, tmp);
                }
                <D.51586>:
                <D.51582>:
                <D.51580>:
                // predicted unlikely by continue predictor.
                goto <D.27891>;
                <D.51575>:
                D.51573 = var->opcode;
                D.51591 = D.51573 != 367;
                D.51592 = (long int) D.51591;
                D.51593 = __builtin_expect (D.51592, 0);
                if (D.51593 != 0) goto <D.51594>; else goto <D.51595>;
                <D.51594>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13188, "var->opcode == OP_REGOFFSET");
                <D.51595>:
                D.51596 = var->data.op[1].vtype;
                load_opcode = mono_type_to_load_membase (cfg, D.51596);
                D.51597 = load_opcode == 399;
                D.51598 = (long int) D.51597;
                D.51599 = __builtin_expect (D.51598, 0);
                if (D.51599 != 0) goto <D.51600>; else goto <D.51601>;
                <D.51600>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13192, "load_opcode != OP_LOADV_MEMBASE");
                <D.51601>:
                sreg.599 = (unsigned int) sreg;
                D.51564 = sreg.599 * 4;
                D.51602 = vreg_to_lvreg + D.51564;
                D.51603 = *D.51602;
                if (D.51603 != 0) goto <D.51604>; else goto <D.51605>;
                <D.51604>:
                sreg.599 = (unsigned int) sreg;
                D.51564 = sreg.599 * 4;
                D.51602 = vreg_to_lvreg + D.51564;
                D.51603 = *D.51602;
                D.51606 = D.51603 == 4294967295;
                D.51607 = (long int) D.51606;
                D.51608 = __builtin_expect (D.51607, 0);
                if (D.51608 != 0) goto <D.51609>; else goto <D.51610>;
                <D.51609>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13195, "vreg_to_lvreg [sreg] != -1");
                <D.51610>:
                D.51277 = cfg->verbose_level;
                D.51289 = D.51277 > 2;
                D.51290 = (long int) D.51289;
                D.51291 = __builtin_expect (D.51290, 0);
                if (D.51291 != 0) goto <D.51611>; else goto <D.51612>;
                <D.51611>:
                sreg.599 = (unsigned int) sreg;
                D.51564 = sreg.599 * 4;
                D.51602 = vreg_to_lvreg + D.51564;
                D.51603 = *D.51602;
                printf ("\t\tUse lvreg R%d for R%d.\n", D.51603, sreg);
                <D.51612>:
                sreg.599 = (unsigned int) sreg;
                D.51564 = sreg.599 * 4;
                D.51602 = vreg_to_lvreg + D.51564;
                D.51603 = *D.51602;
                D.51613 = (int) D.51603;
                sregs[srcindex] = D.51613;
                // predicted unlikely by continue predictor.
                goto <D.27891>;
                <D.51605>:
                if (srcindex == 0) goto <D.51616>; else goto <D.51614>;
                <D.51616>:
                load_opcode.601 = (int) load_opcode;
                D.51285 = ins->opcode;
                D.51286 = (int) D.51285;
                D.51618 = op_to_op_src1_membase (load_opcode.601, D.51286);
                if (D.51618 != -1) goto <D.51619>; else goto <D.51614>;
                <D.51619>:
                load_opcode.601 = (int) load_opcode;
                D.51285 = ins->opcode;
                D.51286 = (int) D.51285;
                D.51620 = op_to_op_src1_membase (load_opcode.601, D.51286);
                D.51621 = (short unsigned int) D.51620;
                ins->opcode = D.51621;
                D.51622 = var->sreg1;
                sregs[0] = D.51622;
                D.51623 = var->data.op[0].const_val;
                ins->data.op[0].const_val = D.51623;
                goto <D.51615>;
                <D.51614>:
                if (srcindex == 1) goto <D.51626>; else goto <D.51624>;
                <D.51626>:
                load_opcode.601 = (int) load_opcode;
                D.51285 = ins->opcode;
                D.51286 = (int) D.51285;
                D.51627 = op_to_op_src2_membase (load_opcode.601, D.51286);
                if (D.51627 != -1) goto <D.51628>; else goto <D.51624>;
                <D.51628>:
                load_opcode.601 = (int) load_opcode;
                D.51285 = ins->opcode;
                D.51286 = (int) D.51285;
                D.51629 = op_to_op_src2_membase (load_opcode.601, D.51286);
                D.51630 = (short unsigned int) D.51629;
                ins->opcode = D.51630;
                D.51622 = var->sreg1;
                sregs[1] = D.51622;
                D.51623 = var->data.op[0].const_val;
                ins->data.op[0].const_val = D.51623;
                goto <D.51625>;
                <D.51624>:
                D.51285 = ins->opcode;
                if (D.51285 == 424) goto <D.51631>; else goto <D.51634>;
                <D.51634>:
                D.51285 = ins->opcode;
                if (D.51285 == 426) goto <D.51631>; else goto <D.51632>;
                <D.51631>:
                ins->opcode = 316;
                sreg = ins->dreg;
                goto <D.51633>;
                <D.51632>:
                D.51476 = stacktypes[regtype];
                D.51635 = alloc_dreg (cfg, D.51476);
                sreg = (int) D.51635;
                D.51583 = var->flags;
                D.51636 = (int) D.51583;
                D.51637 = D.51636 & 20;
                if (D.51637 == 0) goto <D.51638>; else goto <D.51639>;
                <D.51638>:
                if (no_lvreg == 0) goto <D.51640>; else goto <D.51641>;
                <D.51640>:
                D.51576 = var->dreg;
                if (D.51576 == prev_dreg) goto <D.51642>; else goto <D.51643>;
                <D.51642>:
                sreg = ins->dreg;
                <D.51643>:
                D.51644 = sreg == -1;
                D.51645 = (long int) D.51644;
                D.51646 = __builtin_expect (D.51645, 0);
                if (D.51646 != 0) goto <D.51647>; else goto <D.51648>;
                <D.51647>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13234, "sreg != -1");
                <D.51648>:
                D.51576 = var->dreg;
                D.51649 = (unsigned int) D.51576;
                D.51650 = D.51649 * 4;
                D.51651 = vreg_to_lvreg + D.51650;
                sreg.598 = (unsigned int) sreg;
                *D.51651 = sreg.598;
                D.51652 = lvregs_len > 1023;
                D.51653 = (long int) D.51652;
                D.51654 = __builtin_expect (D.51653, 0);
                if (D.51654 != 0) goto <D.51655>; else goto <D.51656>;
                <D.51655>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13236, "lvregs_len < 1024");
                <D.51656>:
                lvregs_len.602 = lvregs_len;
                lvregs_len = lvregs_len.602 + 1;
                D.51658 = lvregs_len.602 * 4;
                D.51659 = lvregs + D.51658;
                D.51576 = var->dreg;
                D.51660 = (unsigned int) D.51576;
                *D.51659 = D.51660;
                <D.51641>:
                <D.51639>:
                <D.51633>:
                sregs[srcindex] = sreg;
                if (regtype == 108) goto <D.51661>; else goto <D.51662>;
                <D.51661>:
                D.51276 = cfg->mempool;
                load_ins = mono_mempool_alloc (D.51276, 56);
                load_ins->data.op[1].const_val = 0;
                D.51663 = load_ins->data.op[1].const_val;
                load_ins->data.op[0].const_val = D.51663;
                load_ins->prev = 0B;
                D.51664 = load_ins->prev;
                load_ins->next = D.51664;
                load_ins->opcode = 393;
                load_ins->flags = 0;
                load_ins->type = 0;
                load_ins->dreg = -1;
                load_ins->sreg3 = -1;
                D.51665 = load_ins->sreg3;
                load_ins->sreg2 = D.51665;
                D.51666 = load_ins->sreg2;
                load_ins->sreg1 = D.51666;
                D.51357 = cfg->ip;
                load_ins->cil_code = D.51357;
                D.51667 = sreg + 2;
                load_ins->dreg = D.51667;
                D.51622 = var->sreg1;
                load_ins->sreg1 = D.51622;
                D.51623 = var->data.op[0].const_val;
                D.51668 = D.51623 + 4;
                load_ins->data.op[0].const_val = D.51668;
                load_ins->type = 1;
                mono_bblock_insert_before_ins (bb, ins, load_ins);
                D.51276 = cfg->mempool;
                load_ins = mono_mempool_alloc (D.51276, 56);
                load_ins->data.op[1].const_val = 0;
                D.51663 = load_ins->data.op[1].const_val;
                load_ins->data.op[0].const_val = D.51663;
                load_ins->prev = 0B;
                D.51664 = load_ins->prev;
                load_ins->next = D.51664;
                load_ins->opcode = 393;
                load_ins->flags = 0;
                load_ins->type = 0;
                load_ins->dreg = -1;
                load_ins->sreg3 = -1;
                D.51665 = load_ins->sreg3;
                load_ins->sreg2 = D.51665;
                D.51666 = load_ins->sreg2;
                load_ins->sreg1 = D.51666;
                D.51357 = cfg->ip;
                load_ins->cil_code = D.51357;
                D.51669 = sreg + 1;
                load_ins->dreg = D.51669;
                D.51622 = var->sreg1;
                load_ins->sreg1 = D.51622;
                D.51623 = var->data.op[0].const_val;
                load_ins->data.op[0].const_val = D.51623;
                load_ins->type = 1;
                mono_bblock_insert_before_ins (bb, ins, load_ins);
                use_ins = load_ins;
                goto <D.51670>;
                <D.51662>:
                D.51671 = load_opcode == 395;
                D.51672 = (long int) D.51671;
                D.51673 = __builtin_expect (D.51672, 0);
                if (D.51673 != 0) goto <D.51674>; else goto <D.51675>;
                <D.51674>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13256, "load_opcode != OP_LOADI8_MEMBASE");
                <D.51675>:
                D.51276 = cfg->mempool;
                load_ins = mono_mempool_alloc (D.51276, 56);
                load_ins->data.op[1].const_val = 0;
                D.51663 = load_ins->data.op[1].const_val;
                load_ins->data.op[0].const_val = D.51663;
                load_ins->prev = 0B;
                D.51664 = load_ins->prev;
                load_ins->next = D.51664;
                D.51676 = (short unsigned int) load_opcode;
                load_ins->opcode = D.51676;
                load_ins->flags = 0;
                load_ins->type = 0;
                load_ins->dreg = -1;
                load_ins->sreg3 = -1;
                D.51665 = load_ins->sreg3;
                load_ins->sreg2 = D.51665;
                D.51666 = load_ins->sreg2;
                load_ins->sreg1 = D.51666;
                D.51357 = cfg->ip;
                load_ins->cil_code = D.51357;
                load_ins->dreg = sreg;
                D.51622 = var->sreg1;
                load_ins->sreg1 = D.51622;
                D.51623 = var->data.op[0].const_val;
                load_ins->data.op[0].const_val = D.51623;
                load_ins->type = 1;
                mono_bblock_insert_before_ins (bb, ins, load_ins);
                use_ins = load_ins;
                <D.51670>:
                <D.51625>:
                <D.51615>:
                D.51576 = var->dreg;
                if (D.51576 < orig_next_vreg) goto <D.51677>; else goto <D.51678>;
                <D.51677>:
                D.51576 = var->dreg;
                D.51649 = (unsigned int) D.51576;
                D.51650 = D.51649 * 4;
                D.51679 = live_range_end + D.51650;
                *D.51679 = use_ins;
                D.51576 = var->dreg;
                D.51649 = (unsigned int) D.51576;
                D.51650 = D.51649 * 4;
                D.51680 = live_range_end_bb + D.51650;
                *D.51680 = bb;
                <D.51678>:
                D.51249 = BIT_FIELD_REF <*cfg, 32, 3424>;
                D.51250 = D.51249 & 128;
                if (D.51250 != 0) goto <D.51681>; else goto <D.51682>;
                <D.51681>:
                D.51576 = var->dreg;
                if (D.51576 < orig_next_vreg) goto <D.51683>; else goto <D.51684>;
                <D.51683>:
                D.51583 = var->flags;
                D.51584 = (signed char) D.51583;
                if (D.51584 < 0) goto <D.51685>; else goto <D.51686>;
                <D.51685>:
                {
                  struct MonoInst * tmp;

                  D.51276 = cfg->mempool;
                  tmp = mono_mempool_alloc (D.51276, 56);
                  tmp->data.op[1].const_val = 0;
                  D.51687 = tmp->data.op[1].const_val;
                  tmp->data.op[0].const_val = D.51687;
                  tmp->prev = 0B;
                  D.51688 = tmp->prev;
                  tmp->next = D.51688;
                  tmp->opcode = 839;
                  tmp->flags = 0;
                  tmp->type = 0;
                  tmp->dreg = -1;
                  tmp->sreg3 = -1;
                  D.51689 = tmp->sreg3;
                  tmp->sreg2 = D.51689;
                  D.51690 = tmp->sreg2;
                  tmp->sreg1 = D.51690;
                  D.51357 = cfg->ip;
                  tmp->cil_code = D.51357;
                  D.51576 = var->dreg;
                  tmp->data.op[1].const_val = D.51576;
                  mono_bblock_insert_after_ins (bb, ins, tmp);
                }
                <D.51686>:
                <D.51684>:
                <D.51682>:
              }
              <D.51568>:
              <D.51562>:
              <D.51559>:
              <D.27891>:
              srcindex = srcindex + 1;
              <D.27894>:
              if (srcindex <= 2) goto <D.27893>; else goto <D.27895>;
              <D.27895>:
              mono_inst_set_src_registers (ins, &sregs);
              if (dest_has_lvreg != 0) goto <D.51691>; else goto <D.51692>;
              <D.51691>:
              D.51409 = ins->dreg;
              D.51693 = D.51409 == -1;
              D.51694 = (long int) D.51693;
              D.51695 = __builtin_expect (D.51694, 0);
              if (D.51695 != 0) goto <D.51696>; else goto <D.51697>;
              <D.51696>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13281, "ins->dreg != -1");
              <D.51697>:
              prev_dreg.603 = (unsigned int) prev_dreg;
              D.51699 = prev_dreg.603 * 4;
              D.51700 = vreg_to_lvreg + D.51699;
              D.51409 = ins->dreg;
              D.51428 = (unsigned int) D.51409;
              *D.51700 = D.51428;
              D.51652 = lvregs_len > 1023;
              D.51653 = (long int) D.51652;
              D.51654 = __builtin_expect (D.51653, 0);
              if (D.51654 != 0) goto <D.51701>; else goto <D.51702>;
              <D.51701>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13283, "lvregs_len < 1024");
              <D.51702>:
              lvregs_len.604 = lvregs_len;
              lvregs_len = lvregs_len.604 + 1;
              D.51704 = lvregs_len.604 * 4;
              D.51705 = lvregs + D.51704;
              prev_dreg.605 = (unsigned int) prev_dreg;
              *D.51705 = prev_dreg.605;
              dest_has_lvreg = 0;
              <D.51692>:
              if (store != 0) goto <D.51707>; else goto <D.51708>;
              <D.51707>:
              tmp_reg = ins->dreg;
              D.51400 = ins->sreg2;
              ins->dreg = D.51400;
              ins->sreg2 = tmp_reg;
              <D.51708>:
              D.51285 = ins->opcode;
              D.51712 = D.51285 + 65193;
              if (D.51712 <= 2) goto <D.51709>; else goto <D.51713>;
              <D.51713>:
              D.51285 = ins->opcode;
              D.51714 = D.51285 + 65187;
              if (D.51714 <= 2) goto <D.51709>; else goto <D.51715>;
              <D.51715>:
              D.51285 = ins->opcode;
              D.51716 = D.51285 + 65184;
              if (D.51716 <= 2) goto <D.51709>; else goto <D.51717>;
              <D.51717>:
              D.51285 = ins->opcode;
              D.51718 = D.51285 + 65181;
              if (D.51718 <= 2) goto <D.51709>; else goto <D.51719>;
              <D.51719>:
              D.51285 = ins->opcode;
              D.51720 = D.51285 + 65190;
              if (D.51720 <= 2) goto <D.51709>; else goto <D.51721>;
              <D.51721>:
              D.51285 = ins->opcode;
              D.51722 = D.51285 + 65178;
              if (D.51722 <= 2) goto <D.51709>; else goto <D.51723>;
              <D.51723>:
              D.51285 = ins->opcode;
              if (D.51285 == 444) goto <D.51709>; else goto <D.51710>;
              <D.51709>:
              i = 0;
              goto <D.27897>;
              <D.27896>:
              D.51198 = i * 4;
              D.51281 = lvregs + D.51198;
              D.51282 = *D.51281;
              D.51283 = D.51282 * 4;
              D.51284 = vreg_to_lvreg + D.51283;
              *D.51284 = 0;
              i = i + 1;
              <D.27897>:
              if (i < lvregs_len) goto <D.27896>; else goto <D.27898>;
              <D.27898>:
              lvregs_len = 0;
              goto <D.51711>;
              <D.51710>:
              D.51285 = ins->opcode;
              if (D.51285 == 316) goto <D.51724>; else goto <D.51725>;
              <D.51724>:
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.51411 = ins->sreg3;
              ins->sreg2 = D.51411;
              D.51400 = ins->sreg2;
              ins->sreg1 = D.51400;
              <D.51725>:
              <D.51711>:
              D.51277 = cfg->verbose_level;
              if (D.51277 > 2) goto <D.51726>; else goto <D.51727>;
              <D.51726>:
              mono_print_ins_index (1, ins);
              <D.51727>:
            }
          finally
            {
              sregs = {CLOBBER};
            }
        }
        <D.27864>:
        ins = ins->next;
        <D.27900>:
        if (ins != 0B) goto <D.27899>; else goto <D.27901>;
        <D.27901>:
        D.51728 = BIT_FIELD_REF <*cfg, 32, 3392>;
        D.51729 = D.51728 & 2147483648;
        if (D.51729 != 0) goto <D.51730>; else goto <D.51731>;
        <D.51730>:
        D.51732 = bb->live_out_set;
        if (D.51732 != 0B) goto <D.51733>; else goto <D.51734>;
        <D.51733>:
        D.51735 = bb->code;
        if (D.51735 != 0B) goto <D.51736>; else goto <D.51737>;
        <D.51736>:
        i = 0;
        goto <D.27905>;
        <D.27904>:
        {
          struct MonoMethodVar * vi;

          D.51738 = cfg->vars;
          D.51739 = i * 56;
          vi = D.51738 + D.51739;
          D.51743 = vi->vreg;
          D.51744 = (unsigned int) D.51743;
          D.51220 = cfg->vreg_to_inst_len;
          if (D.51744 < D.51220) goto <D.51745>; else goto <D.51741>;
          <D.51745>:
          D.51223 = cfg->vreg_to_inst;
          D.51743 = vi->vreg;
          D.51746 = (unsigned int) D.51743;
          D.51747 = D.51746 * 4;
          D.51748 = D.51223 + D.51747;
          D.51749 = *D.51748;
          if (D.51749 != 0B) goto <D.51750>; else goto <D.51741>;
          <D.51750>:
          D.51743 = vi->vreg;
          D.51744 = (unsigned int) D.51743;
          D.51220 = cfg->vreg_to_inst_len;
          if (D.51744 < D.51220) goto <D.51752>; else goto <D.51753>;
          <D.51752>:
          D.51223 = cfg->vreg_to_inst;
          D.51743 = vi->vreg;
          D.51746 = (unsigned int) D.51743;
          D.51747 = D.51746 * 4;
          D.51748 = D.51223 + D.51747;
          iftmp.607 = *D.51748;
          goto <D.51754>;
          <D.51753>:
          iftmp.607 = 0B;
          <D.51754>:
          D.51755 = iftmp.607->flags;
          D.51756 = (int) D.51755;
          D.51757 = D.51756 & 20;
          if (D.51757 != 0) goto <D.51758>; else goto <D.51741>;
          <D.51758>:
          iftmp.606 = 1;
          goto <D.51742>;
          <D.51741>:
          iftmp.606 = 0;
          <D.51742>:
          D.51759 = iftmp.606 != 0;
          D.51760 = (long int) D.51759;
          D.51761 = __builtin_expect (D.51760, 0);
          if (D.51761 != 0) goto <D.51762>; else goto <D.51763>;
          <D.51762>:
          // predicted unlikely by continue predictor.
          goto <D.27903>;
          <D.51763>:
          D.51764 = bb->live_in_set;
          D.51765 = i / 32;
          D.51766 = D.51764->data[D.51765];
          i.608 = (int) i;
          D.51768 = i.608 & 31;
          D.51769 = 1 << D.51768;
          D.51770 = D.51766 & D.51769;
          if (D.51770 != 0) goto <D.51771>; else goto <D.51772>;
          <D.51771>:
          D.51743 = vi->vreg;
          D.51746 = (unsigned int) D.51743;
          D.51747 = D.51746 * 4;
          D.51773 = live_range_start + D.51747;
          D.51774 = *D.51773;
          if (D.51774 == 0B) goto <D.51775>; else goto <D.51776>;
          <D.51775>:
          D.51743 = vi->vreg;
          D.51746 = (unsigned int) D.51743;
          D.51747 = D.51746 * 4;
          D.51773 = live_range_start + D.51747;
          D.51735 = bb->code;
          *D.51773 = D.51735;
          D.51743 = vi->vreg;
          D.51746 = (unsigned int) D.51743;
          D.51747 = D.51746 * 4;
          D.51777 = live_range_start_bb + D.51747;
          *D.51777 = bb;
          <D.51776>:
          <D.51772>:
          D.51732 = bb->live_out_set;
          D.51765 = i / 32;
          D.51778 = D.51732->data[D.51765];
          i.608 = (int) i;
          D.51768 = i.608 & 31;
          D.51769 = 1 << D.51768;
          D.51779 = D.51778 & D.51769;
          if (D.51779 != 0) goto <D.51780>; else goto <D.51781>;
          <D.51780>:
          D.51743 = vi->vreg;
          D.51746 = (unsigned int) D.51743;
          D.51747 = D.51746 * 4;
          D.51782 = live_range_end + D.51747;
          D.51783 = bb->last_ins;
          *D.51782 = D.51783;
          D.51743 = vi->vreg;
          D.51746 = (unsigned int) D.51743;
          D.51747 = D.51746 * 4;
          D.51784 = live_range_end_bb + D.51747;
          *D.51784 = bb;
          <D.51781>:
        }
        <D.27903>:
        i = i + 1;
        <D.27905>:
        D.51248 = cfg->num_varinfo;
        if (D.51248 > i) goto <D.27904>; else goto <D.27906>;
        <D.27906>:
        <D.51737>:
        <D.51734>:
        <D.51731>:
      }
      bb = bb->next_bb;
      <D.27908>:
      if (bb != 0B) goto <D.27907>; else goto <D.27909>;
      <D.27909>:
      D.51785 = cfg->gsharedvt_locals_var_ins;
      if (D.51785 != 0B) goto <D.51786>; else goto <D.51787>;
      <D.51786>:
      D.51785 = cfg->gsharedvt_locals_var_ins;
      D.51785->opcode = 362;
      D.51785 = cfg->gsharedvt_locals_var_ins;
      D.51785->data.op[1].const_val = 0;
      <D.51787>:
      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.51793;
  int D.51798;
  void * D.51800;
  unsigned int D.51801;

  D.51793 = __builtin_constant_p (__len);
  if (D.51793 != 0) goto <D.51794>; else goto <D.51795>;
  <D.51794>:
  if (__len == 0) goto <D.51796>; else goto <D.51797>;
  <D.51796>:
  D.51798 = __builtin_constant_p (__ch);
  if (D.51798 == 0) goto <D.51791>; else goto <D.51799>;
  <D.51799>:
  if (__ch != 0) goto <D.51791>; else goto <D.51792>;
  <D.51791>:
  __warn_memset_zero_len ();
  D.51800 = __dest;
  return D.51800;
  <D.51792>:
  <D.51797>:
  <D.51795>:
  D.51801 = __builtin_object_size (__dest, 0);
  D.51800 = __builtin___memset_chk (__dest, __ch, __len, D.51801);
  return D.51800;
}


op_to_op_dest_membase (int store_opcode, int opcode)
{
  int D.51803;

  D.51803 = -1;
  return D.51803;
}


store_membase_reg_to_store_membase_imm (int opcode)
{
  int D.51805;

  switch (opcode) <default: <D.27677>, case 374: <D.27672>, case 375: <D.27673>, case 376: <D.27674>, case 377: <D.27675>, case 378: <D.27676>>
  <D.27672>:
  D.51805 = 381;
  return D.51805;
  <D.27673>:
  D.51805 = 382;
  return D.51805;
  <D.27674>:
  D.51805 = 383;
  return D.51805;
  <D.27675>:
  D.51805 = 384;
  return D.51805;
  <D.27676>:
  D.51805 = 385;
  return D.51805;
  <D.27677>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12041);
  D.51805 = -1;
  return D.51805;
}


op_to_op_store_membase (int store_opcode, int opcode)
{
  int D.51807;

  D.51807 = -1;
  return D.51807;
}


op_to_op_src1_membase (int load_opcode, int opcode)
{
  int D.51809;

  D.51809 = -1;
  return D.51809;
}


op_to_op_src2_membase (int load_opcode, int opcode)
{
  int D.51811;

  D.51811 = -1;
  return D.51811;
}


